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事件中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章