✒️ABAP La lógica de procesamiento en el PAI y la ejecución de las acciones
ABAP La lógica de procesamiento en el PAI y la ejecución de las acciones
***********************************************************************
***********Lógica de Procesamiento en PAI: Ejecución de las acciones************
Ejecución condicionada de Modulos.
Si especificamos la clausula ON INPUT después del MODULE en una instrucción FIELD, el modulo es ejecutando solamente si el campo en cuestión contiene un valor diferente al valor inicial
En la sentencia CHAIN – ENDCHAIN se debe usar la instrucción ON CHAIN-INPUT. Entonces el modulo es procesado solamente si al menos uno de los campos de la pantalla en la sentencia CHAIN-ENDCHAIN contiene un valor diferente al valor inicial.
NOTA: Se puede usar la instrucción ON INPUT solamente si la instrucción MODULE es especificada dentro de una instrucción FIELD.
Si se especifica la cláusula ON REQUEST después de MODULE en una instrucción FIELD el módulo es ejecutado únicamente si el campo tienen una nueva entrada.
En la sentencia CHAIN-ENDCHAIN, se debe usar la instrucción ON CHAIN-REQUEST. Entonces el modulo concerniente es procesado solamente si al menos unos de los campos de pantalla de la sentencia CHAIN-ENDCHAIN tiene una nueva entrada.
NOTA; Se puede usar la adición ON REQUEST solamente si la instrucción MODULE es especificada dentro de una instrucción FIELD.
Es posible que en alguna ocasión el usuario quiere salir sin necesidad de pasar la validación automática. Por ejemplo utilizando las funciones estándares BACK, EXIT O CANCEL. En este caso utilizaremos la cláusula AT EXIT COMMAND de la instrucción MODULE la sintaxis es la siguiente.
MODULE <modulo_abap> AT EXIT-COMMAND.
Para poder utilizar un AT EXIT-COMMAND en un botón de campo, será necesario asignar el valor E en el atributo campo Tipo de función del editor de pantallas.
En el modulo que llamamos incluiremos las instrucciones necesarias para poder salir de la TX. O de la pantalla en proceso. Por ejemplo el LEAVE TO SCREEN 0
Tratamiento de los códigos de función.
Cuando el usuario de una TX de dialogo pulsa una tecla de función, un punto de menú, un Pushbutton, un icono o simplemente la tecla Enter, los datos introducidos en la pantalla se pasan a los módulos definidos en la PAI para ser procesado junto a un código de función que indicara que función ha solicitado el usuario.
Recordemos que cuando definiremos una Dynpro creaos el campo de tipo código de función denominación OK_CODE.
En la lógica de procesamiento de cada Dynpro, tendremos que realizar el tratamiento del OK_CODE para ello utilizaremos el modulo USER_COMMAND que deberá ser el ultimo del evento PAI, es decir que se ejecutara una vez que todos los datos de entrada han sido validados correctamente.
Una vez procesado el modulo de función, borraremos el contenido del OK_CODE , inicializándolo para la próxima Dynpro. Podemos guardar el contenido del OK_CODE en una variable intermedia e inicializarlo inmediatamente
El tipo de la variable V_UCOMM es la siguiente:
DATA: V_UCOMM TYPE SY-UCOMM.
Diferencia entre OK_CODE Y SY-UCOMM.
SY-UCOMM: Es una variable del sistema que se utiliza principalmente en los menú y contiene la última acción ejecutada por un usuario.
Secuencia dinámicas de las pantallas.
Es un programa de dialogo o también llamado transacción de dialogo podemos controlar la secuencia de ejecución de cada una de las dynpros que componen a la transacción.
Existen dos instrucciones que nos permitirán pasar a otra Dynpro existente dentro del mismo programa. La primera de ellas es la instrucción SET-SCREEN que tiene la siguiente sintaxis.
SET SCREEN <nro_pantalla>.
La instrucción SET SCREEN reescribe temporalmente la siguiente pantalla a procesar. La pantalla siguiente debe ser una pantalla del mismo MODULE POOL.
En la pantalla siguiente es procesada después de procesar la pantalla actual o al menos que se termina la ejecución de la pantalla actual con la instrucción LEAVE SCREEN al encontrar esta instrucción se ejecuta la pantalla siguiente en forma inmediata.
Si se desea terminar el procesamiento de la pantalla actual e ir directamente a la pantalla siguiente en una sola instrucción, se puede usar la sentencia LEAVE TO SCREEN tal como vemos a continuación.
LEAVE TO SCREEN <nro_pantalla>
La instruccion CALL SCREEN interrumpe el procesamirento de la pantalla actual para procesar la pantalla X y las pantallas subsiguientes.
CALL SCREEN 0200.
La pantalla llamda con esta intruccion deberá ser una pantalla del mismo MODULE POOL.
Cualquier de las instrucciones SET SCREEN o LEAVE SCREEN o LEAVE TO SCREEN 0 regresara el contro al lugar donde fue ejecutada la instrucción CALL SCREEN.
Si se usa cualquiera de las instrucciones anteriores cuando no se esta en el modo de llamada, es decir cuando no se cedió el control a otra Dynpro del programa entonces el programa terminara.
Usando la clausula STARTING AT y ENDING AT en l instrucción CALL SCREEN se puede especificar la posición y el tamaño de la pantalla a llamar.
CALL SCREEN 0200 STARTING AT 5 1 ENDING AT 130 25.
 
 
 
Sobre el autor
Publicación académica de Francisco Orlando Lopez Martinez, en su ámbito de estudios para la Carrera Consultor ABAP.
Francisco Orlando Lopez Martinez
El Salvador - Legajo: DQ93R
✒️Autor de: 35 Publicaciones Académicas
🎓Cursando Actualmente: Consultor Funcional Módulo MM Nivel Inicial
🎓Egresado de los módulos:
- Máster ABAP for HANA
- Máster ABAP Orientado a Objetos
- Máster Funcional ABAP
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial