✒️ABAP / El ALV jerárquico y el agrupamiento Por Lisimaco Prieto Herrera
ABAP El ALV jerárquico y el agrupamiento

El ALV jerárquico y el agrupamiento
Podemos agrupar los registros que mostramos en un reporte ALV de modo que varios registros que presentan el mismo valor para un campo en particular, se muestren de forma agrupada por ese campo.
Para ello debemos declarar la tabla interna TI_SORT del tipo SLIS_T_SORTINFO_ALV y la estructura WA_SORT del tipo SLIS_SORTINFO_ALV tal como vemos en la siguiente imagen.
Luego dentro del evento START-OF-SELECTION y antes de llamar el módulo de funciones que ejecuta el reporte ALV vamos a declarar la subrutina AGRUPAR_CAMPOS tal como vemos en la sigueinte gráfica:
Y dentro de la subrutina AGRUPAR_CAMPOS vamos a cargar la tabla interna TI_SORT con los registros en el orden en el que deseamos agrupar. Por ejemplo en la siguiente imagen estamos agrupando el reporte ALV por el campo ESTADO_CIVIL.
Podemos agrupar un reporte ALV por tantos campos tenga la tabla interna de salida del ALV.
Solo basta con agregar los campos por los que deseamos agrupar en la tabla interna TI_SORT.
Ahora en la declaración del módulo de funciones REUSE_ALV_GRID_DISPLAY debemos completar el parámetro EXPORTING IT_SORT con nuestra tabla interna TI_SORT.
Y hacemos lo mismo en la declaración del módulo de funciones RESUSE_ALV_LIST_DISPLAY para el ALV Lista:
Finalmente si ejecutamos el reporte ALV y seleccionamos al ALV grilla veremos la agrupación por el campo Estado civil de la siguiente forma:
Y si ejecutamos el reporte ALV y seleccionamos el ALV lista veremos que el reporte no se muestra por el campo Estado civil tal como si sucede con el ALV grilla.
El ALV jerárquico
Como dijimos anteriormente, los ALV jerárquicos se usan cuando tenemos que mostrar e un reporte, datos de cabecera y de posición, es decir que para ello en las declaraciones de las tablas internas de cabecera y posiciones, debe haber como mínimo un campo en común entre ambos.
Veamos a continuación un ejemplo del paso a paso que debemos llevar a cabo para crear un AL jerárquico. Para ello crearemos un reporte ALV jerárquico que muestre la información de las compañías aéreas y la información de los vuelos de cada compañía aérea.
Lo primero que vamos a hacer es declarar la tabla interna TI_CABECERA la cual tiene como campo la Denominación breve de la compañía aérea (CARRIR) y el Nombre de una compañía aérea (CARRNAME).
Y por otro lado vamos a declarar la tabla interna TI_DETALLE la cual tiene como primer campo a la Denominación de la compañía aérea (CARRID) y luego tiene otros campos relativos a un vuelo.
En este caso el campo común entre ambas tablas internas es el CARRID que es la Denominación breve de la compañía aérea.
Dado que vamos a generar el catálogo del ALV jerárquico en forma automática entonces la declaración de ambas tablas internas la realizamos usando la sentencia OCCURS.
Luego debemos declarar una estructura del tipo SLIS_KEYINFO_ALV, que será WA_KEINFO y contendrá el campo clave que a las dos tablas internas.
Ahora vamos a cargar las tablas internas de cabecera y detalle y para ello dentro del evento START-OF-SELECTION declaramos la subrutina CARGAR_ATOS.
Y dentro de la subrutina CARGAR_DATOS completamos las tablas internas TI_CABECERA y TI_ETALLE con los juegos de datos para la compañía aérea ARG.
Y también dentro de la subrutina CARGAR_DATOS completamos las tablas internas TI_CABECERA y TI_DETALLE con juegos de datos para la compañía aérea LAN.
En lugar de cargar manualmente los registros de ambas tablas internas podríamos realizar un SELECT a las tablas BD correspondientes para obtener la información.
Luego dentro del evento START-OF-SELECTION declaramos la subrutina CONFIGURAR_LAYOUT.
Y dentro de la subrutina CONFIGURAR_LAYOUT vamos a configurar dos propiedades que son el rayado de líneas y la asignación del título Reporte de vuelos.
Luego crearemos el catálogo del ALV para ambas tablas internas y para ello declaramos la subrutina ARMADO_CATALOGO_AUTOMATICO.
Y dentro de la subrutina ARMADO_CATALOGO_AUTOMATICO ejecutamos el módulo de función REUSE_ALV_FIELDCATALOG_MERGE para generar el catálogo en forma automática sumando los campos de ambas tablas internas en la tabla interna TI_CATALOGO.
Ahora tenemos que completar la estructura WA_KEYINFO que contiene la información que vincula a ambas tablas internas y para ello declaramos la subrutina DETERMINAR_ASOCIACION.
Y dentro de la subrutina DETERMINAR_ASOCIACION vamos a completar los campos HEADER01 e ITEM01 con el campo de la tabla interna TI_CABECERA que hace vínculo con la tabla interna TI_DETALLE.
Por último, declaramos la subrutina EJECUTAR_ALV_JERARQUICO para ejecutar el ALV.
Y dentro de la subrutina vamos a ejecutar el módulo de funciones REUSER_ALV_HIERSEQ_LIST_DISPLAY para generar el reporte ALV.
Y finalmente al ejecutar el reporte veremos el siguiente ALV jerárquico por pantalla:
 
 
 
Sobre el autor
Publicación académica de Lisimaco Prieto Herrera, en su ámbito de estudios para el Curso SAP ABAP.
Lisimaco Prieto Herrera
Profesión: Ingeniero de Sistemas - Colombia - Legajo: DV67X
✒️Autor de: 96 Publicaciones Académicas
🎓Egresado de los módulos:
Presentación:
Ingeniero de sistemas con amplia experiencia en el desarrollo de software para el sistema sap r/3 en lenguaje de programación abap.
Certificación Académica de Lisimaco Prieto






Disponibilidad Laboral: FullTime


















