ABAP: различное количество параметров в FORM и PERFORM - PullRequest
0 голосов
/ 01 ноября 2018

Я хочу избежать копирования + вставки в моей функции и хочу создать подпрограмму.

Но это не удалось.

Вот функция (я удалил неважные части):

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 голосов
/ 01 ноября 2018

Ошибка в этой строке:

CHANGING sel_table TYPE TABLE OF RSPARAMS

При вводе параметра приведенный выше синтаксис недопустим, «OF» и «RSPARAMS» интерпретируются как отдельные параметры CHANGING. Вы должны ввести параметр напрямую с табличным типом (как вы делаете для параметра USING). В этом случае это может быть:

CHANGING sel_table TYPE RSPARAMS_TT.

RSPARAMS_TT - это тип таблицы RSPARAMS (вы можете проверить в SE11)

...