[SAP ABAP開發技術總結]RETURN、STOP、EXIT、CHECK、LEAVE、REJECT


 

12.21.1.      RETURN

RETURN用來退出當前執行的程序塊,例如一個FORMMETHOD報表事件塊,不管是否出現在循環(LOOP)中,RETURN都會退出當前執行的程序塊,而不僅僅是退出循環(如果是在FormMETHOD中,只會退出FormMETHOD,不會退出FormMETHOD被調用所在的報表事件塊,即退FormMETHOD后繼續向被調用點后面執行)

12.21.2.      STOP

l  INITIALIZATION中的STOP會導致跳轉到AT SELECTION-SCREEN OUTPUT事件塊;

l  如果STOPAT SELECTION-SCREEN OUTPUT塊里,則只是退出當前塊(STOP后面語句不執行而已),僅接着是顯示選擇屏幕;

l  AT SELECTION-SCREEN [ON]…選擇屏幕事件塊中的STOP也只是退出當前事件塊,繼續后面的事件塊;

l  另外,即使STOP在循環中,還是在FORMMETHOD,也是直接從被調用的點退出所在事件塊,而不僅僅只退出當前循環FORMMETHOD,這與直接在事件塊中的效果是一樣的;

12.21.3.      EXIT

l  INITIALIZATION中的EXIT會導致跳轉到AT SELECTION-SCREEN OUTPUT事件塊;

l  如果EXITAT SELECTION-SCREEN OUTPUT塊里,則只是退出當前塊(EXIT后面語句不執行而已),僅接着是顯示選擇屏幕;

l  AT SELECTION-SCREEN [ON]…選擇屏幕事件塊中的EXIT也只是退出當前事件塊,繼續后面的事件塊;

l  START-OF-SELECTION開始往后的事件塊,如果出現EXIT,則會開始listprocessor(列表處理),並跳轉到相應的List輸出界面(前提條件是要在退出前已經向屏幕輸出內容了,否則也不會跳轉);注:END-OF-SELECTION事件塊也會被跳過

l  另外,如果EXIT在循環DOWHILELOOP里,只是跳出當前循環而已

l  如果是在FORMMETHOD中,而非循環中,則退出當前的FORMMETHOD,其作用與RETURN類似

12.21.4.      CHECK

CHECK跳轉的前提是<expr>為假時。

l  CHECK只是跳出當前事件塊,繼續下一個事件塊的處理,相當於方法的return

l  另外,如果CHECK在循環DOWHILELOOP里,只是跳出當前循環而已

l  如果CHECK出現在循環以外,退出的是當前執行的程序塊(processing block),例如一個FORMMETHOD,或EVENT

12.21.5.      LEAVE

LEAVE PROGRAM. 退出整個程序

LEAVE TO TRANSACTION ta

LEAVE LIST-PROCESSING.          list processor回到dialog processor

LEAVE TO LIST-PROCESSING    控制權從dialog processor轉交給list processor

LEAVE { SCREEN | {TO SCREEN dynnr} }

12.21.5.1.           REJECT

REJECT是用在邏輯數據庫GET event blocks中,與EXITCHECK不一樣的是(EXITCHECK如果是在循環中時,只是退出循環;如果是在FORM中,則只是退出當前FORM),REJECT可以從循環或者一個FORM中直接跳出所在的GET事件塊

image130

REJECT [<dbtab>].

終結邏輯數據庫當前節點數據行的處理

如果省略選項<dbtab>, 則邏輯數據庫會自動讀取同一節點的下一行數據,即同一節點的GET事件塊會被觸發。如果使用了<dbtab>選項,則邏輯數據庫會讀取節點<dbtab>的下一行數據,此時的<dbtab>節點必須是REJECT所在當前節點的上級節點。


免責聲明!

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



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