# Sent: Monday, September 23, 2013 10:59 AM
像下图里的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性能更好,但需要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。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24475491/viewspace-2679519/ ,如需转载,请注明出处,否则将追究法律责任。