FORM 和 PERFORM 中的参数数量不同

Different number of parameters in FORM and PERFORM

我想避免在我的函数中复制粘贴,并想创建一个子例程。

但这失败了。

函数如下(我去掉了不重要的部分):

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.

我收到此错误消息:

Different number of parameters in FORM and PERFORM (routine: GET_REPORT_READ_PARAMETER, number of formal parameters: 4, number of actual parameters: 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 个参数吗?

错误在这一行:

CHANGING sel_table TYPE TABLE OF RSPARAMS

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

CHANGING sel_table TYPE RSPARAMS_TT.

RSPARAMS_TT 是 table 类型的 RSPARAMS(您可以在 SE11 中查看)