05-28-2007 5:49 PM
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.
05-28-2007 5:54 PM
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
05-28-2007 6:03 PM
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
05-28-2007 6:13 PM
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
05-29-2007 11:35 AM
05-28-2007 5:54 PM
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
05-28-2007 5:57 PM
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.
05-28-2007 6:17 PM
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.