✒️ABAP La lógica de procesamiento en el PBO
ABAP La lógica de procesamiento en el PBO
La creación de los módulos.
Cuando creamos una dynpro nueva, dentro de la solapa Lógica de procesamiento, Vamos a visualizar los eventos PBO y PAI y dentro de cada uno de ellos, vamos comentada una línea de código en donde se declara un MODULE.
Lo que primero vamos hacer es descomentar ambos MODULE y luego los vamos a crear. Para llamar a un módulo utilizamos la sentencia MODULE seguida del nombre del módulo. Si hacemos doble clic en el MODULE status_0100 entonces el sistema identifica que este módulo no existe y nos pregunta si deseamos crearlo. Previo a crear el MODULO, el sistema nos da a elegir en donde deseamos crear el módulo. Podemos hacerlo dentro de un nuevo include, en el programa de control o en un include ya existente. Como este módulo se va a ejecutar dentro del PBO entonces corresponde crearlo dentro del include que utilizamos para las declaraciones del PBO. A continuación, se crea el módulo en el PBO y vamos a notar en su definición que el mismo se llama MODULE status_0100 OUTPUT. Es decir todos los módulos que se crean dentro del PBO de una dynpro van a tener la palabra OUTPUT a la derecha del nombre del módulo.
Mientras que si creamos un módulo dentro del PAI, por ejemplo el MODULE user_command_0100 que ya viene declarado por defecto en la dynpro. Y elegimos crearlo dentro del include correspondiente al PAI. Entonces vamos a notar en su definición que el mismo se llama MODULE user_command_0100 INPUT. Es decir todo los módulos que se crean dentro del PAI de una dynpro van a tener la palabra INPUT a la derecha del nombre del módulo.( la sentencia MODULE finaliza con la sentencia ENDMODULE).
El código ABAP en el PBO de una dynpro.
Utilizamos el evento PBO para seleccionar todos los datos y realizar las configuraciones que deseamos que tomen afecto al momento en que se visualice en pantalla. Esto puede incluir entre otras cuestiones cualquiera de las siguiente acciones:
- Setear o configurar el Status GUI y los Títulos de la dynpro.
- Modificar los atributos de los campos de la dynpro.
- Inicializar o cargar campos de la pantalla con determinados valores.
El seteo del Status GUI y de los títulos.
En el PBO es donde definimos cual es el Status GUI y los títulos que se utilizan en la dynpro.
Para ello, dentro del PBO de la dynpro 0100 de nuestro programa, creamos el módulo STATUS_0100 tal como vimos anteriormente. Al hacerlo vemos que el MODULE tiene comentadas las siguientes dos lineas de código. Utilizamos la sentencia SET PF-STATUS para setear o configurar el Status GUI que se utilizará en la dynpro y la sentencia SET TITLEBAR para setear o configurar el título correspondiente a la dynpro 0100. Si finalmente ejecutamos la transacción ZACT_USU asociada al programa de diálogo ZPRUEBA_DIALOGO entonces veremos en pantalla la dynpro 0100, que es la primera dympro del programa de diálogo.
Ahora bien, en ciertas ocasiones, al momento de setear o configurar un Status GUI podríamos no querer mostrar todos los botones del mismo. Por ejemplo, en el Status GUI 0400 vemos a continuación, existen los botones BOTON1, BOTON2 y BOTON3. Si solo quisiéramos mostrar el BOTON1, tendríamos que agregar los código de función de los botones que no queremos mostrar a una tabla interna y luego al momento de ejecutar la sentencia SET PF-STATUS incluir esta tabla interna.
La 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.
La estructura SCREEN es inicializada con los campos definidos en el Screen Painter y con su atributos, cada vez que el PBO es ejecutado.
Activamos o desactivamos los atributos de los campos de la estructura SCREEN asignando valores 0 o 1. Para almacenar los cambios realizados a los atributos utilizaremos la sentencia MODIFY SCREEN. Y queremos hacer no visible al campo entonces en el PBO creamos el MODULE modificar_atributos_0100. Y dentro del MODULE modificar_atributos_0100 escribimos el siguiente código:
LOOP AT SCREEN.
IF screen_name EQ 'WA_SCREEN_0100-DNI'.
SCREEN-INVISIBLE = 1.
MODIFY SCREEN.
ENDIF.
Vale mencionar que para el campo WA_SCREEN_0100-DNI sea visible entonces el atributo INVISIBLE debe ser cero.
Si deseamos no permitir la entrada de datos en el campo WA_SCREEN_0100-DNI, es decir convertirlo en un campo de salida, entonces debemos escribir el siguiente código:
IF screen_name EQ 'WA_SCREEN_0100-DNI'.
SCREEN-INVISIBLE = 0.
MODIFY SCREEN.
ENDIF.
ENDMODULE.
Como se completa los campos de una dynpro?
Simplemente tenemos que asignar valores a los campos de la dynpro en el PBO, para que luego mostrar dichos datos en pantalla.
 
 
 
Sobre el autor
Publicación académica de Javier Miguel Angel Barcelo, en su ámbito de estudios para la Carrera Consultor ABAP.
Javier Miguel Angel Barcelo
Profesión: Militar - Argentina - Legajo: DQ34X
✒️Autor de: 107 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: PartTime
Certificación Académica de Javier Angel