A veces es necesario agregar botones a la pantalla de selección de un reporte.
Esto lo podemos realizar de la siguiente forma:
Primero debemos definir que vamos a usar la estructura: SSCRFIELDS
TABLES: SSCRFIELDS
Luego en el evento INITIALIZATION debemos asignarle por ejemplo el texto de los botones.
MOVE ‘Este es el boton 1’ TO sscrfields-functxt_01.
MOVE ‘Cambiar 1’ TO sscrfields-functxt_02.
En el evento AT SELECTION-SCREEN podemos manejar la lógica de estos botones.
AT SELECTION-SCREEN.
IF sy-ucomm = ‘FC01’.
d_butt1 = ‘YES’.
sscrfields-ucomm = ‘ONLI’.
ELSEIF sy-ucomm = ‘FC02’.
IF sscrfields-functxt_02 = ‘Cambiar 1’.
sscrfields-functxt_02 = ‘Cambiar 2’.
ELSE.
sscrfields-functxt_02 = ‘Cambiar 1’.
ENDIF.
ENDIF.
Cada botón que agreguemos va a tener el código (sy-ucomm) FC01 a FC05.
Acá podemos ver un código a modo de ejemplo:
REPORT ZSCREEN3.
TABLES: sscrfields.
DATA: d_butt1(4).
PARAMETERS: p_grpa1(10) MODIF ID a,
p_grpa2(10) MODIF ID a,
p_grpb1(10) MODIF ID b.
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.
INITIALIZATION.
MOVE 'Este es el boton 1' TO sscrfields-functxt_01.
MOVE 'Cambiar 1' TO sscrfields-functxt_02.
d_butt1 = 'NO'.
AT SELECTION-SCREEN.
IF sy-ucomm = 'FC01'.
d_butt1 = 'YES'.
sscrfields-ucomm = 'ONLI'.
ELSEIF sy-ucomm = 'FC02'.
IF sscrfields-functxt_02 = 'Cambiar 1'.
sscrfields-functxt_02 = 'Cambiar 2'.
ELSE.
sscrfields-functxt_02 = 'Cambiar 1'.
ENDIF.
ENDIF.
START-OF-SELECTION.
WRITE: / 'd_butt1: ', d_butt1.