✒️ABAP El ALV jerárquico y el agrupamiento
ABAP El ALV jerárquico y el agrupamiento
ALV Jerárquico y Agrupamiento
1 Agrupamiento en un ALV
Podemos agrupar los registros que mostrarmos en un ALV. Para ello, declaramos una tabla del tipo SLIS_T_SORTINFO_ALV y una estructura del tipo SLIS_SORTINFO_ALV.
<< imagen 1.1 >>
Antes de llamar a la función del ALV, vamos a cargar la tabla TI_SORT con los registros en el orden en el que deseemos agrupar. Se indica el campo sobre el que agrupar y el orden del agrupamiento.
<< imagen 1.2 >>
Al llamar a la función del ALV, por ejemplo REUSE_ALV_GRID_DISPLAY si utilizamos reporte tipo GRID, se debe informar el parámetro exporting IT_SORT con la tabla anterior ti_sort.
<< imagen 1.3 >>
Finalmente, si ejecutamos el reporte veremos la agrupación por el campo 'Estado Civil' que indicamos en la tabla ti_sort.
<< imagen 1.4 >>
2 ALV Jerárquico
Como vimos anteriormente, los ALV jerárquicos se utilizan cuando tenemos que mostrar en un reporte los datos de cabecera y de posición. En las declaraciones de las tablas internas de cabecera y posiciones debe existir como mínimo un campo en común.
En el caso que se muestra a continuación, las tablas ti_cabecera y ti_detalle tienen el campo común es 'CARRID', que identifica a la compañía aérea.
<< imagen 2.1 >>
Para hacer uso de los ALV jerárquicos, debemos declarar una estructura del tipo SLIS_FEYINFO_ALV, que contendrá el campo clave que une a las dos tablas internas. En este ejemplo, se crea la estructura con nombre st_keyinfo.
<< imagen 2.2 >>
Para probar el ALV, cargamos la tabla interna de cabecera y detalle con un juego de datos para la compañía aérea ARG. En el programa de ejemplo de esta lección también se carga un juego de datos para la compañía LAN.
<< imagen 2.3 >>
A continuación creamos un único catálogo del ALV para ambas tablas internas, tanto la de cabecera como la de posiciones, incorporando los campos de ambas tablas en la tabla catálogo ti_catalogo. Llamamos 2 veces por tanto al a función REUSE_ALV_FIELDCATALOG_MERGE, cada vez con los parámetros de la cada tabla.
<< imagen 2.4 >>
Completamos la estructura ST_KEYINFO. En los campos de dicha estructura HEADER01 y ITEM01, informamos el nombre del campo de la tabla de cabecera que hace de vínculo con la tabla de detalles. Si existieran más campos claves (hasta un máximo de 5) se haría de forma similar con el resto.
<< imagen 2.5 >>
Por último, ejecutamos la función REUSE_ALV_HIERSEQ_LIST_DISPLAY informando los parámetros correspondientes:
<< imagen 2.6 >>
Obteniendo el siguiente ALV:
<< imagen 2.7 >>
Audio: En un ALV Jerárquico no es posible utilizar el evento TOP-OF-PAGE por lo que no será posible entonces generar una cabecera con títulos y logos tal y como lo hemos hecho en los ALV de tipo Grid. Otra limitación que presentan los ALV Jerárquicos es que no se puede utilizar el botón de exportación de datos a excel, debido a las diferencias que existen entre el formato de la cabecera y el formato de cada registro.
Preguntas de los alumnos:
¿Cómo hago para por ejemplo: sumar, sacar promedios, los mayores, en las columnas de cantidades de los ALV, sea del tipo List, grid o jerárquico?
Muchas de las funcionalidades tipo excel que mencionas estan disponibles dentro de los botones estándar que nos proporcionan los ALVs pero otras no, con lo cual para las que no esten disponibles tenes dos posibilidades, la primera es presionar el boton de exportar a EXCEL y realizar los calculos alli o utilizar las configuraciones del catalogo y las columnas para obtener totales, promedios,etc.
¿Existe alguna opción o evento para el pie de página como el top of page, por ejemplo?
Para el pie de pagina se utilizan los eventos END-OF-PAGE o END-OF-LIST.
Si quiero hacer doble click en una línea del alv para que me muestre un popup como en At line-selection con el evento windows, ¿cómo se realiza en alv?
Para hacer lo que mencionas de capturar la linea seleccionada del listadio tenes que trabajar con el evento USER COMMAND. Este evento tendrá el codigo de funcion del boton o linea seleccionada del listado.
Para los ALV Jerárquicos, si tengo una llave compuesta (más de un campo), cómo debo especificar en la estructura del tipo slis_keyinfo_alv estos campos?
No hay inconveniente, la estructura de la tabla del tipo SLIS_KEYINFO_ALV es la siguiente:
types: begin of slis_keyinfo_alv,
header01 type slis_fieldname,
item01 type slis_fieldname,
header02 type slis_fieldname,
item02 type slis_fieldname,
header03 type slis_fieldname,
item03 type slis_fieldname,
header04 type slis_fieldname,
item04 type slis_fieldname,
header05 type slis_fieldname,
item05 type slis_fieldname,
end of slis_keyinfo_alv.
Es decir, esta estructura está preparada para que existan hasta 5 campos en común entre ambas tablas.
 
 
 
Favorito:
Está publicación ha sido agregada a sus favoritos por: Lorena Amoretti
Sobre el autor
Publicación académica de Jos? Antonio Saavedra Rodr?guez, en su ámbito de estudios para la Carrera Consultor ABAP.
Jos? Antonio Saavedra Rodr?guez
El Salvador - Legajo: SX28V
✒️Autor de: 166 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP SD Nivel Avanzado
- Carrera Consultor en SAP SD Nivel Inicial