ABAP:FORM和PERFORM中的参数数量不同

时间:2018-11-01 13:03:32

标签: abap

我想避免在函数中执行复制+粘贴操作,并希望创建一个子例程。

但这失败了。

这是函数(我删除了不重要的部分):

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个参数吗?

1 个答案:

答案 0 :(得分:3)

此行中的错误:

CHANGING sel_table TYPE TABLE OF RSPARAMS

通过键入参数,以上语法无效,“ OF”和“ RSPARAMS”被解释为单独的CHANGING参数。 您必须直接使用表类型键入该参数(就像对USING参数所做的那样)。在这种情况下,可以是:

CHANGING sel_table TYPE RSPARAMS_TT.

RSPARAMS_TT是RSPARAMS的表类型(您可以在SE11中检入)