PDA

Ver la Versión Completa : CREACION SuBTOTALES - ALV GRID


soykies
01/04/08, 10:33:09
Hola,

Necesito crear un subtotal en mi report (tal como indica la figura) que me sume hasta donde esta la linea roja, la columna efectivos, horas norm, horas supl, y h.sup/h.norm:


http://www.mundosap.com/foro/attachment.php?attachmentid=439&stc=1&d=1207045486

Este es mi codigo:

FORM display_alv TABLES i_employee.
PERFORM build_header.
PERFORM build_layout.
PERFORM call_alv TABLES i_employee.
ENDFORM.
-----------------------------------------------------------
FORM build_header.
DATA: v_alv_color TYPE slis_specialcol_alv.

CLEAR gt_fieldcat.
REFRESH gt_fieldcat.

fieldcat_ln-fieldname = 'PERIODO'.
fieldcat_ln-seltext_l = 'Periodo'(001).
APPEND fieldcat_ln TO gt_fieldcat.

fieldcat_ln-fieldname = 'EFECTIVOS'.
fieldcat_ln-seltext_l = 'Efectivos'(002).
fieldcat_ln-do_sum = 'X'.
fieldcat_ln-sp_group = '1'.
APPEND fieldcat_ln TO gt_fieldcat.

fieldcat_ln-fieldname = 'HN'.
fieldcat_ln-seltext_l = 'Horas Norm. Inscritos'(003).
fieldcat_ln-do_sum = 'X'.
APPEND fieldcat_ln TO gt_fieldcat.

fieldcat_ln-fieldname = 'HS'.
fieldcat_ln-seltext_l = 'Horas Supl. Inscritos'(004).
fieldcat_ln-do_sum = 'X'.
APPEND fieldcat_ln TO gt_fieldcat.

fieldcat_ln-fieldname = 'HN_HS'.
fieldcat_ln-seltext_l = 'H.Sup/H.Nor %'(005).
fieldcat_ln-do_sum = 'C'.
APPEND fieldcat_ln TO gt_fieldcat.
ENDFORM. "build_header

---------------------------------------------------------------
FORM build_layout.
gs_layout-colwidth_optimize = 'X'. "Optimizar ancho del listado
gs_layout-zebra = 'X'. "Mostrar líneas tipo cebra.
gs_layout-detail_popup = 'X'. "Mostrar opción de información detalle
gs_layout-totals_text = 'X'.
gs_layout-subtotals_text = 'X'.
ENDFORM. "build_layout
----------------------------------------------------------------
FORM call_alv TABLES alv_employee.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'g_repid'
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
TABLES
t_outtab = alv_employee
EXCEPTIONS
program_error = 1
OTHERS = 2
ENDFORM. "CALL_ALV


Espero que me puedan echar una mano.

Muchas gracias

DavidXD_XD
01/04/08, 14:31:32
Hola, para poder crear subtotales deberias de crear un campo adicional que permita diferenciar cuales seran los grupos para formar los subtotales, al ver la figura creo q deberias de crearlo por Periodo ... ahi si el ALV identificara que grupos separar ... espero te sirva :D

soykies
02/04/08, 07:47:18
Muy buenas, el campo que diferencia un grupo y otro es TYP:


fieldcat_ln-fieldname = 'TYP'.
fieldcat_ln-seltext_l = 'Tipo'(006).
fieldcat_ln-no_out = 'X'.
fieldcat_ln-sp_group = 1.
APPEND fieldcat_ln TO gt_fieldcat.

y dependiendo de si es '1' o es '2' los diferencia. Este campo solo lo uso para diferenciar los 2 grupos y no me interesa que salga en el listado.

Que tendría que hacer ahora?

Muchas gracias por responder

agv1976
02/04/08, 14:12:10
Para que te salga los subtotales de una columna no tienes que hacer nada de lo anterior, ni poner la propiedad del campo sum, basta con que la columna que quieras totalizar sea de tipo quan o menge y en fieldcat te pongo un ejemplo de mi programa, importante que en la propiedad quantity pongas la unidad.

Ej:
* Cantidad
it_fieldtab-fieldname = 'CANT_SER'.
it_fieldtab-tabname = 'IT_DATOS_AUX'.
it_fieldtab-seltext_l = 'Cantidad'.
it_fieldtab-datatype = 'QUAN'.
it_fieldtab-quantity = 'ST'.

Luego marcas la columna que quieras totalizar y le das al boton de subtotales,
si quieres el status standard con todos los botones vete a la me41 metes el nombre del estandar copiar interfase y pones tu zstatus y tu programa y te lo copie espero te sirva saludos.

DavidXD_XD
02/04/08, 14:26:27
Hola, es la SE41 ... no la ME41 :o

agv1976
02/04/08, 15:42:30
gracias si todos lo errores fueran como ese....

soykies
02/04/08, 16:37:38
Gracias a todos. Ya lo tengo resulto. Saludos