✒️ABAP La lógica de procesamiento en el PBO
ABAP La lógica de procesamiento en el PBO
Unidad 2 lección 4
La Lógica de procesamiento en el PBO.
1- La creación de módulos
En el flujo de la lógica de una dynpro utilizamos modulos xa realizar el procesamiento de aqui viene el hecho q a los prog de diálogo se les denomine MODULE POOL. xa llamar a un modulo utilizaremos la sentencia "MODULE" seguida de nombre del módulo tal como vemos.
MODULE cargar_campos_0100
si selecciones un modulo con doble clic, el sist creará las instrucciones MODULO ENDMODULE en lugar donde indiquemos tal como los vemos
Crear objeto
Modulo PBO cargar_campos_0100 no existe
si no cancelar
Si creamos un modulo en el PBO, el código del mismo empezará con la sentencia "MODULE OUT"
* Module CARGAR_CAMPOS_0100 OUTPUT.
* text
MODULE cargar_campos_0100 OUTPUT.
ENDMODULE. *cargar_campos0100
2- El código ABAP(Advance Businness Aplication Programing)en el PBO de una dynpro.
utilizaremos el evento PB0 xa seleccionar todos los datos y realizar las configuraciones q queremos q tomen efecto al momento en q se visualice la pantalla. Esto puede incluir entre otras cosas cualquiera de los sgntes acciones.
= Setear el status GUI y los titulos de la dynpro
= modificar los atributos de los campos de la dynpro
= iniciar o cargar campos de la pantalla con determinados valores
Veremos en detalle c/u de estas acciones
3 - El seteo del status Gui y de los títulos
=> En el PBO es donde definiremos cual es el status Gui y los titulos q se utilizarán en la dynpro.
xa ello, dentro de PBO, de la dynpro 0100 de nuestro prog ZPRUEBA_DIALOGO crearemos el módulo STATUS_0100 tal como lo vemos a continuación.
Nro dynpro 100 activo
Atributos / lista elem. / log.process
Process BEFORE OUTPUT.
MODULE status_0100.
Cuando creamos una dynpro ya viene creado pero comentado el módulo q se utilizará xa configurar el status y el titulo de la dynpro.
hacemos doble clic en el modulo y el sist nos propondrá crearlo
Crear objeto
Módulo PBO cargar_campos_0100 no existe
Desea cargar el objeto?
si no cancelar
Contestaremos q si y luego veremos la ventana de diálogo en donde exigiremos crear un include xa almacenar el código de PB0.
ZPRUEBA_DIALOGO_PBO || include ZPRUEBA_DIALOGO_PBO
es ampliamente recomendable crear un incluye xa almacenar todos los módulos y subrutinas q utilizaremos en la lógica de procesamiento del PBO.
Este mismo razonamiento aplica xa el PAI y todas las declaraciones de datos q utilicemos en un prog. de diálogo.
Luego veremos q el módulo tiene el sgnte código comentado
*
* MODULE STATUS_0100 OUTPUT.
*
module STATUS_0100 output
* SET PF-STATUS "xxxxxxx"
* SET TITLEBAR "xxxxxxx"
andmodule.
Utilizaremos la sentencia SET PF-STATUS xa sortear el STATUS GUI y la sentencia SET TITLEBAR xa sortear el titulo correspondiente a la dynpro 0100 tal como lo vemos
*
* MODULE STATUS_0100 OUTPUT.
*
MODULE status_0100 OUTPUT.
SET PF-STATUS '0100'
SET TITLEBAR '0100'
ENDMODULE.
Podemos armar un titulo => utilizando variables => estas pueden ser especificadas mediante la sentecia SET TITLEBAR. Hasta 9 variables de un titulo => de Izquierda a derecha (como paso de parametros a una subrutina). El titulo del menú => en tiempo de ejecución => SY-TITLE (variable del sist)
En ciertas ocasiones al momento de setear un STATUS GUI podriamos no querer todos los botones del mismo.
x ej: en el STATUS GUI q vemos a continuación, existen los botones BOTON1, BOTON2 y BOTON3 asi:
si solo quisieramos mostrar el BOTON1, tendriamos q agregar los códigos de los botones q no queremos mostrar a una tab int del tipo SLIS_T_EXTAB y luego al momento de ejecutar la sentencia SET PF-STATUS incluir es tab int de la sgnte manera
CLEAR ti_botones.
REFRESH ti_botones.
APPEND 'Boton2' TO ti_botones.
APPEND 'Boton3' TO ti_botones.
SET PF-STATUS '0100' EXCLUDING ti_botones.
Recordemos q xa utilizar las estructuras SLIS tendremos q agragar el TYPE-POOLS SLIS.
4- La modificación de los atributos de los campos de la pantalla
Los elementos q componen a una dynpro están almacenados en una estructura SCREEN. la palabra SCREEN es reservada en ABAP.
La estructura SCREEN es inicializada con los campos definidos en el SCREEN PAINTER y con sus atributos c/vez q el modulo PBO es ejecutado.
La estructura SCREEN es la sgnte:
CAMPOS | DESCRIPCION |
SCREEN-NAME | NOMBRE DEL CAMPO |
SCREEN-GROUP1 | GRUPO DE MODIFICACION 1 |
SCREEN-GROUP2 | GRUPO DE MODIFICACION 2 |
SCREEN-GROUP3 | GRUPO DE MODIFICACION 3 |
SCREEN-GROUP4 | GRUPO DE MODIFICACION 4 |
SCREEN-REQUIRED | CAMPO OBLIGATORIO |
SCREEN-INPUT | CAMPO DE ENTRADA |
SCREEN-OUTPUT | CAMPO DE SALIDA |
SCREEN-INTENSIFIED | CAMPO INTENSIFICADO |
SCREEN-INVISIBLE | CAMPO INVISIBLE O NO VISIBLE |
SCREEN-LENGHT | LONGITUD DEL CAMPO |
SCREEN-ACTIVE | CAMPO ACTIVO |
SCREEN-DISPLAY_3D | CAMPO EN 3D |
SCREEN-VALUE_HELP | CAMPO CON AYUDA DE BUSQUEDA |
SCREEN-REQUEST | CAMPO RESERVADO XA USO INTERNO DEL SIST |
Activaremos o desactivaremos los atributos de los campos de la estructura SCREEN asignando valores 0 o 1.
xa almacenar los cambios realizados a los atributos utilizaremos la sentencia MODIFY SCREEN.
Ejs: si tenemos una dynpro con campo entrada/salida WA_SCREEN:0100-DNI como sigue:
Buscar usuarios
DNI |_______________| matchcode
lentes Buscar usuarios
y queremos hacer no visible al campo, creariamos un modelo en el PBO con el sgnte código:
MODULE definir_atributos_0100 OUTPUT.
LOOP AT SCREEN
IF screen-name EQ 'wa_screen_0100-DNI'.
screen-invisible = 1.
MODIFY_SCREEN.
ENDIF.
ENDLOOP.
ENDMODULE.
Vale mencionar q xa q el campo sea entrada el atributo
INPUT debe ser 1
si quisiéramos q el campo WA_USUARIOS-DNI sea obligatorio, crearíamos un modulo en el PBO con el sgnte código:
MODULE definir_atributos_0100 OUTPUT.
LOOP AT SCREEN
IF screen-name EQ 'wa_screen_0100-DNI'.
screen-required = 1.
MODIFY_SCREEN.
ENDIF.
ENDLOOP.
ENDMODULE.
Si asignamos en el campo SCREEN-INTENSIFIED = 1 los contenidos de los campos de ENTRADA de la pantalla se cambia de NEGRO a ROJO y el contenido de los campos de SALIDA se cambiará de NEGRO a AZUL.
mediante el atributo de SCREEN LENGHT podremos configurar la longitud de un campo de la pantalla con un valor menor a la longitud de salida del campo especificado en forma estática.
esto funciona xa los campos entrada/salidad y solo salida no se pueden a cortar los otros elementos de la pantalla o a largar los elementos de la misma.
5- Como cargar campos de una dynpro?
Xa cargar un campo, estructura o tab int con datos y luego mostrar dichos datos en un dynpro, simple/ tendremos q asignar los datos a los campos de la dynpro en el PBO xa q luego los mismos se vean reflejados en la pantalla
MODULE cargar_valores_0100 OUTPUT.
wa_screen_0100-dni = 27865898.
ENDMODULE.
 
 
 
Sobre el autor
Publicación académica de Gustavo Betancur Guzmán, en su ámbito de estudios para la Carrera Consultor ABAP.
Gustavo Betancur Guzmán
Profesión: Ingeniero de Sistemas - Colombia - Legajo: WS86O
✒️Autor de: 164 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP MM Nivel Avanzado
- Carrera Consultor en SAP MM Nivel Inicial