二维码

屏幕编程SCREEN SEQUENCE-屏幕序列实战分析

Twilight发表于 2014-09-25 22:49zhwddd1112 最后回复于 2017-06-15 14:58 [复制链接] 2797 22

再进入SCREEN SEQUENCE深入分析之前,我们先了解SET SCREEN <next screen>.含义:
动态指定下一个屏幕(Dynamic Next Screen),等价于屏幕绘制器中静态指定的Next Screen
  1. SET SCREEN 800. "该语句只是动态指定next screen 800,但不结束当前屏幕处理(即不立即跳转下一屏幕),只有LEAVE SCREEN才会结束屏幕的处理(后面的语句才不会执行)
  2. LEAVE SCREEN.
复制代码
等价于
  1. LEAVE TO SCREEN 800.
复制代码

所以:请使用SET SCREEN XXX. LEAVE SCREEN.或者LEAVE TO SCREEN XXX.来在同一屏幕序列里动态的进行屏幕切换跳转,而不要使用CALL SCREEN XXX来进行屏幕序列的跳转与切换

在做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.JPG
嵌套屏幕序列(Inserting Screen Sequences)

CALL SCREEN/SET SCREEN/LEAVE TO SCREEN区别:
  • CALL SCREEN XXXX将在Screen调用栈(CALL STACK)上面添加一层调用(进栈),调用XXXX的PBO和PAI,如果XXXX的Next Screen不为0,那么将继续其Next Screen的PBO和PAI,如此继续~~~当最后碰到Next Screen为0时,该层调用将从调用栈中退出(出栈),然后系统将继续执行CALL SCREEN XXXX之后的语句。
  • SET SCREEN XXXX,设置调用栈当前层次的Next Screen为XXXX,它并不影响调用栈的层数,除非XXXX为0,那将导致调用栈退掉一层(出栈)。要注意的是,PAI中SET SCREEN XXXX后的语句,系统将照样执行。只有执行完毕该PAI整个逻辑后,才考虑Next Screen的PBO和PAI。
  • LEAVE TO SCREEN与SET SCREEN比较类似,所不同的是,LEAVE TO SCREEN XXXX将强行中断当前SCREEN的PAI,直接执行XXXX的PBO和PAI。换言之,PAI中LEAVE TO SCREEN XXXX后的语句,系统将不会执行到。

在ABAP中,CALL TRANSACTION和SUBMIT report_name AND RETURN语句,也都是在调用栈上添加一层调用,与CALL SCREEN有点类似。而LEAVE TO TRANSACTION以及SUBMIT report_name则是在调用栈当前层次的一个跳转,与LEAVE TO SCREEN类似。

有时点击退出按钮('BACK' 、 'EXIT' 、 'CANC')没有反应,这里需要在定义按钮时设置成‘E’类型,并在API退出的module后面添加 at exit-command,这样就会被优先执行。

OOALV中退出按钮异常的解决方法:
游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

teyun2222
學習了,感謝分享!!
回复 支持 反对

使用道具 举报

ratg0626
学习了  感谢分享
回复 支持 反对

使用道具 举报

fayne
进来学习下!
回复 支持 反对

使用道具 举报

glb1197531
惺惺惜惺惺
回复 支持 反对

使用道具 举报

qshiou
学习学习学习,楼主棒棒哒
回复 支持 反对

使用道具 举报

sunfeng09
原理介绍的很详细
回复 支持 反对

使用道具 举报

feijibin
学习了,O(∩_∩)O谢谢
回复 支持 反对

使用道具 举报

hqby2006
研究的比较透彻,了解一下
回复 支持 反对

使用道具 举报

mckz8888
谢谢分享 学习 学习
回复 支持 反对

使用道具 举报

晓月之影
不错,学习了
回复 支持 反对

使用道具 举报

Jacky
學習了,感謝分享!!
回复 支持 反对

使用道具 举报

sunxl
支持楼主,支持SAP顾问圈,以后经常来!
回复 支持 反对

使用道具 举报

cwyhhbx
原理看的有点似懂非懂!
回复 支持 反对

使用道具 举报

bobo520
我一直想要看下屏幕流的东西
回复 支持 反对

使用道具 举报

zzxbat007

RE: 屏幕编程SCREEN SEQUENCE-屏幕序列实战分析

回复看答案
SAP Business One 凭借单一系统 优化你的整个业务  www.iwilley.com
回复

使用道具 举报

dingdangsh

RE: 屏幕编程SCREEN SEQUENCE-屏幕序列实战分析

使用free釋放
回复

使用道具 举报

Jacky

RE: 屏幕编程SCREEN SEQUENCE-屏幕序列实战分析

。。。。。。。。
回复

使用道具 举报

JYL

RE: 屏幕编程SCREEN SEQUENCE-屏幕序列实战分析

非常好的分享,谢谢,学习一下!
回复 支持 反对

使用道具 举报

yigerendelu

RE: 屏幕编程SCREEN SEQUENCE-屏幕序列实战分析

谢谢 大神分享!
回复

使用道具 举报

12下一页

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表