Lección 5/9: ALV: GRILLAS Y LISTAS
1. ALV (ABAP List Viewer)
Es una herramienta exclusiva de ABAP, que se utiliza para crear reportes de manera eficaz, rápida y estandarizada.
Las principales ventajas de los reportes AVL son:
Simplifican el desarrollo de reportes, por lo tanto se reducen los tiempos de programacion.
Proporcionan a nuestros reportes un monton de funcionalidad estandar.
Proporcionan una salida por pantalla estandarizada e uniforme.
La creacion de un Reporte ALV, se basa en la utilizacion de funciones. Los tipos de ALV mas comunmente usados son 3: Grillas, Listas y Jerarquico.
Las Grillas y las listas pueden utilizarse en cualquier reporte, pero el Jerarquico se utiliza solo en los casos donde se muestran datos de cabecera y de detalle, como por ejemplo numeros de factura y detalles o Aerolineas y vuelos.
A cada tipo de ALV le corresponde una funcion diferente. Ellas son:
Grillas --> REUSE_ALV_GRID_DISPLAY
Listas --> REUSE_ALV_LIST_DISPLAY
Jerárquico --> REUSE_ALV_HIERSEQ_LIST_DISPLAY
2. MI PRIMER REPORTE ALV
PASOS
1.- Declaraciones de tipos, estructuras y tablas propias del ALV.
TYPE-POOLS: slis.
tambien declaramos una tabla y una estructura para el catalogo del ALV que son del tipo SLIS_T_FIELDCAT_ALV y SLIS_FIELD_ALV, SLIS_LAYOUT_ALV y una variable del tipo SY-REPID, para almacenar el nombre del programa.
*Tabla y estructura del catalogo
DATA: ti_catalogo TYPE slis_t_fieldcat_alv,
st_catalogo TYPE slis_fieldcat_alv,
*Estructura para la configuración de la salida
st-layout TYPE slis_layout_alv.
*Variable con el nombre del programa
v_repid LIKE sy-repid.
2.- Declaración de la tabla de salida del ALV
*Tabla de Salida del ALV
DATA: ti_usuarios TYPE STANDARD TABLE OF ztabla_usuarios,
st_usuarios LIKE LINE OF ti_usuarios.
3.-Seleccion de los datos que se mostraran en el ALV
Ahora seleccionamos los datos de la tabla ZTABLA_USUARIOS, que mostrremos en el listado de salida y los guardamos en la tabla interna TI_USUARIOS.
SELECT dni nombre_ape estado_usu direccion codigo_postal
f_nacimiento estado_civil
FROM ztabla_usuarios
INTO CORRESPONDING FIELDS OF TABLE ti_usuarios.
4.- Armado del catalogo del ALV
Armamos el catalogo del ALV con los campos que seran las columnas de nuestro reporte. Para ello completaremos para cada columna del listado, los siguientes campos pertenecientes a la tabla del catalogo.
CLEAR st_catalogo.
st_catalogo-fieldname = 'DNI'. "Nombre del campo
st_catalogo-tabname = 'TI_USUARIOS'. "Nombre Tabla
st_catalogo-seltext_s = 'DNI'. "Descripcion corta Cabecera.
st_catalogo-seltext_m = 'DNI'. "Descripcion media Cabecera.
st_catalogo-seltext_l = 'DNI'. "Descripcion larga Cabecera.
st_catalogo-outputlen = 15. "Ancho de la columna.
st_catalogo-just = 'L'. "Alineacion.
APPEND st_catalogo TO ti_catalogo.
NOTA: existen muchísimas mas propiedades del catalogo que se pueden configurar según lo que necesitemos mostrar en el listado.
Para mas información, hacer doble clic en el tipo SLIS_T_FIELDCAT_ALV
5.-Configuración de la salida del ALV
Vamos a cargar con valores la estructura ST_LAYOUT para configurar ciertos aspectos de la salida del ALV.
CLEAR st_layout-
st_latout-zebra = 'X'. "Rayado de lineas
st_layout-window_titleblar = text-001. "Titulo Ventana Principal.
NOTA: mas información de opciones para configurar en layout de un reporte ALV hacer doble clic en el tipo SLIS_LAYOUT_ALV.
6.- Ejecución de la función ALV
- Si queremos un reporte tipo grilla, ejecutamos la funcion REUSE_ALV_GRID_DISPLAY.
- Si queremos Reporte tipo lista, ejecutamos la funcion REUSE_ALV_LIST_DISPLAY.
Ambas funciones se completan de la misma manera. Como dijimos anteriormente, los ALV jerarquicos se utilizan cuando tenemos que mostrar datos de cabecera y detalle, por lo tanto no es aplicable para este ejemplo.
Si es GRILLA:
v_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DIPLAY'
EXPORTING
i_callback_program = v_repid
it_fieldcat = ti_catalogo[]
is_layout = st_layout
TABLES
t_outtab = ti_usuarios.
Si es LISTA:
v_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DIPLAY'
EXPORTING
i_callback_program = v_repid
it_fieldcat = ti_catalogo[]
is_layout = st_layout
TABLES
t_outtab = ti_usuarios.
Finalmente si se ejecuta el reporte se observara las grillas o las listas. ver imagen 2.9 pag.45 del texto guia.