Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

selection screen design

Former Member
0 Likes
801

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

1 ACCEPTED SOLUTION
Read only

awin_prabhu
Active Contributor
0 Likes
742

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.

7 REPLIES 7
Read only

Former Member
0 Likes
742

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.

Read only

awin_prabhu
Active Contributor
0 Likes
743

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.

Read only

Former Member
0 Likes
742

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

Read only

Former Member
0 Likes
742

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

Read only

Former Member
0 Likes
742

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

Read only

Former Member
0 Likes
742

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.

Read only

Former Member
0 Likes
742

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.