![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP El ALV jerárquico y el agrupamiento
ABAP El ALV jerárquico y el agrupamiento
![ABAP El ALV jerárquico y el agrupamiento ABAP El ALV jerárquico y el agrupamiento](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/158.jpg)
ALV Jerárquico y Agrupamiento
1) Agrupamiento en un ALV:
Primero: Declarar tablas internas y estructuras que se agruparán. SLIS_T_SORTINFO_ALV; SLIS_SORTINFO_ALV.
* Tabla y estructura para ordenamiento
ti_sort TYPE slis_t_sortinfo_alv, st_sort TYPE slis_sortinfo_alv ,Segundo: Cargar la <ti_tabla>(ti_sort) con los registros según orden que queremos 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.Tercero: llamar a la función para mostrar (Grilla/Lista) y completar el parámetro Exporting IT_SORT con la <ti_tabla>(ti_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.Cuarto: Finalmente, ejecutar el reporte.
2) ALV Jerrárquico:
Reportes con cabeceras y de posición. Entre las tablas debe haber al menos un campo en común. (Ejemplo con tablas de vuelos. Campo en común CARRID)
* 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.Primero: Declarar estructura del tipo SLIS_KEYINFO_ALV que contendrá el campo clave en común entre las tablas.
* Declaro estructura para Campo Clave st_keyinfo TYPE slis_keyinfo_alv.Segundo: Cargar las tablas de cabecera y detalles (si están vacías)
CLEAR: ti_cabecera, ti_detalle. REFRESH: ti_cabecera, ti_detalle. * CABECERA 1 ti_cabecera-carrid = 'ARG'. ti_cabecera-carrname = 'Aerolineas Argentinas'. APPEND ti_cabecera. * DETALLE 1 ti_detalle-carrid = 'ARG'. ti_detalle-connid = '1010'. ti_detalle-fldate = '20091111'. ti_detalle-price = '380'. ti_detalle-currency = 'USD'. ti_detalle-planetype = 'A310'. APPEND ti_detalle. * DETALLE 2 ti_detalle-carrid = 'ARG'. ti_detalle-connid = '1020'. ti_detalle-fldate = '20091011'. ti_detalle-price = '300'. ti_detalle-currency = 'USD'. ti_detalle-planetype = 'A330'. APPEND ti_detalle.(Modelo de cargadode las tablas)
Tercero: Crear catálogo ALV para las 2 tablas Internas (ti_detalle y ti_cabecera), sumando los campos de ambas en la <ti_catalogo>(ti_catalogo)
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.Quinto: Completar la estructura ST_KEYINFO. Campo(s) en común entre ambas tablas:
CLEAR st_keyinfo. st_keyinfo-header01 = 'CARRID'. st_keyinfo-item01 = 'CARRID'.Sexto: Ejecutar llamado a la función de repo jerárquico:
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.No es posible utulizar el evento TOP_OF_PAGE para títulos y logos en cabeceras. Tampoco se pueden usar funciones de exportar a excel debido a la dif que hay entre el formato de la cabecera y formato de cada registro.
 
 
 
Sobre el autor
Publicación académica de Ruben Dario Martucci, en su ámbito de estudios para la Carrera Consultor ABAP.
Ruben Dario Martucci
Profesión: Técnico Informático - Argentina - Legajo: UX76U
✒️Autor de: 58 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime