✒️ABAP El ALV Grid Control
ABAP El ALV Grid Control
ALV GRID CONTROL
1,.Introcucciòn al ALV GRID control.
El sistema SAP nos permite crear controles Z utilizando objetos ABAP. Uno de los controles es ALV GRID control, con el que se puede crear reportes ALV, utilizando objetos.
Con este control se tienen disponibles todas las funciones estàndar de la barra de menùs y tambièn podremos configurar todas las propiedades del ALV para adaptarlos a nuestras necesidades.
Para crear el ALV utilizaremos un contenedor. Este objeto puede contener otros controles 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. Ellos son:
- CLGUI_CUSTOM_CONTAINER
- CL_GUI_ALV_GRID
··"Podemos ver todos los atributos, mètodos y demàs configuraciones de los objetos a travèz del generador de clases, transacciòn SE24".
2.- Pasos para la craciòn del ALV GRID control.
Crearemos el reporte ZRUEBA_ALV_GRID_OBJETOS_TF64C
SPAN {
font-family: "Courier New";
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S52 {
color: #0000FF;
}
REPORT ZRUEBA_ALV_GRID_OBJETOS_TF64C.
TYPE-POOL: slis.
* Tabla de salida del ALV
DATA: ti_usuarios TYPE SORTED 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 TYPE 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 llamarà a la dynpro 0100 que es la que almacenarà el ALV.
SPAN {
font-family: "Courier New";
color: #000000;
background: #FFFFFF;
}
.L0S32 {
color: #3399FF;
}
.L0S52 {
color: #0000FF;
}
START-OF-SELECTION.
PERFORM seleccion_datos.
END-OF-SELECTION.
CALL SCREEN 0100.
Creamos 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 el 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.
SPAN {
font-family: "Courier New";
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S52 {
color: #0000FF;
}
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODIFY crear_objetos_0100.
PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
MODULE salir_0100.
MODULE user_command_0100.
En el mòdulo CREAR_OBJETOS_0100 crearemos los objetos O_CONTENEDOR y O_GRILLA.
SPAN {
font-family: "Courier New";
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S32 {
color: #3399FF;
}
.L0S33 {
color: #4DA619;
}
.L0S52 {
color: #0000FF;
}
module CREAR_OBJETOS_0100 output.
IF o_contenedor IS INITIAL.
CREATE OBJECT o_contenddor
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
finisheds = 1
OTHERS = 2.
ENDIF.
endmodule.
Para excluir algunos botones extàndar de la dynpro, se debe completar una tabla interna del tipo UI_FUNCTION y pasar esta tabla interna en el paràmetro it_toolbar_excliding 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 se asigna el valor 'X' al campo not_toolbar del layout.
Utilizamos el mètodo SET_TABLE_FOR_FIRST_DISPLAY para visualizar el ALV pro 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.
Al ejecutar se observa la tabla grid con los datos de la tabla usuarios
Cuando trabajamos con el control AVL_GRID_CONTROL, puede suceder que dado un requerimiento sea conveniente crear una pantalla de selecciòn tal como la que se crean en los reportes clàsicos y luego en base a paràmetros introducidos en pantalla por el usuario se llame mediante la sentencia CALL SCREEN a diferentes dynpros, el programa que estarìamos creando serìa un hìbrido entre un reporte clàsico y un programa de diàlogo, 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 del status, el programa regrese a la pantalla de selecciòn entonces dentro del còdigo correspondiente al botòn BACK se debe ejecutar la sentencia LEAVE TO SCREEN 0 en lugar de LEAVE PROGRAM, de lo contrario estarìamos abandonando el programa sin pasar por la pantalla de selecciòn.
 
 
 
Sobre el autor
Publicación académica de Miguel Angel Acosta Acosta, en su ámbito de estudios para la Carrera Consultor ABAP.
Miguel Angel Acosta Acosta
Profesión: Ingeniero de Sistemas - Ecuador - Legajo: TF64C
✒️Autor de: 238 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP SD Nivel Avanzado
- Carrera Consultor en SAP SD Nivel Inicial
- Máster ABAP for HANA
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
Presentación:
Profesional de ingeniería de sistemas en computación e informática, con experiencia en la implantación y soporte de proyectos informáticos para empresas del sector industrial y financiero.
Certificación Académica de Miguel Acosta