form 传参传值

 
对于 FORM 语句中 USING CHANGING 面列表中的 每个形式参 数,可以指 定不同数据 传递方式:
   通过参考 值调用: 子程序调用 期间,仅将 实参数的地 址传送给形 式参数。形 式参数本身 没有内存。 在子程序中 使用调用程 序的字段。 更改形式参 数之后,调 用程序中的 字段内容也 会变动。
通过参考值传递
   通过值调 用: 在子程 序调用期间 ,形式参数 是作为实参 数的副本创 建的。形式 参数有自己 的内存。更 改形式参数 并不影响实 参数。
通过值传递
   通过值和 结果调用: 在子程序调 用期间,形 式参数是作 为实参数的 副本创建的 。形式参数 有自己的内 存空间。在 子程序末尾 ,将对形式 参数的更改 复制给实参 数。
通过值和结果进行传递
TABLES 传递的内表 均通过参考 值调用。
例子:
report SAPMZTST. DATA: NUM1 TYPE I,       NUM2 TYPE I,       SUM  TYPE I,       product type i. NUM1 = 2. NUM2 = 4. sum = 0 .product = 0.
PERFORM compute USING NUM1 NUM2 CHANGING SUM product.
WRITE: / '外部sum is', sum, /. WRITE: / '外部 pro is',product, /.
*NUM1 = 2. NUM2 = 4. sum = 0 .product = 0. *PERFORM compute USING NUM1 NUM2  SUM product. *WRITE: / '外部sum is', sum, /. *WRITE: / '外部 pro is', product, /. *NUM1 = 2. NUM2 = 4. sum = 0 .product = 0. *WRITE: / '调用前is', sum, /. *PERFORM compute changing  NUM1 NUM2  SUM product. *WRITE: / '外部sum is', sum, /. *WRITE: / '外部 pro is', product, /.
FORM compute USING ADD_NUM1 ADD_NUM2  value(ADD_SUM) changing value(pro).    ADD_SUM = ADD_NUM1 + ADD_NUM2.    pro =  ADD_NUM1 * ADD_NUM2. write : num1 , '+ ',num2. WRITE: / '内部sum is', sum, /. write : num1 , '* ',num2. WRITE: / '内部 pro is', product, /. ENDFORM.
总结:
1.无论对于using 还是 changing 对于传参数来说都是一样的,就是运行时候无论是usings还是changing 都是会改变原始值
2.对于value这种
定义forms时候 using value()是说明 确保输入 参数在调用 程序中保持 不变(即使 子程序中已 被更改), 可以通过值 将数据传递 给子程序
定义forms时候 CHANGING value()仅希望 在子程序运 行成功之后 ,才将更改 过的输出参 数从子程序 返回给调用 程序,请使 FORM PERFORM 语句 
3.在perform时候运用using和changing 和form定义得可以不同。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值