您的位置:首页 > 运维架构

exit、check、stop和return

2013-07-21 14:02 288 查看
文章转自 /article/2397500.html

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事件中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: