ABAP using 和 changing 的使用方法 .

转载 2013年12月05日 16:39:09
在ABAP/4中参数的传递可分成 
1. Call By Reference: 
传参数时将资料的存放地址(address)传至参数中, 也就是子程序中的参数变量与外部实际变量共享地址内的值, 又称为 Call By Address, 若在子程序中地址中的值改变了, 外部实际变量的值也会跟着改变. 

    语法: 
      PERFORM  <subr>  [USING <f1> <f2>…] [CHANGING <f1>…] 
      FORM  <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 
传参数时将数据的值复制一份至另一地址中, 所以在子程序中参数变量值改变, 并不会影响外部实际变量的值. 

    语法: 
      PERFORM  <subr>  USING  <f1>  
      FORM  <subr>  USING  VALUE(<f1>…) 
      使用 VALUE(<f1>)表示 <f1>是 Call By Value的传递 
      
      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, 但在子程序结束执行时会将传入的参数值复制一份传回给外部实际变量. 

    语法: 
      PERFORM  …. CHANGING …. <f1> 
      FORM  ….. CHANGING  VALUE(<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

相关文章推荐

ABAP中USING与CHANGING的用法

ABAP中FORM参数的传递有以下几种方式。   1.引用传递(CALL BY REFERENCE)   传递参数时将参数的地址(ADDRESS)传至子程序中,也就是子程序中的参数变量与外部程序的...

abap内表使用方法

  • 2008-09-24 16:02
  • 147KB
  • 下载

转载:ABAP:Function 之 Read_Text函数的使用方法

在SAP系统中,有时候会有大段文本内容需要保存,例如:销售发货(VL03N),在单据的概览中,有一个[文本]项,在此处可以填写单据的大段文本描述,那么该内容保存在哪里呢?第一反应是找对应表的字段,那么...

ABAP中正则表达式的简单使用方法

在一个论坛上面看到有人在问正则表达式的问题,特举例简单说明一下。 另外,REPLACE也支持REGEX关键字。 最后:只能是ECC6或者更高版本才可以(ABAP supports POSIX re...

ABAP日期函数(求月末日,第几周,search help 只显示年月) 使用方法实例

计算两个日期间的工作天数,就是剔除了双休日后的天数.( 待考证) DATE_CONVERT_TO_FACTORYDATE HR_HK_DIFF_BT_2_DATES 根据当前时间如何找到上月...

ABAP:Read_Text(SAVE_TEXT)函数的使用方法

在SAP系统中,有时候会有大段文本内容需要保存,例如:销售发货(VL03N),在单据的概览中,有一个[文本]项,在此处可以填写单据的大段文本描述,那么该内容保存在哪里呢? 第一反应是找对应表的字...

ABAP:Read_Text(SAVE_TEXT)函数的使用方法

在SAP系统中,有时候会有大段文本内容需要保存,例如:销售发货(VL03N),在单据的概览中 ,有一个[文本]项,在此处可以填写单据的大段文本描述,那么该内容保存在哪里呢? 第一反应是找对...

C# Using 使用方法详解

Using  这个方法之前一直以为只有引用命名空间 的作用,原来也是一个方法,前阵子公司做了了ExcelToSQL的小程序,遇到连接池溢出的问题,后来使用的using()完美解决。 (1)引用命名空...

C++ template的一些高级用法(元编码,可变参数,仿函数,using使用方法,. C++ 智能指针)

C++ template的一些高级用法(元编码,可变参数,仿函数,using使用方法,. C++ 智能指针) 1 .  通用函数可变参数模板      对于有些时候,我们无法确切的知道...

C#中关键字using的三种使用方法

Using的重要性对于c#来说,就等同于java中的关键字import。但是在c#中,using其实拥有多种功能。 1.      引用命名空间 使用方法:using namespace;...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)