✒️ABAP La lógica de procesamiento en el PBO
ABAP La lógica de procesamiento en el PBO
La lógica de procesamiento en el PBO
La creación de módulos
En el flujo de la lógica de una dynpro usamos módulos para realizar el procesamiento. De aquí viene el hecho que a os programas de diálogo se los denomina Module Pool.
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, vemos comentada una línea de código en donde se declara un MODULE.
Lo que primero vamos a hacer es descomentar ambos MODULE y luego los vamos a crear. Tal como vemos en la siguiente imagen, la pabla MODULE aparece en azul, lo que nos indica que es una palabra reservada de APAB, que se usa justamente para declarar los módulos. Para llamar a un módulo usaremos la sentencia MODULE seguida del nombre del módulo tal como vemos a continuación:
Si hacemos doble clic sobre el MODULE status_0100 entonces el sistema identifica que este módulo no existe y nos pregunta si deseamos crearlo tal como vemos a continuación:
Previo a crear el MODULE, 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 usaremos para las declaraciones PBO.
La longitud máxima permitida para el nombre de un MODULE es de 30 caracteres.
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 creen dentro del PBO de una dynpro van a tener la palabra OUTPUT a la derecha del nombre del módulo.
Es ampliamente recomendable crear un include para almacenar todos los módulos y subrutinas que usaremos en la lógica de procesamiento del PBO.
Este mismo razonamiento aplica para el PAI y todas las declaraciones que usemos en un programa de diálogo.
Mientras que si creamos un módulo del PAI, por ejemplo 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 ecir todos los módulos que se creen dentro del PAI de una dynpro van a usar 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 efecto al momento en que se visualice la pantalla. Esto puede incluir entre otras cuestiones cualquiera de ls siguientes 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.
A continuación, vemos en detalle cada una de las 3 acciones mencionadas.
El seteo del Status GUI y de los títulos
En el PBO es donde definiremos cual es el Status GUI y los títulos que se usaran en la dynpro.
Para ello, dentro del PBO de la dynpro 0100 de nuestro programa ZPRUEBA_DIALOGO_DV67X crearemos el módulo STATUS_0100 tal como vimos anteriormente. Al hacerlo vemos que el MODULE tiene comentada las siguientes 2 líneas de código.
Utilizaremos 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 tal como vemos a continuación.
Si finalmente ejecutamos la transacción ZACT_USU asociada al programa de diálogo ZPRUEBA_DIALOGO_DV67X entonces veremos en pantalla la dynpro 0100 que es la primera del programa de diálogo.
Ahora bien en ciertas ocasiones, al momento de setear o configurar un Status GUI podriamos no querer mostrar todos los botones del mismo. Por ejemplo, en el Status GUI 0400 que vemos a continuación, existen los botones BOTON1, BOTON2 y BOTON3 tal como vemos.
Si solo quisiéramos mostrar el BOTON1, tendríamos que agregar los códigos de función de los botones que no queremos mostrar a una tabla interna y luego al momento de ejecutar SET PF-STATUS incluir esta tabla interna de la siguiente manera:
La declaración de la tabla interna TI_FCODE y de la estructura WA_FCODE que se utiliza para recorrerla es la siguiente:
La opción de excluir ciertos botones de un STATUS GUI es sumamente útil para los casos en donde solo tenemos un STATUS GUI con todos los botones que se utilizan en el programa de diálogo y deseamos reutilizar ese mismo STATUS GUI en todas las dynpros del programa.
Las modificaciones de los atributos de los campos de la pantalla
Los elementos que componen a una dynpro están almacenados e na 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 sus atributos, cada vez que el PBO es ejecutado.
La estructura de SCREEN es la siguiente:
Activaremos o desactivaremos 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.
Veamos algunos ejemplos.
Por ejemplo, si tenemos una dynpro con el campo entrada/salida WA_SCREEN_0100-DNI como el siguiente:
Y queremos hacer no visible al campo entonces en el PBO creamos el MODULE modificar_atributos_0100.
Y dentro del MODULE modificar_atributos_0100 escribiremos el siguiente código:
Vale mencionar que para que el campo WA_SCREEN-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 en un campo de salida, entonces debemos escribir el siguiente código:
Vale mencionar que para que el campo sea de entrada/salida entonces el atributo INPUT debe ser 1.
Si quisiéramos que el campo WA_SCREEN_0100-DNI sea obligatorio entonces escribiríamos el siguiente código:
¿Como se completan los campos de una dynpro?
Para cargar o completar un campo, una estructura o una tabla interna de una dynpro con datos y luego mostrar dichos datos en pantalla, simplemente tenemos que asignar valores a los campos de la dynpro en el PBO, para que luego los mismos se visualicen en pantalla.
Veamos a continuación un ejemplo muy simple con el campo WA_SCREEN_0100-DNI. Para ello, en el PBO de la dynpro vamos a declarar el MODULE completar_campos_0100 tal como vemos en la siguiente imagen:
Y dentro del MODULE completar_campos_0100 escribimos el siguiente código.
 
 
 
Sobre el autor
Publicación académica de Lisimaco Prieto Herrera, en su ámbito de estudios para la Carrera Consultor ABAP.
Lisimaco Prieto Herrera
Profesión: Ingeniero de Sistemas - Colombia - Legajo: DV67X
✒️Autor de: 96 Publicaciones Académicas
🎓Egresado de los módulos:
Presentación:
Ingeniero de sistemas con amplia experiencia en el desarrollo de software para el sistema sap r/3 en lenguaje de programaci?n abap.
Certificación Académica de Lisimaco Prieto