【SAP】SE11―ABAPディクショナリを5分で解説

ABAP

SE11:「ABAPディクショナリ」では、アドオン/SAP標準を問わず「テーブル」や「データ型」といったディクショナリオブジェクトを一元的に管理しています。

このページでは、ABAPディクショナリの機能を整理しつつ、各ディクショナリオブジェクトについてちょっとだけ深堀して解説していきます。アドオン開発では、導入初期から運用・保守フェーズにいたるまで本機能を使い続けることになるため、このページに記載している内容は網羅的に理解しておかなければなりません。

ABAPディクショナリの第1画面に沿って、解説を進めます。

SE11:ABAPディクショナリ第1画面
SE11:ABAPディクショナリ第1画面

SE11:ABAPディクショナリ概要

ABAPディクショナリは、SAPシステムで利用されているディクショナリオブジェクトの定義をする機能です。ディクショナリオブジェクトは以下の9個に分類されます。

  • テーブル
  • ビュー
  • データ型 ⇒ テーブルデータ型
  • データ型 ⇒ 構造
  • データ型 ⇒ データエレメント
  • データ型グループ
  • ドメイン
  • 検索ヘルプ
  • ロックオブジェクト

ご覧いただければわかるように、どのようなテーブルなのか、どのような構造なのか。また、どのようなデータ型なのか・・・等々を定義していきます。たまにデータの中身(レコード)の管理を行う「SE16/SE16N」と誤解してしまう方がいますので、注意しておきましょう。

  • SE11:オブジェクトの定義
  • SE16:オブジェクトの参照

※ABAPディクショナリで登録されたデータ定義はクライアント非依存のため変更したタイミングで全クライアントへ同時に反映されます。(クライアント依存/非依存についてはこちら

ABAPディクショナリに登録されたデータ定義は、汎用モジュールやプログラムから利用可能となります。

ディクショナリオブジェクトの分類

ABAPディクショナリと一言に行っても、登録できるオブジェクトタイプは大きく3種類に分類することができます。

データベースオブジェクトと、データ型、そしてそれ以外です。このように分類・整理することでABAPディクショナリの概要を理解する一助となります。

※分類については、何通りかありますが、一番わかりやすいと思う方法で解説していきます。

ここからは、上記3つの分類に基づきディクショナリオブジェクトについて深堀していきます。

データベースオブジェクト

データベースオブジェクトは、語弊を恐れずに言えば「データベースの定義」と説明できます。データベースオブジェクトに分類されるのは、テーブルとビューです。

ABAPディクショナリでテーブル定義を行うことで、データベースインターフェースを通してデータベース上へのデータ登録を行うことができます。

※データベースインターフェースって?という人は以下の記事をご覧ください。

テーブル

データベースオブジェクトの代表は、テーブルです。

テーブルについては、テーブル/構造/変数について解説した「内部テーブル/構造/変数―ABAPの3つの基本」ページをご覧ください。

ABAPディクショナリの機能からは、アドオンテーブルの新規定義を行います。実際の詳しい手順については、下記のページで詳しく解説しますので、合わせて知っておきたい方は以下ののページをご覧ください。

ビュー

ビューの定義もテーブルと同様、DBオブジェクトに分類されます。

ビューとは何か?更新ビューや射影ビューなどの詳細はこちらのページをご覧ください。

データ型

ABAPディクショナリで登録するオブジェクトタイプの二つ目はデータ型です。データ型は、DBオブジェクトのもとになる情報です。もう少しわかりやすい説明をすると「テーブルを構成する部品」がデータ型です。

すなわち、各テーブル構成はデータ型に分類されるディクショナリオブジェクトから成り立ちます(例外あり)。テーブル登録の前提となるのがデータ型に分類される「テーブルデータ型」「構造」「データエレメント」「データ型グループ」「ドメイン」の5つです。

ドメイン

ドメイン―定義タブ

ドメインとは、データ型(文字型・数値型・日付型等)や桁長(何文字か?)の属性情報を定義する最も基本となるオブジェクトです。後述するデータエレメントの参照先として利用するのが主な利用方法です。

ドメインでは、許容値を設定することも可能です。入力できる値を直接指定するか、間隔で指定することができます。

ドメイン―値範囲タブ

データエレメント

データエレメントは、ドメインや事前定義のデータ型を参照して項目の「意味属性」を定義します。「意味属性」というのは、ドメインで定義した「技術属性」と対をなす概念で、どのような項目であるか?を定義するものです。

ドメインが、「データ型」「桁長」などシステム的な制約情報を持つのに対して、データエレメントは「会社コード」や「メッセージ変数」など業務に近い意味を保持します。

データエレメントを事前に定義しておけば、TYPES命令で定義する際に参照することができます。


TYPES Z_STATUS TYPE CHAR2


データエレメント「CHAR2」を参照し、新たなデータ型を定義する例です。

また、データエレメントは「テーブル/ビュー」の各項目に対するテキストの定義にもなります。実際に業務ユーザの目に触れる設定のため、わかりやすい命名が重要となるオブジェクトでもあります。

構造

構造ついては、テーブル/構造/変数について解説した「内部テーブル/構造/変数―ABAPの3つの基本」ページをご覧ください。

ABAPディクショナリで登録することで、コーディング時にTYPES命令で定義せずに利用することが可能になります。

テーブルデータ型

テーブルデータはこちらのページで概念を理解すると良いです。

その他

その他に分類されるものは、検索ヘルプとロックオブジェクトです。こちらの概念は、これまで解説してきたデータベースオブジェクト・データ型の2つと性質が異なります。

検索ヘルプ

検索ヘルプは、データの検索時に利用されるオブジェクトです。項目に値を入力する際に「F4」ボタンを押下すると表示されるものです。ちなみに、ABAPディクショナリの画面でもF4ボタンを押すことができますね。

検索ヘルプの定義は「選択メソッド」の定義、「ダイアログtype」などから成り立ちます。

ロックオブジェクト

データベースをロックする際の制御を定義することができます。ロックオブジェクトには、ロックするテーブルとロック方法が定義されており、実際にはABAPではそのロックオブジェクトを呼び出す形で利用します。

ABAPディクショナリの理解は重要

ABAPディクショナリを理解することができれば、SAP内部のデータ保持の仕組みや設計思想が分かるようになります。

意外と重要性が分かりづらい機能でもありますが、具体的なイメージ図を頭に描けるようになると脱初心者という感じです。

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