![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP El ALV Grid Control
ABAP El ALV Grid Control
![ABAP El ALV Grid Control ABAP El ALV Grid Control](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/111.jpg)
1-Introducción al ALV Grid Control
El sistema SAP nos 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 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 ej. Tree control, SAP Picture contra, SAP splitter control.
El contenedor proporcionaban á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 ALV GRID CONTROL
- CL_GUI_CUSTOM_CONTAINER
- CL_GUI_ALV_GRID
Podemos ver todos lo 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
Creamos el reporte ZPRUEBA_ALV_GRID_OBJETOS
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 catalogo 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 realizamos la búsqueda de datos en la tabla ZTABLA_USUARIOS. En el evento END-OF_SELECTION se llamara a la dynpro 0100 que es la que almacenara el ALV.
Star-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. Asignamos el OK_CODE a la dynpro.
Utilizaremos el screen Painter, a través de SE80 y crearemos un Custom Control que serviría de contenedor de nuestro ALV.
Luego en la lista de elementos de la fynpro asignaremos el nombre CONTENEDOR al Custom control.
EN la lógica del 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.
El modulo CREAR_OBJETOS_0100 creamos los objetos O_CONTENEDOR y O_GRILLA
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 OUTPUTEn el reporte podemos querer excluir botones estándar del menú, ya que no son útiles para los usuarios. Para excluir estos botones estándar, 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 Juan Carlos Pavicich, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Carlos Pavicich
Profesión: Técnico Informático - Argentina - Legajo: VR91L
✒️Autor de: 116 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Tengo el agrado de dirigirme a ud/s con el objeto de mencionar mi experiencia y conocimientos técnicos necesarios para desarrollar actividades en el rubro de su empresa.
Certificación Académica de Juan Pavicich