Para el ejemplo, crearemos un programa cuyo objetivo es mostrar el contenido de la Tabla ZTABLA_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 OF cl_gui_alv_grid,
o_contenedor TYPE REF OF cl_gui_custom_container.
- Eventos en el programa ABAP
- START-OF-SELECTION: Se realiza la Búsqueda de los Datos de la Tabla ZTABLA_USUARIOS.
- END-OF-SELECTION: Se llama a la Dynpro 0100 que es la que almacenará el ALV.
* --------------------------------------------------------------------------------------------------------------
START-OF-SELECTION.
* --------------------------------------------------------------------------------------------------------------
* --------------------------------------------------------------------------------------------------------------
END-OF-SELECTION.
* --------------------------------------------------------------------------------------------------------------
CALL SCREEN 0100.
- Elementos de la Pantalla de Salida
- Creamos la Dynpro 0100
- Creamos el Status_GUI 0100 con los Botones de Navegación Estándar
- Asignamos el OK_CODE a la Dynpro
- Utilizando el Screen Painter (SE80) creamos un Custom Control (Contenedor del ALV)
- En la lista de Elementos de la Dynpro, asignamos el nombre CONTENEDOR al Custom Control.
- En la Lógica de Procesamiento de la Dynpro, se crean los siguientes Módulos
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE crear_objetos_0100.
PROCESS AFTER INPUT.
MODULE salir_0100.
MODULE user_command_0100.
- Código de los Módulos
- CREAR_OBJETOS_0100:
- Se crean los Objetos O_CONTENEDOR y O_GRILLA
- Se llama a la Subrutina armar_catalogo
- Se ejecuta el ALV
- Para la primera vez se utiliza el Método SET_TABLE_FOR_FIRST_DISPLAY.
- Luego, si el catálogo se modificó, se utiliza el Método REFRESH_TABLE_DISPLAY
- SALIR_0100:
- Se liberan los Objetos O_CONTENEDOR y O_GRILLA
- Se vuelve a la Pantalla Inicial
* -------------------------------------------------------------------------------------------------------------------------------------------------------
* Module CREAR_OBJETOS_0100 OUTPUT
* -------------------------------------------------------------------------------------------------------------------------------------------------------
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
* -------------------------------------------------------------------------------------------------------------------------------------------------------
* Module SALIR_0100 INPUT
* -------------------------------------------------------------------------------------------------------------------------------------------------------
MODULE: salir_0100 INPUT,
CALL METHOD o_grilla->free.
CALL METHOD o_contenedor->free.
LEAVE PROGRAM.
ENDMODULE. " SALIR_0100 INPUT