ABAP

【SAP】アドオンテーブル作成―全6ステップ解説

検索しても意外と出てこない「アドオンテーブル」の作成手順――。

ググり始めて早1時間経過・・・。

そんな方のために―。そして忘れた時の備忘録として、このページに知る限りの全ノウハウをまとめておきます!

アドオンテーブルの作成方法を知れば、ABAPのデータ構造や裏で動いている処理内容がよくわかるようになります。本ページでは、1から10まで、つまりトランザクションコードを打つところから、テーブルの作成完了までの全ての操作を説明していきます。

その際に、アドオンテーブルにまつわる技術要素の話、つまりSAPってこんなことできるんだ、などの裏話も合わせて解説していきます。

アドオンテーブル作成手順

トランザクションコード:SE11

ABAPディクショナリという画面が表示されます。

この画面は、テーブルデータだけではなく、データ型・構造定義など、アプリケーションでも利用されるデータ定義の全てを管理する画面です。詳細はこちらのページでご覧ください。

テーブル名称を入力

下記、画像の通り「DBテーブル」項目を選択し、登録したい「テーブル名称」を入力します。

この際、テーブル名称は「英数字のみ」で構成されている必要があります。テーブル名称を入力後、登録ボタンを押下します。

ちなみに、各現場によって命名規則が存在します。上記画像では、「YFIT0001」という名称ですが、これは

Y   ⇒ テスト用です ということ
FI   ⇒ 
FIモジュールで利用します ということ
T   ⇒ 
テーブルです ということ
0001 ⇒ 連番

を表しています。

出荷クラスを設定する

出荷クラスとは、移送やクライアントコピーなどの際に、テーブルデータの移送を制限する設定です。アドオンテーブルを作成する際は、出荷クラス「A」を設定します。この出荷クラス「A」ですが、いわゆるアドオンテーブルを作成する際には99%この「A」を選択します。

項目名・データエレメントを入力する

項目名とデータエレメントを入力します。

項目名は、DATA命令「DATA A TYPE B.」で説明すると”A”に相当します。
そして、データエレメントは”B”に相当します。

データエレメントは、DATA命の理解をもとに考えるとわかりやすいので、是非下記ページもご覧ください。

データエレメントは、事前設定しておきます。上記画像、データエレメント項目に「MANDT」を入力しEnter押下すると、事前定義された「データ型」「長さ」「内容説明」などが自動で反映されます。

データエレメントは「データ型」「内容説明」などをセットにしたまとまりである、と覚えておいてください。これも、TYPES命令とほぼ同等の働きですので、覚えておいてください。

ただし、必ずしもデータエレメントを登録する必要はありません。

テーブル中のボタン「組込型」ボタンを押下することで、「データ型」「長さ」などを直接入力することができます。

この方法は、作成中のテーブルでのみ利用する項目に割り当てる場合でのみ推奨です。

同じ項目(例えば「登録日付」など)を複数のテーブルで用いる場合を考えてみましょう。登録日付に対して、データエレメントA、データ型は「D」(※SAP標準で「日付」型を)、長さは8文字である、と定義します。

「登録日付」という項目を他テーブルで使うことが見込まれる場合、予めデータエレメントを作成しておけば、他テーブルでその項目を利用する場合、登録する際の効率が上がります。再度、「データ型」「長さ」「内容説明」などを登録する必要が無くなるからです。

また、システム導入の後半などに当該項目の「内容説明」を変えたいなどの要件が発生した際に、項目すべてに同じデータエレメントが割当たっていれば、データエレメントのみを変更することで対応が可能です。つまり、メンテナビリティの向上につながります。「組込型」で作成した場合は、テーブル1つ1つ修正する必要が出てきてしまいます。

技術設定

先ほどの画面でテーブルの有効化ボタンを押下すると、エラーが出てテーブルの有効化が完了しません。これは、必須で設定する必要がある「技術設定」が抜けているためです。

この「技術設定」画面で必須で登録する必要があるのは2か所。

・データクラス
・サイズカテゴリ

バッファリングについては少し説明が長くなるため以下のページで解説しています。

データクラス

「トランザクションデータ、透過テーブル」を選択します。

データクラスは簡単に言うと、どんな種類のデータを保存するテーブルかを表現するものです。マスタ(更新頻度:低)を登録するものなのか、トランザクションデータ(更新頻度:高)を登録するものなのか、などを指定します。

少しだけ詳しく説明すると、データクラスによってデータベースサーバーのどの場所(Oracleで言う「表領域」のこと)に保存されるかが異なります。データベースは場所によって、更新速度・読み込み速度が異なるため、データクラスの指定をすることでデータベースを効率的に利用することを目的としています。

サイズカテゴリ

テーブルのデータ量(Excelでいうと行数)がどれぐらいになるか、を指定します。この設定を行うことで、作成中のアドオンテーブルが無駄なデータ容量を確保してしまうことを防ぎます。

ただ、必ずしもこのデータ量内でしかテーブルデータが作成されない、というわけではありません。多少容量を超えても問題はありません。データ容量を越えるデータが保存される場合、後からシステムで自動拡張されます。

有効化

最後に「有効化」を行います。

有効化を行うまでは、データベース上に保存されていません。ステータスが「新規」「新規(変更済)」「無効(変更済)」の状態である場合はデータベースには保存されているのではなく、ABAPディクショナリの一時領域に新規データ(変更データ)が格納されている状態です。

一時領域というと難しいかもしれませんが、いわゆる「ローカルに保存されているだけ」の状態と読み替えて頂いても問題ありません。したがって、プログラムで実際にそのテーブルを利用するには、必ず有効化が必要になります。

ここまでお読み頂いた方へ

本記事をお読みいただいた方より、ビューに関する質問を多く頂きました。ビューとは簡単に言うと「テーブルの見え方を変える方法」と言えます。以下に記事で詳しく解説しておりますので、合わせてご参照ください。