MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Se puede hacer subtotales en un alv con minisap?¿ (foro/showthread.php?t=44883)

sirmapu 22/08/11 18:51:09

Se puede hacer subtotales en un alv con minisap?¿
 
Si se pueden que es lo que me esta faltando?
necesito que me agrupe por carrid y me sume y me saque el subtotal del ultimo del catalo la columna total.



TYPE-POOLS: slis.
data:
layout_alv TYPE slis_layout_alv,
ti_fieldcat_alv TYPE slis_t_fieldcat_alv,
wa_fieldcat_alv TYPE slis_fieldcat_alv,
d_sortcat TYPE slis_t_sortinfo_alv,
d_sortcat_ln LIKE LINE OF d_sortcat,
g_repid LIKE sy-repid.

PERFORM obten_datos.
PERFORM inicializa_layout.
PERFORM arma_fieldcatalog.
PERFORM f_field_sort.
PERFORM muestra_alv.
*---------------------------------------------------------------------*
* FORM inicializa_layout *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM inicializa_layout.
layout_alv-colwidth_optimize = 'X'.
layout_alv-zebra = 'X'.
layout_alv-window_titlebar = 'Reporte en formato ALV'.
*Título de la ventana

ENDFORM.
*---------------------------------------------------------------------*
* FORM arma_fieldcatalog *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM arma_fieldcatalog.


wa_fieldcat_alv-col_pos = '1'.
wa_fieldcat_alv-fieldname = 'CARRID'.
wa_fieldcat_alv-reptext_ddic = 'Numero de cliente'.
* wa_fieldcat_alv-no_out = 'X'.
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.

wa_fieldcat_alv-col_pos = '2'.
wa_fieldcat_alv-fieldname = 'CUSTOMID'.
wa_fieldcat_alv-reptext_ddic = 'Numero de cliente'.
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.

wa_fieldcat_alv-col_pos = '3'.
wa_fieldcat_alv-fieldname = 'NAME'.
wa_fieldcat_alv-reptext_ddic = 'Nombre del cliente'.
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.

wa_fieldcat_alv-col_pos = '4'.
wa_fieldcat_alv-fieldname = 'CITY'.
wa_fieldcat_alv-reptext_ddic = 'CIUDAD'.
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.

wa_fieldcat_alv-col_pos = '5'.
wa_fieldcat_alv-fieldname = 'COUNTRY'.
wa_fieldcat_alv-reptext_ddic = 'Pais'.
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.

wa_fieldcat_alv-col_pos = '6'.
wa_fieldcat_alv-fieldname = 'CUSTTYPE'.
wa_fieldcat_alv-reptext_ddic = 'Tipo de cliente'.
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.

* wa_fieldcat_alv-col_pos = '4'.
* wa_fieldcat_alv-fieldname = 'PLANETYPE'.
* wa_fieldcat_alv-reptext_ddic = 'Tipo de avion'.
* APPEND wa_fieldcat_alv TO ti_fieldcat_alv.
*
* wa_fieldcat_alv-col_pos = '5'.
* wa_fieldcat_alv-fieldname = 'BOOKID'.
* wa_fieldcat_alv-reptext_ddic = 'Libro de vuelo'.
* APPEND wa_fieldcat_alv TO ti_fieldcat_alv.

wa_fieldcat_alv-col_pos = '7'.
wa_fieldcat_alv-fieldname = 'PRICE'.
wa_fieldcat_alv-reptext_ddic = 'Precio'.
wa_fieldcat_alv-sp_group = 'CARRID'.
wa_fieldcat_alv-do_sum = 'X'.
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.

wa_fieldcat_alv-col_pos = '8'.
wa_fieldcat_alv-fieldname = 'CURRENCY'.
wa_fieldcat_alv-reptext_ddic = 'Moneda'.
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.

wa_fieldcat_alv-col_pos = '9'.
wa_fieldcat_alv-fieldname = 'LATITUDE'.
wa_fieldcat_alv-reptext_ddic = 'Latitud'.
wa_fieldcat_alv-no_sign = 'X'.
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.

