在SAP業務進行中,存在許許多多資料流,分别管控着不同的業務模式。下面介紹如何通過ABAP文法來實作資料流程管控。
1)使用IF語句實作分支
[Syntax]
IF <condition1>.
<statement block>.
ELSEIF <condition2>.
ELSE.
<statement block>
ENDIF.
[For Example]
DATA xx TYPE N VALUE 6.
IF xx = 5.
WRITE: / 'The value of xx is',5.
ELSEIF xx = 6.
WRITE: / 'The value of xx is',6.
WRITE: / 'The value of xx is',7.
2)使用CASE...WHEN...ENDCASE語句實作分支
CASE <f>.
WHEN <f1>.
<statement block>.
WHEN <f2>.
WHEN ...
WHEN OTHERS.
ENDCASE.
[For Example]
DATA xx TYPE N VALUE 8.
CASE xx.
WHEN 5.
WHEN 6.
WHEN 7.
WHEN OTHERS.
WRITE: / 'The value of xx is',8.
ENDCASE.
3)使用LOOP...ENDLOOP語句實作循環控制
LOOP語句通常用于實作内表資料的循環讀取及操作。
[For Example]
LOOP AT itab.
WRITE:itab.
ENDLOOP.
4)使用DO語句實作内部循環次數控制。
DO 語句可以指定循環次數。
[Syntax]
DO.
[<n> TIMES]
[VARYING <f> FROM <f1> NEXT <f2>].
<statement block>
ENDDO.
注:
n:可以是數字或者變量,如果n是0或者負數,系統不執行該循環。
TIMES:循環次數。
VARYING:選項在每次循環中給變量<f>重新指派。
使用DO語句時要避免死循環,如果不使用TIMES選項,則在語句塊中至少包含一個EXIT、STOP、REJECT語句,以使系統能退出循環。
DO 5 TIMES.
WRITE:/ 'This Index is',SY-INDEX.
ENDDO.
DO語句内部還可以實作多層嵌套,為了保證程式可讀性,建議嵌套最多不要超過6層。
[For Example]
DATA do_index TYPE N.
do_index = SY-INDEX.
WRITE:/ 'This Index is',do_index.
DO 2 TIMES.
WRITE:/ 'First Index Loop is',do_index, 'The Next Index Loop is',SY-INDEX.
ENDDO.
執行結果如下圖:

5)使用WHILE條件循環
WHILE <condition> [VARY <f> FROM <f1> NEXT <f2>].
<statement block>
ENDWHILE.
循環終止CONTINUE、CHECK、EXIT
無條件終止循環(CONTINUE):
DATA while_index TYPE N VALUE 0.
WHILE while_index < 5.
while_index = while_index + 1.
IF while_index = 3.
CONTINUE.
ENDIF.
WRITE:/ 'while_index',while_index.
有條件終止循環(CHECK):
DATA while_index TYPE N VALUE 0.
WHILE while_index < 5.
while_index = while_index + 1.
CHECK while_index BETWEEN 2 AND 5.
WRITE:/ 'The while_index is',while_index.
ENDWHILE.
執行結果:
完全終止循環(EXIT):
IF while_index = 3.
EXIT.
ENDIF.
6)使用ONCHANGE實作循環内部資料管控
當循環的數值發生變動時,可以用表達式ONCHNAGE來觸發數值變動事件。
ON CHANGE OF while_index.
WRITE:/ 'The while_index has change value is',while_index.
ENDON.
WRITE:/ 'SY-INDEX=',SY-INDEX.
ENDDO.