✒️ABAP El ALV jerárquico y el agrupamiento
ABAP El ALV jerárquico y el agrupamiento
ALV Jerárquico y 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.
DATA: ti_sort TYPE slis_t_sortinfo_alv, st_sort TYPE slis_sortinfo_alv. Luego antes de llamar a la función del ALV, debemos cargar la tabla TI_SORT con los registros en el orden en el que deseamos 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.Seguidamente 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.
ALV Jerárquico: 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.
Un ejemplo que pudiéramos citar seria el campo común CARRID, que es la compañía aérea, como veremos a continuación:
* 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.
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.
* Campo Clave st_keyinfo TYPE slis_keyinfo_alv.Una vez que se carguen las tablas (Cabecera y Detalle), procedemos a crear 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.
Luego tenemos que completar la estructura ST_KEYINFO. En los campos HEADER01 y ITEM01 debe 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.
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.
pre { direction: ltr; color: #000000; orphans: 2; widows: 2; background: transparent } pre.western { font-family: "Liberation Mono", "Courier New", monospace; so-language: es-ES } pre.cjk { font-family: "Noto Sans Mono CJK SC", monospace; so-language: zh-CN } pre.ctl { font-family: "Liberation Mono", "Courier New", monospace; so-language: hi-IN } p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 115%; orphans: 2; widows: 2; background: transparent } p.western { font-family: "Liberation Serif", "Times New Roman", serif; so-language: es-ES } p.cjk { font-family: "Noto Serif CJK SC"; so-language: zh-CN } p.ctl { font-family: "Lohit Devanagari"; so-language: hi-IN } a:link { color: #000080; so-language: zxx; text-decoration: underline } a.sdfootnotesym-western { font-size: 10pt } a.sdfootnotesym-cjk { font-size: 10pt } a.sdendnotesym-western { font-size: 10pt } a.sdendnotesym-cjk { font-size: 10pt }
 
 
 
Sobre el autor
Publicación académica de Jos? Valent?n L?pez Montilla, en su ámbito de estudios para la Carrera Consultor ABAP.
Jos? Valent?n L?pez Montilla
Profesión: Ingeniero de Sistemas - Venezuela - Legajo: GT35M
✒️Autor de: 134 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Ingeniero de sistemas y magister scientiarum en ingenier?a de software, con m?s de 30 a?os de experiencia en el ?rea de tecnolog?a de informaci?n, objetivo principal consultor sap abap
Certificación Académica de Jos? L?pez