コンテンツフレーム起動

内部テーブルの割り当て 文書を SAP ライブラリストラクチャに組み込む

他のデータオブジェクトと同様に、MOVE 命令 で内部テーブルをオペランドとして使用することができます。

MOVE <itab1> TO <itab2>.

または、以下の同等の命令でもオペランドとして使用することができます。

<itab2> = <itab1>.

どちらのオペランドも互換性があるか、変換可能でなければなりません。これらの命令では、ネストしている内部テーブル上のデータを含む、テーブル<itab1> の内容全体がテーブル <itab2> に割り当てられます。割り当て先のテーブルの元の内容が上書きされます。

ヘッダ行のある内部テーブルを使用している場合は、ヘッダ行とテーブル本体の名前は同じであるということに注意してください。割り当てでテーブルの本体をアドレス指定する場合は、テーブル名の後ろに 2 つの角括弧 ([ ]) を記述してください。

例

DATA: BEGIN OF line,
        col1(1) TYPE c,
        col2(1) TYPE c,
      END OF line.

DATA: etab LIKE TABLE OF line WITH HEADER LINE,
      ftab LIKE TABLE OF line.

line-col1 = 'A'.line-col2 = 'B'.

APPEND line TO etab.

MOVE etab[] TO ftab.

LOOP AT ftab INTO line.
   WRITE: / line-col1, line-col2.
ENDLOOP.

出力は以下のようになります。

A B

この例では、構造 LINE の行データ型を持つ 2 つの標準テーブル、ETAB および FTAB が作成されます。ETAB にはヘッダ行があります。APPEND 命令を使用して ETAB 1 行ずつデータが書き込まれたあと、内容全体が FTAB に割り当てられます。命令内で角括弧が使用されていることに注意してください。

例

DATA: ftab TYPE SORTED TABLE OF f
           WITH NON-UNIQUE KEY table_line,
      itab TYPE HASHED TABLE OF i
           WITH UNIQUE KEY table_line,
      fl   TYPE f.

DO 3 TIMES.
   INSERT sy-index INTO TABLE itab.
ENDDO.

ftab = itab.

LOOP AT ftab INTO fl.
   WRITE: / fl.
ENDLOOP.

出力は以下のようになります。

1.000000000000000E+00

2.000000000000000E+00

3.000000000000000E+00

FTAB は、非一意のキーを持つ行データ型 F のソートテーブルです。ITAB は、一意のキーを持つ行データ型 I のソートテーブルです。行データ型 ( したがって、テーブル全体) は変換可能です。したがって、ITAB の内容を FTAB に割り当てることができます。非ソートテーブル ITAB をソートテーブル FTAB に割り当てると、内容は FTAB のキーによって自動的にソートされます。

例

ユニコードシステムでは、以下の変換を行うことはできません。

DATA: BEGIN OF iline,
        num TYPE i,
      END OF iline,

       BEGIN OF fline,
        num TYPE f,
      END OF fline,

       itab LIKE TABLE OF iline,
      ftab LIKE TABLE OF fline.

DO 3 TIMES.
   iline-num = sy-index.
   APPEND iline-num TO itab.
ENDDO.

ftab = itab.

loop AT ftab INTO fline.
   WRITE: / fline-num.
ENDLOOP.

ユニコード以外のシステムでは、出力は以下のようになります。

6.03823403895813E-154

6.03969074613219E-154

6.04114745330626E-154

この場合、内部テーブル ITAB および FTAB の行データ型は、それぞれ I 型または F 型のコンポーネントを 1 つ持つ構造です。この 2 つの行データ型は変換可能ですが、互換性はありません。したがって、ITAB FTAB に割り当てると、テーブル ITAB の内容は C 型の項目に変換され、その後 FTAB に書き込まれます。転送されたデータは F 型の項目として解釈されるため、結果は無意味なものとなります。ユニコードシステムでは、数値項目を C 型の項目に変換することはできません。

 

 

コンテンツフレーム終了