En el siguiente tutorial mostraremos un ALV utilizando la función REUSE_ALV_GRID_DISPLAY, para ello deberemos seguir los siguientes pasos.
Definir tipo con los campos del ALV
Para definir los campos podremos utilizar un tipo de tabla o una estructura ya existente o crear nuestro propio tipo, para el ejemplo crearemos nuestro propio tipo.
TYPES: BEGIN OF gt_alv,
KUNNR LIKE kna1-KUNNR,
LAND1 LIKE kna1-LAND1,
NAME1 LIKE kna1-NAME1,
END OF gt_alv.
DATA: gi_alv TYPE STANDARD TABLE OF gt_alv.
Definir catálogo con los campos del ALV
Definiremos los campos del ALV utilizando el tipo slis_t_fieldcat_alv, en este caso solo utilizaremos 3 campos (Cliente, País y Nombre) y los referenciaremos con la tabla KNA1 para que utilice el nombre de los campos definido en la tabla.
En este caso informaremos los siguientes campos:
- Fieldname: Nombre del campo de la tabla ALV
- Tabname: Nombre de la tabla que hemos creado para mostrar el ALV
- Ref_tabname: Nombre de la tabla de referencia
- Ref_fieldname: Nombre del campo de referencia
- Key: Da a la columna un color distinto para mostrarlo como campo clave
También podremos definir otras opciones como:
- Seltext_s: Texto pequeño
- Seltext_m: Texto mediano
- Seltext_l: Texto grande
- Ddictxt: Texto a mostrar por defecto (S:Pequeño, M:Mediano, L:Grande)
- Do_sum: Para definir sumatorio
DATA: gi_catalogo TYPE slis_t_fieldcat_alv,
gwa_catalogo LIKE LINE OF gi_catalogo,
CLEAR gwa_catalogo.
gwa_catalogo-fieldname = 'KUNNR'.
gwa_catalogo-tabname = 'GI_ALV'.
gwa_catalogo-ref_fieldname = 'KUNNR'.
gwa_catalogo-ref_tabname = 'KNA1'.
Gwa_catalogo-key = ‘X’.
APPEND gwa_catalogo TO gi_catalogo.
CLEAR gwa_catalogo.
gwa_catalogo-fieldname = 'LAND1'.
gwa_catalogo-tabname = 'GI_ALV'.
gwa_catalogo-ref_fieldname = 'LAND1'.
gwa_catalogo-ref_tabname = 'KNA1'.
APPEND gwa_catalogo TO gi_catalogo.
CLEAR gwa_catalogo.
gwa_catalogo-fieldname = 'NAME1'.
gwa_catalogo-tabname = 'GI_ALV'.
gwa_catalogo-ref_fieldname = 'NAME1'.
gwa_catalogo-ref_tabname = 'KNA1'.
APPEND gwa_catalogo TO gi_catalogo.
Definir Layout ALV
Utilizaremos el tipo slis_layout_alv para definir el layout del ALV, en este caso informaremos los siguientes campos:
- Zebra: Da cada linea un color distinto para que sea más fácil de leer
- Colwidth_optimize: Ajusta el ancho de la columna automáticamente al tamaño del texto que contiene
Además de estos también podremos informar:
- Edit: Vuelve todos los campos del ALV editables (En otro tutorial veremos como guardar los cambios que realicemos en el ALV)
- No_colhead: No muestra el nombre de las columnas
DATA: gwa_layout TYPE slis_layout_alv.
gwa_layout-zebra = 'X'.
gwa_layout-colwidth_optimize = 'X'.
Mostrar ALV
Mostraremos el ALV con la función REUSE_ALV_GRID_DISPLAY.
Exporting:
- I_CALLBACK_PROGRAM: Nombre del programa desde el que llamamos el ALV, con la variable de sistema SY-REPID se informará automáticamente
- IS_LAYOUT: Layout que hemos creado anteriormente
- IT_FIELDCAT: Catálogo que hemos creado anteriormente
Tables:
- T_OUTTAB: Tabla con los datos que mostraremos en el ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = gwa_layout
it_fieldcat = gi_catalogo
TABLES
t_outtab = gi_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.
El resultado final será el siguiente:

Código completo para mostrar el AVL con la función REUSE_ALV_GRID_DISPLAY
REPORT ZTEST_ALV_FUNC.
TYPES: BEGIN OF gt_alv,
KUNNR LIKE kna1-KUNNR,
LAND1 LIKE kna1-LAND1,
NAME1 LIKE kna1-NAME1,
END OF gt_alv.
DATA: gi_catalogo TYPE slis_t_fieldcat_alv,
gwa_catalogo LIKE LINE OF gi_catalogo,
gwa_layout TYPE slis_layout_alv.
DATA: gi_alv TYPE STANDARD TABLE OF gt_alv,
gw_alv LIKE LINE OF gi_alv.
* Se rellenan los campos catálogo de campos
CLEAR gwa_catalogo.
gwa_catalogo-fieldname = 'KUNNR'.
gwa_catalogo-tabname = 'GI_ALV'.
gwa_catalogo-ref_fieldname = 'KUNNR'.
gwa_catalogo-ref_tabname = 'KNA1'.
gwa_catalogo-key = 'X'.
APPEND gwa_catalogo TO gi_catalogo.
CLEAR gwa_catalogo.
gwa_catalogo-fieldname = 'LAND1'.
gwa_catalogo-tabname = 'GI_ALV'.
gwa_catalogo-ref_fieldname = 'LAND1'.
gwa_catalogo-ref_tabname = 'KNA1'.
APPEND gwa_catalogo TO gi_catalogo.
CLEAR gwa_catalogo.
gwa_catalogo-fieldname = 'NAME1'.
gwa_catalogo-tabname = 'GI_ALV'.
gwa_catalogo-ref_fieldname = 'NAME1'.
gwa_catalogo-ref_tabname = 'KNA1'.
APPEND gwa_catalogo TO gi_catalogo.
* Layout
gwa_layout-zebra = 'X'.
gwa_layout-colwidth_optimize = 'X'.
* Añadir datos ALV
gw_alv-kunnr = '0000000001'.
gw_alv-land1 = 'ES'.
gw_alv-name1 = 'Pedro'.
APPEND gw_alv TO gi_alv.
gw_alv-kunnr = '0000000002'.
gw_alv-land1 = 'GB'.
gw_alv-name1 = 'Joan'.
APPEND gw_alv TO gi_alv.
gw_alv-kunnr = '0000000003'.
gw_alv-land1 = 'ES'.
gw_alv-name1 = 'Marisa'.
APPEND gw_alv TO gi_alv.
* ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = gwa_layout
it_fieldcat = gi_catalogo
TABLES
t_outtab = gi_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.
Para ver mas tutoriales de SAP, pulse en el siguiente enlace: Listado de tutoriales
Muchas gracias, lo voy a usar
Pedazo de explicación. Sencilla, directa y clara. Se nota que sabes de lo que hablas. Saludos cordiales.