[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是立即結束本畫面的執行,調用所指定的畫面,在調用畫面中,無法再返回原主調畫面。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM