Ir al contenido
Programación ABAP

REUSE_ALV_GRID_DISPLAY

Muestra una tabla interna en un listado ALV Grid a pantalla completa.

Módulo de funciónALVObsoleta
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ámetroTipoDescripción
I_CALLBACK_PROGRAMSY-REPIDPrograma que contiene los FORM de los eventos. Pasa sy-repid en una variable, no directamente.
I_CALLBACK_PF_STATUS_SETSLIS_FORMNAMENombre del FORM que pone el status (barra de botones) propio.
I_CALLBACK_USER_COMMANDSLIS_FORMNAMENombre del FORM que recibe los botones y el doble clic.
I_CALLBACK_TOP_OF_PAGESLIS_FORMNAMENombre del FORM que escribe la cabecera del listado.
I_STRUCTURE_NAMEDD02L-TABNAMEEstructura del diccionario de la que se toma el catálogo de campos.
I_GRID_TITLELVC_TITLETítulo que aparece encima de la rejilla.
IS_LAYOUTSLIS_LAYOUT_ALVAspecto: ajuste de columnas (COLWIDTH_OPTIMIZE), filas cebra (ZEBRA), campo de color de fila…
IT_FIELDCATSLIS_T_FIELDCAT_ALVCatálogo de campos: qué columnas se ven, con qué texto, longitud y formato.
IT_SORTSLIS_T_SORTINFO_ALVOrdenación y subtotales iniciales.
I_SAVECHAR01Permite guardar variantes de visualización: 'A' todas, 'U' de usuario, 'X' globales.Por defecto: SPACE
IS_VARIANTDISVARIANTVariante de visualización que se carga al abrir.
IT_EVENTSSLIS_T_EVENTOtros eventos y el FORM que los atiende.

Exporting

Lo que devuelve. En CALL FUNCTION se recogen tras IMPORTING.

ParámetroTipoDescripción
E_EXIT_CAUSED_BY_CALLERCHAR01'X' si el listado se ha cerrado desde el programa.
ES_EXIT_CAUSED_BY_USERSLIS_EXIT_BY_USERIndica cómo ha salido el usuario (atrás, salir, cancelar).

Tables

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

ParámetroTipoDescripción
T_OUTTABObligatorioTabla estándarTabla interna con los datos que se muestran.

Excepciones

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

ExcepciónCuándo se produce
PROGRAM_ERRORError en los datos de entrada, normalmente un catálogo de campos incorrecto.

Ejemplo

ABAP
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

Ahora
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

SE37SE80

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