データオブジェクトとデータ型
7.3 データオブジェクトとデータ型
データオブジェクトとデータ型について
「データオブジェクトとは?データ型とは?」と自分で調べると、初心者には理解し難い複雑な説明が出てきます。
ここではシンプルに以下のように定義します
・データオブジェクトは「箱 」
・データ型は「箱の大きさや 、箱に入れることができる物の情報 」。
データオブジェクトとは
データオブジェクトは「箱」。
プログラムでは様々なデータのやり取りを行いますが、
データには置き場所が必要となります。
このデータを入れる箱をデータオブジェクトと呼びます。
データ型とは
データ型は「箱の大きさや、箱に入れることができる物の情報」。
データオブジェクトに格納できるデータの大きさ(長さ)や、数字だけや文字だけしか格納できない等の属性情報は
データ型と呼びます。
一般的には変数を定義する際に、その変数に代入する値の型を指定しますが、特定の値が自動的に元の型とは違う型に変換される場合もあります。
例えば、
DATA NN TYPE I.
DATA NNN TYPE C.
上記のように、整数型のI・文字列型のCとして型を定義した変数でも、
NNN = ‘1’.
NN = NNN.
このように、代入によってCの文字型から、Iの数値型へ暗黙的に変換(キャスト)することが可能です。
データオブジェクトの種類
■単一項目:単一項目は、仕切りも段数も何もないシンプルな1つの箱のようなイメージです。表計算ソフトで例えると、セルに当たります。
■構造:構造は、箱を横に複数個つなげた、または細長い箱に仕切りをつけたイメージです。表計算ソフトでは、1行の表に当たります。
■テーブル:テーブルは、構造を何段にも重ねた棚のようなイメージです。表計算ソフトでは、複数行の表に当たります。
ABAP ディクショナリの各要素の関係性
ABAPディクショナリでは、データ型、ドメイン、テーブル、ビュー、検索ヘルプおよびロックオブジェクトの登録と管理を行います。
ABAPディクショナリの中で、
ドメイン → データ型(データエレメント、構造、テーブルデータ型) → テーブルには依存関係があります。
ドメイン
ドメインは、データ型や桁数などの組み合わせを定義するオブジェクトです。
データエレメントの参照先として利用されます。
※ドメインでは、許容値を設定することも可能です。入力できる値を直接指定するか、間隔で指定することができます。
ドメインの作成
① ABAPディクショナリ(SE11)で「ドメイン」を選択します。
② ドメイン名称「ZDTESTYYMM(YYMMは研修年月)_xxxx(名前のローマ字)」を入力します。
例:ZDTEST2501_KANDA
③ 「登録」ボタンをクリックします。
④ 内容を入力し、「保存」→「有効化」します、
データ型:データエレメント
データエレメントは、ドメインや事前定義のデータ型を参照して項目の「意味属性」を定義します。
「意味属性」というのは、ドメインで定義した「技術属性」と対をなす概念で、どのような項目であるか?を定義するものです。
データエレメントの作成
① ABAPディクショナリ(SE11)の「データ型」を選択します。
② 名称「ZECUSTOYYMM(研修年月)_xxxx(名前のローマ字)」を入力し、「登録」を押下します。
例:ZECUSTO2501_KANDA
③ タイプは「データエレメント」を選択し、「✔」を押下します。
④ 内容を入力します。
⑤ 「項目ラベル」タブをクリックし、内容を入力して「保存」→「有効化」します。
データ型:構造
構造は、データベースの1つの行(レコード)にあたります
図の顧客コード、顧客名、業種、所在地、電話番号のような構成要素を持ちます
この構成要素を項目と言い、構造は、いくつかの項目から作成されている。
(よって、前述のドメイン、データエレメントが “未登録” の場合は構造を作成できない)
※ABAPディクショナリで登録することで、コーディング時にTYPES命令で定義せずに利用することが可能になります。
構造の作成
① 「データ型」を選択
名称「ZSCUSTOYYMM(YYMMは、研修年月)_xxxx(名前のローマ字)」を入力し、「登録」をクリックします。
例:ZSCUSTO2501_KANDA
② 「構造」を選択し、✔をクリックします。
③ 内容を入力し、「保存」→「有効化」で登録します。