ABAP開發基礎知識:10)數據流控制


    在SAP業務處理中,存在許許多多數據流,分別管控着不同的業務模式。下面介紹如何通過ABAP語法來實現數據流程管控。

    1)使用IF語句實現分支

      [Syntax]
      IF <condition1>.
          <statement block>.
      ELSEIF <condition2>.
          <statement block>.
      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.
      ELSE.
         WRITE: / 'The value of xx is',7.
      ENDIF.

    2)使用CASE...WHEN...ENDCASE語句實現分支

      [Syntax]
      CASE <f>.
        WHEN <f1>.
           <statement block>.
        WHEN <f2>.
           <statement block>.
        WHEN ...
        WHEN OTHERS.
           <statement block>.
       ENDCASE.

     [For Example]
     
DATA xx TYPE N VALUE 8.
      CASE xx.
       WHEN 5.
         WRITE: / 'The value of xx is',5.
       WHEN 6.
         WRITE: / 'The value of xx is',6.
       WHEN 7.
         WRITE: / 'The value of xx is',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語句,以使系統能退出循環。

      [For Example]
      DO 5 TIMES.
        WRITE:/ 'This Index is',SY-INDEX.
      ENDDO.

      DO語句內部還可以實現多層嵌套,為了保證程序可讀性,建議嵌套最多不要超過6層。

      [For Example]
      DATA do_index TYPE N.
      DO 5 TIMES.
        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.
      ENDDO.
      執行結果如下圖:

    5)使用WHILE條件循環
      [Syntax]
      WHILE <condition> [VARY <f> FROM <f1> NEXT <f2>].
         <statement block>
      ENDWHILE.
     
循環終止CONTINUE、CHECK、EXIT

      [For Example]
      無條件終止循環(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.
      ENDWHILE.
      執行結果如下圖:



有條件終止循環(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):
DATA while_index TYPE N VALUE 0.
WHILE while_index < 5.
  while_index = while_index + 1.
  IF while_index = 3.
    EXIT.
  ENDIF.
執行結果:

     6)使用ONCHANGE實現循環內部數據管控
      當循環的數值發生變動時,可以用表達式ONCHNAGE來觸發數值變動事件。
      [For Example]
      DATA while_index TYPE N VALUE 0.
      WHILE while_index < 5.
        while_index = while_index + 1.
        DO 2 TIMES.
          ON CHANGE OF while_index.
            WRITE:/ 'The while_index has change value is',while_index.
          ENDON.
          WRITE:/ 'SY-INDEX=',SY-INDEX.
        ENDDO.
      ENDWHILE.
      執行結果如下圖:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM