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/4中参数的传递可分成  1. Call By Reference:  传参数时将资料的存放地址(address)传至参数中, 也就是子程序中的参数变量与外部实际变量共享地址内的值, 又...
  • yandong_song
  • yandong_song
  • 2012年07月16日 15:58
  • 5951

ABAP中 PERFORM USING与CHANGING的用法

ABAP中FORM参数的传递有以下几种方式。   1.引用传递(CALL BY REFERENCE)   传递参数时将参数的地址(ADDRESS)传至子程序中,也就是子程序中的参数变量与外部程序的...
  • Victor9279
  • Victor9279
  • 2016年08月25日 09:27
  • 2255

abap的子程序参数 USING 和 CHANGING 使用问题

1、参数引用传递(Parameters Passed byReference) 使用USING或CHANGING不带value关键字来声明参数引用传递。代码样例: FORM subrUSING  ...
  • zhongguomao
  • zhongguomao
  • 2013年05月17日 11:23
  • 936

ABAP function exporting importing

进入FUNCTION MODULE BUILDER的事务代码SE37在FUNCTION MODULE BUILDER创建窗口中选择菜单“转到->函数组->创建组”创建FUNCTION GROUPFUN...
  • yuqinying112
  • yuqinying112
  • 2012年05月14日 17:09
  • 7011

OOABAP开发基础语法整理

OOABAP开发基础语法整理 整理人:侯志宇 日期:2009-5-13   在类中,只能用TYPE 附加关键字指定数据类型。 •TYPES: 一般的类型定义方法 •CONSTANTS: 一般...
  • SAPHOME
  • SAPHOME
  • 2011年11月10日 17:00
  • 1551

ABAP Function中Export和Import参数和程序中是相反的

1、很多人困惑function中的export和import参数和程序里的为什么相反,至于为什么我也搞不明白,但是我就知道这么干 ①:函数里 IMPORT:importing parameters...
  • Jay_1989
  • Jay_1989
  • 2016年07月28日 14:47
  • 848

ABAP: Excel - Download by OLE - 2. Dialog screen选择保存路径

对屏幕上的input filed设置F4 help的两种方法: ALV & Dynpro
  • syosinnsya
  • syosinnsya
  • 2017年10月17日 10:37
  • 65

abap开发之ole(附代码)

1.上传本地模版 webrfc应用程序的二进制数据==》F8查找==》 包:&tmp(本地包,测试用) 对象名称:ole创建的程序名称 目标描述:任意 ==》F5创建==》对象名称:要创建的模版名称...
  • Real_feeling5
  • Real_feeling5
  • 2015年10月16日 00:08
  • 554

[iOS开发]使用GCD遇到的问题

最近在使用GCD遇到这样的问题,刚开始不是很明白,不能使用后台线程来修改autolayout引擎?后来查了一下问题,在iOS9 - This application is modifying the ...
  • shawjan
  • shawjan
  • 2015年11月19日 17:28
  • 3287

ABAP类调用的一些注意点

SAP ABAP类的设计与其它语言有很大的差异。主要是为了兼容面向过程的语言。SAP ABAP中没有包可见性这个属性,换句话说就是SAP ABAP中所有的东西都必须定义在PUBLIC、PRIVATE ...
  • po908
  • po908
  • 2014年06月10日 09:29
  • 1122
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ABAP using 和 changing 的使用方法 .
举报原因:
原因补充:

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