✒️ABAP La lógica de procesamiento en el PAI y las validaciones
ABAP La lógica de procesamiento en el PAI y las validaciones
Uniudad-2-Lección-5: Lógica de procesamiento en PAI: Validaciones
1) Validación de los datos de entrada
Una de las funciones más importantes del PAI, es la de validar los datos de entrada de la pantalla antes de ser utilizados. Existen dos tipos de validaciones de los datos de entrada:
· Chequeo automático realizado por el sistema
· Chequeo manual programado con el comando FIELD de la lógica de proceso de las dynpros.
2) Validación automáticaEl sistema realiza automáticamente una serie de chequeos de los datos de entrada antes de procesar el evento PAI. Estos chequeos son los siguientes:
· Verificación del formato:El sistema valida las entradas de acuerdo a los atributos de cada campo. Si se detecta un valor incorrecto, se mostrará un mensaje de error y se volverán a mostrar los campos para su nueva entrada. Por ejemplo, al introducir una letra en un campo en un campo numérico, se produce un error.
· Verificación de campos obligatorios: Cuando a un campo de la pantalla se le asigna el atributo de obligatorio, el sistema no continuará el procesamiento, a menos que el campo obligatorio tenga algún valor.
· Verificación de claves foráneas:Una verificación de clave foránea es procesada solo si un campo de la pantalla se refiere a un campo del diccionario de datos para el cual se ha definido una tabla de verificación. Al mismo tiempo, la funcionalidad de la tecla F4 es activada. Esto significa que las posibles entradas para un campo son mostradas.
· Verificación del ámbito de valores: en el diccionario de datos se puede definir un ámbito de valores asociado a un dominio. Si se define un campo de pantalla con referencia a un dominio con un ámbito de valores asociado, ocurre que:
o Los valores del ámbito son desplegados si el usuario presiona F4 para ver los posibles valores para el campo de entrada.
o El sistema verificará los valores introducidos en el campo contra el conjunto de valores del ámbito del dominio correspondiente.
3) Validación manualSe puede realizar una validación más extensa con los valores de entrada con las instrucciones FIELD[OP1] y CHAIN-ENDCHAIN[OP2] . Con FIELD, se puede validar individualmente cada campo de forma que en caso de error, la siguiente entrada de datos solo permitirá introducir el campo erróneo sobre el que se está utilizando en la instrucción FIELD. Dependiendo del tipo de sentencia FIELD que se utilice, el mecanismo de chequeo se realizará en la lógica de proceso de la dynpro o en un módulo.
Es posible realizar distintas validaciones de n campo de entrada dependiendo de la fuente con la que se contrastan los valores posibles. Se puede chequear el contenido de un campo comparándolo con una tabla de base de datos, con una lista de valores o realizando la validación en un módulo del Module Pool.
A continuación cada una de estas opciones de chequeo:
Chequeo de un campo contra una tabla base de datos:Si no se encuentran registros en la base de datos, el sistema emite un mensaje de error estándar. Existe una versión ampliada de la instrucción anterior que permite enviar mensajes o advertencias en caso de que encuentre o no registros.
FIELD <campo_pantalla> SELECT * FROM <tabla> WHERE <condición> WHENEVER (NOT) FOUND SEND ERRORMESSAGE/WARNING <numero> WITH <campo-texto>. |
|
Si el valor introducido por el usuario no corresponde a ningún valor de la lista, el sistema emite un mensaje de error.
FIELD <campo_pantalla> VALUES(<lista_valores>). |
Donde la lista de valores puede ser:
('<valor>') (not'<valor>') ('<valor1>', '<valor2>',...NOT'<valorn>' ) (BETWEEN '<valor1>' AND '<valor2>') (NOT BETWEEN '<valor1>' AND '<valor2>') |
|
Chequeo de un campo en un módulo
Para chequear un campo determinado con un módulo, se utiliza la sentencia
FIELD <campo_pantalla> MODULE <módulo_ABAP/4>. |
Si el modulo resulta con un error (E) o un mensaje de advertencia (W), la pantalla es desplegada nuevamente pero sin procesar los módulos del PBO. El texto del mensaje es mostrado y solo el campo que ocasionó el error estará disponible para introducir datos nuevamente.
La instrucción CHAIN-ENDCHAINLa instrucción CHAIN-ENDCHAIN encierra un conjunto de instrucciones FIELD, que en caso de error en la entrada de alguno de ellos, todos los campos del CHAIN-ENDCHAIN se podrán modificar, mientras que los que no pertenezcan al CHAIN-ENDCHAIN estarán bloqueados para la entrada de datos.
NOTA (audio tip): Las sentencias CHAIN-ENDCHAIN de la lógica de procesamiento de una dynpro definen cadenas de procesamiento dentro de CHAIN-ENDCHAIN se ejecutan las sentencias field y module. Las sentencias que están entre CHAIN-ENDCHAIN forman una cadena de procesamiento. Las cadenas de procesamiento no se pueden anidar, es decir, no podemos colocar un CHAIN-ENDCHAIN dentro de otro CHAIN-ENDCHAIN. La sentencia CHAIN-ENDCHAIN puede ser especificada tanto en PAI como en el PBO, sin embargo en el PBO no tiene efecto alguno.
Ejemplo:
CHAIN. FIELD st_usuarios-dni. FIELD st_usuarios-nombre_ape. FIELD st_usuarios-estado_usu. FIELD st_usuarios-dirección. FIELD st_usuarios-estado_civil. MODULE validar_campos. ENDCHAIN. |
4) Mensajes de pantalla
Aquí vamos a analizar el comportamiento tipos de mensajes existente en un programa de dialogo:
Mensaje de error
El texto de un mensaje de error, es desplegado en la pantalla actual. Todos los campos de pantalla asignados al módulo correspondiente (instrucción FIELD), se vuelven disponibles para introducir información de nuevo. El sistema obliga al usuario a reintroducir datos.
Mensaje de advertencia
El texto del mensaje de advertencia, es desplegado en la pantalla actual. Todos los campos de pantalla asignados al módulo correspondiente (instrucción FIELD), se vuelven disponibles para introducir información de nuevo. El usuario puede reintroducir los datos o ignorar el mensaje de advertencia presionando la tecla Enter.
Mensaje de informaciónEl texto de un mensaje de información (I) es desplegado en la pantalla actual. El proceso de la pantalla actual es suspendido. Después de que el usuario presione la tecla Enter, el programa continúa con su ejecución normal desde el punto donde fue suspendido.
Mensaje de éxitoUn mensaje de texto de existo (S), es desplegado en la pantalla siguiente a la actual.
Mensaje de interrupciónEl texto de un mensaje de interrupción (A), es desplegado en la pantalla actual. Después de que el usuario presione la tecla Enter, el proceso actual es terminado y el proceso regresa a la pantalla inicial.
[OP1]Sentencia ABAP utilizada para validar en el PAI los campos de una dynpro en forma manual
[OP2]Sentencia ABAP que encierra un conjunto de instrucciones FIELD de campos de la pantalla y en caso de error en la entrada de uno de ellos , todos los campos del CHAIN se podrán modificar, mientras que los que no pertenezcan al CHAIN estarán bloqueados para entrada de datos.
 
 
 
Sobre el autor
Publicación académica de Oscar Perez, en su ámbito de estudios para la Carrera Consultor ABAP.
Oscar Perez
Profesión: Ingeniero de Sistemas. Consultor y Desarrollador en Peoplesoft - Canada - Legajo: FD38F
✒️Autor de: 105 Publicaciones Académicas
🎓Cursando Actualmente: Master en Programación ABAP Orientado a Objetos
🎓Egresado de los módulos:
Certificación Académica de Oscar Perez