✒️ABAP El ALV Grid Control
ABAP El ALV Grid Control
Lección 8: ALV Grid Control
1| Introducción al ALV Grid Control
El Sistema SAP permite crear controles Z utilizando objetos ABAP. Uno de los controles es el ALV GRID CONTROL con el cual podremos crear reportes ALV Utilizando objetos. Con este control tendremos disponibles todas las funciones estándar de la barra de menús y también podremos configurar todas las propiedades del ALV para adaptarlo a nuestras necesidades. Para crear el ALV utilizaremos un Contenedor. Este objeto puede contener otros controles a parte del ALV GRID CONTROL como por ejemplo Tree Control, SAP Picture Control, SAP Splitter Control y más.
El contenedor proporciona un área física para la visualización de los objetos. Todos los controles existen dentro de un contenedor. Utilizaremos dos objetos para administrar los controles Z y el ALV GRID CONTROL. Las clases son:
> CL_GUI_CUSTOM_CONTAINER
> CL_GUI_ALV_GRID.
Podemos ver todos los atributos, métodos y demás configuraciones de los objetos a través del 'Generador de Clases' transacción SE24.
2| Pasos para la creación del ALV Grid Control
Crearemos el reporte ZPRUEBA_ALV_GRID_OBJETOS y realizaremos las siguientes declaraciones de datos:
TYPE-POOLS: slis.
*Tabla de salida del ALV
DATA: ti_usuarios TYPE STANDARD TABLE OF ztabla_usuarios,
st_usuarios LIKE LINE OF ti_usuarios.
*Tabla y estructura del catálogo.
DATA: ti_catalogo TYPE lvc_t_fcat,
st_catalogo LIKE LINE OF ti_catalogo,
ok_code TYPE sy-ucomm,
o_grilla TYPE REF TO cl_gui_alv_grid,
o_contenedor TYPE REF TO cl_gui_custom_container.
En el evento START-OF-SELECTION realizaremos la búsqueda de los datos en la tabla ZTABLA_USUARIOS. En el evento END-OF-SELECTION se llamara a la dynpro 0100 que es la que almacenará el ALV.
START-OF-SELECTION.
PERFORM selección_Datos.
END-OF-SELECTION.
CALL SCREEN 0100.
Crearemos la dynpro 0100 y el Status GUI 0100 con los botones de navegación estándar. Asignaremos el OK_CODE a la dynpro. Utilizando el Screen Painter, a través de la transacción SE80. crearemos un Custom Control que servirá de contenedor de nuestro ALV.
Luego en la lista de elementos de la dynpro asignaremos el nombre CONTENEDOR al custom control.
En la lógica de procesamiento de la dynpro crearemos los siguientes módulos:
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE crear-objetos_0100.
*
PROCESS AFTER INPUT.
MODULE salir_0100.
MODULE user_command_0100.
En el módulo CREAR_OBJETOS_0100 crearemos los objetos O_CONTENEDOR y O_GRILLA tal como vemos:
MODULE crear_objetos_0100 OUTPUT.
IF o_contenedor IS INITIAL.
CREATE OBJECT o_contenedor
EXPORTING
container_name = 'CONTENEDOR'.
CREATE OBJECT o_grilla
EXPORTING
i_parent = o_contenedor.
PERFORM armar_catalogo.
CALL METHOD o_grilla->set_table_for_first_display
CHANGING
it_outtab = ti_usuarios
it_fieldcatalog = ti_catalogo[].
ELSE.
CALL METHOD o_grilla->refresh_table_display
EXPORTING
i_soft_refresh = 'X'
EXCEPTIONS
finished = 1
others = 2.
ENDIF.
ENDMODULE. " CREAR_OBJETOS_0100 OUTPUT
En el reporte podemos querer excluir botones estándar que no son utiles, para ello debemos completar una tabla interna del tipo UI_FUNCTIONS y pasar esta tabla interna en el parámetro IT_TOOLBAR_EXCLUDING correspondiente al método SET_TABLE_FOR_FIRST_DISPLAY los códigos de función de los botones que deseamos quitar de la barra, se pueden obtener inspeccionando las constantes de la clase estándar CL_GUI_ALV_GRID en la transacción SE24, para ocultar la barra de herramientas entera podemos asignar 'X' al campo NOW_TOOLBAR del Layout.
Utilizamos el método SET_TABLE_FOR_FIRST_DISPLAY para visualizar el ALV por primera vez. Luego si se realiza algún cambio al mismo utilizamos el método REFRESH_TABLE_DISPLAY. Previamente a mostrar el ALV debemos completar el catalogo. Finalmente en el módulo SALIR_0100 liberamos los objetos O_CONTENEDOR y O_GRILLA y volvemos a la pantalla inicial.
MODULE salir_0100 INPUT.
CALL METHOD o_grilla->free.
CALL METHOD o_contenedor->free.
LEAVE PROGRAM.
ENDMODULE. " SALIR_0100 INPUT
Si ejecutamos el reporte veremos la siguiente salida por pantalla:
ALV Grid Control
DNI Nombre y Apellido Estado Usuario Dirección Fecha Nac. Estado civil
21567432 Joaquín Pérez A Lavalleja 543 10.07.1970 C
25674897 Victoria Moreni Sosa C Gallardo 201 02.07.1980 S
27982134 Eugenia Herrera A Guido 583 09.04.1979 S
31987623 Barbara Pereira A Gallardo 118 07.09.1979 S
Cuando trabajamos con el control ALV Grid Control nos puede suceder que, sea conveniente crear una pantalla de selección tal como la que creamos en los reportes clásicos y luego en base a parámetros introducidos en pantalla se llame mediante la sentencia CALL SCREEN a diferentes Dynpros, el programa que estamos creando sería un Híbrido entre un reporte clásico y un programa de dialogo, si nos encontramos en dicha situación y realizamos un CALL SCREEN a la Dynpro 0100 y deseamos que al presionar el botón BACK el programa regrese a la pantalla de selección entonces dentro del código correspondiente al botón BACK debemos ejecutar la sentencia LEAVE TO SCREEN 0 en lugar de LEAVE PROGRAM.
 
 
 
Sobre el autor
Publicación académica de Hernan Cabezas, en su ámbito de estudios para la Carrera Consultor ABAP.
Hernan Cabezas
Peru - Legajo: ZM88T
✒️Autor de: 117 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Hernan Cabezas