文章轉自 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事件中