Application Development and Automation 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: 
Read only

A problem about selection screen radio button

WLZ
Advisor
Advisor
0 Likes
1,631

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.

14 REPLIES 14
Read only

Former Member
0 Likes
1,594

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

Read only

Former Member
0 Likes
1,594

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.

Read only

RahulKeshav
Active Contributor
0 Likes
1,594

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

Read only

Former Member
0 Likes
1,594

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

Read only

0 Likes
1,594

Hi, Ajay kumar ,

I don't understand your meaning. Could you explain it in detail?

Read only

0 Likes
1,594

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

Read only

WLZ
Advisor
Advisor
0 Likes
1,594

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.

Read only

Former Member
0 Likes
1,594

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

Read only

0 Likes
1,594

Dear Milan Shah ,

In your method, it still not solve my problem. Thank you for your help.

Read only

0 Likes
1,594

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.

Read only

0 Likes
1,594

Hi,

Pls have a look at this link. Its a similar case but in Module pool programming. This may be helpful to you.

[;

Thanks,

Sri.

Read only

0 Likes
1,594

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.

Read only

0 Likes
1,594

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

Read only

0 Likes
1,594

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