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: 

Change screen fields properties

Former Member
0 Kudos

Hi all,

I am using a loop screen to change the properties of some teh fields od the following screen:

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

PARAMETERS: cb_af_e AS CHECKBOX USER-COMMAND abc.

PARAMETERS: p_pep LIKE anla-posnr,

p_centro LIKE anlz-kostl.

SELECTION-SCREEN END OF BLOCK bl3.

AT SELECTION-SCREEN OUTPUT.

IF cb_af_e = 'X'.

LOOP AT SCREEN.

IF screen-name = 'P_PEP' OR screen-name = 'P_CENTRO'.

screen-input = 1.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

ELSE.

LOOP AT SCREEN.

IF screen-name = 'P_PEP' OR screen-name = 'P_CENTRO'.

screen-input = 0.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

ENDIF.

Now, I would like to make fields P_PEP and P_CENTRO obligatory when checkbox cb_af_e is active.

Thanks a lot!

Regards,

Reyes.

7 REPLIES 7

ferry_lianto
Active Contributor
0 Kudos

Hi,

Please try this.


SELECTION-SCREEN BEGIN OF BLOCK bl3 WITH FRAME TITLE text-003.
PARAMETERS: cb_af_e AS CHECKBOX USER-COMMAND abc.
PARAMETERS: p_pep LIKE anla-posnr,
p_centro LIKE anlz-kostl.
SELECTION-SCREEN END OF BLOCK bl3.

AT SELECTION-SCREEN OUTPUT.
IF cb_af_e = 'X'.
LOOP AT SCREEN.
IF screen-name = 'P_PEP' OR screen-name = 'P_CENTRO'.
screen-input = 1.
screen-required = 1.           " <--- add here
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-name = 'P_PEP' OR screen-name = 'P_CENTRO'.
screen-input = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.

Regards,

Ferry Lianto

0 Kudos

thanks!

This is almost working.... When I click on the check box they fields turn requiered. But when the check box is not active I don't want them required....

If I add screen-required = 0, when the check box isn't active, it doesn´t work either....

Regards

0 Kudos

Hi

U should use a MESSAGE error to check if the user has inserted the parameter, because if you set the REQUIRED characteristic you can't deactive the checkbox:

SELECTION-SCREEN BEGIN OF BLOCK BL3 WITH FRAME TITLE TEXT-003.
PARAMETERS: CB_AF_E AS CHECKBOX USER-COMMAND ABC.
PARAMETERS: P_PEP LIKE ANLA-POSNR,
P_CENTRO LIKE ANLZ-KOSTL.
SELECTION-SCREEN END OF BLOCK BL3.

AT SELECTION-SCREEN OUTPUT.
  IF CB_AF_E = 'X'.
    LOOP AT SCREEN.
      IF SCREEN-NAME = 'P_PEP' OR SCREEN-NAME = 'P_CENTRO'.
        SCREEN-INPUT = 0.
      ENDIF.
      MODIFY SCREEN.
    ENDLOOP.
  ENDIF.

AT SELECTION-SCREEN.
  IF CB_AF_E = 'X'.
    IF  P_PEP IS INITIAL.
      LOOP AT SCREEN.
        IF SCREEN-NAME = 'P_PEP'.
          EXIT.
        ENDIF.
      ENDLOOP.
      IF SCREEN-INPUT = 1.
        MESSAGE E208(00) WITH 'Insert P_REP'.
      ENDIF.
    ENDIF.

    IF P_CENTRO IS INITIAL.
      LOOP AT SCREEN.
        IF SCREEN-NAME = 'P_CENTRO'.
          EXIT.
        ENDIF.
      ENDLOOP.
      IF SCREEN-INPUT = 1.
        MESSAGE E208(00) WITH 'Insert P_CENTRO'.
      ENDIF.
    ENDIF.
  ENDIF.

Max

0 Kudos

Thank you all,

Finally I used Max' solution...

Regards,

Reyes

Former Member
0 Kudos

Hi

HI USE required = 1

SEE

AT SELECTION-SCREEN OUTPUT.

IF cb_af_e = 'X'.

LOOP AT SCREEN.

IF screen-name = 'P_PEP' OR screen-name = 'P_CENTRO'.

screen-input = 1.

<b>SCREEN-REQUIRED = 1.</b>

ENDIF.

MODIFY SCREEN.

ENDLOOP.

ELSE.

LOOP AT SCREEN.

IF screen-name = 'P_PEP' OR screen-name = 'P_CENTRO'.

screen-input = 0.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

ENDIF.

Reward points if useful

Regards

Anji

Former Member
0 Kudos
SELECTION-SCREEN BEGIN OF BLOCK bl3 WITH FRAME TITLE text-003.
PARAMETERS: cb_af_e AS CHECKBOX USER-COMMAND abc.
PARAMETERS: p_pep LIKE anla-posnr,
p_centro LIKE anlz-kostl.
SELECTION-SCREEN END OF BLOCK bl3.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.
  IF cb_af_e = 'X'.
     IF screen-name = 'P_PEP' OR screen-name = 'P_CENTRO'.
       screen-input = 1.
     ENDIF.

     IF screen-name = 'P_PEP' OR screen-name = 'P_CENTRO'.
       screen-required = 1.
     ENDIF.

  ELSE.

    IF screen-name = 'P_PEP' OR screen-name = 'P_CENTRO'.
       screen-input = 0.
    ENDIF.
  MODIFY SCREEN.
ENDLOOP.

Former Member
0 Kudos

then perform the validation in AT SELECTION-SCREEN event, something like this

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

PARAMETERS: cb_af_e AS CHECKBOX, " USER-COMMAND abc.

PARAMETERS: p_pep LIKE anla-posnr,

p_centro LIKE anlz-kostl.

SELECTION-SCREEN END OF BLOCK bl3.

AT SELECTION-SCREEN.

IF cb_af_e = 'X'.

if p_pep IS INITIAL.

MESSAGE E000(oo) with 'p_pep can't be initial'.

elseif p_centro is initial.

MESSAGE E000(oo) with 'p_centro can't be initial'.

endif.

endif.

endif.

LOOP AT SCREEN.

IF screen-name = 'P_PEP' OR screen-name = 'P_CENTRO'.

screen-input = 1.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

ELSE.

LOOP AT SCREEN.

IF screen-name = 'P_PEP' OR screen-name = 'P_CENTRO'.

screen-input = 0.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

ENDIF.