✒️ABAP El ALV jerárquico y el agrupamiento
ABAP El ALV jerárquico y el agrupamiento
Agrupamiento en un ALV
Podemos agrupar los registros que mostramos en un ALV. Para ello,
declaramos una tabla del tipo SLIS_T_SORTINFO_ALV y una estructura del tipo SLIS_SORTINFO_ALV.
ti_sort TYPE slis_t_sortinfo_alv,
st_sort TYPE slis_sortinfo_alv.
Luego 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 deseamos agrupar.
CLEAR st_sort.
st_sort-spos = 1.
st_sort-fieldname = 'ESTADO_CIVIL'.
APPEND st_sort TO ti_sort.
Ahora debemos completar el parámetro exporting IT_SORT con nuestra tabla interna 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.
Finalmente, si ejecutamos el reporte, veremos la agrupación por Estado Civil.
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.
En las declaraciones de las tablas internas de cabecera y posiciones, debe haber como mínimo un campo en común.
En el caso que mostramos a continuación, el campo común es el CARRID, que es la compañía aérea.
DATA: BEGIN OF ti_cabecera OCCURS 0,
carrid LIKE scarr-carrid,
carrname LIKE scarr-carrname,
END OF ti_cabecera.
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.
Debemos declarar una estructura del tipo SLIS_KEYINFO_ALV,
que será ST_KEYINFO y contendrá el campo clave que une a las dos tablas internas.
st_keyinfo TYPE slis_keyinfo_alv.
Ahora vamos a cargar las tablas internas de cabecera y detalle con un juego de datos para la compañía aérea ARG.
En el programa de ejemplo de la lección, también cargamos un juego de datos para la compañía aérea LAN.
Luego crearemos el catálogo del ALV para ambas tablas internas,
sumando los campos de ambas tablas en la tabla del catálogo 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.
Ahora tenemos que completar la estructura ST_KEYINFO.
En los campos HEADER01 y ITEM01 va a ir el campo de la tabla de cabecera que hace de vínculo con la tabla de detalles.
CLEAR st_keyinfo.
st_keyinfo-header01 = 'CARRID'.
st_keyinfo-item01 = 'CARRID'.
Por último, ejecutamos la función REUSE_ALV_HIERSEQ_LIST_DISPLAY y veremos el reporte ALV.
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.
 
 
 
Sobre el autor
Publicación académica de Alex Francisco Lemos Collazos, en su ámbito de estudios para la Carrera Consultor ABAP.
Alex Francisco Lemos Collazos
Profesión: Ingeniero en Sistemas - Colombia - Legajo: QS36A
✒️Autor de: 174 Publicaciones Académicas
🎓Cursando Actualmente: Master S/4HANA Material Management
🎓Egresado de los módulos:
- Máster Material Management en SAP S/4HANA LOGISTIC
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP SD Nivel Inicial