¿Se pueden cambiar las cantidades mostradas en un Alv para que tenga un importe que nosotros hayamos definido previamente?
La respuesta es si. Se puede modificar un alv para que en la columna de subtotales añada, resto o cambie la cantidad a la que nosotros queramos usando el metodo del grid OO ->get_subtotals.
Y sabiendo esto podemos hacerlo incluso con un reuse_alv_grid asignandole como referencia un grid OO.
Veamos el ejemplo.
Llamada a la funcion Reuse:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = l_repid i_callback_top_of_page = 'SUB_ALV_TOP_OF_PAGE' i_default = 'X' i_save = 'A' TABLES t_outtab = i_ekpo EXCEPTIONS program_error = 1 OTHERS = 2.
Detalle del Form ‘SUB_ALV_TOP_OF_PAGE’.
DATA: lo_grid TYPE REF TO cl_gui_alv_grid.
Referencia del Reuse al Grid OO
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING e_grid = lo_grid. DATA: it_00 TYPE REF TO data, it_01 TYPE REF TO data.
Obtenemos las tablas que contienen los totales y los subtotales en el grid.
CALL METHOD lo_grid->get_subtotals IMPORTING ep_collect00 = it_00 ep_collect02 = it_01. FIELD-SYMBOLS: <ft_tab> TYPE ANY TABLE, <fs_tab> TYPE ANY, <ff_field> TYPE ANY.
Modificaciones en los Totales del ALV
ASSIGN it_00->* TO <ft_tab>. LOOP AT <ft_tab> ASSIGNING <fs_tab>. ASSIGN COMPONENT 'NTGEW' OF STRUCTURE <fs_tab> TO <ff_field>. <ff_field> = <ff_field> + 1000. ENDLOOP.
Modificaciones de los Subtotales del ALV
ASSIGN it_01->* TO <ft_tab>. LOOP AT <ft_tab> ASSIGNING <fs_tab>. ASSIGN COMPONENT 'NTGEW' OF STRUCTURE <fs_tab> TO <ff_field>. <ff_field> = <ff_field> + 1000. ENDLOOP.
Para dudas no olvides que tienes el foro de consultas