ABAP方法的exporting类型参数,需要在方法实现最开始显式初始化么

简介:

Sent: Monday, September 23, 2013 10:59 AM

Subject: code review遗留问题: is it necessary to explicitly initialize the exporting parameter within implementation itself

像下图里的exporting parameter需要在method 实现最开始时显式CLEAR么?

答案是it depends.

pass by value checkbox默认未选中,即pass by reference,此时实参的reference直接传到method 实现里,修改method里的形参即直接修改了实参。

如果是pass by value,在runtime进入method执行时,abap runtime自动为输入和输出形参创建local object,然后把输入实参的value copy到local object里,method里的计算都存储在输出形参的local object里,method执行结束后再把local object的值copy到输出实参。

在pass by reference的情况下,exporting参数在进入函数内时不会自动被初始化,而仍然为传入时实参的值,因此需要developer 自己负责去初始化,否则可能会出现unexpepected的behavior。

什么时候用pass by reference,什么时候用pass by value?
Pass by reference性能更好,但需要developer自己在实现里初始化exporting parameter
如果期望输出参数仅当method 成功执行之后才返回给caller,用pass by value
如果参数是一个很复杂的structure,比如nested table,或者按照abap help里面的建议值—超过100bytes后最好用pass by reference。

二者更详细的区别参考abap help。

Extended check会自动把所有违反规则的code 列出来,比如CL_CRM_SOC_FND_ACCESS_IMPL 有17处:


这些issue被categorize成programming guideline violation,不会算作ATC error。

本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。

相关文章
|
6月前
|
数据库
关于 SAP ABAP Enqueue Function Module 的输入参数 _wait
关于 SAP ABAP Enqueue Function Module 的输入参数 _wait
32 0
|
3月前
答网友疑问:ABAP Function Module 如何支持内表结构不确定的动态输入参数试读版
答网友疑问:ABAP Function Module 如何支持内表结构不确定的动态输入参数试读版
12 0
|
3月前
127. 答网友疑问:ABAP Function Module 如何支持内表结构不确定的动态输入参数
127. 答网友疑问:ABAP Function Module 如何支持内表结构不确定的动态输入参数
18 0
|
3月前
|
缓存
SAP ABAP 系统里的事务码 SMICM keep Alive 参数的作用
SAP ABAP 系统里的事务码 SMICM keep Alive 参数的作用
18 1
|
3月前
|
供应链 监控 网络安全
SAP ABAP 系统里的事务码 SMICM keep Alive 参数的含义和配置
SAP ABAP 系统里的事务码 SMICM keep Alive 参数的含义和配置
29 0
|
7月前
|
网络协议 Windows
使用 Excel cdata addmin 连接 SAP ABAP 系统时需要填写的参数定义解释
使用 Excel cdata addmin 连接 SAP ABAP 系统时需要填写的参数定义解释
51 0
|
7月前
|
存储 JSON 搜索推荐
ABAP 报表中如何给报表的输入参数增添 F4 Value Help 试读版
ABAP 报表中如何给报表的输入参数增添 F4 Value Help 试读版
54 0
|
7月前
|
API 网络安全
关于 SAP ABAP CL_HTTP_CLIENT API 中的 SSL_ID 参数
ABAP HTTP API:CL_HTTP_CLIENT, create_by_url 有一个输入参数 SSL_ID, 类型为 SSFAPPLSSL, 这个参数应该传什么值进去呢?
55 0
|
存储
ABAP方法的exporting类型参数,需要在方法实现最开始显式初始化么
ABAP方法的exporting类型参数,需要在方法实现最开始显式初始化么
181 0
ABAP方法的exporting类型参数,需要在方法实现最开始显式初始化么
各种ABAP调用的性能比较,附详细参数
各种ABAP调用的性能比较,附详细参数
各种ABAP调用的性能比较,附详细参数