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

Need help for loop at screen

Former Member
0 Likes
573

Hi All,

This is Rajani. I need help on LOOP AT SCREEN statement.

I have 3 selection blocks in the selection screen.

First block contains two radio buttions, the second block contains 6 parameters and the third block contains 3 parameters.

If the first radiobutton is selected, then the parameters in the third block should be grayed out.

In the similar way for the second radiobutton.

Please let me know my mistake from the following code :

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS : P_SALES TYPE C RADIOBUTTON GROUP G1 MODIF ID R1,

P_OPS TYPE C RADIOBUTTON GROUP G1 MODIF ID R1,

P_MONTH TYPE SPMON OBLIGATORY MODIF ID R1.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.

PARAMETERS : P_SADIS TYPE BZIRK MODIF ID M1,

P_CUGRP TYPE KDGRP MODIF ID M1,

P_SADCH TYPE VTWEG MODIF ID M1,

P_SADIV TYPE SPART MODIF ID M1,

P_CUPAR TYPE HIEZU04 MODIF ID M1,

P_MAGRP TYPE MVGR1 MODIF ID M1,

P_PRHIE TYPE PRODH1 MODIF ID M1.

SELECT-OPTIONS: S_MATNR FOR S889-MATNR.

PARAMETERS : P_PLANT TYPE WERKS_EXT.

SELECTION-SCREEN END OF BLOCK B2.

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.

PARAMETERS : P_WERKS TYPE WERKS_EXT MODIF ID M2,

P_MATGR TYPE PMNUX MODIF ID M2,

P_MRPCN TYPE DISPO MODIF ID M2.

SELECTION-SCREEN END OF BLOCK B3.

*INITIALIZATION.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF SCREEN-GROUP1 = 'M1'.

IF P_OPS = 'X'.

SCREEN-INPUT = '0'.

ENDIF.

MODIFY SCREEN.

ENDIF.

IF SCREEN-GROUP1 = 'M2'.

IF P_SALES = 'X'.

SCREEN-INPUT = '0'.

ENDIF.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
555

Hi Rajani,

When you change the radiobutton selection you need to trigger the AT SELECTION-SCREEN OUTPUT event for the radiobutton selection to take effect.

To do that assign a user command to the radiobutton as follows:

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS : P_SALES TYPE C RADIOBUTTON GROUP G1 MODIF ID R1 USER-COMMAND radb,

P_OPS TYPE C RADIOBUTTON GROUP G1 MODIF ID R1 ,

P_MONTH TYPE SPMON OBLIGATORY MODIF ID R1 .

SELECTION-SCREEN END OF BLOCK B1.

Also, while setting SCREEN-INPUT = 0 for condition met , remember to turn it back on if condition is not met i.e. SCREEN-INPUT = 1 . SCREEN-ACTIVE = 1.

Else the fields once greyed out will remain greyed out.

Cheers,

Aditya

4 REPLIES 4
Read only

Former Member
0 Likes
556

Hi Rajani,

When you change the radiobutton selection you need to trigger the AT SELECTION-SCREEN OUTPUT event for the radiobutton selection to take effect.

To do that assign a user command to the radiobutton as follows:

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS : P_SALES TYPE C RADIOBUTTON GROUP G1 MODIF ID R1 USER-COMMAND radb,

P_OPS TYPE C RADIOBUTTON GROUP G1 MODIF ID R1 ,

P_MONTH TYPE SPMON OBLIGATORY MODIF ID R1 .

SELECTION-SCREEN END OF BLOCK B1.

Also, while setting SCREEN-INPUT = 0 for condition met , remember to turn it back on if condition is not met i.e. SCREEN-INPUT = 1 . SCREEN-ACTIVE = 1.

Else the fields once greyed out will remain greyed out.

Cheers,

Aditya

Read only

Former Member
0 Likes
555

Hi.

You nedd to change the SELECTION-SCREEN OUTPUT with AT SELECTION-SCREEN ON RADIOBUTTON GROUP g1 .

Grettings.

Read only

Former Member
0 Likes
555

Hi Rajini,



By using AT SELECTION-SCREEN OUTPUT and creating the MOdif id for the selection screen parameter you can achieve the dynamic selection scree..

PARAMETERS : P_SALES TYPE C RADIOBUTTON GROUP G1 MODIF ID R1 default,  "<,add default
P_OPS TYPE C RADIOBUTTON GROUP G1 MODIF ID R2,
P_MONTH TYPE SPMON OBLIGATORY MODIF ID R3.

AT SELECTION-SCREEN OUTPUT.
* Modify selection screen as per the radio buttons selected.
  PERFORM modify_sel-screen.
 
FORM modify_sel-screen .
 
* If radio button - process in range of STR's selected, display STR
* range and Date range as input
  IF p_rb1 EQ c_x.
    LOOP AT SCREEN.
      IF screen-group1 = c_ir2.
        screen-active  = c_0.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
* If radio button - process from excel is selected, give option for
* user to upload file
  ELSEIF p_rb2 EQ c_x.
    LOOP AT SCREEN.
      IF screen-group1 = c_ir1.
        screen-active  = c_0.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.
elseif  p_rb3 EQ c_x.
 LOOP AT SCREEN.
      IF screen-group1 = c_ir1.
        screen-active  = c_0.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDFORM.                    " MODIFY_SEL-SCREEN

Read only

Peranandam
Contributor
0 Likes
555

Hi,

This is your expected solution.

TABLES: mara.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS : p_sales TYPE c RADIOBUTTON GROUP g1 USER-COMMAND ucom DEFAULT 'X', "MODIF ID r1

p_ops TYPE c RADIOBUTTON GROUP g1 . "MODIF ID r1

PARAMETERS: p_month TYPE spmon OBLIGATORY ." MODIF ID r1

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.

PARAMETERS : p_sadis TYPE bzirk MODIF ID m1,

p_cugrp TYPE kdgrp MODIF ID m1,

p_sadch TYPE vtweg MODIF ID m1,

p_sadiv TYPE spart MODIF ID m1,

p_cupar TYPE hiezu04 MODIF ID m1,

p_magrp TYPE mvgr1 MODIF ID m1,

p_prhie TYPE prodh1 MODIF ID m1.

SELECT-OPTIONS: s_matnr FOR mara-matnr.

PARAMETERS : p_plant TYPE werks_ext.

SELECTION-SCREEN END OF BLOCK b2.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.

PARAMETERS : p_werks TYPE werks_ext MODIF ID m2,

p_matgr TYPE pmnux MODIF ID m2,

p_mrpcn TYPE dispo MODIF ID m2.

SELECTION-SCREEN END OF BLOCK b3.

AT SELECTION-SCREEN.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF p_sales = 'X'.

IF screen-group1 = 'M2'.

screen-input = '0'.

ENDIF.

ENDIF.

IF p_ops IS NOT INITIAL.

IF screen-group1 = 'M1'.

screen-input = '0'.

ENDIF.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

Close this thread if you got soloution.

Regards,

Peranandam