‎2009 Sep 23 4:53 AM
hi experts,
i want my report selection screen like this.
i want to have 3 radio buttons in a box. button 1 , button2 and button3
if the user selects button1 then at the bittom of the radio button box i need to get the selection screen with filed1, field2 and field3
if the user selects button2 then in place of field1, fied2 and field3 i want to have field4 and field5. if the user selects button3 in the place of field4 and field5, i want to see field7. how can we do this?
thanks
‎2009 Sep 23 5:16 AM
Hi Sudhakar,
Try below code. Will meet ur requirement exactly. I have used 'MARA' table fields. Change it accordingly.
REPORT ztest.
TABLES: mara.
DATA: ok_code TYPE sy-ucomm,
s TYPE i VALUE '1'.
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS: p_r1 RADIOBUTTON GROUP g1 USER-COMMAND u1 MODIF ID r1 DEFAULT 'X',
p_r2 RADIOBUTTON GROUP g1 MODIF ID r1,
p_r3 RADIOBUTTON GROUP g1 MODIF ID r1.
SELECTION-SCREEN END OF BLOCK b1.
SELECT-OPTIONS: s1 FOR mara-matnr MODIF ID m1,
s2 FOR mara-mbrsh MODIF ID m1,
s3 FOR mara-mtart MODIF ID m1,
s4 FOR mara-ersda MODIF ID m2,
s5 FOR mara-ernam MODIF ID m2,
s6 FOR mara-matkl MODIF ID m3,
s7 FOR mara-meins MODIF ID m3.
AT SELECTION-SCREEN.
ok_code = sy-ucomm.
CASE ok_code.
WHEN 'U1'.
IF p_r1 = 'X'.
s = 1.
ELSEIF p_r2 = 'X'.
s = 2.
ELSE.
s = 3.
ENDIF.
ENDCASE.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
CASE s.
WHEN '1'.
IF screen-group1 ne 'M1' and screen-group1 ne 'R1'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
WHEN '2'.
IF screen-group1 ne 'M2' and screen-group1 ne 'R1'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
WHEN '3'.
IF screen-group1 ne 'M3' and screen-group1 ne 'R1'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDCASE.
ENDLOOP.
Thanks.
‎2009 Sep 23 5:09 AM
In AT SELECTION OUTPUT event write following code
LOOP AT SCREEN.
if radio-button 1 is selected and SCREEN-NAME = field 4 to field 7.
SCREEN-INPUT = 0 and SCREEN-ACTIVE = 0 .
MODIFY SCREEN.
ENDLOOP.
similarly. for other radio buttons hide fields which u do not want to display.
‎2009 Sep 23 5:16 AM
Hi Sudhakar,
Try below code. Will meet ur requirement exactly. I have used 'MARA' table fields. Change it accordingly.
REPORT ztest.
TABLES: mara.
DATA: ok_code TYPE sy-ucomm,
s TYPE i VALUE '1'.
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS: p_r1 RADIOBUTTON GROUP g1 USER-COMMAND u1 MODIF ID r1 DEFAULT 'X',
p_r2 RADIOBUTTON GROUP g1 MODIF ID r1,
p_r3 RADIOBUTTON GROUP g1 MODIF ID r1.
SELECTION-SCREEN END OF BLOCK b1.
SELECT-OPTIONS: s1 FOR mara-matnr MODIF ID m1,
s2 FOR mara-mbrsh MODIF ID m1,
s3 FOR mara-mtart MODIF ID m1,
s4 FOR mara-ersda MODIF ID m2,
s5 FOR mara-ernam MODIF ID m2,
s6 FOR mara-matkl MODIF ID m3,
s7 FOR mara-meins MODIF ID m3.
AT SELECTION-SCREEN.
ok_code = sy-ucomm.
CASE ok_code.
WHEN 'U1'.
IF p_r1 = 'X'.
s = 1.
ELSEIF p_r2 = 'X'.
s = 2.
ELSE.
s = 3.
ENDIF.
ENDCASE.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
CASE s.
WHEN '1'.
IF screen-group1 ne 'M1' and screen-group1 ne 'R1'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
WHEN '2'.
IF screen-group1 ne 'M2' and screen-group1 ne 'R1'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
WHEN '3'.
IF screen-group1 ne 'M3' and screen-group1 ne 'R1'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDCASE.
ENDLOOP.
Thanks.
‎2009 Sep 23 5:17 AM
HI,
Here is the full solution of your problem :
firstly make two selection screens corresponding to radio buttons(eg: we hav 2 radio buttons par_cust and par_vend)
*radiobuttons
SEECTION SCREEN VISIBILITY BASED ON RADIOBUTTON :
PARAMETERS: par_cust radiobutton group g1 DEFAULT 'X' USER-COMMAND sel ,
par_vend radiobutton group g1.
*selection criteria for venodr if par_vend radiobutton is ticked
SELECT-OPTIONS: s_txcd1 FOR bset-mwskz MODIF ID M1,
s_txcd2 FOR bset-mwskz MODIF ID M1,
s_txcd3 FOR bset-mwskz MODIF ID M1,
s_txcd4 FOR bset-mwskz MODIF ID M1,
*selection criteria for customer if par_CUST radiobutton is ticked
s_txcd12 FOR bset-mwskz MODIF ID M2,
s_txcd13 FOR bset-mwskz MODIF ID M2,
s_txcd14 FOR bset-mwskz MODIF ID M2,
*Then at selection screen output WRITE THIS CODE
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF par_vend = 'X' AND SCREEN-GROUP1 = 'M2'.
SCREEN-INPUT = 0.
SCREEN-ACTIVE = 0.
SCREEN-INVISIBLE = 1.
MODIFY SCREEN.
ENDIF.
IF par_cust = 'X' AND SCREEN-GROUP1 = 'M1'.
SCREEN-INPUT = 0.
SCREEN-ACTIVE = 0.
SCREEN-INVISIBLE = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
regards
rahul
‎2009 Sep 23 5:20 AM
Hi,
Try like this
at selection-screen output .
check the radio button if selected .
if r1 = 'X'.
LOOP AT SCREEN .
IF SCREEN-NAME = PARAMETER NAME.
SCREEN-REQUIRED = 1
endif.
modufy screen .
endloop.
Thanks
‎2009 Sep 23 5:24 AM
Hi ,
the following code works acc to the requirement..
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS:
p_r1 RADIOBUTTON GROUP rad USER-COMMAND com1,
p_r2 RADIOBUTTON GROUP rad,p_r3 RADIOBUTTON GROUP rad.
SELECTION-SCREEN END OF BLOCK b1.
PARAMETERS:
p_fld1 TYPE i MODIF ID mod,
p_fld2 TYPE i MODIF ID mod,
p_fld3 TYPE i MODIF ID mod,
p_fld4 TYPE i MODIF ID md1,
p_fld5 TYPE i MODIF ID md1,
p_fld7 TYPE i MODIF ID md2.
AT SELECTION-SCREEN OUTPUT.
IF p_r2 = 'X' .
LOOP AT SCREEN.
IF screen-group1 = 'MD2' OR screen-group1 = 'MOD' .
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSEIF p_r3 = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'MOD' OR screen-group1 = 'MD1' .
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-group1 = 'MD2' OR screen-group1 = 'MD1' .
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
Regards,
Deeba
‎2009 Sep 23 7:52 AM
Hi Sudhakar,
you can use the following code.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE T01.
PARAMETERS:
r1 RADIOBUTTON GROUP rad1 USER-COMMAND UPLOAD,
r2 RADIOBUTTON GROUP rad1,
r3 RADIOBUTTON GROUP rad1.
SELECTION-SCREEN END OF BLOCK b1.
PARAMETERS:
p_fld1 TYPE i MODIF ID RD1,
p_fld2 TYPE i MODIF ID RD1,
p_fld3 TYPE i MODIF ID RD1,
p_fld4 TYPE i MODIF ID RD2,
p_fld5 TYPE i MODIF ID RD2,
p_fld6 TYPE i MODIF ID RD3.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF r3 = 'X' .
IF screen-group1 = 'RD2' OR screen-group1 = 'RD1' .
screen-output = '0'.
screen-active = '0'.
screen-input = '0'.
ENDIF.
IF r3 = 'X' and screen-group1 = 'RD3'.
screen-input = '1'.
endif.
elseIF r2 = 'X'.
IF screen-group1 = 'RD1' OR screen-group1 = 'RD3' .
screen-output = '0'.
screen-active = '0'.
screen-input = '0'.
ENDIF.
IF r2 = 'X' and screen-group1 = 'RD2'.
screen-input = '1'.
endif.
else .
IF screen-group1 = 'RD2' OR screen-group1 = 'RD3' .
screen-output = '0'.
screen-active = '0'.
screen-input = '0'.
ENDIF.
IF r1 = 'X' and screen-group1 = 'RD1'.
screen-input = '1'.
endif.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
‎2009 Sep 23 8:00 AM
Hi,
Try below mentioned logic,
parameters : r1 radiobutton group g1 USER-COMMAND OFF,
r2 radiobutton group G1.
parameters : p1(10) MODIF ID SC1,
P2(10) MODIF ID SC1,
P3(10) MODIF ID SC2,
P4(10) MODIF ID SC2.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF R1 = 'X'.
IF SCREEN-GROUP1 = 'SC2'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
CONTINUE.
ENDIF.
ENDIF.
IF R2 = 'X'.
IF SCREEN-GROUP1 = 'SC1'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
CONTINUE.
ENDIF.
ENDIF.
ENDLOOP.