✒️ABAP El ALV jerárquico y el agrupamiento
ABAP El ALV jerárquico y el agrupamiento
1. El agrupamiento en un ALV
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 muestran 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_SORT INFO_ALV.
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.
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.
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 REUSE_ALV_LIST_DISPLAY para el ALV Lista.
Como conclusión tal como acabamos de comprobar la funcionalidad de agrupamiento de los campos de un reporte ALV se encuentra disponible para los ALV Grilla y no se encuentra disponible para los ALV Lista.
2. El ALV jerárquico
Como dijimos anteriormente, los ALV jerárquicos se utilizan cuando tenemos que mostrar en un reporte, datos de cabecera y de posición, es decir, que para ello en las declaraciones de las tablas internas de cabecera y de posiciones, debe haber como mínimo un campo 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 breve 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 se va a generar el catálogo de reporte ALV jerárquico en forma automática entonces la declaración de ambas tasas internas la realizamos utilizando 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_DATOS.
Y dentro de la subrutina CARGAR_DATOS completamos las tablas internas TI_CABECERA y TI_ETALLE con los juegos de datos para las compañías aérea.
En lugar de cargar manualmente los registros de ambas tablas internas se podría realizar un SELECT a las tablas base de datos correspondientes para obtener de 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 ALV jerárquico por pantalla.
 
 
 
Sobre el autor
Publicación académica de Alexis Jesus Perez Ramirez, en su ámbito de estudios para la Carrera Consultor ABAP.
Alexis Jesus Perez Ramirez
Profesión: Licenciado en Computaci?n - Venezuela - Legajo: LK96B
✒️Autor de: 69 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Presentación:
Licenciado en computaci?n egresado de la ucv, con amplia experiencia en base de datos, an?lisis de sistemas y programaci?n; tanto en ambiente web, cliente/servidor como en computaci?n central.
Certificación Académica de Alexis Perez