在SAP ABAP開發中經常會使用到CHECK、STOP、EXIT、continue、return、reject,這些語句的作用、用法以及相互的區別是什么呢,現在簡單匯總如下:
1, stop
使用該命令的程序位置
INITIALIZATION, AT SELECTION-SCREEN, START-OF-SELECTION和GET 事件中
處理說明:
1)當在INITIALIZATION事件執行該命令,系統將直接觸發應用服務器和客戶端屏幕元素的發送;
2)在其他事件中將直接觸發END-OF-SELECTION事件的執行,如果不想執行END-OF-SELECTION,請使用RETURN或者 EXIT.
2, exit
使用該命令的程序位置
用於循環和程序模塊中:DO和其他處理模塊中(event block, dialog module, procedure (function module, method, subroutine))…ENDDO,WHILE…ENDWHILE,LOOP…ENDLOOP,SELECT…ENDSELECT
處理說明
1、 循環處理中,EXIT只跳出當前的循環;
2、 在START-OF-SELECTION, GET, END-OF-SELECTION事件中,將直接觸發List輸出,將不執行END-OF-SELECTION事件;如果沒有List輸出,系統將直接返回選擇屏幕;
3、 對於procedure系統返回調用處;
注意事項
SAP推薦EXIT只是用於循環處理,對於處理模塊請使用Return。
3, return
使用該命令的程序位置
用於處理模塊中(event block, dialog module, procedure (function module, method, subroutine))
處理說明
1、 對於procedure ,RETURN將無條件退出當前的處理模塊,不影響后續模塊的執行;
2、 對於START-OF-SELECTION, GET, END-OF-SELECTION事件中,將直接觸發List輸出,將不執行END-OF-SELECTION事件;如果沒有List輸出,系統將直接返回選擇屏幕;
注意事項
RETURN不管存在多少層次的循環,將直接退出當前處理模塊,這一點和EXIT不同。
4, check
使用該命令的程序位置
用於循環和程序模塊中:DO和其他處理模塊中(event block, dialog module, procedure (function module, method, subroutine))…ENDDO,WHILE…ENDWHILE,LOOP…ENDLOOP,SELECT…ENDSELECT
處理說明
1、 循環處理中,CHECK只是不執行本次循環的后續處理,繼續調到下一次循環;
2、 在START-OF-SELECTION, GET, END-OF-SELECTION事件中,只是中斷本事件內的后續代碼的執行 ,不影響其他后續模塊的處理,這和EXIT,RETURN是不同的;
3、 對於沒有循環procedure系統返回調用處;
4、 對邏輯數據庫的GET事件,系統退出本次紀錄和子節點的讀取處理,將繼續下一條紀錄的處理;
注意事項
Sap推薦CHECK只是用於循環處理,對於處理模塊請使用Return。
區別:在LOOP 中 check 只是不執行本次循環的后續處理,繼續調到下一次循環;
EXIT只跳出當前的循環繼續執行loop外的語句。
return 跳出form了
在form 中 三種效果一樣都跳到下個PERFORM frm_test
在事件中 CHECK 在START-OF-SELECTION, GET, END-OF-SELECTION事件中,只是中斷本事件內的后續代碼的執行 ,不影響其他后續模塊的處理
在事件中, exit,return 在START-OF-SELECTION, GET, END-OF-SELECTION事件中,將直接觸發List輸出,將不執行END-OF-SELECTION事件;如果沒有List輸出,系統將直接返回選擇屏幕。
5, continue
使用在loop,do,while等循環語句中,含義是結束當前循環,進入到下一次循環。
也可以用check來代替,符合check條件,接着執行本次循環,不符合check的,結束當前循環進入到下次循環。
6, reject
使用該命令的程序位置
用於邏輯數據庫的GET處理事件中
處理說明
REJECT的處理類似CHECK,但和CHECK不同的是:REJECT如果在循環內也同樣退出本次的處理,而CHECK只是退出循環,不退出處理。
以上。