ABAP ディクショナリ 

目的

データ定義 ( メタデータ ) ABAP ディクショナリで登録および管理されます。 ABAP ディクショナリを使用すると、システムで使用されるすべてのデータを無駄なく集中的に定義することができます。情報が追加または変更されると、システムの全コンポーネントに自動的に反映されます。データの完全性、整合性およびセキュリティがこれによって保証されます。

これらのデータ定義を使用することで、下層のリレーショナルデータベースに対応するオブジェクト(テーブルやビュー)を登録することができます。つまり ABAP ディクショナリは、アプリケーションの開発で使用されるオブジェクトの論理構造を記述し、テーブルやビュー内でオブジェクトがベースとなるリレーショナルデータベースにどのようにマップされているかを示します。

ABAP ディクショナリでは、たとえば項目に入力ヘルプ (F4 ヘルプ ) を割り当てるための Dynpro 項目編集用の標準機能も提供しています。

ABAP ディクショナリに格納される情報

ABAP ディクショナリで最も重要なオブジェクトタイプはテーブル、ビュー、データ型、ドメイン、検索ヘルプおよびロックオブジェクトです。

テーブルは、データベースとは無関係に ABAP ディクショナリに定義されます。同じ構造を持つテーブルは、このテーブル定義を使用してベースとなるデータベースに登録されます。

ビューは複数テーブルに対する論理ビューです。ビューの構造は ABAP ディクショナリで定義されます。データベースに対するビューはこの構造から登録することができます。

データ型 ABAP プログラムで使用されます。データ型の構造は ABAP プログラムでグローバルに定義することができます。データ型に対する変更はそのデータ型を使用するすべてのプログラムに対して自動的に反映されます。

ロックオブジェクトは、複数のユーザによる同一データへのアクセスを同期させる目的で使用されます。アプリケーションプログラムで使用可能な汎用モジュールは ABAP ディクショナリのロックオブジェクトの定義を使用して生成されます。

技術的なデータ型が同じ複数の項目は ドメインを使用してまとめることができます。ドメインはそれを参照するすべてのテーブル項目と構造コンポーネントの値範囲を定義します。

入力テンプレートの項目の F1 ヘルプまたは F4 ヘルプにより表示される情報も、 ABAP ディクショナリに含まれます。テーブル項目内容の意味を説明する文書を データエレメントに対して登録します。入力ヘルプとして表示される入力可能値の一覧は 外部キーまたは 検索ヘルプによって登録されます。

ABAP ワークベンチ内の統合

ABAP ディクショナリは、 ABAP ワークベンチに完全に統合されています。 R/3 システムはインタプリタ的に機能するので、 ABAP ディクショナリは開発環境に能動的に統合されます。インタプリタは、元のオブジェクトではなく、これらのオブジェクトの内部表現だけを参照します。

ABAP ディクショナリ内で変更があったことをシステムが認識すると、オブジェクトの内部表現が自動的に調整されます。このため Dynpro ABAP インタプリタ、入力ヘルプ、データベースインタフェース、および開発ツールは、つねに最新のデータにアクセスすることができます。

以下の ABAP プログラムは、テーブル SCARR の航空会社とその ID を一覧表示します ( フライトモデルを参照 )

DATA: SCARR_TAB TYPE SCARR.

SELECT * INTO SCARR_TAB FROM SCARR.

WRITE: / SCARR_TAB-CARRID, SCARR_TAB-CARRNAME.

ENDSELECT.

構造 SCARR_TAB のみがプログラムで宣言されます。項目名、データ型および項目長などの、この項目に関するすべての情報は、 ABAP ディクショナリで定義されているテーブル SCARR からコピーされます。テーブル SCARR に関するこの情報はプログラム生成時に ABAP ディクショナリから呼び出されます。

つまり、テーブル SCARR に対する変更があった場合、たとえば項目の長さが変更された場合などに、プログラムのソーステキストを調整する必要はありません。次にプログラムが呼び出されると、テーブル SCARR の構造の変更が自動的に認識されます。プログラムは単純に再生成され、その際にテーブル SCARR に関する最新情報が ABAP ディクショナリから検索されます。

開発プロジェクトでの作業時には、 ABAP ディクショナリのオブジェクトは 有効化する前に何回でも変更することができます。有効化すると、システムの該当コンポーネントが利用可能になります。 ABAP ディクショナリでは、1つのオブジェクトの有効バージョンと無効バージョンを同時に持つことができます。

無効な ABAP ディクショナリオブジェクトは、実行システム (ABAP プロセッサ、データベースインタフェース ) に影響しません。したがってシステムを稼動させたままで複数のオブジェクトを大きく変更することができます。複数のオブジェクトの同時有効化はすべての変更が完了した時点でのみ可能です。