Синтаксическая ошибка «нет компонента MANDT» для READ TABLE WITH KEY mandt =

Я пытаюсь разработать способ чтения внутренней таблицы, которая должна создаваться динамически. Я создал следующий отчет, который заполняет динамическую внутреннюю таблицу данными.

В последней строке я пытаюсь прочитать его с помощью ключа (например, mandt), но я получаю эту синтаксическую ошибку:

Указанный тип не имеет структуры и, следовательно, не имеет компонента называется MANDT

Я отладил и вижу, что <любая_вкладка>успешно заполнена и структура таблицы (имена полей) верна. Проблема возникает, когда я пытаюсь прочитать таблицу в рабочей области.Может быть, я делаю это неправильно, но кажется, что это должно быть возможно сделать, и у меня такое чувство, что я упускаю что-то маленькое.

Причина, по которой я пытаюсь это сделать, заключается в том, что я обнаружил идентичные выборки, происходящие в программе, и хочу буферизовать записи в памяти и читать их оттуда, чтобы избежать доступа к БД. Это легко реализовать, однако я не сделал этого, когда таблица whereи intoпредложения OPEN SQL, которые я пытаюсь оптимизировать, являются динамическими.

Как исправить синтаксическую ошибку?

DATA: t681_rep TYPE TABLE OF t681 , wa_681 LIKE LINE OF t681_rep,
      tabref TYPE REF TO data , waref TYPE REF TO data.

FIELD-SYMBOLS: <any_tab> TYPE ANY TABLE,
               <any_wa> TYPE ANY,
               <var1> TYPE ANY.
"fill t681_rep
SELECT *
  FROM t681
  INTO TABLE t681_rep
   UP TO 1 ROWS WHERE kotab = 'A002'.

READ TABLE t681_rep INTO wa_681 WITH KEY kotab = 'A002'.
IF sy-subrc = 0.

  "if A002 is found create a table of that type and fill it
  CREATE DATA tabref TYPE TABLE OF (wa_681-kotab).
  ASSIGN tabref->* TO <any_tab>.
  SELECT * UP TO 10 ROWS
    FROM (wa_681-kotab)
    INTO TABLE <any_tab>.

ENDIF.

CREATE DATA waref TYPE a002.
ASSIGN waref->* TO <any_wa>.

READ TABLE <any_tab> ASSIGNING <any_wa> WITH KEY mandt = '800'. <- problem area
IF sy-subrc = 0.
  "do stuff with <any_wa>...
ENDIF.
8
задан Sandra Rossi 6 July 2019 в 09:29
поделиться