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.