REUSE_ALV_GRID_DISPLAY
Muestra una tabla interna en un listado ALV Grid a pantalla completa.
- Transacción
SE37- Grupo
ALV- Actualizado
- 21 de octubre de 2026
Función obsoleta. Para listados nuevos usa la clase CL_SALV_TABLE (o CL_GUI_ALV_GRID si necesitas edición o un contenedor propio). No necesita catálogo de campos: lo saca de la tabla interna. Tienes el ejemplo moderno más abajo.
Para qué sirve
REUSE_ALV_GRID_DISPLAY pinta una tabla interna como un listado ALV en formato rejilla: el usuario puede ordenar, filtrar, sumar, cambiar columnas y exportar a Excel sin que el programa haga nada más.
Las columnas se describen con un catálogo de campos (IT_FIELDCAT) o, si los campos vienen del diccionario, con el nombre de una estructura (I_STRUCTURE_NAME). El aspecto general se controla con IS_LAYOUT y los eventos (botones, doble clic, cabecera) con formularios FORM del propio programa.
Es una función antigua basada en subrutinas: sigue funcionando y la usan miles de programas, pero para listados nuevos SAP recomienda la clase CL_SALV_TABLE, mucho más sencilla, o CL_GUI_ALV_GRID si necesitas edición o control total.
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ámetro | Tipo | Descripción |
|---|---|---|
I_CALLBACK_PROGRAM | SY-REPID | Programa que contiene los FORM de los eventos. Pasa sy-repid en una variable, no directamente. |
I_CALLBACK_PF_STATUS_SET | SLIS_FORMNAME | Nombre del FORM que pone el status (barra de botones) propio. |
I_CALLBACK_USER_COMMAND | SLIS_FORMNAME | Nombre del FORM que recibe los botones y el doble clic. |
I_CALLBACK_TOP_OF_PAGE | SLIS_FORMNAME | Nombre del FORM que escribe la cabecera del listado. |
I_STRUCTURE_NAME | DD02L-TABNAME | Estructura del diccionario de la que se toma el catálogo de campos. |
I_GRID_TITLE | LVC_TITLE | Título que aparece encima de la rejilla. |
IS_LAYOUT | SLIS_LAYOUT_ALV | Aspecto: ajuste de columnas (COLWIDTH_OPTIMIZE), filas cebra (ZEBRA), campo de color de fila… |
IT_FIELDCAT | SLIS_T_FIELDCAT_ALV | Catálogo de campos: qué columnas se ven, con qué texto, longitud y formato. |
IT_SORT | SLIS_T_SORTINFO_ALV | Ordenación y subtotales iniciales. |
I_SAVE | CHAR01 | Permite guardar variantes de visualización: 'A' todas, 'U' de usuario, 'X' globales.Por defecto: SPACE |
IS_VARIANT | DISVARIANT | Variante de visualización que se carga al abrir. |
IT_EVENTS | SLIS_T_EVENT | Otros eventos y el FORM que los atiende. |
Exporting
Lo que devuelve. En CALL FUNCTION se recogen tras IMPORTING.
| Parámetro | Tipo | Descripción |
|---|---|---|
E_EXIT_CAUSED_BY_CALLER | CHAR01 | 'X' si el listado se ha cerrado desde el programa. |
ES_EXIT_CAUSED_BY_USER | SLIS_EXIT_BY_USER | Indica cómo ha salido el usuario (atrás, salir, cancelar). |
Tables
Tablas internas que se pasan o se devuelven (TABLES).
| Parámetro | Tipo | Descripción |
|---|---|---|
T_OUTTABObligatorio | Tabla estándar | Tabla interna con los datos que se muestran. |
Excepciones
Errores que devuelve en sy-subrc, en el bloque EXCEPTIONS.
| Excepción | Cuándo se produce |
|---|---|
PROGRAM_ERROR | Error en los datos de entrada, normalmente un catálogo de campos incorrecto. |
Ejemplo
TYPE-POOLS slis.
DATA: lt_vbak TYPE STANDARD TABLE OF vbak,
lt_fieldcat TYPE slis_t_fieldcat_alv,
ls_layout TYPE slis_layout_alv,
lv_repid TYPE sy-repid.
START-OF-SELECTION.
SELECT * FROM vbak UP TO 200 ROWS INTO TABLE lt_vbak.
" Catálogo de campos a partir de la tabla del diccionario
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'VBAK'
CHANGING
ct_fieldcat = lt_fieldcat
EXCEPTIONS
OTHERS = 1.
ls_layout-colwidth_optimize = 'X'.
ls_layout-zebra = 'X'.
lv_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_repid
i_callback_user_command = 'USER_COMMAND'
i_grid_title = 'Pedidos de venta'
is_layout = ls_layout
it_fieldcat = lt_fieldcat
i_save = 'A'
TABLES
t_outtab = lt_vbak
EXCEPTIONS
program_error = 1
OTHERS = 2.
FORM user_command USING r_ucomm TYPE sy-ucomm
rs_selfield TYPE slis_selfield.
IF r_ucomm = '&IC1'. " doble clic
READ TABLE lt_vbak INTO DATA(ls_vbak) INDEX rs_selfield-tabindex.
SET PARAMETER ID 'AUN' FIELD ls_vbak-vbeln.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
ENDFORM.Hoy lo harías así: CL_SALV_TABLE
SELECT FROM vbak
FIELDS vbeln, erdat, kunnr, netwr, waerk
INTO TABLE @DATA(lt_pedidos)
UP TO 200 ROWS.
TRY.
cl_salv_table=>factory(
IMPORTING r_salv_table = DATA(lo_alv)
CHANGING t_table = lt_pedidos ).
lo_alv->get_functions( )->set_all( abap_true ). " ordenar, filtrar, Excel…
lo_alv->get_columns( )->set_optimize( abap_true ). " ancho automático
lo_alv->get_display_settings( )->set_list_header( 'Pedidos de venta' ).
lo_alv->get_display_settings( )->set_striped_pattern( abap_true ).
lo_alv->display( ).
CATCH cx_salv_msg INTO DATA(lx_error).
MESSAGE lx_error TYPE 'E'.
ENDTRY.Errores y excepciones habituales
- PROGRAM_ERROR o volcado al mostrar: el catálogo de campos tiene un FIELDNAME que no existe en la tabla interna, o está en minúsculas. Los nombres deben ir en mayúsculas.
- Los eventos no se ejecutan: I_CALLBACK_PROGRAM se ha pasado como sy-repid directamente. Cópialo antes en una variable, porque sy-repid cambia dentro de la función.
- No se pueden guardar variantes: falta I_SAVE = 'A' (o 'U'/'X').
- Columnas vacías o desplazadas: el catálogo no coincide con la estructura de la tabla. Genera el catálogo con REUSE_ALV_FIELDCATALOG_MERGE o usa I_STRUCTURE_NAME.
Relacionadas
Funciones relacionadas
REUSE_ALV_LIST_DISPLAYREUSE_ALV_HIERSEQ_LIST_DISPLAYHR_DISPLAY_BASIC_LIST
Transacciones y tablas
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.
Actualizado: 21 de octubre de 2026