我想避免在函数中执行复制+粘贴操作,并希望创建一个子例程。
但这失败了。
这是函数(我删除了不重要的部分):
FUNCTION /foo/bar .
*"----------------------------------------------------------------------
*" IMPORTING
*" VALUE(IV_STATIC_PARAMETER_LIST) TYPE WDY_KEY_VALUE_LIST
*"----------------------------------------------------------------------
data selection_table TYPE TABLE OF RSPARAMS.
PERFORM GET_REPORT_READ_PARAMETER
USING IV_DYNAMIC_PARAMETER_LIST
CHANGING selection_table.
我收到此错误消息:
FORM和PERFORM中的参数数量不同(例程: GET_REPORT_READ_PARAMETER,形式参数数量:4,数量 实际参数:2)
子程序如下:
FORM GET_REPORT_READ_PARAMETER
USING parameter_list TYPE WDY_KEY_VALUE_LIST
CHANGING sel_table TYPE TABLE OF RSPARAMS.
....
ENDFORM
有人知道ABAP为什么认为有4个而不是2个参数吗?
答案 0 :(得分:3)
此行中的错误:
CHANGING sel_table TYPE TABLE OF RSPARAMS
通过键入参数,以上语法无效,“ OF
”和“ RSPARAMS
”被解释为单独的CHANGING
参数。
您必须直接使用表类型键入该参数(就像对USING
参数所做的那样)。在这种情况下,可以是:
CHANGING sel_table TYPE RSPARAMS_TT.
RSPARAMS_TT是RSPARAMS的表类型(您可以在SE11中检入)