2009 Jul 15 7:40 AM
Dear,
On selection screen, there are two radio button, p_mode_d, and p_mode_m, and three selection option, s_bukrs, s_belnr, s_gjahr.
I want to realize that when p_mode_d is set, then, s_bukrs, s_belnr, s_gjahr are not mandatory. When p_mode_m is set, s_bukrs, s_belnr, s_gjahr are mandatory. Here p_mode_d is set 'X' by default.
Now run the program, at first, p_mode_d is set, and s_bukrs, s_belnr, s_gjahr are not mandatory. After select p_mode_m, s_bukrs, s_belnr, s_gjahr are mandatory. But when select p_mode_d again, then, s_bukrs, s_belnr, s_gjahr are still mandatory.
Could you please help me?
Look at my coding here:
SELECTION-SCREEN BEGIN OF BLOCK box1 WITH FRAME TITLE text-001. "Technical datas
SELECTION-SCREEN SKIP.
PARAMETERS: p_file TYPE filename-fileintern DEFAULT 'ZOU_FIN_0005'. "Logical file
SELECTION-SCREEN SKIP.
PARAMETERS: p_mode_d RADIOBUTTON GROUP rad1 USER-COMMAND rad1 DEFAULT 'X',
p_mode_m RADIOBUTTON GROUP rad1.
SELECTION-SCREEN END OF BLOCK box1.
SELECTION-SCREEN BEGIN OF BLOCK box2 WITH FRAME TITLE text-002. "Applicatif data
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: s_bukrs FOR bkpf-bukrs, "Company code:
s_belnr FOR bkpf-belnr, "Accounting document:
s_gjahr FOR bkpf-gjahr, "Fiscal year:
s_budat FOR bkpf-budat, "Posting date:
s_blart FOR bkpf-blart. "Document type:
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK box2.
AT SELECTION-SCREEN OUTPUT.
IF p_mode_m = c_x.
REFRESH: s_bukrs,
s_belnr,
s_budat.
LOOP AT SCREEN.
IF screen-name = 'S_BUKRS-LOW'.
screen-required = 1.
ENDIF.
IF screen-name = 'S_BELNR-LOW'.
screen-required = 1.
ENDIF.
IF screen-name = 'S_GJAHR-LOW'.
screen-required = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
Dear,
On selection screen, there are two radio button, p_mode_d, and p_mode_m, and three selection option, s_bukrs, s_belnr, s_gjahr.
I want to realize that when p_mode_d is set, then, s_bukrs, s_belnr, s_gjahr are not mandatory. When p_mode_m is set, s_bukrs, s_belnr, s_gjahr are mandatory. Here p_mode_d is set 'X' by default.
Now run the program, at first, p_mode_d is set, and s_bukrs, s_belnr, s_gjahr are not mandatory. After select p_mode_m, s_bukrs, s_belnr, s_gjahr are mandatory. But when select p_mode_d again, then, s_bukrs, s_belnr, s_gjahr are still mandatory.
Could you please help me?
Look at my coding here:
SELECTION-SCREEN BEGIN OF BLOCK box1 WITH FRAME TITLE text-001. "Technical datas
SELECTION-SCREEN SKIP.
PARAMETERS: p_file TYPE filename-fileintern DEFAULT 'ZOU_FIN_0005'. "Logical file
SELECTION-SCREEN SKIP.
PARAMETERS: p_mode_d RADIOBUTTON GROUP rad1 USER-COMMAND rad1 DEFAULT 'X',
p_mode_m RADIOBUTTON GROUP rad1.
SELECTION-SCREEN END OF BLOCK box1.
SELECTION-SCREEN BEGIN OF BLOCK box2 WITH FRAME TITLE text-002. "Applicatif data
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: s_bukrs FOR bkpf-bukrs, "Company code:
s_belnr FOR bkpf-belnr, "Accounting document:
s_gjahr FOR bkpf-gjahr, "Fiscal year:
s_budat FOR bkpf-budat, "Posting date:
s_blart FOR bkpf-blart. "Document type:
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK box2.
AT SELECTION-SCREEN OUTPUT.
IF p_mode_m = c_x.
REFRESH: s_bukrs,
s_belnr,
s_budat.
LOOP AT SCREEN.
IF screen-name = 'S_BUKRS-LOW'.
screen-required = 1.
ENDIF.
IF screen-name = 'S_BELNR-LOW'.
screen-required = 1.
ENDIF.
IF screen-name = 'S_GJAHR-LOW'.
screen-required = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
2009 Jul 15 7:48 AM
Hi,
Write an ELSE part in your AT SELECTION-SCREEN OUTPUT (when your p_mode_m is not checked i.e your p_mode_d is checked) and make your select options not mandatory by saying screen-required = 0.
AT SELECTION-SCREEN OUTPUT.
IF p_mode_m = c_x.
REFRESH: s_bukrs,
s_belnr,
s_budat.
LOOP AT SCREEN.
IF screen-name = 'S_BUKRS-LOW'.
screen-required = 1.
ENDIF.
IF screen-name = 'S_BELNR-LOW'.
screen-required = 1.
ENDIF.
IF screen-name = 'S_GJAHR-LOW'.
screen-required = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF p_mode_d = c_x.
REFRESH: s_bukrs,
s_belnr,
s_budat.
LOOP AT SCREEN.
IF screen-name = 'S_BUKRS-LOW'.
screen-required = 0.
ENDIF.
IF screen-name = 'S_BELNR-LOW'.
screen-required = 0.
ENDIF.
IF screen-name = 'S_GJAHR-LOW'.
screen-required = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
Edited by: Nitwick on Jul 15, 2009 12:22 PM
Edited by: Nitwick on Jul 15, 2009 12:24 PM
2009 Jul 15 7:49 AM
hi,
in the AT SELECTION-SCREEN OUTPUT EVENT you have to again assign screen-required is deactivate. see this one,
AT SELECTION-SCREEN OUTPUT.
IF p_mode_m = c_x.
REFRESH: s_bukrs,
s_belnr,
s_budat.
LOOP AT SCREEN.
IF screen-name = 'S_BUKRS-LOW'.
screen-required = 1.
ENDIF.
IF screen-name = 'S_BELNR-LOW'.
screen-required = 1.
ENDIF.
IF screen-name = 'S_GJAHR-LOW'.
screen-required = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF p_mode_d = C_X.
REFRESH: s_bukrs,
s_belnr,
s_budat.
LOOP AT SCREEN.
IF screen-name = 'S_BUKRS-LOW'.
screen-required = 0.
ENDIF.
IF screen-name = 'S_BELNR-LOW'.
screen-required = 0.
ENDIF.
IF screen-name = 'S_GJAHR-LOW'.
screen-required = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
2009 Jul 15 7:49 AM
Hi ,
the problem is that u hav written code for when u select mode_d ....where is the else part....
try to write else part...
like,,..
else if p-mode_m = 'X'.
REFRESH: s_bukrs,
s_belnr,
s_budat.
LOOP AT SCREEN.
IF screen-name = 'S_BUKRS-LOW'.
screen-required = 0.
ENDIF.
IF screen-name = 'S_BELNR-LOW'.
screen-required = 0
ENDIF.
IF screen-name = 'S_GJAHR-LOW'.
screen-required = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
Please Try ....
thn x
Rahul
2009 Jul 15 8:01 AM
Hi Maggie,
that functionality is not possible, bcoz next time cursor will not go to At selection screen.
you can code for the error message in AT SELECTION SCREEN. I mean instead of standard default option, u have to give error message with manual code.
Thanks,
Ajay
2009 Jul 15 8:07 AM
Hi, Ajay kumar ,
I don't understand your meaning. Could you explain it in detail?
2009 Jul 15 8:30 AM
Hi Maggie,
Instead of using screen-required = 1 or 0 in your AT SELECTION-SCREEN, you need to do the validation manually like this.
AT SELECTION-SCREEN OUTPUT.
IF p_mode_d EQ 'X'.
IF s_bukrs IS INITIAL.
" show error message here.
ELSEIF s_belnr IS INITIAL.
" show error message here.
ELSEIF s_gjahr IS INITIAL.
" show error message here.
ENDIF.
ENDIF.
regards,
Peter
2009 Jul 15 8:05 AM
Dear All,
Thank you for your answer.
The method you said I have done, but s_bukrs, s_gjahr, s_belnr are still mandatory when the p_mode_d is set again.
I set debug on 'IF p_mode_m = c_x.', it will run here only the first time to select radio button, then, it will not run here, whatever p_mode_m or p_mode_d is set.
2009 Jul 15 8:55 AM
Hi Maggie,
Try this code and give default values
SELECTION-SCREEN BEGIN OF BLOCK box1 WITH FRAME TITLE text-001. "Technical datas
SELECTION-SCREEN SKIP.
PARAMETERS: p_file TYPE filename-fileintern DEFAULT 'ZOU_FIN_0005'. "Logical file
SELECTION-SCREEN SKIP.
PARAMETERS: p_mode_d RADIOBUTTON GROUP rad1 DEFAULT 'X' USER-COMMAND rad1 ,
p_mode_m RADIOBUTTON GROUP rad1 .
SELECTION-SCREEN END OF BLOCK box1.
SELECTION-SCREEN BEGIN OF BLOCK box2 WITH FRAME TITLE text-002. "Applicatif data
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: s_bukrs FOR bkpf-bukrs DEFAULT val1 TO val2 MODIF ID abc, "Company code:
s_belnr FOR bkpf-belnr DEFAULT val3 TO val4 MODIF ID abc , "Accounting document:
s_gjahr FOR bkpf-gjahr DEFAULT val5 TO val6 MODIF ID abc, "Fiscal year:
s_budat FOR bkpf-budat, "Posting date:
s_blart FOR bkpf-blart. "Document type:
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK box2.
----
At Selection Screen *
----
AT SELECTION-SCREEN OUTPUT .
PERFORM change_selection_screen.
&----
*& Form change_selection_screen
&----
text
----
--> p1 text
<-- p2 text
----
form change_selection_screen .
IF p_mode_m = 'X'.
REFRESH: s_bukrs,
s_belnr,
s_budat.
LOOP AT SCREEN.
IF screen-group1 EQ 'ABC'.
screen-required = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
IF p_mode_d = 'X'.
REFRESH: s_bukrs,
s_belnr,
s_budat.
LOOP AT SCREEN.
IF screen-group1 EQ 'ABC'.
screen-required = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
endform. " change_selection_screen
You will need to give values for mandatory fields once you select Radiobutton P_MODE_M.
Since there are no values in Mandatory fields, flow does not go to the program again.
Regards
Milan
Edited by: Milan Shah on Jul 15, 2009 10:00 AM
Edited by: Milan Shah on Jul 15, 2009 10:03 AM
2009 Jul 15 9:08 AM
Dear Milan Shah ,
In your method, it still not solve my problem. Thank you for your help.
2009 Jul 15 9:18 AM
Hi Maggie,
This code will work .....
SELECTION-SCREEN BEGIN OF BLOCK box1 WITH FRAME TITLE text-001. "Technical datas
SELECTION-SCREEN SKIP.
PARAMETERS: p_file TYPE filename-fileintern DEFAULT 'ZOU_FIN_0005'. "Logical file
SELECTION-SCREEN SKIP.
PARAMETERS: p_mode_d RADIOBUTTON GROUP rad1 DEFAULT 'X' USER-COMMAND rad1,
p_mode_m RADIOBUTTON GROUP rad1.
SELECTION-SCREEN END OF BLOCK box1.
SELECTION-SCREEN BEGIN OF BLOCK box2 WITH FRAME TITLE text-002. "Applicatif data
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: s_bukrs FOR bkpf-bukrs DEFAULT '1000' TO '1001' MODIF ID abc, "Company code:
s_belnr FOR bkpf-belnr DEFAULT '0100000000' TO '010000000000' MODIF ID abc , "Accounting document:
s_gjahr FOR bkpf-gjahr DEFAULT '2007' TO '2009' MODIF ID abc, "Fiscal year:
s_budat FOR bkpf-budat, "Posting date:
s_blart FOR bkpf-blart. "Document type:
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK box2.
----
At Selection Screen *
----
AT SELECTION-SCREEN OUTPUT .
*--> Change Selection Screen
PERFORM change_selection_screen.
&----
*& Form change_selection_screen
&----
form change_selection_screen .
IF p_mode_m = 'X'.
LOOP AT SCREEN.
IF screen-group1 EQ 'ABC'.
screen-required = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
IF p_mode_d = 'X'.
LOOP AT SCREEN.
IF screen-group1 EQ 'ABC'.
screen-required = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
endform.
2009 Jul 15 9:22 AM
2009 Jul 15 9:38 AM
Dear Milan Shah ,
I have no default value for s_bukrs, s_belnr, s_gjahr. So I can't realize it with your code.
Thank you for your help.
2009 Jul 15 9:50 AM
Hi Maggie,
Try like this...
Tables: bkpf.
SELECTION-SCREEN BEGIN OF BLOCK box1 WITH FRAME TITLE text-001. "Technical datas
SELECTION-SCREEN SKIP.
PARAMETERS: p_file TYPE filename-fileintern DEFAULT 'ZOU_FIN_0005'. "Logical file
SELECTION-SCREEN SKIP.
PARAMETERS: p_mode_d RADIOBUTTON GROUP rad1 USER-COMMAND rad1 DEFAULT 'X',
p_mode_m RADIOBUTTON GROUP rad1.
SELECTION-SCREEN END OF BLOCK box1.
SELECTION-SCREEN BEGIN OF BLOCK box2 WITH FRAME TITLE text-002. "Applicatif data
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: s_bukrs FOR bkpf-bukrs, "Company code:
s_belnr FOR bkpf-belnr, "Accounting document:
s_gjahr FOR bkpf-gjahr, "Fiscal year:
s_budat FOR bkpf-budat, "Posting date:
s_blart FOR bkpf-blart. "Document type:
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK box2.
START-OF-SELECTION.
if p_mode_m = 'X'.
IF s_belnr-LOW IS INITIAL.
MESSAGE S398(00) with 'fill s_belnr' .
leave LIST-PROCESSING.
ENDIF.
IF s_bukrs-LOW IS INITIAL.
MESSAGE S398(00) with 'fill s_bukrs'.
leave LIST-PROCESSING.
ENDIF.
IF s_gjahr-LOW IS INITIAL.
MESSAGE S398(00) with 'fill s_gjahr'.
leave LIST-PROCESSING.
ENDIF.
ENDIF.
Regards
Debarshi
2009 Jul 15 10:03 AM
Dear Roy,
I think maybe your method is the only way to realize. Like others said it only can realize by manually with message, not realize in function.
Thank you
| User | Count |
|---|---|
| 5 | |
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |