毛利 亜紀子(もうり あきこ)
SAPジャパン フィールドサービス統括本部 エデュケーションサービス事業本部コンサルタント。SAP NetWeaver,エンタープライズSOA関連のトレーニングデリバリーを担当。

 前回はABAPワークベンチと呼ばれるプラットフォーム上の開発環境を使用して,最も簡単なABAPプログラムを開発しました。今回は,ABAPワークベンチの中でも特に重要な「ABAPディクショナリ」を実際に使用し,その役割を考えてみます。

 ABAPディクショナリは,テーブル定義やデータ型といった,ABAPプログラムで使用されるメタデータを一元的に管理するツールです。

 まず,ツールを起動してみましょう。前回と同じ手順でSAPシステム「NSP」にログオンしてください。画面左側のメニューから「Tools→ABAP Workbench→Development」とパスをたどり,「SE11 ABAP Dictionary」をダブルクリックしてツールを起動します。ABAPディクショナリの初期画面が表示されます(図1)。

図1●ABAPディクショナリの初期画面
図1●ABAPディクショナリの初期画面
[画像のクリックで拡大表示]

 ABAPディクショナリには,どのようなオブジェクトが管理されているのでしょうか。

 ABAPプログラムで使用するテーブルなどのデータベース・オブジェクトは,まずABAPディクショナリで定義します。このテーブル定義を有効化すると,データベースに実テーブルを生成します。

 ABAPシステムは,OSやDBMSのベンダーやバージョンに依存しない,アプリケーションの開発・運用環境であることに大きな特徴があります。ABAPディクショナリは,それを実現する仕組みの一つであり,DBMSに依存しないテーブル定義を提供します。

 それでは,実際のABAPディクショナリにアクセスして,テーブル定義を照会してみましょう。「Database table」項目に「scarr」と入力してください。これはABAP実習によく用いられる,航空会社データを格納するためのサンプル用テーブルです。「Display」ボタンを押すと,航空会社テーブルの定義情報が表示されます(図2)。

図2●サンプルとして用意されている航空会社テーブル(SCARR)の定義情報
図2●サンプルとして用意されている航空会社テーブル(SCARR)の定義情報
[画像のクリックで拡大表示]

 一般的なテーブル定義と同様に,ここではテーブルの列項目を定義します。このテーブル定義では「MANDT,CARRID,CARRNAME…」が項目名です。「内容説明(Short Description)」を見ると,対象となるデータは,航空会社コードや航空会社名であることがわかります。

 ABAPディクショナリのテーブル定義を「有効化」すると,データベース・テーブルが自動生成されます。データベース・テーブルには,実データを格納できます。

 この航空会社テーブルは有効化済みで,すでにサンプル・データが格納されています。テーブル定義の画面から,格納されているデータを照会してみましょう。ツールバーの内容ボタン内容ボタンをクリックし,次の画面で実行ボタン実行ボタンをクリックします。航空会社テーブルのデータが表示されます(図3)。このようなデータベースのデータにABAPプログラムからアクセスする方法については,次回紹介します。

図3●航空会社テーブルのデータ(レコード)
図3●航空会社テーブルのデータ(レコード)
[画像のクリックで拡大表示]

 さて,ABAPディクショナリでは,データベース・オブジェクトのほかに,データ型など,主にプログラムで使用されるオブジェクトも定義されます。これらのオブジェクトは,テーブル定義の基本エレメントとしても使用されます。

 終了ボタン終了ボタンを押して,もう一度航空会社テーブルの定義画面を表示してください。中程の列を見ると,テーブルの各列項目は「データエレメント(Data element)」と呼ばれるデータ型を参照していることがわかります。

 例えば,航空会社コード項目(CARRID)は,データ・エレメント「s_carr_id」を参照しています。「s_carr_id」をダブルクリックすると,ABAPディクショナリにおけるデータ・エレメントの定義を照会することができます(図4)。この場合は「CHAR型」の「長さ3」(3バイトではないことに注意)であることがわかります。

図4●データ・エレメント「s_carr_id」の定義。「CHAR型」で「長さ3」であることがわかる
図4●データ・エレメント「s_carr_id」の定義。「CHAR型」で「長さ3」であることがわかる
[画像のクリックで拡大表示]

 データ・エレメントには,型や長さといった技術的な属性のほかに,プログラムで使用できる,ラベルや項目説明などの意味的な属性が含まれます。このあと作成するプログラムで使用するので,ツールバーにある「Documentation」ボタンをクリックして項目説明を確認してみてください(図5)。

図5●データ・エレメント「s_carr_id」の項目説明(Documentation)
図5●データ・エレメント「s_carr_id」の項目説明(Documentation)