トピックで述べたように、内部テーブルの条件付きサブセットを別の内部テーブル内に配置したいと考えています。
まず、昔ながらの方法のように見えるものを見てみましょう。
DATA: lt_hugeresult TYPE tty_mytype,
lt_reducedresult TYPE tty_mytype.
SELECT "whatever" FROM "wherever"
INTO CORRESPONDING FIELDS OF TABLE lt_hugeresult
WHERE "any_wherecondition".
IF sy-subrc = 0.
lt_reducedresult[] = lt_hugeresult[].
DELETE lt_reducedresult WHERE col1 EQ 'a value'
AND col2 NE 'another value'
AND col3 EQ 'third value'.
.
.
.
ENDIF.
私たちは皆、これを知っているかもしれません。
今、私はabap 7.40、明らかにSP8で導入されたテーブルを削減するものについて読んでいました。
表内包表記 - 機能的に表を作成する
テーブル駆動:
VALUE tabletype( FOR 行 IN タブ WHERE ( … )
( … 行… … 行… … ) )
ソース テーブルで選択された行ごとに、結果テーブルで行を作成します。静的行数から動的行数への値コンストラクターの一般化。
私はそれを試していましたが、結果は実際には合っていないようです。おそらく私のやり方が間違っているか、条件駆動型のアプローチが必要なのかもしれません。
では、上記のステートメントを表理解テクニックで書きたいとしたら、どのようになりますか?
今まで私はこれを持っていましたが、私が必要としているものではなく、それを提供していませんでした。
DATA(reduced) = VALUE tty_mytype( FOR checkline IN lt_hugeresult
WHERE ( col1 = 'a value' )
( col2 = 'another value' )
( col3 = space )
).
ヒントがある人はいますか?
EDIT:まだ動作していないようです。これが私がやっているようです:
実行可能な行:
デバッガーの結果:
間違った削減:
そして今何???