✒️ABAP El ALV jerárquico y el agrupamiento
ABAP El ALV jerárquico y el agrupamiento
Agrupamientos ALV
Los registros que se muestran en ALV se pueden agrupar.
Para ello hay que declarar una tabla del tipo SLIS_T_SORTINFO_ALV y una estructura del tipo SLIS_SORTINFO_ALV
* Tabla y estructura para ordenamiento
ti_sort TYPE slis_t_sortinfo_alv,
st_sort TYPE slis_sortinfo_alv ,
Luego se debe cargar la tabla ti_sort con los registros en el orden a agrupar
CLEAR st_sort.
st_sort-spos = 1. " Orden del agrupamiento
st_sort-fieldname = 'ESTADO_CIVIL'. " Nombre del campo que agrupa
APPEND st_sort TO ti_sort.
Se agrega parámetro it_sort
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
i_callback_pf_status_set = 'PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = ti_catalogo[]
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = st_layout
it_sort = ti_sort
TABLES
t_outtab = ti_usuarios.
Al ejecutar el reporte se verá la agrupación en este caso por Estado Civil como se indicó arriba
ALV Jerárquico
Se usan cuando hay que mostrar datos de cabeceras y detalles
Debe haber un campo en común, en las declaraciones de las tablas internas de cabecera y detalle
* Tabla interna de la cabecera
DATA: BEGIN OF ti_cabecera OCCURS 0,
carrid LIKE scarr-carrid,
carrname LIKE scarr-carrname,
END OF ti_cabecera.
* Tabla interna de posiciones
DATA: BEGIN OF ti_detalle OCCURS 0,
carrid LIKE sflight-carrid,
connid LIKE sflight-connid,
fldate LIKE sflight-fldate,
price LIKE sflight-price,
currency LIKE sflight-currency,
planetype LIKE sflight-planetype,
END OF ti_detalle.
Hay que declarar una estructura del tipo SLIS_KEYINFO_ALV que contendrá el campo clave que une las 2 estructuras internas
* Campo Clave
st_keyinfo TYPE slis_keyinfo_alv.
Una vez que se cargan las tablas internas, se crea el catálogo ALV para ambas tablas
FORM armado_catalogo_automatico.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'TI_CABECERA'
i_client_never_display = 'X'
i_inclname = sy-repid
CHANGING
ct_fieldcat = ti_catalogo[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'TI_DETALLE'
i_client_never_display = 'X'
i_inclname = sy-repid
CHANGING
ct_fieldcat = ti_catalogo[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
ENDFORM. "armado_catalogo_automatico
Completar la estructura st_keyinfo
FORM keyinfo_init.
CLEAR st_keyinfo.
st_keyinfo-header01 = 'CARRID'.
st_keyinfo-item01 = 'CARRID'.
ENDFORM. "KEYINFO_INIT
Por último se ejecuta el ALV
FORM hierseq_list_display.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'PF_STATUS'
it_fieldcat = ti_catalogo[]
i_tabname_header = 'TI_CABECERA'
i_tabname_item = 'TI_DETALLE'
is_keyinfo = st_keyinfo
TABLES
t_outtab_header = ti_cabecera
t_outtab_item = ti_detalle
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "HIERSEQ_LIST_DISPLAY
En un ALV Jerárquico no se puede usar el evento TOP_OF_PAGE, por lo que no veremos una cabecera como si se hace en otros ALV, tampoco se puede exportar a Excel por los diferentes formates de cabecera y detalle
Si las claves de las tablas correspondiesen a más de un campo, se puede ver que en la estructura de la SLIS_KEYINFO_ALV, presenta hasta 5 campos del tipo st_keyinfo-header01 y st_keyinfo-item01 ...2.3.4.5
 
 
 
Sobre el autor
Publicación académica de Daniel Martinez Chaer, en su ámbito de estudios para la Carrera Consultor ABAP.
Daniel Martinez Chaer
Profesión: Analista Programador - Uruguay - Legajo: SK29Z
✒️Autor de: 76 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Con experiencia en sap fi y mm, migración desde sistema legacy, extracción de datos de la base oracle sap y generación de reportes.
Certificación Académica de Daniel Martinez