SAP技術者のサンプルコード置き場

ABAPの動作確認をしたコードと簡単な説明を置いておきます。

【ABAP】7.4で拡張された内部テーブルの条件指定やインデックス指定をSELECTのWHEREで使用する USING INTERNAL TABLE SELECTION ENHANCED FROM ABAP 7.4 IN SELECT WHERE CONDITIONS

SELECT文で、7.4で拡張された内部テーブルの値の取り方や インデックス指定を使って検索条件を作ってみました。 条件を満たすデータが複数件あった場合はどうなる・・・?

TYPES: BEGIN OF typ_str,
         field1 TYPE char10,
         field2 TYPE auart,
         field3 TYPE char10,
       END OF typ_str,
       ttyp_str TYPE TABLE OF typ_str WITH KEY field1.
DATA: str TYPE ttyp_str.

DATA: var1 TYPE char10 VALUE 'VARIABLES'.

str = VALUE #( ( field1 = 10 field2 = 'OR' field3 = 30 )
                        ( field1 = 20 field2 = 'OR1' field3 = 60 )
                        ( field1 = 30 field2 = 'ZOR' field3 = 90 )
                       ).

DATA(read_line) = lines( str ). "データ件数を取得

SELECT FROM vbak AS t1
    FIELDS
        'LITERAL' AS lit,
        @var1 AS var1,
        auart,
        vbeln,
        erdat,
        @( VALUE vbak-erdat( ) ) AS erdat2, "初期値
        erzet,
        @( VALUE vbak-erzet(  ) ) AS erzet2 "初期値
*    where auart = @( value vbak-auart( str[ field1 = 10 ]-field2 ) ) "field1=10の条件を満たすfield2値
    WHERE auart = @( VALUE vbak-auart( str[ read_line ]-field2 ) ) "3件目のfield2の値
    INTO TABLE @DATA(results).

cl_demo_output=>display( results ).