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