変数・構造・内部テーブル―SAPデータオブジェクトの基本を1分で解説

ABAP

ABAPをコーディングする上で基本知識となる変数構造内部テーブル―SAPのデータオブジェクトの基本について解説します。

「内部テーブル」も「構造(ワークエリア)」も「変数」も、どれもプログラム実行中のみ存在する作業領域(メモリ領域)のことを表すABAP用語です。初心者の方は意外とこの3つを区別できていないことが多いので、できるだけ分かりやすくイメージ図付きで解説していきます。

変数,構造,内部テーブル
このページで学べる内容
  • メモリ領域とは?
  • 変数/構造/内部テーブルの違い
  • 変数/構造/内部テーブルの宣言方法

これからABAPを勉強する方であれば、絶対に知っておきたい基礎知識ですので、是非最後までご覧ください。

それでは、早速解説を始めます。

スポンサーリンク
スポンサーリンク

前提:利用するタイミング

内部テーブル / 構造(ワークエリア) / 変数

これらは、すべて共通して「プログラム実行中のみ」に存在する一時的なメモリ領域です。プログラムを人間として置き換えると、メモリ領域というのは「メモ帳」のようなものです。

プログラムを人間として置き換えると、メモリ領域というのは「メモ帳」のようなものです。

あれやこれやと作業している最中に、「あ、これは忘れないで覚えておこう」とか「これは後で使えるように手元にひかえておこう」とか。

プログラムの中でその役割を担うのが、「内部テーブル」であり「構造」であり「変数」です。ABAPでは、この3つのメモ帳をうまく用いながら様々な処理を行っていきます。

変数・構造・内部テーブルー。それぞれどのような違いがあって、どのように使い分けるか?

ここからは、変数 / 構造 / 内部テーブル / の違いにスポットを当てて解説を進めます。

内部テーブル/構造/変数 のイメージ

結論から提示します。

内部テーブル / 構造(ワークエリア)/ 変数のイメージ図は以下の通り。

変数と構造と内部テーブルの違い

ABAPerは、変数/構造/内部テーブルといったら、これらのイメージ図が頭に思い浮かびます。これらの共通概念をもとに会話が進んでいくのです。

1つひとつ、深堀しながら解説していきます。

変数


変数はExcelで例えると「1つのセル」に相当します。つまり、変数にはデータを1つだけ格納することができます。2つ以上のデータを1つの変数に格納することは不可能です。

後述する「構造(ワークエリア)」と「内部テーブル」は、究極するところ変数の集合体であるととらえることもできます。

最も基本的なデータオブジェクトの1つですので、しっかりと理解しておきましょう。

変数の定義方法

DATA (変数名) TYPE (データ型).


変数の定義には、DATA命令を用います。

TYPEオプションの後ろに指定したデータ型を持つ変数が定義されます。データ型として「D:日付型」を指定すれば、日付を格納する変数が宣言されるということです。

DATA Z_DATE TYPE D.

ちなみにこの変数については、ABAPに限らず他の言語に共通する概念です。何となく他のプログラミング言語とも比較してみたいという方は以下の記事をご覧ください。

構造


構造はExcelで例えると1行の複数セルに相当します。

「構造」は「ワークエリア」とも呼ばれる場合もあります。例えば、テーブルからデータを1行だけ取り出して処理を行いたい場合。このタイミングで構造を用います。

具体的に言えば、ループ処理では処理の対象とする内部テーブルを1度にすべて処理を実行するのではなく、1行1行別で定義した構造にデータを格納した後に処理を行うのです。

構造の定義

構造の定義方法は以下の通り。


DATA (変数名) TYPE (テーブル名).


(テーブル名)には、標準テーブルの名称(BKPFとかBSEG)、もしくはアドオンテーブルの名称を指定します。

初心者の方は躓きがちなポイント。テーブルをTYPEオプションに指定すると構造が定義されるという点を理解しましょう。

決して、テーブルが定義されるわけではありませんので要注意。

内部テーブル


内部テーブルは、ご覧の通り複数行の構造です。

「テーブル」の名の付く通り、複数のレコードを保持することができるメモリ領域です。

標準テーブルやアドオンテーブルのデータをそっくりそのまま(もしくは条件を絞って)メモしたい、というときに便利です。

内部テーブルの定義

DATA (変数名) TYPETABEL OF (テーブル名).


変数・構造と同様DATA命令を用います。

TYPEオプションの後ろに「TABLE OF」と記述します。

構造と内部テーブルの定義はセットで覚えましょう。内部テーブルは、ABAPプログラミングの根幹にかかわる知識で、変数・構造と比較して少しだけ細かい知識も必要になります。

内部テーブルを完全に理解したい!という方は、下記の記事を合わせてご覧ください。

これで、変数・構造・内部テーブルの違いについては何となくイメージを掴むことができたのではないでしょうか。

冒頭でも述べましたが、3つのデータオブジェクトの違いを理解できていないと、ABAPを用いたプログラミング開発は不可能です。必ずマスターしておきましょう。

変数と構造と内部テーブルの違い

ABAPを1から勉強したい方は

ABAPを1から学習したい方のために、ABAPの基本知識・基礎概念を1つのページにまとめました。

現在、完全無料で公開しておりますので、是非ご覧ください!

タイトルとURLをコピーしました