ABAP 引用传递和值传递

概念

值传递

        方法调用时,实际参数的值传递到方法中的形式参数下,方法接收的是原始值的copy。

引用传递

        方法调用时,实际参数的引用被传递给方法中对应的形式参数,此时在方法内对该参数的修改会更改会体现在实际参数上。

        在java 中方法有传入参数和返回参数,而在abap中参数分为了传入参数,传出参数,更改参数以及返回参数这种更好理解的参数类型,那么这里引用传递和值传递结合这些类型的参数就会产生一种理解上的偏差。

示例

引用传递时

        以FORM ,using参数,chaing参数,起到的均为为chaging参数的效果

        示例如下:

        结果:

        以FUNCTION/METHOD为例

        由于语法不允许在函数/方法中对import进行更改,所以此时EXPORTING参数和CHANGING 参数起到同样的效果(因此函数中在使用EXPORTING参数时注意清空变量,特别是表类型)。RETURN 参数为返回参数,只可值传递。

         示例如下:

        结果:

值传递

        由于结果为原数据的copy,所以不会改变原数据,依托于参数类型的理解,不再特殊举例.

引用传递/值传递实际效果

如下function中对参数进行了更改,切换到上一层调用,对用参数对应发生了更改,而值传递时,更改在函数执行结束后才会赋值回去。

引用传递
引用传递
值传递
值传递

效率问题

F1帮助如下:

实测:

引用传递
值传递

传递了50万条T001数据进行测试,仅仅截取一次记录,整体看来影响不大。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值