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 submit 的使用方法 不同情况

1、最普通的用法 *Code used to execute a report SUBMIT Zreport. 2、带select-options程序的Submit的用法 *C...
  • zeewjj
  • zeewjj
  • 2013年11月19日 18:23
  • 5673

ABAP增强开发:更新物料主数据毛重,净重,单位的BAPI使用方法(经典)

业务背景:需要从OA将物料的毛重,净重,单位这3项更新到SAP物料主数据中。 用到了BAPI_MATERIAL_SAVEDATA这个BAPI来做(前提是该BAPI中要有EXTENSIONIN这个参数...

abap submit 的使用方法 不同情况

1、最普通的用法 *Code used to execute a report SUBMIT Zreport. 2、带select-options程序的Submit的用法 *C...

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),在单据的概览中 ,有一个[文本]项,在此处可以填写单据的大段文本描述,那么该内容保存在哪里呢? 第一反应是找对...

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

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

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

在SAP系统中,有时候会有大段文本内容需要保存,例如:销售发货(VL03N),在单据的概览中,有一个[文本]项,在此处可以填写单据的大段文本描述,那么该内容保存在哪里呢?第一反应是找对应表的字段,那么...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ABAP using 和 changing 的使用方法 .
举报原因:
原因补充:

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