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

dialog programming query

Former Member
0 Likes
529

Hi friends,

i am giving the error analysis that i have encountered with the dialog programming.

What happened?

You requested too many consecutive nested call screens.

Error analysis

At present, the maximum permitted number of nested screen levels is restricted to 50.

what is to be done to rectify this problem.

i am also giving the code which i have used.

case sy-ucomm.

when 'CREA'.

clear: wa_zitrdepesc-BUKRS,

wa_zitrdepesc-DEPT,

wa_zitrdepesc-ESCLDEP,

wa_zitrdepesc-ESCLPER.

call screen 200.

when 'DISP'.

if v_field = 'ZITRDEPESC-DEPT' and v_dept is not INITIAL.

flag = 'X'.

clear wa_zitrdepesc.

select * from zitrdepesc into wa_zitrdepesc where dept = v_dept.

endselect.

dv_dept = v_dept.

clear sy-ucomm.

elseif v_field ne 'ZITRDEPESC-DEPT' and v_dept is INITIAL.

clear flag.

clear dv_dept.

message w000.

clear sy-ucomm.

clear wa_zitrdepesc.

endif.

when 'MODI'.

call screen 300.

endcase.

suitable solutions will be rewarded.

regards

samarendra.

1 ACCEPTED SOLUTION
Read only

Barada_Swain
Participant
0 Likes
486

Hi Samarendra,

The error message you are getting is a very common message. It happends due to the limited screen buffer area in ABAP. Whenever you call a screen it takes up some space in the screen buffer area.

So the simple solution is terminate the screen sequence when you are finished using it. I mean lets say as in your code you called screen 200. You did some processing etc on that screen. Now when you are finished with this screen you must be going back. So while leaving the current screen make sure you delete the entry for this screen from the screen buffer.

Ideally you can use the command LEAVE TO SCREEN 0, Which terminates the screen sequence. Or you can use the command LEAVE SCREEN which just redirects you to the next screen on the sequence. If you have not defined any NEXT screen then It will leave the screen sequence.

This is a just a default method. I can tell you in details only after going through the code for the other screens you are using.

Thanks and Regards

Barada

Edited by: Baradakanta Swain on Mar 24, 2008 3:21 PM

3 REPLIES 3
Read only

Barada_Swain
Participant
0 Likes
487

Hi Samarendra,

The error message you are getting is a very common message. It happends due to the limited screen buffer area in ABAP. Whenever you call a screen it takes up some space in the screen buffer area.

So the simple solution is terminate the screen sequence when you are finished using it. I mean lets say as in your code you called screen 200. You did some processing etc on that screen. Now when you are finished with this screen you must be going back. So while leaving the current screen make sure you delete the entry for this screen from the screen buffer.

Ideally you can use the command LEAVE TO SCREEN 0, Which terminates the screen sequence. Or you can use the command LEAVE SCREEN which just redirects you to the next screen on the sequence. If you have not defined any NEXT screen then It will leave the screen sequence.

This is a just a default method. I can tell you in details only after going through the code for the other screens you are using.

Thanks and Regards

Barada

Edited by: Baradakanta Swain on Mar 24, 2008 3:21 PM

Read only

0 Likes
486

Dear friends,

the problem was in the flow logic of screen 200 and screen 300 where in which the module for output and input was of screen 100.

that is the reason why i got the error.

anyways i thank you for the solutions given by you both.

regards

samarendra.

Read only

Former Member
0 Likes
486

Baradakanta has describe the problem well... in order to get 50 levels down, it sounds like you must have something like:


call screen '200'.  "starting screen
  call screen '300'.  "some details
    call screen '400'.  "some more details / popup or something
      call screen '200'.  "back to start screen
        call screen '300'.
          call screen '400'.
            call screen '200'.  "back to start screen
              call screen '300'.
                call screen '400'.
"etc - 9 levels down very quickly

whereas you should be aiming something more like


call screen '200'.        "starting screen
  call screen '300'.
    call screen '400'.
*"   {PAI for 400}
      leave to screen 0.  "takes you back up to 300 call point

*"  ...now you are back in PAI for 300 where you can:
    leave to screen 0.    "takes you back up to 200 call point

*" and now you are back in PAI for 200
*" so you can start call sequence again from 200
*" etc - no more than 3 levels down this way

Jonathan