Radio Buttons dinámicos y ocultar/mostrar grupos de parámetros de selección

Una vez necesite hacer una pantalla de selección dinámica, es decir que si elegía un radio button debía mostrar X cantidad de parámetros y ocultar otros, y viceversa sin la necesidad de que tengamos que apretar un ENTER para que se dispare el evento AT-SELECTION-SCREEN.

El siguiente código lo arme como modo ejemplo para que se den cuenta de como usarlo

 

REPORT ZRADIO_BUTTONS.
PARAMETERS: p_1(10) MODIF ID A,
                       p_2(2)   MODIF ID B,
                       p_3(5).
PARAMETERS: p_A RADIOBUTTON GROUP rad1 USER-COMMAND ACT DEFAULT 'X',
                       p_B RADIOBUTTON GROUP rad1.

AT SELECTION-SCREEN OUTPUT.
LOOP AT screen.
  IF p_A = 'X'.
     IF screen-group1 = 'B'.
     screen-active = 0.
     ENDIF.
  ELSEIF p_B = 'X'.
    IF screen-group1 = 'A'.
    screen-active = 0.
    ENDIF.
  ENDIF.

  MODIFY screen.
ENDLOOP.

 

El MODIF ID lo que hace es darle un identificador a cada parámetro por lo cual no es necesario ocultar cada uno de los parámetros, sino que es más práctico ocultar directamente todos los elementos de un grupo.

La adición USER-COMMAND es la que permite que la selección sea dinámica y que no haya que apretar un enter para ejecutar un PAI.

NOTA: Al usar este método es muy molesto tener parámetros de selección OBLIGATORIOS, porque de no estar completos nos va a saltar la validación y los radio button no funcionarán de la forma deseada. Así que de usar Radio buttons dinámicos la validaciones las deberemos hacer manualmente nosotros mismos.

Saltear falta de autorización para una transacción

Existe una función llamada: RS_HDSYS_CALL_TC_VARIANT

Ir a la SE37, ejecutar la función, en el parámetro TCODE ponemos la transacción deseada y le sacamos la X al parámetro AUTHORITY-CHECK.

 

NOTA: No es infalible, puede ser que igualmente no podamos usarlo y ojo porque queda en log el acceso.