本教程前一篇文章,我们已经介绍了 ABAP 方法调用里,参数传递 Pass Value 这个 checkbox 勾上与否的行为差异。简单复习一下,勾上 Pass Value 说明开发人员期望调用函数时传递参数值采取值拷贝
的方式进行;如果不勾上,将输入参数的引用传递到函数内定义的形式参数。
我们指定参数时,系统开发工具的默认行为是不勾上 Pass Value
.
- 87. SAP ABAP 方法调用里传值(Pass Value)和传引用(Pass Reference)的区别
教程末尾我们提出了一个问题:
比如我调用一个函数计算 3+2 的和,能否在函数体内,当加法计算完毕后,把传递进来的第一个参数,从 3 改成其他值呢?
答案是看具体情况而定。
本文我们就来详细探讨这个问题。
总结
本文介绍的关键点:
(1) ABAP 方法传递默认采用 Pass by Reference 即引用传递。
(2) 对于 ABAP 类的方法调用和 ABAP Function Module 调用,输入参数即使采用引用传递,也无法在方法和函数实现体内对输入参数的值进行修改。
(3) ABAP subroutine 通过 USING 关键字指定的参数,也是通过引用传递传值,但是可以在 subroutine 实现体内被修改。如果想避免这种情况发生,可以采用 VALUE 关键字来修饰该参数。