Próbuję znaleźć sposób na odczyt wewnętrznej tabeli, która musi być tworzona dynamicznie. Utworzono następujący raport, który wypełnia dynamiczną wewnętrzną tabelę danymi. W ostatnim wierszu próbuję go odczytać za pomocą klucza (na przykład). Problem polega na tym, że pojawia się błąd "określony typ nie ma struktury i dlatego nie ma składnika o nazwie MANDT".Czytanie ze specyfikacji dynamicznego klucza
Mam debugowane i widzę, że zostało pomyślnie wypełnione, a struktura tabeli (nazwy pól) są poprawne. Problem pojawia się, gdy próbuję odczytać tabelę w obszarze roboczym. Może robię to źle, ale wydaje mi się, że coś powinno być możliwe do zrobienia i mam wrażenie, że brakuje mi czegoś małego.
Powodem, dla którego to wypróbowuję, jest to, że znalazłem identyczne selekcje w programie i chcę buforować rekordy w pamięci i czytać je stamtąd, aby uniknąć dostępu do bazy danych. Jest to łatwe do wdrożenia, jednak nie zrobiłem tego, gdy klauzula o klauzuli where
i klauzula into
instrukcji OPEN SQL, którą próbuję zoptymalizować, są dynamiczne.
Pozdrawiam.
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.
Cześć Brian, dzięki za odpowiedź. To działa, jednak szukam w pełni dynamicznego rozwiązania. W pseudokodowaniu coś takiego: –
Coś wydaje się być brakuje w tym komentarzu ... –