✒️ABAP - El ALV jerárquico y el agrupamiento

ABAP El ALV jerárquico y el agrupamiento

1. 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.

Luego antes de llamar la función ALV, vamos a cargar la tabla TI_SORT con los registros en el orden en el que deseamos agrupar.

* Tabla y estructura para ordenamiento
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. " Orden del agrupamiento
st_sort-fieldname = 'ESTADO_CIVIL'. " Nombre del campo que agrupa
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.

2. ALV Jerarquico

Como Digamos anteriormente, los ALV Jerárquico se utilizan cuando tenemos que mostrar un reporte, datos de cabecera y de posición. En la declaración 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.

* 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 de tipo SLIS_KEYINFO_ALV, que será ST_KEYINFO y contendrá el campo clave que unirá las dos tablas internas

* Campo Clave
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.

* CABECERA 1
ti_cabecera-carrid = 'ARG'.
ti_cabecera-carrname = 'Aerolineas Argentinas'.
APPEND ti_cabecera.

* DETALLE 1
ti_detalle-carrid = 'ARG'.
ti_detalle-connid = '1010'.
ti_detalle-fldate = '20091111'.
ti_detalle-price = '380'.
ti_detalle-currency = 'USD'.
ti_detalle-planetype = 'A310'.
APPEND ti_detalle.

* DETALLE 2
ti_detalle-carrid = 'ARG'.
ti_detalle-connid = '1020'.
ti_detalle-fldate = '20091011'.
ti_detalle-price = '300'.
ti_detalle-currency = 'USD'.
ti_detalle-planetype = 'A330'.
APPEND ti_detalle.

* CABECERA 2
ti_cabecera-carrid = 'LAN'.
ti_cabecera-carrname = 'Lan Chile'.
APPEND ti_cabecera.

* DETALLE 1
ti_detalle-carrid = 'LAN'.
ti_detalle-connid = '1030'.
ti_detalle-fldate = '20091005'.
ti_detalle-price = '500'.
ti_detalle-currency = 'USD'.
ti_detalle-planetype = 'A330'.
APPEND ti_detalle.

* DETALLE 2
ti_detalle-carrid = 'LAN'.
ti_detalle-connid = '1040'.
ti_detalle-fldate = '20091007'.
ti_detalle-price = '600'.
ti_detalle-currency = 'USD'.
ti_detalle-planetype = 'A330'.
APPEND ti_detalle.

Luego creamos 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 e ITEM01 va a ir campo de la tabla de cabecera que hace de vínculo con la tabla 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.

IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

En el ALV jerárquico no es posible utilizar el evento TOP_OF PAGE por lo que no será posible generar una cabecera con título y logo como en el ALV GRILLA, tampoco es posible exportarlo a Excel debido al formato que contiene de cabecera y detalle.


Sobre el autor

Publicación académica de Edward Henry Rosario Piezal, en su ámbito de estudios para la Carrera Consultor ABAP.

SAP Master

Edward Henry Rosario Piezal

Profesión: Ingeniero en Sistema - Republica Dominicana - Legajo: FM99R

✒️Autor de: 68 Publicaciones Académicas

🎓Egresado de los módulos:

Disponibilidad Laboral: FullTime

Certificación Académica de Edward Rosario

 

:: Al igual que Edward ¿Usted está dispuesto a aprender ABAP?

El lunes 06 Diciembre 2021 comenzamos la 🎓Carrera Consultor ABAP.
Juntos para realizar sus más grandes desafíos!

 Cargando presentación, aguarde unos instantes...

 

 

+Recursos Gratuitos en CVOSOFT:

¡Lo importante es aprender!, por eso en CVOSOFT la comunidad SAP más grande de habla hispana, ponemos a su alcance los siguientes recursos abiertos libres y gratuitos:

Buscador de Publicaciones:

 

 

Consultas y Soporte

👋Hola! Estamos listos para ayudarle con el soporte que su carrera merece.

Acceda sección contacto y seleccione canal de comunicación más cómodo para usted.

🤝Aguardamos su mensaje, ¡Éxitos!

 


 

👉Que las empresas tomen en serio sus estudios es muy importante para que su inversión educativa tenga sentido.
Las empresas líderes de United States y del Mundo confían a CVOSOFT su recurso más valioso, la formación de su gente.

¿Quieres conocerlas?