外部キー 

外部キーを登録することで、 ABAP ディクショナリ内のテーブル間の関係を定義することができます。

外部キーを使用すると、入力項目の値チェックを簡単に登録することができます。外部キーはまた、複数のテーブルをリンクして ビューまたは ロックオブジェクトを構成するために使用することもできます。

外部キー内の項目割当

外部キーによってテーブル T1 の項目がテーブル T2 の一次キー項目に割り当てられるので、結果的に2つのテーブルがリンクされます。

この場合、テーブル T1 外部キーテーブル ( 従属テーブル ) 、テーブル T2 チェックテーブル(被参照テーブル)とそれぞれ呼ばれます。 2 つのテーブルの対応する項目は、データ型と長さが一致しなければなりません。したがって、外部キーテーブルの 1 つの項目は、チェックテーブルの各キー項目に対応します。この項目を 外部キー項目と呼びます。

外部キーを使用すると、外部キーテーブルとチェックテーブル内のデータレコードを割り当てることができます。外部キーテーブルの各レコードは、外部キー項目のエントリを使用することでチェックテーブルの1つのレコードを一意に識別します。

チェック項目と値チェック

外部キー項目のうちの1つはチェック項目となります。外部キーの関係は、この項目に対して管理されます。

チェック項目に値が入力されると、外部キー項目の値によって定義されるキーを持つレコードがチェックテーブルに含まれるかどうかがチェックされます。含まれる場合このエントリは有効となります。含まれない場合このエントリはエラーとなります。

この例では、たとえば項目 2 2 項目 4 2 を入力することはできません。なぜなら 項目 5 = 2 項目 6 = 2 というレコードが T2 に含まれていないからです。

チェックテーブルのキー項目すべてに対してチェックを行ないたくない場合は、 ジェネリック外部キーと固定外部キーを使用することによって、チェックテーブルへの項目の割り当てから外部キーテーブルの項目を除外することができます。

入力チェックの原理

外部キーの定義から SELECT 命令が生成されます。チェック項目に値が入力されると、この SELECT 命令が実行されます。チェックテーブルに適切なレコードが見つかった場合、エントリは有効とみなされます。見つからない場合、そのエントリは無効です。

上記の図で示されている外部キーテーブルに対応する SELECT 命令は次のようになります。

SELECT * FROM T2 WHERE T2-FIELD5 = T1-FIELD2 AND T2-FIELD6 = T1-FIELD4.

この場合、 Dynpro 上のチェック項目 Field2 への入力が有効になるのは、 Dynpro 内の Field2 Field4 へのエントリをキーとして持つレコードが、チェックテーブルに含まれている場合のみになります。

フライトモデル内のテーブル SBOOK には、ある航空会社の予約状況が格納されます。予約は旅行会社、または直接航空会社のカウンタで行なうことができます。カウンタで予約が行なわれた場合、番号が予約情報と共にテーブル SBOOK の項目 COUNTER に格納されます。

この場合、正しいカウンタ番号だけを入力できるようにしなければなりません。テーブル SCOUNTER にはすべてのカウンタが登録されています。チェック項目 COUNTNUM に対して外部キーを登録することによって、必要な値チェックを定義することできます。

以下も参照してください。

多重構造の外部キー

外部キーの意味属性

外部キーの登録