SAP(ABAP):STOP,EXIT,CHECK,RETURN,REJECT,CONTINUE

Stop 命令
使用该命令的程序位置
INITIALIZATION, AT SELECTION-SCREEN, START-OF-SELECTION和GET 事件中
处理说明
1、 当在INITIALIZATION事件执行该命令,系统将直接触发应用服务器和客户端屏幕元素的发送;影响后续模块执行。
2、在其他事件中将直接触发END-OF-SELECTION事件的执行,如果不想执行END-OF-SELECTION,请使用.
注意事项


 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不同


EXIT命令
使用该命令的程序位置
用于循环和程序模块中:...ENDDO,...ENDWHILE,...ENDLOOP,...ENDSELECT
处理说明
1、 循环处理中,EXIT只跳出当前的循环;
2、 在START-OF-SELECTION, GET, END-OF-SELECTION事件中,将直接触发List输出,将不执行END-OF-SELECTION事件;如果没有List输出,系统将直接返回选择屏幕;
3、 对于procedure系统返回调用处;
注意事项
Sap推荐EXIT只是用于循环处理,对于处理模块请使用Return。

この命令が実行されるとループが強制終了され、ループ構造の終わりを表す命令 (ENDDOENDWHILEENDLOOPENDSELECT) の後ろから処理が再開されます。ネストしたループの中では、現在のループのみが強制終了されます。

DO 4 TIMES.
  IF sy-index = 3.
    EXIT.
  ENDIF.
  WRITE sy-index.
ENDDO.

一覧出力は以下のとおりです。

         1          2

3 番目のループパスにおいて、WRITE 命令が処理される前にループは強制終了されます。

CHECK命令
使用该命令的程序位置
用于循环和程序模块中:...ENDDO,...ENDWHILE,...ENDLOOP,...ENDSELECT
处理说明
1、 循环处理中,CHECK只是不执行本次循环的后续处理,继续调到下一次循环;
2、 在START-OF-SELECTION, GET, END-OF-SELECTION事件中,只是中断本事件内的后续代码的执行,不影响其他后续模块的处理,这和EXIT,RETURN是不同的;
3、 对于没有循环procedure系统返回调用处;
4、 对逻辑数据库的GET事件,系统退出本次纪录和子节点的读取处理,将继续下一条纪录的处理;
注意事项
Sap推荐CHECK只是用于循环处理,对于处理模块请使用Return。

条件が真である場合には、現在の命令ブロックの中で CHECK 命令の後ろに命令が残っているとしても無視され、次のループパスが開始されます。condition として任意の論理式を使用することができます。

DO 4 TIMES.
  CHECK sy-index BETWEEN 2 and 3.
  WRITE sy-index.
ENDDO. 

一覧出力は以下のとおりです。

         2          3

1 回目と 4 回目のループパスは強制終了され WRITE 命令は処理されません。なぜなら sy-index が 2 と 3 の間にないからです。


REJECT命令
使用该命令的程序位置
用于逻辑数据库的GET处理事件中
处理说明
REJECT的处理类似CHECK,但和CHECK不同的是:REJECT如果在循环内也同样退出本次的处理,而CHECK只是退出循环,不退出处理

CONTINUE命令

現在の命令ブロックの中でこの命令の後ろに命令が残っているとしても無視され、次のループパスが開始されます。

DO 4 TIMES.
  IF sy-index = 2.
    CONTINUE.
  ENDIF.
  WRITE sy-index.
ENDDO.

一覧出力は以下のとおりです。

         1          3          4

2 番目のループパスは強制終了され、WRITE 命令は処理されません。

猜你喜欢

转载自www.cnblogs.com/yjyongil/p/10494209.html