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

ABAP

検索しても意外と出てこないSAP:アドオンテーブルの作成手順を分かりやすく1ページにまとめました。

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

このページで学べる内容
  • アドオンテーブルとは?
  • アドオンテーブルの作り方ートランザクションコード:SE11
  • 覚えておきたい必須知識
    • 出荷クラス
    • データクラス
    • サイズカテゴリ
    • アドオンテーブルの有効化

ABAPer / SAPコンサルであれば、知っておいて損はない重要知識です。是非最後までご覧ください。

アドオンテーブルとは

アドオンテーブルとは、その名の通り「アドオン」で作るテーブルです。

SAPの標準テーブルを利用するだけでは実現することができない機能を実装する場合に作成されます。

アドオンテーブルを作成する前に、本当にそのテーブルが必要かどうか?もしくは、SAPの標準テーブルで同じような用途で利用されているものはないか?を確認しましょう。

アドオンテーブルを作りすぎると、メンテナンスが大変になりますし、その分バグの可能性も高まります。

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

早速、アドオンテーブルの作成手順を1から解説していきます。

どのようにその項目を設定するのか?をできるだけ分かりやすく解説します。

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

SAPメニュー > ツール > ABAPワークベンチ > 開発 > ABAPディクショナリ(SE11)

トランザクションコード:SE11を実行すると「ABAPディクショナリ」という画面が表示されます。

テーブル名称の入力

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

ちなみに、アドオンテーブル以外でビューやデータ型を登録したい場合も本画面から登録します。

テーブル名称は「英数字のみ」で構成します。テーブル名称を入力後、登録ボタンを押下します。

ちなみに、通常であれば各企業によって命名規則が存在します。通常アドオンテーブルであれば、「Z」始まりか「Y」始まりで作成することが多いです。

アドオンテーブルの頭文字

Z
Zは「アドオン」の意で用いられることが多いです。対して標準テーブルの頭文字は基本Z以外のアルファベットで構成されています。

Y
Yは「テスト用」「検証用」の意味で用いられることが多いです。そのため、開発時に試しに作ってみたい場合のアドオンテーブルはY始まりにすることが多いです。

念のため、同名のアドオンテーブルが既に登録されていないかという確認を含めて事前に「照会」ボタンを押して存在確認するのがおすすめです。

出荷クラスの設定

出荷クラスとは、移送やクライアントコピーなどの際に、テーブルデータの移送を制限する設定です。

出荷クラスとは

出荷クラスは「テーブル更新内容の責任者」「アップグレード時やクライアントコピー時のテーブル処理」を制御します。

通常「A(アプリケーションテーブル)」「C(カスタマイズテーブル)」を選択することが多いです。

項目名・データエレメントの入力

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

項目名

項目名は、その名の通りテーブルの項目の名称です。アドオン項目の場合は、テーブル名称と同様「Z」か「Y」を頭文字に設定します。基本的には、クライアントを表す「MANDT」を1番上に設定します。

「Key」にチェックを入れると当該項目がそのテーブルのキー項目となり、「初期値」にチェックを入れるとその項目の初期値が「NOT NULL」になります。

データエレメント

データエレメントは、基本的に事前にABAPディクショナリに登録してあるものを指定します。上記画像、データエレメント項目に「MANDT」を入力しEnter押下すると、事前定義された「データ型」「長さ」「内容説明」などが自動で反映されます。

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

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

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

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

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

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

技術設定

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

この「技術設定」画面では以下の項目を設定していきます。

  • データクラス
  • サイズカテゴリ
  • バッファタイプ

データクラス

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

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

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

サイズカテゴリ

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

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

ただし、アドオンテーブルで数十万件のデータを登録するというのはあまり無いような気がします。例外を除けば基本的には「0~2」を設定するべきかと思います。

バッファタイプ

バッファタイプは、テーブルバッファリングの設定項目です。

テーブルバッファリングを簡単に説明すると、データベースレコードをアプリケーションサーバに同期することです。テーブルバッファリングについては、ちょっと詳しい解説が必要になるため、以下のページをご覧ください。

有効化を忘れずに

アドオンテーブルの基本的な設定が完了したら、忘れずに「有効化」を行う必要があります。

有効化を行うまでは、データベース上に保存されていません。

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

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

ABAPを1から勉強したい方は

ABAPを1から学習したい方は、以下の記事で学習するのがお勧めです。

現在、完全無料で公開しておりますので、是非ご覧ください!

タイトルとURLをコピーしました