APPEND命令は、ABAPで内部テーブルにレコード(行)を追加するために使用されます。
![APPEND命令は、内部テーブルの最後の行に作業エリアの内容を挿入する命令です。](https://it-biz.online/wp-content/uploads/2019/04/APPEND-1.png)
APPEND <source_workarea_or_structure> TO <internal_table>.
![](https://it-biz.online/wp-content/themes/cocoon-master/images/man.png)
処理の内容も構文ルールも難しくはありませんが、テーブル/内部テーブル/構造といった基本知識が必要になってきますので、まずそれらの用語の意味がよくわからない・・・という方は初めに以下の記事からお読みください。
このページではAPPEND命令の意味や基本となる構文ルール、使いどころ・注意点について初心者向けに分かりやすく解説します。
SAPエンジニア/ABAPerを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。
APPEND命令
![](https://it-biz.online/wp-content/themes/cocoon-master/images/man.png)
APPENDとは日本語に訳すと「付与する」「くっつける」みたいな意味になります。その言葉の意味通り、APPEND命令では内部テーブルへデータを追加する処理を行います。
注意しておきたいのが、これはあくまでも内部テーブルに対する処理であるということ。標準テーブルとアドオンテーブルに対しては使えない処理なので注意しましょう。
パターン1
* ワークエリアまたは構造体から内部テーブルへの追加: APPEND <source_workarea_or_structure> TO <internal_table>.
<source_workarea_or_structure>
内部テーブルに追加するデータを保持するワークエリアまたは構造体。<internal_table>
データを追加する対象の内部テーブル。
パターン2
* 値を直接指定して内部テーブルへの追加 APPEND VALUE <structure_type>( <field1> = <value1> <field2> = <value2> ... ) TO <internal_table>.
<structure_type>
内部テーブルの行タイプ(構造体の型)。<field1>
,<field2>
, ...
構造体のフィールド名。<value1>
,<value2>
, ...
追加するデータの値。<internal_table>
データを追加する対象の内部テーブル。
処理の内容:APPEND命令
APPEND命令は内部テーブルの最後の行に作業エリアの内容を挿入する命令です。
![APPEND命令](https://it-biz.online/wp-content/uploads/2019/04/APPEND-1.png)
![](https://it-biz.online/wp-content/themes/cocoon-master/images/man.png)
ポイントは、追加されるのは内部テーブルの一番最後の行であるという点です。ここだけは、注意して押さえておきましょう。
似たような処理にINSERT命令があります。こちらも日本語に直すと「挿入」という意味になり、APPEND命令と混乱しがちな部分なのですが、両者には明確な違いが存在します。
APPEND命令では挿入されるのが最後の行であるのに対して、INSERT命令では任意の行に挿入できるということです。INSERT命令のイメージはこんな感じになります。
![](https://it-biz.online/wp-content/uploads/2019/04/INSERT.png)
参考 INSERT命令
INSERT命令はレコードを挿入する箇所を特定する処理が行われる分、その処理が行われないAPPEND命令の方がパフォーマンスの観点から優れています(APPEND命令のほうが処理速度が速い)。
![](https://it-biz.online/wp-content/themes/cocoon-master/images/man.png)
そのため、どちらの利用でも良い場合(APPENDでもINSERTでも要件を満たせる場合)は、可能な限りAPPEND命令を利用するようにしましょう。
ここまで見てきたように、APPEND命令の処理はとても簡単です。いくつかサンプルコードを見ていきながら具体的なイメージをつかんでいきましょう。
サンプルコード:APPEND命令
APPEND命令を利用したサンプルコードです。
![](https://it-biz.online/wp-content/themes/cocoon-master/images/man.png)
以下は最も単純な例です。
* 従業員のIDと名前を保持する内部テーブルを定義 TYPES: BEGIN OF TY_EMPLOYEE, ID TYPE I, NAME TYPE STRING, END OF TY_EMPLOYEE. DATA: IT_EMPLOYEE TYPE TABLE OF TY_EMPLOYEE, WA_EMPLOYEE TYPE TY_EMPLOYEE. * ワークエリアwa_employeeに従業員のIDと名前を設定し * 内部テーブルit_employeeに追加 WA_EMPLOYEE-ID = 1. WA_EMPLOYEE-NAME = 'ALICE'. APPEND WA_EMPLOYEE TO IT_EMPLOYEE. WA_EMPLOYEE-ID = 2. WA_EMPLOYEE-NAME = 'BOB'. APPEND WA_EMPLOYEE TO IT_EMPLOYEE. * APPEND命令に直接値を指定してレコードを追加する APPEND VALUE TY_EMPLOYEE( ID = 3 NAME = 'CHARLIE' ) TO IT_EMPLOYEE.
APPEND命令の注意点
ABAPのAPPEND命令にはいくつかの注意点があります。以下の表では、APPEND命令の使用時に留意すべき点をまとめます。
![](https://it-biz.online/wp-content/themes/cocoon-master/images/man.png)
ABAPのAPPEND命令を使用する際には、重複の取り扱い、初期化されていないワークエリア、順序の維持、およびデータ型の一致に注意する必要があります。
注意点 | 説明 |
---|---|
重複の取り扱い | APPEND命令は重複チェックを行いません。重複を避けるには、事前に検索や条件分岐を使って確認してください。 |
ワークエリアの初期化 | APPEND命令を繰り返し使用する前に、ワークエリアを初期化しておくことが重要です。そうしないと、古いデータが再利用されることがあります。 |
順序の維持 | APPEND命令を使用すると、レコードが内部テーブルの末尾に追加されます。特定の順序でデータを保持する必要がある場合は、INSERT命令やSORT命令を検討してください。 |
データ型の一致 | APPEND命令を使用する際には、内部テーブルとワークエリアのデータ型が一致していることを確認してください。データ型が異なる場合、エラーが発生します。 |
ハッシュテーブルへの使用 | APPEND命令はハッシュテーブルには利用できません。ハッシュテーブルにデータを追加する場合は、INSERT命令を使用してください。 |
特に、最後の注意点「ハッシュテーブル」にはAPPEND命令を利用できないという点に注意が必要です。ハッシュテーブルにレコードを追加する場合は、INSERT命令を利用しましょう。
参考 ハッシュテーブルとは?
![](https://it-biz.online/wp-content/themes/cocoon-master/images/man.png)
以下は、ハッシュテーブルにデータを追加する例です。
TYPES: BEGIN OF TY_EMPLOYEE, ID TYPE I, NAME TYPE STRING, END OF TY_EMPLOYEE. DATA: IT_EMPLOYEE TYPE HASHED TABLE OF TY_EMPLOYEE WITH UNIQUE KEY ID, WA_EMPLOYEE TYPE TY_EMPLOYEE. WA_EMPLOYEE-ID = 1. WA_EMPLOYEE-NAME = 'ALICE'. INSERT WA_EMPLOYEE INTO TABLE IT_EMPLOYEE. WA_EMPLOYEE-ID = 2. WA_EMPLOYEE-NAME = 'BOB'. INSERT WA_EMPLOYEE INTO TABLE IT_EMPLOYEE.
ABAPを1から勉強したい方は
![](https://it-biz.online/wp-content/uploads/2023/06/man.png)
初めてABAPを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。
ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?
読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!