ABAP ディクショナリ
7.1 ABAP ディクショナリ
ABAPディクショナリとは
ABAPディクショナリ(トランザクションコード:SE11)は、Add-onテーブルやAdd-onテーブルを構成するデータエレメントやドメインの作成など、SAPシステムで利用されているディクショナリオブジェクトの定義をする機能です。
※外部システムなど、他のシステムとのインターフェースデータを保持するために、Add-onテーブルを作成することが多いです。
ディクショナリオブジェクトとは
ディクショナリオブジェクトとは具体的に以下の9個に分類されます。
ABAPディクショナリで登録されたデータ定義はクライアント非依存のため、変更したタイミングで全クライアントへ同時に反映されます。
そしてABAPディクショナリに登録されたデータ定義は、汎用モジュールやプログラムから利用可能となります。
ディクショナリオブジェクトの分類
ABAPディクショナリと一言に言っても、登録できるオブジェクトタイプは大きく3種類に分類することができます。
データベースオブジェクト
データベースオブジェクトに分類されるのは、テーブルとビューです。
ABAPディクショナリでテーブル定義を行うことで、データベース上への
データ登録を行うことが可能になります。
テーブル
ABAPディクショナリの機能からは、アドオンテーブルの新規定義を行うことができます。
テーブルの詳細については、後述にて説明します。
アドオンテーブルの作成方法を知れば、ABAPのデータ構造や裏で動いている処理内容がよくわかるようになります。
アドオンテーブルとは
アドオンテーブルとは、その名の通り “アドオン” (Add-On)で作るテーブルです。
SAPの標準テーブルを利用するだけでは実現することができない機能を実装する場合に作成されます。
※アドオンテーブルを作成する前に、本当にそのテーブルが必要かどうか?
もしくは、SAPの標準テーブルで同じような用途で利用されているものはないか?を確認しましょう。
アドオンテーブルを作りすぎるとメンテナンスが大変になりますし、その分バグの可能性も高まります。
Add-onテーブルを登録してみよう!
1. ABAPディクショナリ(SE11)の起動
Add-onテーブルの登録は、ABAPディクショナリ (トランザクションコード:SE11)を起動して行います。
2. 「ABAPディクショナリ」画面表示
※テーブル名は、YまたはZ始まりで登録を行います。
【入力内容】
テーブルID :ZTYYMM(研修年月)_XXXX(名前のローマ字)
例):ZT2501_KANDA
3. アドオンテーブルの頭文字
4. テーブル変更画面への入力
【入力内容】
内容説明 :テスト用マスタ
出荷クラス :A
テーブルブラウザ/テーブルビュー更新 :照会/更新-許可
※参考:出荷クラスとは
出荷クラスは、移送やクライアントコピーなどの際に、テーブルデータの移送を制限する設定です。
主に「テーブル更新内容の責任者」「アップグレード時やクライアントコピー時のテーブル処理」を制御します。
通常「A(アプリケーションテーブル)」もしくは「C(カスタマイズテーブル)」を選択することが多いです。
5. 「項目」をタブをクリックし、項目名とデータエレメントを入力して「保存」します。
保存時は「ローカルオブジェクト」で登録します。
項目名
項目名は、その名の通りテーブルの項目の名称です。
・アドオン項目の場合は、テーブル名称と同様「Z」か「Y」を頭文字に設定します。
・基本的には、クライアントを表す「MANDT」を1番上に設定します。
・「Key」にチェックを入れると当該項目がそのテーブルのキー項目となり、
「初期値」にチェックを入れるとその項目の初期値が「NOT NULL」になります。
※キー項目とは、レコードを一意に識別するための項目です。
つまり、キー項目は1つもテーブルの中で重複してはいけない項目です。
データエレメント
データエレメントとは、テーブル項目の意味属性を決定する項目です。
通常、データエレメントは事前に定義してあるものを利用します。
データエレメントを指定しEnterボタンを押せば、データエレメントに紐づくドメインの
「データ型」「長さ」「内容説明」などが自動で反映されます。
※データエレメント補足
ただし、データエレメントは必ずしも登録しておく必要はありません。
テーブル中のボタン「組込型」ボタンを押下することで、データエレメントから自動導出される
「データ型」「項目長」を直接入力することができます。
この方法は、作成中のテーブルでのみ利用する項目に割り当てる場合で推奨の方法です。
ドメイン
ドメインは、データエレメントのデータ型と項目長を決定する定義情報です。
データエレメントが意味属性と呼ばれるのに対して、
ドメインは技術属性と呼ばれます。
ドメインもABAPディクショナリから登録されます。
6. 「技術設定」タブをクリックし、「データクラス」、「サイズカテゴリ」の入力し、「保存」→「停止」で戻ります。
【入力内容】
データクラス:APPL0
サイズカテゴリ: 0
バッファリング:バッファリング不可
データクラス
データクラスは簡単に言うと、どんな種類のデータを保存するテーブルか?を表すものです。
マスタ(更新頻度:低)を登録するものなのか、トランザクションデータ(更新頻度:高)を登録するものなのか、などを指定します。
※データクラスによってデータベースサーバーのどの場所(Oracleでいう表領域のこと)に保存されるかが異なります。
データベースは場所によって、更新速度・読み込み速度が異なるため、データクラスの指定をすることでデータベースを効率的に利用することが目的です。
サイズカテゴリ
テーブルのデータ量(Excelでいうと行数)がどれぐらいになるか予想して「0~9」のいずれかを指定します。
この設定を行うことで、作成中のアドオンテーブルが無駄なデータ容量を確保してしまうことを防ぎます。
7. 「チェック」で不備が無いかを確認します。
8. 「有効化」で登録します。
補足:有効化時に「警告」が表示される場合の対処法
メニューバーの「補足」→「拡張カテゴリ」をクリックします。
拡張可能(深い構造)を選択し、コピーをクリックし、もう一度有効化します。
有効化の補足
アドオンテーブルの基本的な設定が完了したら、
忘れずに「有効化」を行う必要があります。
有効化を行うまでは、データベース上に保存されていません。
ステータスが「新規」「新規(変更済)」「無効(変更済)」の状態である場合は、
データベースには保存されているのではなく、ABAPディクショナリの一時領域に新規データ
(変更データ)が格納されている状態です。
※一時領域というと難しいかもしれませんが、
いわゆる「ローカルに保存されているだけ」の状態と読み替えて頂いても問題ありません。
したがって、プログラムで実際にそのテーブルを利用するには、必ず有効化が必要になります。