ABAP-RETURN,STOP,BREAK,CONTIE
HELLO ,这里是百里,一个学习中的ABAPER.
今天想讲一下return ,stop ,breadk contie 的使用方式. 这个东西涉及不多但是还是分享下 .
RETURN
RETURN用来退出当前执行的程序块,例如一个FORM、METHOD、报表事件块,不管是否出现在循环(LOOP)中,RETURN都会退出当前执行的程序块,而不仅仅是退出循环(如果是在Form、METHOD中,只会退出Form、METHOD,不会退出Form、METHOD被调用所在的报表事件块,即退Form、METHOD后继续向被调用点后面执行)
STOP
INITIALIZATION中的STOP会导致跳转到AT SELECTION-SCREEN OUTPUT事件块;
如果STOP在AT SELECTION-SCREEN OUTPUT块里,则只是退出当前块(STOP后面语句不执行而已),仅接着是显示选择屏幕;
AT SELECTION-SCREEN [ON]…选择屏幕事件块中的STOP也只是退出当前事件块,继续后面的事件块;
另外,即使STOP在循环中,还是在FORM,METHOD,也是直接从被调用的点退出所在事件块,而不仅仅只退出当前循环、FORM、METHOD,这与直接在事件块中的效果是一样的;
EXIT
INITIALIZATION中的EXIT会导致跳转到AT SELECTION-SCREEN OUTPUT事件块;
如果EXIT在AT SELECTION-SCREEN OUTPUT块里,则只是退出当前块(EXIT后面语句不执行而已),仅接着是显示选择屏幕;
AT SELECTION-SCREEN [ON]…选择屏幕事件块中的EXIT也只是退出当前事件块,继续后面的事件块;
从START-OF-SELECTION开始往后的事件块,如果出现EXIT,则会开始listprocessor(列表处理),并跳转到相应的List输出界面(前提条件是要在退出前已经向屏幕输出内容了,否则也不会跳转);注:END-OF-SELECTION事件块也会被跳过
另外,如果EXIT在循环(DO、WHILE、LOOP)里,只是跳出当前循环而已;
如果是在FORM,METHOD中,而非循环中,则退出当前的FORM、METHOD,其作用与RETURN类似
CHECK
CHECK跳转的前提是<expr>为假时。
CHECK只是跳出当前事件块,继续下一个事件块的处理,相当于方法的return;
另外,如果CHECK在循环(DO、WHILE、LOOP)里,只是跳出当前循环而已;
如果CHECK出现在循环以外,退出的是当前执行的程序块(processing block),例如一个FORM,METHOD,或EVENT。
代码:
Report YH_SEP_15.
DO 5 TIMES.
CHECK SY-INDEX BETWEEN 3 AND 4.
Write / SY-INDEX.
ENDDO.
结果
3
4
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} }
- 点赞
- 收藏
- 关注作者
评论(0)