AT SELECTION-SCREEN
Definición
El evento AT SELECTION-SCREEN provee de varias posibilidades de bloques de proceso pero todos relacionados
con la pantalla de selección. Algunos se ejecutan antes de la pantalla de selección y otros después.
Sintaxis:
AT SELECTION-SCREEN
Si utilizamos la palabra clave sin usar ninguna opción, el bloque de proceso correspondiente se ejecuta después de que
el sistema procese la pantalla de selección. Si durante la ejecución del bloque de proceso se activa algún mensaje de
error, vuelve a aparecer la pantalla de selección. Todos los campos de la pantalla de selección se pueden modificar. La
sentencia MESSAGE activa mensajes. Los tipo de error pueden ser A (
abend
), E (Error), I (Informativo), S (siguiente
pantalla) o W (
Warning
). EL grupo de mensajes se especifica en la sentencia REPORT (Cláusula MESSAGE-ID ...).
AT SELECTION-SCREEN ON <parámetro>.
La siguiente variante nos permite crear un bloque de proceso para un solo campo de la pantalla de selección.
<parámetro> debe ser una parámetro. El bloque de proceso se arranca cuando el sistema ha procesado el campo en
cuestión. El sistema realiza primero validaciones de formato. Una vez analizado el formato, se arranca el bloque de
proceso. Si activamos un mensaje de error en este bloque de proceso, vuelve a aparecer la pantalla de selección y sólo
se puede modificar el campo tratado.
AT SELECTION-SCREEN ON END OF <criterio>.
La siguiente variante nos permite validar un criterio de selección de la pantalla de selección. El bloque de proceso se
ejecuta después de introducir valores en la pantalla "compleja" de introducción de datos en un criterio de selección.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR <campo>.
La siguiente variante permite crear un bloque de proceso asociado cuando el usuario pulsa el botón de posibles valores
(también se activa pulsando la tecla de función F4). Dicho botón aparece automáticamente a la derecha del campo
(parámetro o criterio de selección) cuando se utiliza este evento. En el bloque de proceso se debe programar una lista
de valores de proceso.
AT SELECTION-SCREEN ON HELP-REQUEST FOR <campo>.
La siguiente variante permite crear un bloque de proceso asociado a la tecla de función F1 (ayuda en el estándar).
Normalmente lo que codifica en el bloque de proceso es una ventana de ayuda.
AT SELECTION-SCREEN ON RADIOBUTTON GROUP <botón>.
La siguiente variante nos permite asociar un bloque de proceso a un radiobutton (grupo de botones). El bloque proceso
se activa después de que el sistema procesa el radiobutton definido en <botón>. Si activamos un mensaje de error en el
bloque de proceso vuelve a aparecer la pantalla de selección. Sólo el radiobutton relacionado puede ser modificado.
AT SELECTION-SCREEN ON BLOCK <bloque>.
La siguiente variante nos permite activar un bloque de proceso cuando el sistema termina de procesar un bloque.
Recordemos que en un bloque de pantalla de selección se define con la sentencia SELECTION-SCREEN. Si
activamos un mensaje de error en el bloque de proceso aparece de nuevo la pantalla de selección. Sólo los campos del
bloque relacionado se pueden modificar.
AT SELECTION-SCREEN OUTPUT.
La siguiente variante nos permite activar un bloque de proceso antes de que el sistema muestre la pantalla de selección
(parte PBO de la lógica de proceso). Este bloque de proceso se puede utilizar, por ejemplo, para mover valores a los
campos de la pantalla de selección, pero hay que tener en cuenta que cada vez que se procesa la pantalla de selección
(puede haber mensajes de error en otros eventos AT SELECTION-SCREEN) se procesa este evento. En cierta
ocasiones puede ser más recomendable utilizar el evento INITIALIZATION.
AT SELECTION-SCREEN
Ejemplo 1:
SELECT-OPTIONS NAME FOR SY-REPID MODIF ID XYZ.
...
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
CHECK SCREEN-GROUP1 = 'XYZ'.
SCREEN-INTENSIFIED = '1'.
MODIFY SCREEN.
ENDLOOP.
fil