Stop 指令
使用該指令的程式位置
INITIALIZATION, AT SELECTION-SCREEN, START-OF-SELECTION和GET 事件中
處理說明
1、 當在INITIALIZATION事件執行該指令,系統将直接觸發應用伺服器和用戶端螢幕元素的發送;
2、 在其他事件中将直接觸發END-OF-SELECTION事件的執行,如果不想執行END-OF-SELECTION,請使用RETURN或者 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。
OF-SELECTION.
return.
'start of selection'.
OF-SELECTION.
'end of selection'.
*& Form frm_test
* text
{FORM frm_test.
5 IF sy-2.
不管存在多少層次的循環,将不直接退出目前處理子產品,循環進行中,EXIT隻跳出目前的循環執行DO 以外'END'.)
'IF STATEMENT'.
WRITE: index.
WRITE / ENDFORM.
結果:
DO 1
END
}
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不同
{
OF-SELECTION.
return.
'start of selection'.
OF-SELECTION.
'end of selection'.
*& Form frm_test
* text
FORM frm_test.
5 IF sy-2.
.(不管存在多少層次的循環,将直接退出目前處理子產品,這一點和EXIT不同)
'IF STATEMENT'.
WRITE: index.
WRITE / ENDFORM.
結果:
DO 1
}
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。
Constants ss 'x'.
START-PERFORM frm_test.
WRITE / END-WRITE / *&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
DO TIMES.
'x'.(CHECK隻是不執行本次循環的後續處理,繼續調到下一次循環)
index = WRITE ENDIF.
'DO', sy-ENDDO.
'END'.
結果 END
Constants ss 'x'.
START-PERFORM frm_test.
WRITE / END-WRITE / *&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
DO TIMES.
index = WRITE ENDIF.
'DO', sy-ENDDO.
CHECK(exit return) SS <> 'x'.(三種效果一樣都跳到下個PERFORM frm_test)
'END'.
差別:在LOOP 中 check 隻是不執行本次循環的後續處理,繼續調到下一次循環;
EXIT隻跳出目前的循環繼續執行loop外的語句。
return 跳出怎麼form了
在form 中 三種效果一樣都跳到下個PERFORM frm_test
在事件中 CHECK 在START-OF-SELECTION, GET, END-OF-SELECTION事件中,隻是中斷本事件内的後續代碼的執行 ,不影響其他後續子產品的處理
START- CHECK SS <> WRITE / END-WRITE /
結果: end of selection
在事件中 exit return 在START-OF-SELECTION, GET, END-OF-SELECTION事件中,将直接觸發List輸出,将不執行END-OF-SELECTION事件;如果沒有List輸出,系統将直接傳回選擇螢幕;
REJECT指令
使用該指令的程式位置
用于邏輯資料庫的GET處理事件中
處理說明
REJECT的處理類似CHECK,但和CHECK不同的是:REJECT如果在循環内也同樣退出本次的處理,而CHECK隻是退出循環,不退出處理。