✒️ABAP La lógica de procesamiento en el PBO
ABAP La lógica de procesamiento en el PBO
1-Creación de módulos
En la lógica de una dynpro utilizamos módulos para realizar este procedimiento por eso viene del Module Pool, para llamar a un módulo utilizaremos la sentencia MODULE seguida del nombre. EJ: MODULE cargar_campos_0100.
Seleccionamos un modulo haciendo doble clic y el sistema creara las instrucciones de MODULE-ENDMODULE en le lugar que le indiquemos. Creamos módulo PBO, el código empezará con la sentencia MODULE OUTPUT.
Si creamos un módulo en el PAI el código del mismo comenzara con la sentencia MÓDULO INPUT.
2-Codigo ABAP en el PBO de una dynpro
En el evento PBO para seleccionar todos los datos y realizar todas las configuraciones que queremos que tomen efecto se visualicen en pantalla, esto puede incluir las diferentes acciones.
- setear el Status GUI y los títulos de la DYNPRO
- Modificar los atributos de los campos de la DYNPRO
- Inicializar o cargar los campos de la pantalla con determinados valores
3-Seteos del Status Fui y de los títulos
En el PBO es donde definiremos cual es el status fui y los títulos en la dynpro.
EJ: dentro del PBO de la dynpro 0100 de nuestro programa ZPRUEBA_DIÁLOGO creamos módulo de status_0100.
Cuando creamos una dynpro ya viene creado el comentado el módulo que se utilizara para configurar el status y el titulo de la dynpro.
Hacemos doble clic en el módulo y el sistema nos creara el PBO, luego de la ventana diálogo donde elegiremos crear un include para almacenar el código de PBO. Es recomendable crear un include para almacenar todos los módulos y subrutinas que utilizaremos en la la lógica del PBO, lo mismo para los PAI y todas las declaraciones de datos que utilicemos en un programa de diálogo.
Luego veremos
modele STATUS_0100 output.
SET PF-STATUS 'xxxxxxxxxxx'.
SET TITLEBAR 'xxx'.
enmodule
La sentencia SET PF_STATUS para setear el Status GUI y la sentencia SET TITLEBAR para sesear el titulo correspondiente a la dynpro 0100.
Podemos armar un titulo utilizando variables estas pueden ser sitiadas con la sentencia SET TITLEBARWID, podemos usar hasta 9 variables en un titulo estas son sustituidas en el titulo de acuerdo con su numeración de no haberla de izquierda a derecha como si fuese un paso de parámetros a una subrutina en tiempo de ejecución el titulo del menú se guardara en la variable del sistema SEE TITLE.
MODULE status_0100 OUTPUT.
SET PF-STATUS '0100'.
SET TITLEBAR '0100'.
ENDMODULE.
En algunos casos mente de estar un STATUS GUI podríamos no querer mostrar todos los botones.
EJ: existen los BOTON1, BOTON2, BOTON3, si solo quisiéramos mostrar el boton1 tendríamos que agregar los códigos de botones que no queremos mostrar a un tabla interna del tipo SLIS_T_EXTAB y luego al momento de ejecutar la sentencia SET PF-STATUS incluir la tabla interna.
CLEAR ti_botones.
REFESH ti_botones.
APPEND 'BOTON2' TO ti_botones.
APPEND 'BOTON3' TO ti_botones.
SET PF-STATUS '0100' EXCLUDING ti_botones.
La estructura SLIS tendremos que agregar el TYPE-POOLS SLIS.
4- Modificación de los atributos de los campos de pantalla
Los elementos de la dynpro que están almacenados en la estructura SCREEN es una palabra reservada de ABAP, esa estructura se iniciativa con los campos definidos en el Screen Painter y con sus atributos cada vez que el módulo PBO es ejecutado.
SCREEN-NAME nombre del campo
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-REQUERID campo obligatorio
SCREEN-INPUT campo de entrada
SCREEN-OUTPUT campo de salida
SCREEN-INTENSIFIED campo intensificado
SCREEN-INVISIBLE campo visible o no visible
SCREEN-ACTIVE campo activo
SCREEN-DISPLAY_3D campo en 3D
SCREEN-VALUE_HELP campo con ayuda de búsqueda
SCREEN_RESQUEST campo reservado para uso interno del sistema
si tenemos una dynpro con el campo de entrada/salida WA_SCREEN_0100-DNI y queremos hacer no visible al campo, crearíamos un módulo PBO con el siguiente código
MODULE definir_atributos_0100 OUTPUT.
LOOP AT SCREEN.
IF screen-name EQ 'WA_SCREEN_0100-DNI'
screen-invisible = 1.
ENDIF.
ENDLOOP.
ENDMODULE.
Para que el atributo sea INVISIBLE debe ser = 0, si quisiéramos no permitir la entrada de datos en el campo WA_USUARIOS_100-DNI solo convertirlo en un campo de salida, crearíamos un módulo en el PBO.
MODULE definir_atributos_0100 OUTPUT.
LOOP AT SCREEN.
IF screen-name = 'WA_SCREEN_0100-DNI'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMODULE.
En el campo de entrada el atributo INPUT debe ser 1 y si quisiéramos que el campo se a obligatorio WA_USUARIO-DNI creamos un PBO
MODULE definir_atributos_0100 OUTPUT.
LOOP AT SCREEN.
IF screen-name = 'WA_SCREEN_0100-DNI'.
screen-required = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMODULE.
Definamos 1 en la pantalla SCREEN-INTENSIFIED los contenidos de los campos de entrada de la pantalla se cambiarían de negro a rojo el contenido de los campos de salida , se cambiara de negro a azul. Mediante el atributo SCREEN_LENGHT podremos configurar la longitud de un campo de la pantalla con un valor a la longitud de salida del campo especificado en forma estática esto funcióna para los campos de entrada/salida y solo salida. No se pueden acortar otros elementos de la pantalla o alargar los elementos de la misma.
5- Cargar campos de una dynpro
Para cargar un campo, estructura o tabla interna con los datos y luego mostrarlos en una dynpro solo tendremos que asignar los datos a los campos en el PBO y luego se ven reflejados en la pantalla.
MODULE cargar_valores_0100 OUTPUT.
wa_screen_0100-dni = 27865898.
ENDMODULE.
 
 
 
Sobre el autor
Publicación académica de Juan Carlos Pavicich, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Carlos Pavicich
Profesión: Técnico Informático - Argentina - Legajo: VR91L
✒️Autor de: 116 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Tengo el agrado de dirigirme a ud/s con el objeto de mencionar mi experiencia y conocimientos técnicos necesarios para desarrollar actividades en el rubro de su empresa.
Certificación Académica de Juan Pavicich