‎2008 Nov 05 8:01 AM
hello experts ,
i am facing a problem in the selection screen.
my object is to use two block in a selection screen in which i have two parameters and a check box in each block. And i have kept a parameter as mandatory in a block. Here the problem is that i have kept the parameter as mandatory so the 'at selection screen output' event is not getting triggered without entering any values to parameter.
this is my coding.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME title TEXT-001.
SELECT-OPTIONS : S_GSBER FOR TGSB-GSBER OBLIGATORY MODIF ID M1,
S_AUGDT FOR BSAK-AUGDT MODIF ID M1.
PARAMETER : P_BUKRS TYPE T001-BUKRS MODIF ID M1,
TEST TYPE C AS CHECKBOX USER-COMMAND Z1 DEFAULT 'X' MODIF ID M1.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
PARAMETER : CTP TYPE C AS CHECKBOX USER-COMMAND Z1 DEFAULT 'X' MODIF ID M2.
SELECT-OPTIONS : S_DD FOR SY-DATUM MODIF ID M2,
S_PD FOR SY-DATUM MODIF ID M2.
SELECTION-SCREEN END OF BLOCK B2.
AT SELECTION-SCREEN OUTPUT.
IF TEST = 'X' AND CTP = 'X'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'M2'.
SCREEN-INPUT = '0'.
MODIFY SCREEN.
ENDIF.
Here when i uncheck the 'test' checkbox it is showing error to 'fill all the required fields'. so how can i get rid of it.
Edited by: Arun Pandian on Nov 5, 2008 9:02 AM
‎2008 Nov 05 8:19 AM
Hi,
I modified ur code...and it is working now...
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_gsber FOR tgsb-gsber MODIF ID m1, "remove OBLIGATORY
s_augdt FOR bsak-augdt MODIF ID m1.
PARAMETER : p_bukrs TYPE t001-bukrs MODIF ID m1,
test TYPE c AS CHECKBOX USER-COMMAND z1 DEFAULT 'X' MODIF ID m1.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETER : ctp TYPE c AS CHECKBOX USER-COMMAND z1 DEFAULT 'X' MODIF ID m2.
SELECT-OPTIONS : s_dd FOR sy-datum MODIF ID m2,
s_pd FOR sy-datum MODIF ID m2.
SELECTION-SCREEN END OF BLOCK b2.
AT SELECTION-SCREEN ON s_gsber. "ADD this...
IF sy-ucomm NE 'Z1' AND s_gsber IS INITIAL.
MESSAGE 'Enter value' TYPE 'E'.
ENDIF.
AT SELECTION-SCREEN OUTPUT.
IF test = 'X' AND ctp = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'M2'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
‎2008 Nov 05 8:09 AM
in this case you have to remove the OBLIGATORY statement and check in the AT-SELECTION SCREEN OUTPUT if the field is filled or not. something like:
IF field IS INITIAL.
MESSAGE ...
ENDIF.
‎2008 Nov 05 8:11 AM
AT SELECTION-SCREEN OUTPUT event is getting triggered so u r second block fields and checkbox are disabled
‎2008 Nov 05 8:19 AM
Hi,
I modified ur code...and it is working now...
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_gsber FOR tgsb-gsber MODIF ID m1, "remove OBLIGATORY
s_augdt FOR bsak-augdt MODIF ID m1.
PARAMETER : p_bukrs TYPE t001-bukrs MODIF ID m1,
test TYPE c AS CHECKBOX USER-COMMAND z1 DEFAULT 'X' MODIF ID m1.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETER : ctp TYPE c AS CHECKBOX USER-COMMAND z1 DEFAULT 'X' MODIF ID m2.
SELECT-OPTIONS : s_dd FOR sy-datum MODIF ID m2,
s_pd FOR sy-datum MODIF ID m2.
SELECTION-SCREEN END OF BLOCK b2.
AT SELECTION-SCREEN ON s_gsber. "ADD this...
IF sy-ucomm NE 'Z1' AND s_gsber IS INITIAL.
MESSAGE 'Enter value' TYPE 'E'.
ENDIF.
AT SELECTION-SCREEN OUTPUT.
IF test = 'X' AND ctp = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'M2'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
‎2008 Nov 05 8:20 AM
Hi Arun,
For my understanding I think you should remove the Obligatory from the chcek box and put that condition in the event AT SELECTION-SCREEN OUTPUT. This way your problem will solve.
Thanks,
Chidanand