✒️ABAP El ALV Grid Control
ABAP El ALV Grid Control
1 | Introducción al ALV Grid Control
El sistema SAP nos permite crear controles Z utilizando objetos ABAP.
Uno de los controles de los que hablamos es el ALV GRID CONTROL con el cual podremos crear reportes ALV utilizando objetos.
Imagen 1.1 - Layout de un ALV GRID CONTROL
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.
Imagen 1.2 - Esquema general de un programa que utiliza el control ALV GRID
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. Ellos son las clases:
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 | Los 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 zcvs_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.
Imagen 2.1 - Declaraciones de datos necesarias para crear un ALV GRID CONTROL
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 llamará a la dynpro 0100 que es la que almacenará el ALV.
*----------------------------------------------------------------------*
START-OF-SELECTION.
*----------------------------------------------------------------------*
PERFORM seleccion_datos.
*----------------------------------------------------------------------*
END-OF-SELECTION.
*----------------------------------------------------------------------*
CALL SCREEN 0100.
Imagen 2.2 - Los eventos START-OF-SELECTION y END-OF-SELECTION
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.
Imagen 2.3 - Creamos un custom control a través del screen painter
Luego en la lista de elementos de la dynpro asignaremos el nombre CONTENEDOR al Custom control.
Imagen 2.4 - Asignamos un nombre al control
En la lógica de procesamiento de la dynpro crearemos los siguiente módulos:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE crear_objetos_0100.
PROCESS AFTER INPUT.
MODULE salir_0100.
MODULE USER_COMMAND_0100.
Imagen 2.5 - Creamos los módulos en el PBO y en el PAI
En el módulo CREAR_OBJETOS_0100 crearemos los objetos O_CONTENEDOR y O_GRILLA tal como vemos a continuación:
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
Imagen 2.6 - Creamos los objetos contenedor y grilla, completamos el catálogo y ejecutamos el ALV
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 catálogo.
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
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE salir_0100 INPUT.
CALL METHOD o_grilla->free.
CALL METHOD o_contenedor->free.
LEAVE PROGRAM.
ENDMODULE. " SALIR_0100 INPUT
Imagen 2.7 - Borramos las variables referenciadas y regresamos a la pantalla inicial
Si ejecutamos el reporte veremos la siguiente salida por pantalla:
Imagen 2.8 - Visualizamos la salida por pantalla
 
 
 
Sobre el autor
Publicación académica de Alex Francisco Lemos Collazos, en su ámbito de estudios para la Carrera Consultor ABAP.
Alex Francisco Lemos Collazos
Profesión: Ingeniero en Sistemas - Colombia - Legajo: QS36A
✒️Autor de: 174 Publicaciones Académicas
🎓Cursando Actualmente: Master S/4HANA Material Management
🎓Egresado de los módulos:
- Máster Material Management en SAP S/4HANA LOGISTIC
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP SD Nivel Inicial