Parameters 我们需要在FM开始时清除导出参数吗?

Parameters 我们需要在FM开始时清除导出参数吗?,parameters,abap,function-module,Parameters,Abap,Function Module,我发现这个代码: FUNCTION /FOO/BAR. *"---------------------------------------------------------------------- *"*"Lokale Schnittstelle: *" IMPORTING *" VALUE(IV_XYZ) TYPE STRING *" EXPORTING *" VALUE(EV_RESULT_JSON) TYPE STRING *"-----------------

我发现这个代码:

FUNCTION /FOO/BAR.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     VALUE(IV_XYZ) TYPE  STRING
*"  EXPORTING
*"     VALUE(EV_RESULT_JSON) TYPE  STRING
*"----------------------------------------------------------------------



*-- Initialization
  clear ev_result_json.

是否需要清除ev\U结果\u json?

,因为它们将在您退出FM后被清除

对不起,我没有正确阅读。答案仍然是否定的。因为输入FM后,输出值中没有任何内容。

是或否

因为它是通过值(value(EV_RESULT_JSON))传递的参数,所以它的起始值总是初始值

如果它是通过引用传递的,那么答案可能是yes,因为它的起始值是传递的参数的值,因此它取决于函数模块的算法

PS:就我个人而言,在参数按值传递的情况下,我有时更喜欢在处理开始时添加一个CLEAR,以便于调试,并使用“jump”按钮重新启动处理;对于通过引用传递的参数,我有时会在“文档”中添加一个明确的信息,说明没有使用输入值


一小时后的附录1:因为导出参数的逻辑不太明显,并且因为建议(尽可能)使用ABAP对象,最好将函数模块转换为函数方法,返回的参数总是按值传递,因此不会有任何混淆。

简短回答:NoDon不喜欢这个答案。“否”是正确的,但给出的推理不清楚。正确。一个修正:如果导出参数在所有执行分支中都指定了一个确定值,例如ev_result_json=“something”,则可以省略清除。这种情况经常发生。不这样做的函数,或者不是在所有分支中都这样做的函数,应该明确地添加CLEAR。代码检查器应该找到这些事件并抛出相应的警告。