exit、check、stop和return

文章转自 http://blog.csdn.net/liangziyisheng/article/details/6273722

exit的4种用法

1.用于循环

和check不一样,exit用于循环会直接结束该层循环

program:

DATA limit TYPE i VALUE 10.
DO 5 times.
DO .
IF sy-index > limit.
EXIT.
ENDIF.
WRITE / sy-index.
ENDDO.
write / '------------------------------'.
ENDDO.

2.exit在程序块中使用.

3.exit在native sal使用,这时exit只作用于subroutine,并且这种subroutine是这样调用:

EXCEC SQL PERFORMING subr.
SELECT ... INTO :wa1 :wa2 ...
ENDEXEC.

由于native sql要进行相应的数据库连接,涉及到basis工作,这里暂不讨论该用法,以后单独发博文讲解

4.exit如果用于start-of-selection和get事件,那么会立即触发list processor显示结果

 

check的3种用法

首先要说明,SAP推荐将check用于循环中

1.check 用于循环中,如果条件不成立则结束下面的操作直接进入下一次循环

program:

DO 10 TIMES.
check sy-index between 4 and 7.
write: 'the index value is: ', sy-index.
ENDDO.

result:

the index value is: 4
the index value is: 5
the index value is: 6
the index value is: 7

2.check用于块中,如果条件不成立直接结束块

program:

parameters p_local type i default -1.
start-of-selection.
perform f_getdata.
perform f_dispaly_data.
end-of-selection.
*&---------------------------------------------------------------------*
*& Form F_GETDATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form F_GETDATA .
check p_local eq 1.
write: / 'subroutine 1'.
endform. " F_GETDATA
*&---------------------------------------------------------------------*
*& Form F_DISPALY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form F_DISPALY_DATA .
write: / 'subroutine 2'.
endform. " F_DISPALY_DATA

result:

subroutine 2

3.check 用于GET事件中

program:

NODES sflight.
SELECT-OPTIONS: s_max FOR sflight-seatsmax,
s_occ FOR sflight-seatsocc.
GET sflight.
WRITE: / sflight-carrid, sflight-connid.
CHECK SELECT-OPTIONS.
WRITE: sflight-seatsmax, sflight-seatsocc

 

stop和return

stop只能用于可执行程序的某些event blocks中:

at selection-screen

start-of-selection

get

在这些块种执行stop会触发end-of-selection事件

return应用相对广泛,他用于各种block中,包括:

procedure

methods(class methods), function programs(function module), subprograms(subroutine)

dialog program(module in screen logic flow)

event block(当然要是用在start-of-selection事件中那么它会立即出发list processor输出结果)

这里也总结一下吧,处理块中总共有这些控制程序的命令:Check, Return, Exit, Reject, Stop

当我们在Loop外面要终止处理块的时候可以用Exit,当我们是在Loop里面要终止处理块的时候可以用Return,当我们是在一定条件下终止程序的时候可以用Check

要注意,Reject只推荐用在GET事件中,Stop也只推荐用在AT SELECTION-SCREE START-OF-SELECTION GET事件中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值