本ページでは、ABAPにおける内部テーブルの属性を読み込む命令―。「DESCRIBE TABLE」について解説します。
DESCRIBE TABLEをあまり見かけない方もいらっしゃるかもしれませんが、実は1つのプログラムで1回ぐらいはよく使われている命令です。
このページで学べる内容
- DESCRIBE TABLE命令とは?使い方と意味
- LINESオプションの使い方
- OCCURSオプションの使い方
- KINDオプションの使い方
- DESCRIBE TABLE命令の使いどころと使用例
ABAPerであれば、知っておいて損はない知識ばかりですので、是非最後までご覧ください。
DESCRIBE TABLE命令とは?
DESCRIBE TABLE命令は、指定した内部テーブルの属性を読み取る命令です。(この命令では、内部テーブルの操作を行ったりレコードの追加・変更等は行いません。)
読み取りたい内部テーブルの属性に応じて3つのオプションがあり、オプションなしではDESCRIBE TABLE命令を利用することはできません。必ず、以下いずれかのオプションを指定する必要があります。
DESCRIBE TABLE命令の3つのオプション
- LINESオプション
- OCCURSオプション
- KINDオプション
それでは、DESCRIBE TABLE命令の構文ルールとオプションの利用方法を合わせて解説します。
【LINES】DESCRIBE TABLE
DESCRIBE TABLE (内部テーブル) LINES (変数).
LINESオプションを利用すると、内部テーブルの行数を判別することができます。判別した行数については、LINESオプションの後に指定した変数に格納されます。
LINESオプションの後に指定する変数には、整数しか入りませんのでデータ型は「i(整数)」でなければなりません。
※ABAPデータ型については、こちらのページで詳しく解説しております。不安な方は合わせてご覧ください。
もし、以下の内部テーブル「ITAB1」に対して、 DESCRIBE TABLE命令を用いた場合、変数「Z_i」には「9」が格納されることになります。
DESCRIBE TABLE ITBA1 LINES Z-i.
LINESオプションが最も利用頻度が高いです。MESSAGE命令を用いて、処理成功件数を画面表示したい場合などに用いる場合が多いです。
【OCCURS】DESCRIBE TABLE
DESCRIBE TABLE (内部テーブル) OCCURS (変数).
OCCURSオプションでは、内部テーブルの初期メモリ所要量(INITIAL SIZE)を判別することができます。
初期メモリ所要量とは、内部テーブルを宣言したタイミングで自動的に与えられるメモリサイズのことです。通常のプログラムであれば、この初期メモリ所要量を気にしなければいけないタイミングが(ほぼ)ないため、OCCURSオプションを用いたDESCRIBE TABLE命令を見かけることはまずありません。
OCCURSオプションの後に指定する変数は、LINESオプションと同様データ型「i(整数)」でなければなりません。
【KIND】DESCRIBE TABLE
DESCRIBE TABLE (内部テーブル) KIND (変数).
KINDオプションは、指定した内部テーブルのテーブルタイプを判別することができます。KINDオプションの後に指定した変数には、テーブルタイプに応じて以下のいずれかの文字が格納されます。
- 標準テーブルの場合「T」
- ハッシュテーブルの場合「H」
- ソートテーブルの場合「S」
そのため、KINDオプションの後に指定した変数のデータ型は「c(文字)」でなければなりません。
※ハッシュテーブル/ソートテーブルという単語にピンとこない方はこちらのページをご覧ください。
ABAPを1から勉強したい方は・・・
初めてABAPを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。
ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?
読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!