wa_fieldcat_alv-col_pos = '10'.
wa_fieldcat_alv-fieldname = 'LONGITUDE'.
wa_fieldcat_alv-reptext_ddic = 'Longitud'.
wa_fieldcat_alv-no_sign = 'X'.
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.

wa_fieldcat_alv-col_pos = '11'.
wa_fieldcat_alv-fieldname = 'DESC'.
wa_fieldcat_alv-reptext_ddic = 'Descuento'.
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.

wa_fieldcat_alv-col_pos = '12'.
wa_fieldcat_alv-fieldname = 'TOTAL'.
wa_fieldcat_alv-reptext_ddic = 'Total'.
wa_fieldcat_alv-do_sum = 'X'.
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.


ENDFORM.




*---------------------------------------------------------------------*
* FORM muestra_alv *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM muestra_alv.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
i_background_id = 'ALV_BACKGROUND'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'ARMA_TOPOFPAGE'
is_layout = layout_alv

* “ Variable de Layout
it_fieldcat = ti_fieldcat_alv
it_sort = d_sortcat
i_save = 'A'
*“ Variable de Field Catalog

TABLES
t_outtab = t_vuelos
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form f_field_sort
*&---------------------------------------------------------------------*
FORM f_field_sort.
DATA: ls_sort TYPE slis_sortinfo_alv.
ls_sort-fieldname = 'CUSTOMID'.
ls_sort-spos = 2.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
ls_sort-expa = 'X'.

APPEND ls_sort TO d_sortcat.
ENDFORM. " f_field_sort

Carlitros36 23/08/11 05:38:03

Hola
 
En FORM arma_fieldcatalog.


wa_fieldcat_alv-col_pos = '1'.
wa_fieldcat_alv-fieldname = 'CARRID'.
wa_fieldcat_alv-reptext_ddic = 'Numero de cliente'.
* wa_fieldcat_alv-no_out = 'X'.
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.

Antes del APPEND agregas wa_fieldcat_alv-do_sum = 'X'.

En la ultima columna lo esta haciendo porque tiene esta misma sentencia, al ultimo:
en :

FORM f_field_sort.
DATA: ls_sort TYPE slis_sortinfo_alv.
ls_sort-fieldname = 'CUSTOMID'.
ls_sort-spos = 2.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
ls_sort-expa = 'X'.

APPEND ls_sort TO d_sortcat.
ENDFORM. " f_field_sort

Antes de que termine el FORM colocas:

ls_sort-fieldname = 'CARRID'.
ls_sort-spos = 2.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
ls_sort-expa = 'X'.

APPEND ls_sort TO d_sortcat.

Espero haberte ayudado igual soy JUNIOR,

Saludos...:)

sirmapu 24/08/11 00:40:18

No amigo
 
De esa manera no funciona; esto lo tengo que hacer para minisap.

Hikari 24/08/11 16:04:14

Checa buscando con todos los reportes BCALV* en la SE38, son reportes de ejemplo que implementan ALVs, de ahí alguno te tiene que servir...

Saludos.

SAPING 24/08/11 16:44:44

Con cosas de ese estilo debes recorrer las estructuras del fieldcat para ver si te sirven las opciones que tienen ahi...
Entre todas las opciones estan estas:

* wa_fieldcat-do_sum = 'X'. "Se calculará la suma de este campo.

* wa_fieldcat-decimals_out = '0'. "Cantidad de decimales a mostrar.


Sino ojea este form:

FORM seteo_orden .

CLEAR wa_sort.
wa_sort-fieldname = 'CARRID'. "Campo a ordenar
wa_sort-up = 'X'. "Tipo de orden ascendente
wa_sort-spos = 1. "Posición del campo a ordenar
wa_sort-subtot = 'X'. "calcular subtotales con el campo por el que
* se ordena
wa_sort-expa = 'X'. "mostrar el subtotal con la posibilidad de
* expandirlo
*Si queremos el muestre el campo subtot ya expandido, seteamos con SPACE

APPEND wa_sort TO it_sort.

ENDFORM. " seteo_orden
(Y esta estructura la pasas a la funcion obviamente)


Espero te sirva.
Saludos.


Husos Horarios son GMT. La hora en este momento es 09:28:50.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web