02-06-2009 7:57 PM
Hello all,
I have a requirement where in I have 2 radio buttons and 2 input fields. If I select the first radio button , the input field for 1st should open up and the input field for 2nd should not be seen and vice a versa.
Please see the code below. This code works if I select the first radio button, but doesnt work if I select the second radio button. Please let me know what wrong I am doing. I tried doing the same thing in 2 different ways.
First method :
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME.
PARAMETERS : p_rad1 RADIOBUTTON GROUP gr1 DEFAULT 'X'.
SELECTION-SCREEN BEGIN OF BLOCK bl2 WITH FRAME.
PARAMETERS p_matnr TYPE mara-matnr MODIF ID md1.
SELECTION-SCREEN END OF BLOCK bl2.
PARAMETERS : p_rad2 RADIOBUTTON GROUP gr1 .
SELECTION-SCREEN BEGIN OF BLOCK bl3 WITH FRAME.
PARAMETERS p_vbeln TYPE vbak-vbeln MODIF ID md2.
SELECTION-SCREEN END OF BLOCK bl3.
SELECTION-SCREEN END OF BLOCK bl1.
AT SELECTION-SCREEN OUTPUT.
IF p_rad1 EQ 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'MD2'.
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-group1 = 'MD1'.
screen-active = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
Second Method :
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME.
PARAMETERS : p_rad1 RADIOBUTTON GROUP gr1 DEFAULT 'X'.
SELECTION-SCREEN BEGIN OF BLOCK bl2 WITH FRAME.
PARAMETERS p_matnr TYPE mara-matnr MODIF ID md1.
SELECTION-SCREEN END OF BLOCK bl2.
PARAMETERS : p_rad2 RADIOBUTTON GROUP gr1 .
SELECTION-SCREEN BEGIN OF BLOCK bl3 WITH FRAME.
PARAMETERS p_vbeln TYPE vbak-vbeln MODIF ID md2.
SELECTION-SCREEN END OF BLOCK bl3.
SELECTION-SCREEN END OF BLOCK bl1.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF p_rad1 = 'X' AND screen-group1 = 'MD2'.
screen-active = '0'.
ENDIF.
IF p_rad2 = 'X' AND screen-group1 = 'MD1'.
screen-active = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
Thanks,
Salil
Edited by: salil vaidya on Feb 6, 2009 3:03 PM
02-06-2009 8:18 PM
Hi,
Try below
AT SELECTION-SCREEN OUTPUT.
IF p_rad1 EQ 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'MD1'.
screen-active = '1'.
screen-invisible = 0.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'MD2'.
screen-active = '0'.
screen-invisible = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSEIF p_rad2 EQ 'X'..
LOOP AT SCREEN.
IF screen-group1 = 'MD2'.
screen-active = '1'.
screen-invisible = 0.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'MD1'.
screen-active = '0'.
screen-invisible = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
tyr this it works
Thanks!
02-06-2009 8:15 PM
Hi salil,
here a short example how i do it:
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN: COMMENT 01(25) T1.
PARAMETERS: P1 DEFAULT 'X' RADIOBUTTON GROUP PR1 USER-COMMAND DUMMY.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN: COMMENT 01(25) T2.
PARAMETERS: P2 RADIOBUTTON GROUP PR1.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: SKIP.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN: COMMENT 01(25) TAL1.
PARAMETERS: VAL1(10) MODIF ID DI1.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN: COMMENT 01(25) TAL2.
PARAMETERS: VAL2(10) MODIF ID DI2.
SELECTION-SCREEN: END OF LINE.
AT SELECTION-SCREEN OUTPUT.
IF P1 = 'X'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 EQ 'DI1'.
SCREEN-ACTIVE = '1'.
SCREEN-INPUT = '1'.
MODIFY SCREEN.
CLEAR: VAL2.
ENDIF.
IF SCREEN-GROUP1 EQ 'DI2'.
SCREEN-ACTIVE = '0'.
SCREEN-INPUT = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF P2 = 'X'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 EQ 'DI1'.
SCREEN-ACTIVE = '0'.
SCREEN-INPUT = '0'.
MODIFY SCREEN.
CLEAR: VAL1.
ENDIF.
IF SCREEN-GROUP1 EQ 'DI2'.
SCREEN-ACTIVE = '1'.
SCREEN-INPUT = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
*
INITIALIZATION.
T1 = 'T1'.
T2 = 'T2'.
TAL1 = 'TAL1'.
TAL2 = 'TAL2'.
Hope this can help you.
Regards, Dieter
02-06-2009 8:18 PM
Hi,
Try below
AT SELECTION-SCREEN OUTPUT.
IF p_rad1 EQ 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'MD1'.
screen-active = '1'.
screen-invisible = 0.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'MD2'.
screen-active = '0'.
screen-invisible = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSEIF p_rad2 EQ 'X'..
LOOP AT SCREEN.
IF screen-group1 = 'MD2'.
screen-active = '1'.
screen-invisible = 0.
MODIFY SCREEN.
ENDIF.
IF screen-group1 = 'MD1'.
screen-active = '0'.
screen-invisible = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
tyr this it works
Thanks!
02-06-2009 8:24 PM
02-06-2009 8:30 PM
02-06-2009 8:40 PM
Hi,
Use this code it will definity work.
{code)AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF p_rad1 = 'X' .
IF screen-group1 = 'MD2'.
screen-active = 0.
ENDIF.
ElseIF p_rad2 = 'X'.
IF screen-group1 = 'MD1'.
screen-active = 0.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.{code}
This will solve the issue.
Regards,
Gurpreet
02-06-2009 9:02 PM
Following code works. Thanks everybody for the help provided.
*---------------------------------------------------------------------*
* Selection Screen
*---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK bl3 WITH FRAME TITLE text-016.
PARAMETERS :
p_delta RADIOBUTTON GROUP r1 DEFAULT 'X' USER-COMMAND dtd.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
PARAMETERS : p_fname TYPE rlgrap-filename MODIF ID dc1,
p_header AS CHECKBOX DEFAULT ' ' MODIF ID dc1.
SELECTION-SCREEN END OF BLOCK bl1.
PARAMETERS :
p_backup RADIOBUTTON GROUP r1.
SELECTION-SCREEN BEGIN OF BLOCK bl2 WITH FRAME TITLE text-012.
PARAMETERS : p_upload AS CHECKBOX DEFAULT ' ' MODIF ID dc2,
p_tstamp TYPE char14 MODIF ID dc2.
SELECTION-SCREEN END OF BLOCK bl2.
SELECTION-SCREEN END OF BLOCK bl3.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF p_delta NE 'X'.
IF screen-group1 = 'DC1'.
screen-input = '0'.
screen-invisible = '1'.
ENDIF.
IF screen-group1 = 'DC2'.
screen-input = '1'.
screen-invisible = '0'.
ENDIF.
ELSEIF p_backup NE 'X'.
IF screen-group1 = 'DC2'.
screen-input = '0'.
screen-invisible = '1'.
ENDIF.
IF screen-group1 = 'DC1'.
screen-input = '1'.
screen-invisible = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
Edited by: salil vaidya on Feb 6, 2009 4:14 PM
02-06-2009 9:17 PM