Ir al contenido
Programación ABAP

REUSE_ALV_HIERSEQ_LIST_DISPLAY

Muestra un listado ALV jerárquico de dos niveles: cabeceras y sus posiciones.

Módulo de funciónALV
Transacción
SE37
Grupo
ALV
Actualizado
21 de octubre de 2026

Alternativa moderna. Para listados nuevos usa la clase CL_SALV_HIERSEQ_TABLE, el equivalente orientado a objetos.

Para qué sirve

REUSE_ALV_HIERSEQ_LIST_DISPLAY muestra dos tablas internas relacionadas como un listado jerárquico: cada línea de cabecera (por ejemplo, un pedido) aparece seguida de sus posiciones.

La relación entre las dos tablas se indica con IS_KEYINFO, que dice qué campos enlazan la cabecera con las posiciones. El catálogo de campos debe indicar en cada campo a qué tabla pertenece (campo TABNAME).

Es una función antigua basada en subrutinas. Para listados nuevos existe la clase CL_SALV_HIERSEQ_TABLE, que hace lo mismo con objetos.

Parámetros

Esta función tiene muchos parámetros; aquí están los más usados. La lista completa se ve en la transacción SE37.

Importing

Lo que recibe la función. En CALL FUNCTION se pasan tras EXPORTING.

ParámetroTipoDescripción
I_CALLBACK_PROGRAMSY-REPIDPrograma con los FORM de los eventos.
IS_LAYOUTSLIS_LAYOUT_ALVAspecto del listado.
IT_FIELDCATSLIS_T_FIELDCAT_ALVCatálogo de campos de las dos tablas (campo TABNAME en cada línea).
I_TABNAME_HEADERObligatorioSLIS_TABNAMENombre de la tabla interna de cabeceras.
I_TABNAME_ITEMObligatorioSLIS_TABNAMENombre de la tabla interna de posiciones.
IS_KEYINFOObligatorioSLIS_KEYINFO_ALVCampos que relacionan cabecera y posiciones.

Tables

Tablas internas que se pasan o se devuelven (TABLES).

ParámetroTipoDescripción
T_OUTTAB_HEADERObligatorioTabla estándarCabeceras.
T_OUTTAB_ITEMObligatorioTabla estándarPosiciones.

Excepciones

Errores que devuelve en sy-subrc, en el bloque EXCEPTIONS.

ExcepciónCuándo se produce
PROGRAM_ERRORError en el catálogo o en la relación entre tablas.

Ejemplo

ABAP
TYPE-POOLS slis.
DATA: lt_cab     TYPE STANDARD TABLE OF vbak,
      lt_pos     TYPE STANDARD TABLE OF vbap,
      lt_fcat    TYPE slis_t_fieldcat_alv,
      ls_keyinfo TYPE slis_keyinfo_alv,
      lv_repid   TYPE sy-repid.

SELECT * FROM vbak UP TO 20 ROWS INTO TABLE lt_cab.
IF lt_cab IS NOT INITIAL.
  SELECT * FROM vbap FOR ALL ENTRIES IN lt_cab
    WHERE vbeln = lt_cab-vbeln INTO TABLE lt_pos.
ENDIF.

" Catálogo de las dos tablas a partir del diccionario
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING i_tabname = 'LT_CAB' i_structure_name = 'VBAK'
  CHANGING  ct_fieldcat = lt_fcat.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING i_tabname = 'LT_POS' i_structure_name = 'VBAP'
  CHANGING  ct_fieldcat = lt_fcat.

ls_keyinfo-header01 = 'VBELN'.     " campo de enlace en la cabecera
ls_keyinfo-item01   = 'VBELN'.     " y en las posiciones
lv_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
  EXPORTING
    i_callback_program = lv_repid
    it_fieldcat        = lt_fcat
    i_tabname_header   = 'LT_CAB'
    i_tabname_item     = 'LT_POS'
    is_keyinfo         = ls_keyinfo
  TABLES
    t_outtab_header    = lt_cab
    t_outtab_item      = lt_pos
  EXCEPTIONS
    program_error      = 1
    OTHERS             = 2.

Errores y excepciones habituales

  • No sale ninguna posición: IS_KEYINFO no relaciona bien las tablas, o los nombres de I_TABNAME_HEADER/ITEM no coinciden con el TABNAME del catálogo.
  • PROGRAM_ERROR: en el catálogo falta el TABNAME de algún campo.

Relacionadas

Funciones relacionadas

REUSE_ALV_LIST_DISPLAYREUSE_ALV_GRID_DISPLAY

Más en ALV

HR_DISPLAY_BASIC_LIST

Transacciones y tablas

SE37VBAKVBAP

En abap.es

¿Dudas con esta función?

Pregunta en el foro de abap.es: la comunidad lleva años resolviendo dudas de ABAP en español.

Preguntar en el foro

Actualizado: 21 de octubre de 2026