Agregando botones a una selection screen

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.

Leave a Reply