2.4. - Lógica de procesamiento en PBO
2.4.1. - Creación de módulos
En el flujo de la lógica de una dynpro se utilizan módulos para realizar el procesamiento. De aquí viene el hecho que a los programas de diálogo se los denomine Module pool. Para llamar a un módulo, se utilizará la sentencia “MODULE”, seguida del nombre del módulo.
Si se selecciona un módulo pulsando dos veces, el sistema creará las instrucciones “MODULE - ENDMODULE”, en el lugar donde se le indique.
Si se crea un módulo en el PBO, el código del mismo empezará con la sentencia “MODULE OUTPUT”. Por el contrario, un módulo en el PAI, comenzará con la sentencia “MODULE INPUT”.
2.4.2. - Código ABAP en el PBO de una dynpro
Se utilizará el evento PBO para seleccionar todos los datos y realizar las configuraciones que se quieran que tomen efecto al momento en que se visualice la pantalla. Esto puede incluir entre otras cosas, cualquiera de 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 o cargar los campos de la pantalla con determinados valores.
2.4.3. - Seteo del status GUI y de los títulos
En el PBO es donde se definirá cual es el Status GUI y los títulos que se utilizarán en la dynpro. Dentro del PBO de la dynpro 0100, del programa “ZPRUEBA_DIALOGO”, se creará el módulo “STATUS_0100”. Se pulsa dos veces en el módulo y el sistema propondrá crearlo.
Después, aparecerá una ventana de diálogo donde se elegirá crear un include para almacenar el código de PBO.
Es recomendable crear un include para almacenar todos los módulos y subrutinas que se utilizan en la lógica de procesamiento del PBO. Este mismo razonamiento aplica para el PAI y todas las declaraciones de datos que se utilicen en el programa de diálogo.
En el módulo, tiene el siguiente código comentado.
Se utilizará la sentencia “SET PF-STATUS” para setear el status gui y la sentencia “SET TITLEBAR” para setear el título correspondiente a la dynpro 0100.
Se puede armar un título utilizando variables. Éstas pueden ser especificadas mediante la sentencia “SET TITLEBAR WITH”. Se pueden usar hasta nueve variables en el título. Éstas son sustituidas en el título de acuerdo con su numeración o de no haberla de izquierda a derecha, como si se pasase de un paso de parámetros a una subrutina. En tiempo de ejecución, el título del menú se guardará en la variable del sistema “sy-title”.
En ciertas ocasiones, en el momento de setear un status gui, se podría no querer mostrar todos los botones del mismo. Por ejemplo, en un status gui existen tres botones “BOTON1”, “BOTON2” y “BOTON3”.
Si solo se quisiese mostrar el “BOTON1”, habría que añadir los códigos de los botones que no se quieran mostrar a una tabla interna del tipo “SLIS_T_EXTAB” y luego, en el momento de ejecutar la sentencia “SET PF-STATUS”, incluir esta tabla interna de la siguiente manera:
Hay que recordar que para utilizar las estructuras “SLIS” hay que añadir “TYPE-POOLS SLIS”.
2.4.4. - Modificación de los atributos de los campos de la pantalla
Los elementos que componen a una dynpro están almacenados en la estructura “SCREEN”. La palabra “SCREEN” es una palabra reservada en ABAP. Esta estructura, es inicializada con los campos definidos en el Screen Painter y con sus atributos cada vez que el módulo PBO es ejecutado.
Se activarán o desactivarán los atributos de los campos de la estructura SCREEN asignando valores 0 y 1. Para almacenar los cambios realizados a los atributos, se utilizará la sentencia “MODIFY SCREEN”.
En el ejemplo, una dynpro con el campo de entrada/salida “WA_SCREEN_0100-DNI”, se requiere hacer no visible al campo, se crearía un módulo en el PBO con el código “SCREEN-INVISIBLE = 1”. Para que el campo sea “INVISIBLE”, el atributo invisible debe ser 0.
Si no se quisiera permitir la entrada de datos en el campo “WA_USUARIOS_0100-DNI”, es decir, convertirlo en un campo de salida, se crearía un módulo en el PBO con “SCREEN-INPUT = 1”.
Vale mencionar que para que el campo sea de entrada el atributo “INPUT” debe ser 1. Si se quiere que el campo “WA_USUARIOS_0100-DNI” sea obligatorio, se crearía un módulo en el PBO con “SCREEN-REQUIRED = 1”.
Si se asigna un 1 al campo de la pantalla “SCREEN-INTENSIFIED”, los contenidos de los campos de entrada de la pantalla se cambiarán de negro a rojo. El contenido de los campos de salida se cambiará de negro a azul.
Mediante el atributo “SCREEN-LENGTH”, se podrá configurar la longitud de un campo de la pantalla con un valor menor a la longitud de salida del campo especificada de forma estática. Esto funciona para los campos de entrada/salida y solo salida.
2.4.5. - Cargar campos de una dynpro
Para cargar un campo, una estructura o una tabla interna con datos y luego mostrar dichos datos en una dynpro, simplemente se tendrá que asignar los datos a los campos de la dynpro en el PBO para que luego los mismos se vean reflejados en la pantalla.