zoukankan      html  css  js  c++  java
  • [SAP ABAP开发技术总结]屏幕跳转

    12.18.             屏幕跳转

    LEAVE SCREEN.

    or

    LEAVE TO SCREEN <next screen>.

    LEAVE SCREEN语句会结束当前屏幕并调用下一屏幕,next scree可以是static next screen,或者是dynamic next screen,如果是动态的,你必须在使用LEAVE SCREEN语句前使用SET SCREEN语句来重写static next screen

    LEAVE TO SCREEN语句会结束当前屏幕并跳转到指定的下一屏幕<next screen>,其作用等效于下面两条语句:

    SET SCREEN <next screen>.

    LEAVE SCREEN.

    这两个语句不会结束屏幕序列,它们仅仅是转向同一屏幕序列中的另一屏幕。屏幕序列是否结束要看<next screen>是否为0或者屏幕的next screen属性是否设置为0

    可以用LEAVE TO SCREEN 0来结束当前SCREEN SEQUENCE

    12.18.1.      CALL SCREEN误用

    每次碰到CALL SCREEN语句就会产生新的SCREEN SEQUENCE,而且SAP系统设置了SCREEN SEQUENCE堆栈不能超过50,一旦超过就会出溢出错误,所以不要使用 CALL SCREEN 进行屏幕的切换

    image128

    为了避免产生新的SCREEN SEQUENCE,针对上图,可以使用LEAVE...SCREEN进行屏幕切换,而不是CALL SCREEN

    SET SCREEN 110."该语句只是动态制定下一个屏幕,但不结束当前屏幕处理(即不立即跳转下一屏幕),只有LEAVE SCREEN才会结束屏幕的处理(后面的语句才不会执行)
    LEAVE SCREEN.

    或者使用:LEAVE TO SCREEN 110.相当于上面两包的组合:SET SCREEN 110.  LEAVE SCREEN.

    使用SET SCREEN XXX / LEAVE SCREENLEAVE TO SCREEN XXX来在同一屏幕序列里动态的进行屏幕切换跳转,而不要使用CALL SCREEN XXX进行屏幕序列的跳转与切换

    12.18.2.      CALL SCREEN/SET SCREEN/LEAVE TO SCREEN区别

    CALL SCREEN XXXX将在Screen调用栈(CALL STACK)上面添加一层调用(进栈,即重新开启一个新的屏幕序列),调用XXXXPBOPAI,如果XXXXNext Screen不为0,那么将继续其Next ScreenPBOPAI,如此继续~~~当最后碰到Next Screen0时,该层调用将从调用栈中退出(出栈),然后系统将继续执行CALL SCREEN XXXX之后的语句。

    SET SCREEN XXXX设置调用栈当前层次的Next ScreenXXXX,它并不影响调用栈的层数(即不会重新开启一个新的屏幕序列只做屏幕之间的切换,而不是屏幕序列之间的切换),除非XXXX0,那将导致调用栈退掉一层(出栈)。要注意的是,PAISET SCREEN XXXX后的语句,系统将照样执行,只有执行完毕该PAI整个逻辑后,才考虑Next ScreenPBOPAI

    LEAVE TO SCREEN XXXSET SCREEN XXX比较类似(也不会重新开启一个新的屏幕序列,只做屏幕之间的切换,而不是屏幕序列之间的切换),所不同的是,LEAVE TO SCREEN XXXX强行中断当前SCREENPAI,直接执行XXXXPBOPAI。换言之,PAILEAVE TO SCREEN XXXX后面的语句,系统将不会执行到

    LEAVE SCREEN.后面的语句也不会执行

    注:上面语句的XXX也可以是选择屏幕的屏幕号,而不只是对话屏幕号

    CALL SCREEN是将正在运行的画面挂起,进入所调用的画面,当使用LEAVE TO SCREEN 0时,能够返回原主调画面,可理解为嵌套调用;而LEAVE TO SCREEN是立即结束本画面的执行,调用所指定的画面,在调用画面中,无法再返回原主调画面。

  • 相关阅读:
    对《分享一下自己用c++写的小地图》一文的补充
    大神的Blog挂了,从Bing快照里复制过来的备份
    如何创建独立的UE4服务端
    打包如何打包额外文件,比如Sqlite数据库的db文件
    关于如何通过定义自己的CameraManager来控制视角
    Slate中绑定动态数据
    分享一下自己用c++写的小地图
    2016.8看到的一些有用的文章
    如何在插件中添加Actor类
    如何使用的Ue4自带的SQLiteSupport
  • 原文地址:https://www.cnblogs.com/jiangzhengjun/p/4265431.html
Copyright © 2011-2022 走看看