ABAP ドメインの作り方

  オブジェクト

ドメインとは?

データエレメントから参照されるデータ定義されたオブジェクトを指す。データ型や項目長、又は、決められた値のみ許可するような設定を行う事ができる。
データエレメントはテーブルやプログラム等様々な場所で参照されるが、ドメインはデータエレメントからのみ参照できる。その為、ドメインを新規作成する場合はデータエレメントも作成する事になるだろう。

作成手順

以下ドメインの作る手順について記述します。
まずはトランザクション:SE11(ABAP ディクショナリ)を実行します。

ドメイン名の決め方

ドメインの入力欄に作成したい名称を入力します。
ドメイン名はYは検証用、Zは本番用等といったルールを持っている企業が多いと思います。
また、Z_TESTやZA_TESTといった風に_(アンダーバー)を2桁目、3桁目に入力できないよう制限がかかっています。
名称の入力が終わったら、「登録」ボタンを押します。

定義タブ

最初に「内容説明」にドメインの意味・用途等が分かる説明を入力しましょう。
次に「定義」タブ内で各入力欄を埋めます。「データ型」は文字列や数字、数量等といった基本となる型を入力します。以下の中から選択しましょう。

データ型意味
ACCP会計期間 YYYYMM
CHAR文字列
CLNTクライアント
CUKY通貨コード
CURR通貨
DATS日付
DEC計算/金額
FLTP浮動小数点数
INT11 バイト整数
INT22 バイト整数
INT44 バイト整数
LANG言語
LCHR文字 (長)
LRAWバイト順序 (長)
NUMC数値テキスト
PREC精度
QUAN数量
RAWバイト順序
RAWSTRING可変長のバイト順序
STRING可変長の文字列
TIMS時刻 HHMMSS
UNIT単位

次に「文字数」を入力します。その項目の要件に適した桁数を入力してください。
「小数点以下桁数」はDEC等の数値項目の際に使用します。
「出力長」は自動的に提案されます。特に変える必要はないと思います。
ルーチンは内部書式・外部書式を持ちたい際に使用します。よく使われるのはALPHA変換ですね。内部的には0埋めされた値で管理しているが、表示する際は先行0を除去して表示するという機能です。それ以外にもCONVERSION_xxxxx_INPUT、又は、CONVERSION_xxxxx_OUTPUTで定義されているルーチンを使用する事ができます。
「符号」は数量や金額の項目に+-(プラスマイナス)を持ちたい場合にチェックをつけます。「小文字」は大文字、小文字を区別したい場合にチェックをつけます。チェックをつけていない場合、小文字で入力しても大文字に変換されてしまうので注意してください。

この時点で有効化する事もできますが、入力可能な値を制限したい場合は「値範囲」タブへうつりましょう。

値範囲タブ

決められた値のみを入力可能とした場合は、「指定値のみ」に入力可能な値とその説明を入力しましょう。もし、それら以外の値が入力された場合はエラーとなるようになります。
※テーブル更新ジェネレータや画面項目から入力した場合のみとなり、プログラムで直接値を更新した場合はチェックされないので、気をつけてください。
「間隔」は範囲で指定できるのですが、あまり用途が思い浮かばず。
これらはドメインに対して直接設定される値となり、気軽に更新する事はできません。変更する際は、開発機で変更し各環境へ移送する事で変更可能です。

「値テーブル」は入力可能な値をテーブル上で管理しています。
標準のドメインではよく使用されており、ここから各ドメインの値が管理されているテーブルを調べる事もできます。