• 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.
          执行结果如下图:

  • 相关阅读:
    20155318Java课堂实践20170510
    2017-2018-1 20155220 20155309 20155317 实验一 开发环境的熟悉
    2017-2018 20155309南皓芯 信息安全系统基础设计第五周博客
    2017-2018 20155309南皓芯 信息安全系统基础设计第四周博客
    20155309 南皓芯 信息安全系统基础设计第三周博客
    关于利用GPG加解密的实验
    20155309南皓芯第二周课堂实践
    2017-2018 20155309南皓芯 信息安全系统基础设计第一周博客
    20155309 2016-2017-2《Java程序设计》课程总结
    20155309实验五 网络编程与安全
  • 原文地址:https://www.cnblogs.com/foxting/p/2437682.html
Copyright © 2020-2023  润新知