zoukankan      html  css  js  c++  java
  • ABAP/4中参数的传递

    在ABAP/4中参数的传递可分成

    1. Call By Reference:

    传参数时将资料的存放地址(address)传至参数中, 也就是子程序中的参数变量与外部实际

    变量共享地址内的值, 又称为 Call By Address, 若在子程序中地址中的值改变了, 外部实

    际变量的值也会跟着改变.

    语法:

         FORM  <subr>  [USING <f1> <f2>…] [CHANGING <f1>…]

         PERFORM  <subr>  [USING <f1> <f2>…] [CHANGING <f1>…]

         Using 之后接在子程序中不会改变的变量, CHANGING接会改变值的变量

         但实际上USING之后的参数在子程序中也可将值改变

         Example:

         SUM = 0.

         NUM1 = 100.  NUM2=200.

         PERFORM  ADD  USING  NUM1  NUM2  CHANGING  SUM.

         WRITE: / NUM1,NUM2,SUM  “ SUM 由 0 变成 300

         FORM  ADD  USING  NUM1  NUM2  CHANGING  SUM.

            SUM  =  NUM1  +  NUM2.

         ENDFORM.

         执行结果: 

                         100   200   300

    2. Call By Value

    传参数时将数据的值复制一份至另一地址中, 所以在子程序中参数变量值改变, 并不会影

    响外部实际变量的值.

         语法:

              FORM  <subr>  USING  VALUE(<f1>…)

              使用 VALUE(<f1>)表示<f1>是 Call By Value的传递

              PERFORM  <subr>  USING  <f1>  

         Example:

         SUM = 0.

         NUM1 = 5. 

         PERFORM  MULTI  USING  NUM1  CHANGING  SUM.

         WRITE: / NUM1,SUM  “NUM1值还是5,  SUM 由 0 变成 120

         FORM  MULTI  USING  VALUE(NUM1)  CHANGING  SUM.

            SUM = 1.

            WHILE  NUM1 > 1

              SUM  =  SUM * NUM1.

              NUM1 = NUM1 – 1.

            ENDWHILE..

         ENDFORM.

         执行结果: 

                         5   120 

    3. Call By Value and Return Result

    传入参数值的方式同Call By Value, 但在子程序结束执行时会将传入的参数值复制

    一份传回给外部实际变量.

      语法:

            FORM  ….. CHANGING  VALUE(<f1>)

            PERFORM  …. CHANGING …. <f1>

            Example:

                   SUM = 0.

                   NUM1 = 100.  NUM2=200.

                   PERFORM  ADD  USING  NUM1  NUM2  CHANGING  SUM.

                   WRITE: / NUM1,NUM2,SUM  “ SUM 由 0 变成 300

                   FORM  ADD  USING  NUM1  NUM2  CHANGING  VALUE(S).

                      S  =  NUM1  +  NUM2.

                      WRITE: / NUM1,NUM2,SUM  “得到结果为 100  200  0

                   ENDFORM.

         执行结果: 

                    100    200     0    “在子程序中 SUM值尚未改变

                         100   200   300    “返回程序时, 将变量 S的值复制给 SUM

                                            “所以 SUM值变成 300

  • 相关阅读:
    《架构漫谈》有感
    《掌握需求过程》阅读笔记三
    《掌握需求过程》阅读笔记二
    《掌握需求过程》阅读笔记一
    《代码阅读方法与实现》阅读笔记三
    《代码阅读方法与实现》阅读笔记二
    《代码阅读方法与实现》阅读笔记一
    《软件需求模式》阅读笔记三
    《软件需求模式》阅读笔记二
    第二阶段个人总结06
  • 原文地址:https://www.cnblogs.com/cnlmjer/p/4099847.html
Copyright © 2011-2022 走看看