CREACIÓN DE MÓDULOS
Para la creación de la lógica de una dynpro se utilizan módulos para realizar el procesamiento, de ahí viene el nombre de MODULE POOL.
Para llamar a un módulo se utiliza la sentencia MODULE seguida del nombre del módulo:
MODULE cargar_campos_0100.
Se se selecciona un módulo con doble clisk el sistema creará las instrucciones MODULE - ENDMODULE
Si se crea en el PBO la sentencia será MODULE OUTPUT
Si se crea en el PAI la sentencia será MODULE INPUT
------------------------------------------------------------------
CODIGO ABAP EN EL PBO
El evento PBO se utiliza para seleccionar todos los datos y realizar las configuraciones que queremos que se realicen en el momento de visualizar la pantalla. Esto incluye las siguientes acciones:
1. Setear el status GUI y los títulos de la dynpro
2. Modificar los atributos de los campos de la dynpro
3. Inicializar y cargar campos de la pantalla con ciertos valores
-------------------------------------------------------------------------------------------
SETEO DEL STATUS GUI Y TITULOS
En el PBO es donde se define cual es el status gui y los títulos a mostrar en la dynpro.
1- Para esto dentro de la PBO de la dynpro 0100 se creará el módulo STATUS_0100:
MODULE status_0100.
2- Al crearlo aparece una ventana de dialogo indicando si se desea crear un Include, ES RECOMENDABLE CREAR UN INCLUDE PARA ALMACENAR TODOS LOS MÓDULOS Y SUBRUTINAS QUE UTILIZAREMOS EN LA LÓGICA DE PROCESAMIENTO DEL PBO. LO MISMO APLICA PARA PAI
3- Se utiliza la sentencia SET PF-STATUS para setear el status gui y la sentencia SET TITLEBAR para setear el titulo:
SET PF-STATUS '0100'.
SET TITLEBAR '0100'.
Se puede armar un titulo usando variables con la sentencia SET TITLEBAR '0100' WITH.... se pueden usar hasta 9 variables un un titilo y son sustituidas en el titulo de acuerdo a su numeración o de izquierda a derecha, como si se tratara de un paso de parametros de una subrutina en tiempo de ejecucion el titulo del menu se guardara en la variable del sistema sy-title
En algunas ocasiones no se quieren mostrar todos los botones del Status GUI, y solo se quiere mostrar un botón, entonces para esto debemos guardar lo botones que no queremos en una tabla interna del tipo SLIS_T_EXTTAB (estructura SLIS se utiliza para la creacion de titulos), al momento de ejecutar la sentencia set_pf-status incluir esta tabla interna como se muestra:
CLEAR ti_botones
REFRESh ti_botones
APPEND 'BOTON2' to ti_botones
APPEND 'BOTON3' to ti_botones
SET PF-STATUS '0100' EXCLUDING ti_botones
Para utilizar las estructuras SLIS tendremos que agregar el TYPE-POOLS SLIS.
---------------------------------------------------------------------------------------
MODIFICACIÓN DE LOS ATRIBUTOS DE LOS CAMPOS
Los elementos que componen a una dynpro se almacenan en una estructura SCREEN, es inicializada con los campos definidos en el SCREEN PAINTER y con sus atributos cada vez que el PBO es ejecutado.
La estructura de SCREEN es la siguiente:
SCREEN - NAME - Nombre
SCREEN-GROUP1 - Grupo de modificación 1
SCREEN-GROUP2 - Grupo de modificación 2
SCREEN-GROUP3 - Grupo de modificación 3
SCREEN-GROUP4 - Grupo de modificación 4
SCREEN-REQUIRED - Campo Obligatorio
SCREEN-INPUT - Campo de entrada
SCREEN-OUTPUT - campo de salida
SCREEN-INTENSIFIED - Campo Intensificado
SCREEN-INVISIBLE - Campo visible o no
SCREEN-LENGHT - Longitud de campo con un valor menor especificada en forma estatica y solo funciona para los campos de salida y entrada/salida.
SCREEN-ACTIVE - campos Activo
SCREEN-DISPLAY_3D - campos en 3D
SCREEN-VALUE_HELP - campo con ayuda de búsqueda
SCREEN-REQUEST - Campo reservado para el uso del sistema
Los atributos se activan o desactivan asignando los valores 0 y 1. Para almacenar los cambios realizados a los atributos se utilizará la sentencia MODIFY SCREEN
------------------------------------------------------------------------------
CARGAR CAMPOS DE UNA DYNPRO.
Para cargar un campo, estructura o tabla interna con datos y mostrarlos en la dynpro se tienen que asignar
los datos a los campos de la dynpro en el PBO para que se vean reflejados en pantalla
Ejemplo: wa_screen_00100-dni = 27865898.