PDA

Ver la Versión Completa : Pantalla de selección dinámica


obiwan42
10/09/08, 19:48:51
Hola,
Necesito armar una pantalla de seleccion similar a la siguiente:

parameters: radio1 radiobutton group r1,
radio2 radiobutton group r1.
parameters: path1(60) like rlgrap-filename OBLIGATORY,
path2(60) like rlgrap-filename OBLIGATORY.

Y hacer que, si selecciono RADIO1 el parametro PATH1 no permita entradas (quede gris), pero mientras este seleccionado RADIO2 sí permita entradas.

Hice lo siguiente:
AT SELECTION-SCREEN OUTPUT.
IF radio1 = 'X'.
LOOP AT SCREEN.
IF screen-name = 'PATH1'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

Anda bien, pero como los campos PATH1 y PATH2 son obligatory me muestra el mensaje de error de que no estan completos todos los campos cada vez que hago clic en algun radiobutton. Es realmente muy molesto para el usuario.

Cómo puedo hacer para que la validación de los campos obligatorios se ejecute, pero sólo en el momento en que el usuario apreta F8?

DavidXD_XD
10/09/08, 20:22:55
Hola ... mira prueba asi: yo lo hago usando un grupo dentro de las dynpros ...

*----------------------------------------------------------------------*
* INCLUDE ZFI_RPT_PDB_001_SEL *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Pantallas de Selección *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK blq1 WITH FRAME TITLE text-t01.
PARAMETERS: p_radbt1 RADIOBUTTON GROUP bt1 USER-COMMAND uc,
p_radbt2 RADIOBUTTON GROUP bt1.
SELECTION-SCREEN BEGIN OF BLOCK blq4 WITH FRAME TITLE text-t04.
PARAMETERS: p_rdbt15 RADIOBUTTON GROUP bt4 MODIF ID gr4,
p_rdbt16 RADIOBUTTON GROUP bt4 MODIF ID gr4,
p_rdbt17 RADIOBUTTON GROUP bt4 MODIF ID gr4.
SELECTION-SCREEN END OF BLOCK blq4.
PARAMETERS: p_radbt3 RADIOBUTTON GROUP bt1,
p_radbt4 RADIOBUTTON GROUP bt1.
SELECTION-SCREEN BEGIN OF BLOCK blq2 WITH FRAME TITLE text-t02.
PARAMETERS: p_radbt8 RADIOBUTTON GROUP bt2 MODIF ID gr2,
p_radbt5 RADIOBUTTON GROUP bt2 MODIF ID gr2,
p_radbt6 RADIOBUTTON GROUP bt2 MODIF ID gr2.
SELECTION-SCREEN END OF BLOCK blq2.
PARAMETERS: p_radbt7 RADIOBUTTON GROUP bt1,
p_radbt9 RADIOBUTTON GROUP bt1.
SELECTION-SCREEN BEGIN OF BLOCK blq3 WITH FRAME TITLE text-t03.
PARAMETERS: p_rdbt10 RADIOBUTTON GROUP bt3 MODIF ID gr3,
p_rdbt11 RADIOBUTTON GROUP bt3 MODIF ID gr3,
p_rdbt14 RADIOBUTTON GROUP bt3 MODIF ID gr3,
p_rdbt12 RADIOBUTTON GROUP bt3 MODIF ID gr3,
p_rdbt13 RADIOBUTTON GROUP bt3 MODIF ID gr3.
SELECTION-SCREEN END OF BLOCK blq3.
SELECTION-SCREEN END OF BLOCK blq1.

*----------------------------------------------------------------------*
* Evento AT SELECTION-SCREEN *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
IF p_radbt4 IS INITIAL.
LOOP AT SCREEN.
IF screen-group1 EQ 'GR2'.
screen-active = 0.
MODIFY screen.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-group1 EQ 'GR2'.
screen-active = 1.
MODIFY screen.
ENDIF.
ENDLOOP.
ENDIF.

IF p_radbt9 IS INITIAL.
LOOP AT SCREEN.
IF screen-group1 EQ 'GR3'.
screen-active = 0.
MODIFY screen.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-group1 EQ 'GR3'.
screen-active = 1.
MODIFY screen.
ENDIF.
ENDLOOP.
ENDIF.

IF p_radbt2 IS INITIAL.
LOOP AT SCREEN.
IF screen-group1 EQ 'GR4'.
screen-active = 0.
MODIFY screen.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-group1 EQ 'GR4'.
screen-active = 1.
MODIFY screen.
ENDIF.
ENDLOOP.
ENDIF.

obiwan42
10/09/08, 20:27:56
Gracias David,
eso me anda, el problema es si alguno de los parámetros es OBLIGATORY. :(

DavidXD_XD
10/09/08, 21:09:14
Eso si es un lio ... incluso para mi :mad: , pero lo hice validandolo en el START-OF-SELECTION, primero quitale la opcion OBLIGATORY al campo y despues lo validas en el evento q coloque:

START-OF-SELECTION.

IF p_bukrs IS INITIAL.
MESSAGE S000 WITH 'Ingresar Sociedad'.
EXIT.
ELSE.
... logica
ENDIF.

obiwan42
11/09/08, 13:00:34
Gracias!! con el tipo de mensaje S funciono.
pero el EXIT no, tuve que agregarle una variable de error:

IF p_bukrs IS INITIAL.
MESSAGE S000 WITH 'Ingresar Sociedad'.
v_error = 'X'.
endif.

if v_error ne 'X'.
... (logica del programa)
endif.

ballan
11/09/08, 15:04:37
Tambien puedes utilizar

MESSAGE S000 WITH 'Ingresar Sociedad' DISPLAY LIKE 'E'

zonanet
11/09/08, 16:05:39
Tambien puedes utilizar

MESSAGE S000 WITH 'Ingresar Sociedad' DISPLAY LIKE 'E'


Otra forma es:

MESSAGE E010(AD) WITH 'Ingresar Sociedad'.

Saludos

lfarro
26/05/15, 21:23:36
Bueno yo lo haría asi.

AT SELECTION-SCREEN.

IF sy-ucomm EQ 'ONLI'. "si hace click en ejecutar
IF p_rdbt02 EQ 'X'. "si esta marcado el radio button al queremos validar a la hora de ejecutar.
IF S_ORGVTA is INITIAL. "si el campo esta vacio
MESSAGE 'Ingresar Organización de ventas' TYPE 'E'.
ENDIF.
ENDIF.
ENDIF.

ATTE.

Luis Farro C.