Application Development 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: 

Loop at Screen Problem

former_member188001
Active Participant
0 Kudos

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

1 ACCEPTED SOLUTION

Former Member
0 Kudos

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!

7 REPLIES 7

Former Member
0 Kudos

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

Former Member
0 Kudos

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!

0 Kudos

thanks for the code, but it doesnt work.

0 Kudos

Hi Salil,

you can refer to these links:

hope it helps you..

Regards!

Former Member
0 Kudos

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

0 Kudos

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

former_member188001
Active Participant
0 Kudos

Probelm solved as per the code snippet given