最近一个网友提到他在做SCREEN编程时,一旦屏幕之间切换次数过多就会出现堆栈溢出的错误。经过分析他提供的信息,我得出错误的原因是他错误地使用CALL SCREEN语句来做屏幕之间的切换。由于SAP系统每次碰到CALL SCREEN语句就会产生新的SCREEN SEQUENCE(参见下图),而且SAP系统设置了SCREEN SEQUENCE堆栈不能超过50个,一旦超过就会出溢出错误。网友就是错误的使用CALL SCREEN 100 和 CALL SCREEN 200进行屏幕切换,不断地产生新的SCREEN SEQUENCE,可想而知溢出是必然的。在SCREEN调用碰到下一屏幕为0时,SCREEN SEQUENCE的才会结束,程序就回到CALL SCREEN的调用之处(也就是说我们可以用LEAVE TO SCREEN 0来结束当前SCREEN SEQUENCE)。
为了避免产生新的SCREEN SEQUENCE,我们常常使用静态下一屏幕或动态下一屏幕来进行屏幕之间的切换。
方法如下:
1)静态制定下一屏幕
在进行屏幕设计是制定下一个屏幕;
2)动态设置下一屏幕
SET SCREEN 200. "该语句只是动态制定下一个屏幕,但不结束当前屏幕处理,只有LEAVE SCREEN才会结束屏幕的处理
LEAVE SCREEN.
或者
LEAVE TO SCREEN 200.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15232529/viewspace-586631/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15232529/viewspace-586631/