本ページでは、内部テーブルへの行追加を行うAPPEND命令について解説します。
処理の内容も構文ルールも難しくはありませんが、テーブル/内部テーブル/構造といった基本知識が必要になってきますので、まずそれらの用語の意味がよくわからない・・・という方は初めに以下の記事からお読みください。
APPEND命令は、ワークエリア(構造)に格納されている値を内部テーブルの最後の行に付与(追加)する処理を行います。APPEND命令の意味や基本となる構文ルール、使いどころ・注意点について初心者向けに分かりやすく解説します
ABAPエンジニアを目指す方であれば、知っておきたい超重要知識ですので、是非最後までご覧ください。
それでは、早速解説を始めます。
APPEND命令
APPENDとは日本語に訳すと「付与する」「くっつける」みたいな意味になります。その言葉の意味通り、APPEND命令では内部テーブルへデータを追加する処理を行います。
注意しておきたいのが、これはあくまでも内部テーブルに対する処理であるということ。標準テーブルとアドオンテーブルに対しては使えない処理なので注意しましょう。
ここから、APPEND命令の処理内容を具体的にイメージを持てるよう、簡単な画像を付けて説明します。
処理の内容:APPEND命令
APPEND命令は、内部テーブルの最後の行に作業エリアの内容を挿入する命令です。
※作業エリアとは「構造」のことです。

ポイントは、追加されるのは内部テーブルの一番最後の行であるという点です。ここだけは、注意して押さえておきましょう。
似たような処理にINSERT命令がありますね。こちらも日本語に直すと「挿入」という意味になり、APPEND命令と混乱しがちな部分なのですが、両者には明確な違いが存在します。APPEND命令では挿入されるのが最後の行であるのに対して、INSERT命令では任意の行に挿入できるということです。INSERT命令のイメージはこんな感じになります。

INSERT命令はレコードを挿入する箇所を特定する処理が行われる分、その処理が行われないAPPEND命令の方がパフォーマンスの観点から優れています(APPEND命令のほうが処理速度が速い)。そのため、どちらの利用でも良い場合(APPENDでもINSERTでも要件を満たせる場合)は、可能な限りAPPEND命令を利用するようにしましょう。
INSERT命令については、以下のページで詳しく解説していますので、是非この機会に合わせて学習してみましょう。
ここまで見てきたように、APPEND命令の処理はとても簡単です。INSERT命令との違いを理解したうえで、ここからは構文ルールについての解説に移ります。
構文ルール:APPEND命令
APPEND(構造) TO (内部テーブル).
構造に格納されたデータ内容を、内部テーブルの最後の行に挿入します。
また、もちろん指定する構造と内部テーブルの同じ構造のデータ型でなければなりません。異なるデータ型の構造と内部テーブルの場合、正常に処理が行われません。
サンプルコード:APPEND命令
APPEND命令を利用したサンプルコードです。以下のプログラムでは、フィールドシンボルを利用して構造へ格納した値を「LIT_VBELN」に挿入する操作を行います。
LOOP AT IT_test001 ASSIGNING FIELD-SYMBOL(<fs001>) WHERE VBELN IS NOT INITIAL. LW_VBELN-SIGN = 'I'. LW_VBELN-OPTION = 'EQ'. LW_VBELN-LOW = <fs001>-VBELN. APPEND LW_VBELN TO LIT_VBELN. ENDLOOP.
"LOOP" は内部テーブルのレコード1行1行に対して特定の処理を繰り返す制御命令です。
最後に、少しレベルが上がる内容ですが、内部テーブルの種類に応じたAPPEND命令の注意点について補足しておきます。
挿入先の内部テーブルの種類に注意
APPEND命令で挿入することができる内部テーブルは、「標準テーブル」と「ソートテーブル」のみです。これは、INSERT命令でも同様です。
ハッシュテーブルにはAPPEND命令を利用できないという点に注意が必要です。
APPEND命令の利用については、ここで解説した内容とLOOP処理 / 構造・内部テーブルの基本知識とセットで覚えておきましょう。
ABAPを1から勉強したい方は
ABAPを1から学習したい方のために、ABAPの基本知識・基礎概念を1つのページにまとめました。
現在、完全無料で公開しておりますので、是非ご覧ください!