天天看點

ABAP開發基礎知識:10)資料流控制

    在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.

      執行結果如下圖:

ABAP開發基礎知識:10)資料流控制

    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.

ABAP開發基礎知識:10)資料流控制

有條件終止循環(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.

執行結果:

ABAP開發基礎知識:10)資料流控制

完全終止循環(EXIT):

  IF while_index = 3.

    EXIT.

  ENDIF.

ABAP開發基礎知識:10)資料流控制

     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.

ABAP開發基礎知識:10)資料流控制

繼續閱讀