検索しても意外と出てこないSAPのアドオンテーブルの作成手順を分かりやすく1ページにまとめました。
アドオンテーブルの作成方法を知れば、ABAPのデータ構造や裏で動いている処理内容がよくわかるようになります。本ページでは、1から10まで(トランザクションコードを打つところから、テーブルの作成完了までの全ての操作)を説明していきます。
ABAPer / SAPコンサルであれば、知っておいて損はないSAP基本知識ばかりです。是非最後までご覧ください。
アドオンテーブルとは
アドオンテーブルとは、その名の通り "アドオン" (Add-On)で作るテーブルです。
SAPの標準テーブルを利用するだけでは実現することができない機能を実装する場合に作成されます。
SAPの標準機能では実現できない機能を1から開発することをアドオン(アドオンする)と言います。(現場によって多少呼び方に違いがある可能性があります。)
アドオンテーブルの作成手順
早速、アドオンテーブルの作成手順を1から解説していきます。
どのようにその項目を設定するのか?をできるだけ分かりやすく解説します。
トランザクションコード:SE11
SAPメニュー > ツール > ABAPワークベンチ > 開発 > ABAPディクショナリ(SE11)
トランザクションコード:SE11を実行すると「ABAPディクショナリ」という画面が表示されます。
この画面は、テーブルデータだけではなく、データ型・構造定義など、SAPで利用されるデータ定義の全てを管理する画面です。詳細はこちらのページでご覧ください。
テーブル名称の入力
「DBテーブル」項目を選択し、登録したい「テーブル名称」を入力します。
ちなみに、アドオンテーブル以外でビューやデータ型を登録したい場合も本画面から登録します。
テーブル名称は「英数字のみ」で構成します。テーブル名称を入力後、登録ボタンを押下します。
ちなみに、通常であれば各企業によって命名規則が存在します。通常アドオンテーブルであれば、「Z」始まりか「Y」始まりで作成することが多いです。
Z
Zは「アドオン」の意で用いられることが多いです。対して標準テーブルの頭文字は基本Z以外のアルファベットで構成されています。
Y
Yは「テスト用」「検証用」の意味で用いられることが多いです。そのため、開発時に試しに作ってみたい場合のアドオンテーブルはY始まりにすることが多いです。
念のため、同名のアドオンテーブルが既に登録されていないかという確認を含めて事前に「照会」ボタンを押して存在確認しておきましょう。
出荷クラスの設定
出荷クラスとは、移送やクライアントコピーなどの際に、テーブルデータの移送を制限する設定です。
出荷クラスは「テーブル更新内容の責任者」「アップグレード時やクライアントコピー時のテーブル処理」を制御します。
通常「A(アプリケーションテーブル)」もしくは「C(カスタマイズテーブル)」を選択することが多いです。
項目名・データエレメントの入力
項目名とデータエレメントを入力します。
①項目名
項目名は、その名の通りテーブルの項目の名称です。アドオン項目の場合は、テーブル名称と同様「Z」か「Y」を頭文字に設定します。基本的には、クライアントを表す「MANDT」を1番上に設定します。
SAPでは、1つのシステム上に複数の環境を定義することができます。この複数の環境をSAPでは「クライアント」と呼びます。
「Key」にチェックを入れると当該項目がそのテーブルのキー項目となり、「初期値」にチェックを入れるとその項目の初期値が「NOT NULL」になります。
キー項目とは、レコードを一意に識別するための項目です。言い方を変えると、キー項目は1つはテーブルの中で重複していはいけない項目です。
②データエレメント
データエレメントとはテーブル項目の意味属性を決定する項目です。
通常、データエレメントは事前に定義してあるものを利用します。
データエレメントも、ABAPディクショナリから登録します。
基本的な考え方や、データエレメントの作成方法を1から分かりやすく解説しておりますので、合わせてご覧ください。
データエレメントを指定しEnterボタンを押せば、データエレメントに紐づくドメインの「データ型」「長さ」「内容説明」などが自動で反映されます。
ドメインは、データエレメントのデータ型と項目長を決定する定義情報です。
データエレメントが意味属性と呼ばれるのに対して、ドメインは技術属性と呼ばれます。ドメインもABAPディクショナリから登録されます。
より詳しい説明を以下の記事で行っておりますので、是非ご覧ください。
ただし、このデータエレメントは必ずしも登録しておく必要はありません。
テーブル中のボタン「組込型」ボタンを押下することで、データエレメントから自動導出される "データ型" "項目長" を直接入力することができます。
この方法は、作成中のテーブルでのみ利用する項目に割り当てる場合で推奨の方法。
技術設定
先ほどの画面でテーブルの有効化ボタンを押下すると、エラーが出てテーブルの有効化が完了しません。これは、必須で設定する必要がある「技術設定」が抜けているためです。
この「技術設定」画面では以下の項目を設定していきます。
- データクラス
- サイズカテゴリ
- バッファタイプ
データクラス
通常は「APPL1:トランザクションデータ、透過テーブル」を選択します。
データクラスは簡単に言うと、どんな種類のデータを保存するテーブルか?を表すものです。マスタ(更新頻度:低)を登録するものなのか、トランザクションデータ(更新頻度:高)を登録するものなのか、などを制御します。
少しだけ詳しく説明すると、データクラスによってデータベースサーバーのどの場所(Oracleでいう表領域のこと)に保存されるかが異なります。データベースは場所によって、更新速度・読み込み速度が異なるため、データクラスの指定をすることでデータベースを効率的に利用することが目的です。
サイズカテゴリ
テーブルのデータ量(Excelでいうと行数)がどれぐらいになるか予想して「0~9」のいずれかを指定します。この設定を行うことで、作成中のアドオンテーブルが無駄なデータ容量を確保してしまうことを防ぎます。
ただ、必ずしもこのデータ量内でしかテーブルデータが作成されない、というわけではありません。多少容量を超えても問題はありません。データ容量を越えるデータが保存される場合、後からシステムで自動拡張されます。
アドオンテーブルで数十万件のデータを登録するというのはあまり無いような気がします。例外を除けば基本的には「0~2」を設定しておけばOKです。
バッファタイプ
バッファタイプは、テーブルバッファリングの設定項目です。
テーブルバッファリングを簡単に説明すると、データベースレコードをアプリケーションサーバに同期することです。テーブルバッファリングについては、ちょっと詳しい解説が必要になるため、以下のページをご覧ください。
有効化
アドオンテーブルの基本的な設定が完了したら、忘れずに「有効化」を行う必要があります。
有効化を行うまでは、データベース上に保存されていません。
ステータスが「新規」「新規(変更済)」「無効(変更済)」の状態である場合はデータベースには保存されているのではなく、ABAPディクショナリの一時領域に新規データ(変更データ)が格納されている状態です。
一時領域というと難しいかもしれませんが、いわゆる「ローカルに保存されているだけ」の状態と読み替えて頂いても問題ありません。したがって、プログラムで実際にそのテーブルを利用するには、必ず有効化が必要になります。
SAP / ABAPを1から学習したい方は
初めてABAPを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。
ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?
読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!