✒️ABAP El ALV jerárquico y el agrupamiento
ABAP El ALV jerárquico y el agrupamiento
ALV JERARQUICO Y AGRUPAMIENTO.
1.- Agrupamiento de un ALV.
Se pueden agrupar los registros que se muestran en un ALV. Para ello se declara una tabla de tipo SLIS_T_SORTINFO_ALV y una estructura de tipo SLIS_SORTINFO_ALV.
* Tabla y estructura para ordenamiento
ti_sort TYPE slis_t_sorting_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. "Orden del agrupamiento
st_sort-filename = 'ESTADO_CIVIL'.
APPEND st_sort TO ti_sort.
Ahora debemos completar el par+ametro exporting IT_SORT con nuestra trbla 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_custab = ti_usuarios.
Finalmente, si ejecutamos el reporte, veremos la agrupación por Estado civil.
2.- ALV Jerárquico
Los reportes jerárquicos se utilizan cuando se debe mostrar datos de cabecera y de posición. En las declaraciones de las tablas internas y posiciones, debe haber como mínimo un campo en común.
En el siguiente ejemplo, el campo común es CARRID que es la compañía aérea.
* Tabla interna de la cabecera
DATA: BEGIN OF ti_cabecera OCCURS 0,
carrid LIKE scarr_id,
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-palnetype,
END OF ti_detalle.
Debemos declarar una estructura del tipo SLIS_KEYINFO_ALV, que será ST_KEYINFO y contendrá el campo clave que una las dos tablas internas.
* campo clave
st_keyinfo TYPE slis_keryinfo_alv.
Cargamos 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.
* CABECERA 1.
ti_cabecera-carrid = 'ARG'.
ti_cabecera-carname = 'Aerolineas Argentinas'.
APPEND ti_cabecera.
* DETALLE 1
ti_dsetalle-carrid = 'ARG'.
ti_detalle-connid = '1010'.
ti_detalle-fldate = '20091111'.
ti_detalle-price = '380'.
ti-detalle-currency = 'USD'.
ti_detalle-planetyp = 'A310'.
APPEND ti_detalle.
* DETALLE 2
ti_dsetalle-carrid = 'ARG'.
ti_detalle-connid = '1020'.
ti_detalle-fldate = '20091111'.
ti_detalle-price = '300'.
ti-detalle-currency = 'USD'.
ti_detalle-planetyp = 'A330'.
APPEND ti_detalle.
Luego creamos el catálogo ALV para ambas tablas internas, sumando los campos de ambos tablas en la tabla TI_CATALOGO.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program:name = sy_repid
i_internal_tabname = 'TI_CABECERA'.
i_client_never_dsiplay = 'X'
i_inclname = sy_repid
CHAINGING
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_dsiplay = 'X'
i_inclname = sy_repid
CHAINGING
ct_fieldcat = ti_catalogo[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
Luego se debe completar la estructura ST_KEYINFO. En los campos HEADER01 e ITEM01 va a ir el campo de la tabla de cabecera que hace de vículo con la tabla detalles.
CLEAR st_keyinfo.
st_keyinfo-header01 = 'CARRID'.
st_keyinfo-item01 = 'CARRID'.
al final ejecutamos la función REUSE_ALV_HIERSEQ_LIST_DISPLAY.
CALL FUNCION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = sy_repid
i_callback_pf_status_set = 'PF_STATUS'
it_fieldcat = ti_catalog[]
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.
Y se genera el reporte.
 
 
 
Sobre el autor
Publicación académica de Miguel Angel Acosta Acosta, en su ámbito de estudios para la Carrera Consultor ABAP.
Miguel Angel Acosta Acosta
Profesión: Ingeniero de Sistemas - Ecuador - Legajo: TF64C
✒️Autor de: 238 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP SD Nivel Avanzado
- Carrera Consultor en SAP SD Nivel Inicial
- Máster ABAP for HANA
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
Presentación:
Profesional de ingeniería de sistemas en computación e informática, con experiencia en la implantación y soporte de proyectos informáticos para empresas del sector industrial y financiero.
Certificación Académica de Miguel Acosta