✒️ABAP / El evento AT SELECTION-SCREEN y los tipos de mensajes Por Gustavo Rondon Hernandez
ABAP El evento AT SELECTION-SCREEN y los tipos de mensajes
El evento AT SELECTION-SCREEN y los tipos de mensajes
1 | Los tipos de mensajes
Una vez que ingresamos todos los parámetros de entrada en la pantalla de selección de nuestro reporte y lo ejecutamos, lo que vamos a querer es que dependiendo de los parámetros introducidos se produzcan determinadas acciones.
Con esto nos referimos a que el programa debe ser capaz de validar que los parámetros introducidos por el usuario en la pantalla de selección son correctos y en caso contrario se deberán emitir los mensajes correspondientes de modo que el usuario corrija lo introducido.
Por ejemplo, imaginemos que nuestro repone tiene en su pantalla de selección el parámetro fecna y deseamos que la fecha sea mayor o igual a la fecha actual y que si no es así se emita un mensaje en la pantalla advirtiendo que el valor introducido es incorrecto.
En ABAP existen diferentes tipos de mensajes que podemos utilizar. Cada uno de ellos está pensado para una situación o casuístico particular. Los tipos de mensajes existentes son los siguientes:
Tipo de mensaje Significado del mensaje
s Éxito
I Información
E Error
w Warning o advertencia
A Terminación
X Dump o error en tiempo de ejecución
Analicemos cada uno de estos tipos de mensajes:
Mensajes de Éxito: este tipo de mensaje se visualiza en la barra de estado o status de la pantalla. Luego de su ejecución el procesamiento del programa continúa. Tienen la particularidad que a la izquierda del texto del mensaje se muestra el icono verde con la tilde.
Mensajes de Información: este tipo de mensaje se mostrará en una ventana de diálogo en la pantalla. Si el programa se ejecuta de forma online entonces se pausará el procesamiento del programa hasta que el usuario interactúe con el programa. Luego de que se ejecuta un mensaje de este tipo el programa continúa su ejecución normalmente. Tienen la particularidad que a la izquierda del texto del mensaje se muestra el icono de información.
Mensajes de Error: este tipo de mensaje produce la terminación del procesamiento de la pantalla de selección Los campos de la pantalla de selección especificados en el evento AT SELECTION-SCREEN permiten la entrada de datos en donde el usuario del programa debe introducir un nuevo valor. Tienen la particularidad que a la izquierda del texto del mensaje se muestra el icono de color rojo con el signo de exclamación.
Mensajes de Terminación: este tipo de mensajes se mostrará en una ventana de diálogo dentro de la pantalla y produce la terminación del programa. Tiene la particularidad que a la izquierda del texto del mensaje se muestra la imagen de stop.
Mensajes Dump: un dump es un error en tiempo de ejecución que interrumpe el procesamiento del programa en el momento en el que ocurre. Este tipo de mensajes no se utiliza intencionalmente en los programas ABAP sino que ocurre cuando se produce un error que no se contempló en la lógica del programa. El ejemplo más conocido que produce un dump es el de la división por cero, es decir si en algún lugar de la lógica de nuestro programa realizamos un cálculo matemático de división por cero entonces se produce un dump.
2 | Las clases de mensajes
Para poder trabajar con mensajes en los programas ABAP necesitamos primeramente crear una clase de mensajes.
Clase de mensajes
Es un Objeto de ABAP que se utiliza para almacenar todos los mensajes relativos a un proyecto o transacción de SAP.
Las clases de mensajes se crean a través de la transacción estándar SE91
Vamos a crear una nueva clase de mensajes, para ello ingresamos a la transacción SE91, introducimos el nombre de la clase de mensajes, que será Z_CLASE TEST y hacemos clic en Crear.
Luego escribimos un texto breve para la clase de mensajes y grabamos.
Hacemos clic en la pestaña Mensajes y vamos a crear nuestro primer mensaje que será el número 000.
La clase de mensajes es un objeto ABAP separado del programa principal por lo tanto también debe activarse e incluirse dentro de los objetos ABAP que serán transportados al ambiente de testing, cuando la nueva transacción se desee probar en este ambiente o al ambiente de producción, cuando se quiera implementar la nueva transacción en productivo.
Luego en el código de nuestro programa, vamos a utilizar la sentencia MESSAGE para emitir mensajes. La sintaxis de la sentencia MESSAGE es la siguiente.
En nuestro programa vamos a declarar el evento AT SELECTION-SCREEN y allí dentro vamos a escribir el código ABAP correspondiente para ejecutar la validación
AT SELECTION-SCREEN.
IF p_fecha < sy-datum.
MESSAGE e000 (z_clase_test).
ENDIF.
Por último, ejecutamos nuestro reporte introduciendo en la pantalla de selección una fecha anterior a la fecha actual y visualizamos el mensaje de error en la barra de status.
Ahora bien, veamos otra forma que tenemos para crear mensajes utilizando parámetros en los mensajes ya que dentro de los mensajes podemos mostrar el contenido de variables- Para ello vamos a crear el mensaje 001 cuyo contenido será && &&.
Y en nuestro programa vamos a escribir el mensaje de la siguiente manera utilizando los parámetros del mensaje 001:
AT SELECTION-SCREEN.
IF p_fecha < sy-datum.
MESSAGE e001 (z_clase_test). WHIT 'La fecha debe ser mayor o igual a la fecha actual'.
ENDIF.
Al ejecutar el programa e introducir en la pantalla de selección una fecha menor a la actual visualizaremos el mensaje de error en la barra de status.
Por último, otra opción que tenemos disponible dentro de un mensaje definido en la clase de mensajes es utilizar parte texto y parte parámetros. Veamos a continuación un ejemplo de cómo sería. Para ello creamos el mensaje 002.
Y en nuestro programa vamos a escribir el mensaje de la siguiente manera utilizando parte texto y parte los parámetros del mensaje 002:
AT SELECTION-SCREEN.
IF p_fecha < sy-datum.
MESSAGE e001 (z_clase_test) WIHT 'La fecha debe ser mayor o igual a' sy-datum.
ENDIF.
3 | El evento AT SELECTION-SCREEN
Tal como vimos en los ejemplos anteriores, para validar los datos introducidos en los parámetros: ya sean parameters ose!ect-options vamos a utilizar el evento AT SELECTION-SCREEN
La funcionalidad del evento AT SELECTION-SCREEN está especialmente pensada para la validación de los parámetros de la pantalla de selección, cuestión que no sucede con otros eventos de un programa ABAP
Si dentro del evento AT SELECTION-SCREEN se emite un mensaje de error entonces el procesamiento del programa no se cancela y el programa se queda esperando a que el usuario vuelva a introducir un valor para el parámetro de la pantalla de selección.
Desde ya vale la pena mencionar que tanto el evento AT SELECTION-SCREEN como las pantallas de selección de los programas ABAP junto con sus parámetros tienen únicamente sentido para los programas ABAP que se ejecutan en forma online: es decir donde hay interacción con el usuario.
Supongamos ahora que la pantalla de selección de nuestro programa tiene varios parámetros de entrada, ya sean parameters o select-options y que para cada uno de ellos se desea validar lo introducido.
De modo que cuando se ingrese un valor incorrecto para un parámetro determinado de la pantalla entonces el usuario tenga la posibilidad de reingresar ese campo en particular y no todos, tal como sucedería si las validaciones se encuentran una debajo de la otra en el evento AT SELECTION-SCREEN
Para cumplir con este objetivo vamos a tener que declarar un evento AT SELECTION-SCREEN ON para cada uno de los parámetros que deseamos validar.
Y si ejecutamos el programa e introducimos un valor incorrecto para el parámetro P_NOMBRE entonces visualizaremos el mensaje de error.
 
 
 
Sobre el autor
Publicación académica de Gustavo Jose Rondon Hernandez, en su ámbito de estudios para el Curso SAP ABAP.
Gustavo Jose Rondon Hernandez
Profesión: Becario - España - Legajo: WF47H
✒️Autor de: 33 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Presentación:
Soy informático con 10 años de experiencia en el área de tecnología, tengo un master en sap business intelligence sap bw & sap bi-bo en la salle barcelona.
Certificación Académica de Gustavo Rondon
























