✒️ABAP La lógica de procesamiento en el PAI y las validaciones
ABAP La lógica de procesamiento en el PAI y las validaciones
La lógica de procesamiento en el PAI y las validaciones
La validación de los datos de entrada
Una de las funciones mas importantes del PAI, es la de validar los datos de entrada de la pantalla antes de ser usados.
Existen 2 tipos de validaciones de los datos de entrada:
Las validaciones automáticas realizadas por el sistema
Las validaciones manuales programadas con la sentencia FIELD en la lógica de proceso del PAI de las dynpros.
A continuación veremos cada una de las validaciones.
Las validaciones automáticas
El sistema realiza automáticamente una serie de validaciones de los datos de entrada antes de procesar el evento PAI. Estas validaciones son las siguientes:
La verificación del formato
El sistema valida las entradas de acuerdo a los atributos de cada campo. Si se detecta un valor incorrecto, se desplegará un mensaje de error y se volverán a mostrar los campos para su nueva entrada.
En el ejemplo que vemos en la imagen anterior, introducimos una fecha invalida en un campo de tipo fecha lo cual produce un error y también introducimos una letra en un campo numérico lo cual también produce un error.
Veamos un ejemplo:
La verificación de campos obligatorios
Cuando a un campo de la pantalla se le asigna el atributo de obligatorio, el sistema no continuará con el procesamiento, a menos que el campo obligatorio tenga algún valor.
Veamos a continuación un ejemplo para ver qué sucede cuando no completamos un campo de la pantalla que es obligatorio y hacemos clic en un botón de la dynpro.
La verificación del ámbito de valores
En el diccionario d datos se puede definir un ámbito de valores asociados a un dominio de un campo de una BD.
Por ejemplo, para el campo ESTADO_USU de la tabla BD ZTABLA_USUARIOS tenemos definido al dominio ZZ_ESTADO_USUARIO tal como vemos en la siguiente imagen:
Y dentro del dominio Z_ESTADO_USU definimos un ámbito de valores con tres valores posible: A (Activo), I (Inactivo) y N (Anulado).
Si se define un campo de pantalla con referencia a un dominio con un ámbito de valores asociados, ocurre lo siguiente:
Los valores del ámbito de valores son desplegados si el usuario presiona la tecla F4 para ver los posibles valores para el campo de entrada.
El sistema verificará los valores introducidos en el campo contra el conjunto de valores del ámbito de valores del dominio correspondiente.
Si por ejemplo, creamos en una dynpro el campo de entrada/salida Estado del usuario cuya definición será ZTABLA_USUARIOS-ESTADO_USU.
Comprobamos que al visualizar la dynpro en ejecución y presionar la tecla F4 sobre el campo, aparecen en una ventana de diálogo los posibles valores para introducir en el campo.
Y si introducimos un valor diferente a alguno de los valores posibles y presionamos la tecla enter entonces visualizaremos el mensaje de error en pantalla Indique un valor valido correspondiente a la validación automática tal como vemos a continuación:
Las validaciones manuales
Además de las validaciones automáticas es posible realizar una validación más extensa de los valores de entrada con las sentencias FIELD y CHAIN-ENDCHAIN.
Co la sentencia FIELD podemos validar individualmente cada campo de forma que en caso de error, la siguiente entrada de datos sólo permitirá introducir el campo erróneo sobre el que estamos utilizando la sentencia FIELD.
Es posible realizar distintas validaciones de un campo de entrada, veamos a continuación cada una e estas opciones:
La validación de un campo de la dynpro en un MODULE
Para probar esta validación, dentro del PAI de nuestro programa PRUEBA_DIALOGO_DV67X escribimos la sentencia FIELD tal como vemos a continuación, declarando el módulo VALIDAR_DNI_0100, el cual va a validar que el DNI introducido en la pantalla exista en la tabla de la BD ZTABLA_USUARIOS.
Vamos a crear el MODULE VALIDAR_DNI_0100 dentro del include correspondiente al PAI tal como vemos en la siguiente imagen:
Si ejecutamos la transacción ZACT_USU asociada al programa, completamos el campo DNI con un valor que no existe en la tabla BD ZTABLA_USUARIOS y hacemos clic en el botón Buscar usuarios entonces visualizamos el mensaje de error El DNI introducido no existe.
Tal como vemos en la imagen anterior, la pantalla es desplegada nuevamente pero sin procesar los MODULE PBO. El texto del mensaje es mostrado y solo el campo que ocasionó el error se encuentra disponible para introducir datos nuevamente, es decir si en la pantalla existirían mas campos de entrada entonces no se mostrarían habilitados para introducir valores.
La validación de más de un campo de la dynpro en un MODULE
Existe la posibilidad también de crear un solo MODULE para validar más de un campo de la dynpro o todos ellos, con una misma sentencia FIELD, lo cual resulta conveniente en la mayoría de los casos.
Para ello, vamos a crear el MODULE VALIDAR_CAMPOS_0300 dentro del include correspondiente al PAI, de modo de validar todos los campos indicados en la sentencia FIELD.
Dentro del MODULE VALIDAR_CAMPOS_0300 vamos a generar la siguiente lógica:
Si ejecutamos la transacción ZACT_USU asociada al programa, configurando a la dynpro 0300 como a primera dynpro que se visualiza, completamos el campo Código Postal y presionamos la tecla enter, entonces visualizamos el mensaje de error Debe introducir una dirección.
Tal como vemos en la imagen anterior, todos los campos de la dynpro quedan grisados, es decir no disponibles para introducir datos, por lo que esta solución así como la planteamos no sirve.
Para evitar que todos los campos de la dynpro se bloqueen vamos a usar la sentencia CHAIN.ENDCHAIN.
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 se encuentren dentro del CHAIN-ENDCHAIN estarán bloqueados para la entrada de datos.
Veamos a continuación, cómo sería la implementación de la sentencia CHAIN-ENDCHAIN en nuestro programa de diálogo:
Si ahora volvemos a ejecutar la transacción ZACT_USU asociada al programa, configurando a la dynpro 0300 como la primera dynpro que se visualiza, completamos el campo Código Postal y presionamos la tecla enter, entonces visualizamos el mensaje de error Debe introducir una dirección y todos los campos de la dynpro disponibles para ingresar datos.
Los mensajes en la pantalla
A continuación, analizaremos el comportamiento de cada uno de los tipos de mensajes existentes en programa de diálogo.
El mensaje de error
El texto del mensaje de error (E) es desplegado en la pantalla actual.
La sintaxis de los mensajes de error es tal como vemos en la siguiente imagen:
Todos los campos de pantalla asignados al MODULE correspondiente en la sentencia FIELD se vuelven disponibles para introducir información de nuevo.
El sistema obliga al usuario a volver a introducir datos.
Si ejecutamos la transacción ZACT_USU asociada al programa no completamos el DNi en la dynpro 0100 y hacemos clic en el botón Buscar usuarios entonces visualizamos el mensaje de error El DNI introducido no existe tal como vemos a continuación:
El mensaje de advertencia
El texto del mensaje de advertencia (W) es desplegado en la pantalla actual.
La sintaxis de los mensajes de advertencia es tal como vemos en la siguiente imagen:
Todos los campos de la pantalla asignados al MODULE correspondiente en la sentencia FIELD se vuelven disponibles para introducir información de nuevo.
El usuario puede volver a introducir los datos o ignorar el mensaje de advertencia presionando la tecla ENTER.
Si ejecutamos la transacción ZACT_USU asociada al programa, no completamos el DNI en la dynpro 0100 y hacemos clic en el botón Buscar usuarios entonces visualizamos el mensaje de advertencia El DNI introducido no existe tal como vemos a continuación:
El mensaje de información
El teto de un mensaje de información (I) se muestra en una ventana de diálogo que se visualiza encima de la pantalla actual.
La sintaxis de los mensajes de información es tal como vemos en la siguiente imagen:
El proceso de la pantalla actual es suspendido.
Después que el usuario presione la tecla ENTER, el programa continúa con su ejecución normal desde el punto donde fue suspendido.
El mensaje de éxito
El mensaje de un mensaje de éxito (S) es desplegado en la pantalla actual.
La sintaxis de los mensajes de éxito es tal como vemos en la siguiente imagen:
Los mensajes de éxito se van a usar generalmente en los programas de diálogo para informar que la actualización de los datos se realizo correctamente tal como mostramos en la siguiente imagen en donde se visualiza el teto Se actualizaron los datos correctamente.
El mensaje de interrupción
El texto de un mensaje de interrupción (A) es desplegado en la pantalla actual dentro de una ventana de diálogo junto con los botones Finalizar y Ayuda.
El usuario debe presionar la tecla ENTER para finalizar y a continuación el proceso actual es terminado y se regresa a la pantalla inicial.
Si ejecutamos la transacción ZACT_USU asociada al programa, no completamos el DNI en la dynpro 0100 y hacemos clic en el botón Buscar usuarios entonces visualizamos el mensaje de interrupción El DNI introducido no existe tal como vemos a continuación:
 
 
 
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