動的に作成する必要がある内部テーブルを読み取る方法を試しています。私は動的な内部テーブルをデータで満たす次のレポートを作成しました。最後の行では、それをキー(例えばmandt
)で読み取ろうとしています。問題は、 "指定されたタイプが構造体を持たないため、MANDTというコンポーネントがありません"というエラーが発生することです。動的キー指定でitabを読む
私はデバッグしましたが、正常に読み込まれ、テーブルの構造(フィールド名)が正しいことがわかります。テーブルを作業領域に読み込もうとすると、問題が発生します。たぶん、これは間違っているのですが、それは可能なはずのもののように思えます。
私がこれを試している理由は、プログラムで起こっている同じ選択があり、メモリにレコードをバッファしてそこから読み込んでDBアクセスを避けたいということです。これは実装が簡単ですが、私が最適化しようとしているOPEN SQL文のテーブルwhere
句とinto
句が動的である場合は、これを実行していません。
乾杯。
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.
こんにちはブライアン、お返事に感謝。しかし、私は完全に動的なソリューションを探しています。擬似コードのようなもの: –
そのコメントから何かが見当たりません... –