SAP・ABAPの大きな特徴の1つが「テーブル」という概念です。
標準テーブル、アドオンテーブル、内部テーブルなど、ABAP初心者にとっては少々とっつきにくい様々なテーブルが存在します。
このページでは、SAP/ABAP初心者向けに様々なテーブルの種類を整理して解説。また、テーブルの作成方法やINSERT・DELETEなどの操作方法までわかりやすく1つのページに整理しました。
SAPエンジニアやABAPerを目指す方であれば知らないと恥ずかしい基本知識ですので、是非最後までご覧ください。
参考 ABAPの基本構文ルール
SAPの「テーブル」とは?
「テーブルとは何か?」を簡単に説明するとデータベースにおいてデータを管理する基本的な単位と言えます。
参考 データベースとは?
テーブルは、行(レコード)と列(フィールド)から成り、各フィールドには特定のデータ型と長さが設定されています。テーブルを用いて、関連するデータを構造化し、管理することができます。
Excelのようなものだと理解できればOKです。SAPでは、企業の日々の業務データがテーブルに格納され、これらのデータはトランザクション処理やレポート作成、決定支援システムなどで利用されるなど、SAPというシステムで重要な役割を果たしています。
SAPにおける様々な「テーブル」
以下に、SAPにおける「テーブル」の種類をできるだけMECEな形で整理してみました。
テーブルの種類 | 説明 |
---|---|
標準テーブル | SAPが提供するデータベースに実際に存在するテーブル |
トランスペアレントテーブル | 1つの論理テーブルが1つの物理的なデータベーステーブルに対応する |
プールテーブル | 複数の論理テーブルが1つの物理的なデータベーステーブルに格納される |
クラスタテーブル | 複数の論理テーブルが一緒に格納され、リンクされる |
アドオンテーブル | ユーザーやパートナー企業が特定のビジネス要件を満たすためにデータベースに作成するテーブル |
内部テーブル | ABAPプログラム内で一時的にデータを保持する |
標準内部テーブル | データが挿入された順に保持される |
ソート済み内部テーブル | キーに基づいて自動的にソートされる |
ハッシュ済み内部テーブル | ユニークなキーを使用してデータを直接アクセスする |
SAPでは、大きく分けて標準テーブル、アドオンテーブル、内部テーブルという3種類のテーブルが存在しています。
それぞれが明確な目的と役割を持ち、シーンによって適切に使い分けられる必要があります。ここでは、それぞれのテーブルの意味や目的、そのシステム的な特徴を1つ1つ整理していきましょう。
標準テーブル
標準テーブルとは、SAPにデフォルトで組み込まれているテーブルのことを指します。
これらのテーブルは、特定のビジネスプロセスや業務フローをサポートするために、SAPによって設計されており、各種業務データやマスタデータを格納します。
主な標準テーブルは以下の通り。よく耳にすることがあるはずのテーブル名かと思います。
テーブル名 | 説明 |
---|---|
BKPF | 会計伝票ヘッダ。全ての財務トランザクションに関するヘッダ情報(会計伝票番号、伝票日付、伝票タイプなど)が格納されています。 |
BSEG | 会計伝票明細。会計伝票の各明細行に関するデータ(借方または貸方の勘定科目、金額、通貨など)が格納されています。 |
MARA | 物料マスタ。物料マスタの全てのデータ(物料番号、物料タイプ、産業部門など)が格納されています。 |
VBAK | 販売伝票ヘッダ。販売伝票のヘッダ情報(販売伝票番号、販売伝票タイプ、販売組織など)が格納されています。 |
VBAP | 販売伝票明細。販売伝票の各明細行のデータ(物料番号、数量、単位、価格など)が格納されています。 |
KNA1 | 顧客マスタ。顧客マスタの全てのデータ(顧客番号、名前、住所など)が格納されています。 |
LFA1 | ベンダーマスタ。ベンダーマスタの全てのデータ(ベンダー番号、名前、住所など)が格納されています。 |
標準テーブルはシステム的な特徴から主に次の3つの種類に分けられます。基本的な考え方は同じですが、それぞれの特徴を理解しておくと効率的なコーディングが可能になります。
- トランスペアレントテーブル: 最も基本的なテーブルタイプ。1つの論理テーブルが1つの物理的なデータベーステーブルに対応します。物理データベースにおける各行と列が、トランスペアレントテーブルの行と列と一対一で対応します。
- プールテーブル: 複数の論理テーブルが1つの物理的なデータベーステーブル(テーブルプール)に格納される。データベースを効率的に利用することが可能になる。
- クラスタテーブル: 複数の論理テーブルが1つの物理的なデータベーステーブル(テーブルクラスタ)に一緒に格納され、リンクされる。関連性の高いデータを一緒に保管するために使用されます。
SAPでは、画面の見た目のまま実際のデータベースに登録されるわけではありません。トランスペアレントテーブルは、行と列の形でDBに格納されていますが、プールテーブル・クラスタテーブルについては、そのままの形では格納されてはいないのです。
プールテーブル・クラスタテーブルについては以下の記事で詳しく解説しておりますので、合わせて↓ご覧ください。
アドオンテーブル(カスタムテーブル)
アドオンテーブルとは、SAPにデフォルトで存在しないが、特定のビジネス要件を満たすために後から追加されるデータベーステーブルのことを指します。
つまり、SAPエンジニアやABAPerによってその企業のために独自に作成されるテーブルのことです。
アドオンテーブルは、企業独自のデータフィールドや構造を持つことができます。通常、「Z」始まりの名称で定義され、日本でSAPを利用している企業であればほとんどの企業でこのアドオンテーブルが活用されています。
熟練のSAPエンジニアでも、アドオンテーブルはその企業のSAP開発に関わっていない限り仕様を知らないため、新しくその企業のSAP開発に関わる際には、まず初めにアドオンテーブルの一覧やその仕様を確認するというが一般的。
アドオンテーブルの作り方、活用方法については以下の記事で詳しく解説しておりますので、こちらも要チェック!
内部テーブル
内部テーブルとは、プログラム実行時にのみメモリ上に存在するテーブルのことです。
プログラムが実行されている間だけ存在し、プログラムが終了すると自動的にメモリから削除されます。
内部テーブルは、大量のデータを効率的に処理するための重要なプログラミングツールであり、以下のような多くの用途があります。
- データベーステーブルからデータを読み込み、それを加工、フィルタリング、またはソートする。
- レポートを生成するための集計データを計算・保存する。
- ユーザーインターフェース(画面)で一覧表示を行うためのデータを保持する。
- 独自の複雑なデータ構造を作成する。
内部テーブルはさらに細かな種類に応じて以下4つのタイプがあります。
- 標準テーブル(Standard Tables)
- ソートテーブル(Sorted Tables)
- ハッシュテーブル(Hashed Tables)
- レンジテーブル(Range Table)
上記4つの使い分け、ABAPにおけるコーディング方法は以下の記事で詳しく解説しておりますので、初心者の方は必ずチェックしておきましょう。
テーブル操作(CRUD)
ここからは、各種テーブルに対するCRUD操作(登録・取得・更新・削除)の方法を詳しく見ていきましょう。
ABAPでは、①標準テーブル/アドオンテーブルに対する操作と、②内部テーブルに対する操作が微妙に異なります。
例えば、標準/アドオンテーブルからデータを取得する際はSELECT文ですが、内部テーブルからデータを取得する際にはREAD TABLE文です。
以下にそれぞれのパターンに応じたCRUD操作の一覧を整理しましたので、まずは以下を頭に入れましょう。詳しい構文ルールや処理の内容はリンク先のページでご確認いただけます。
↑の表は基本的なCRUD操作のみをカバーしており、より高度な操作には追加で理解すべき内容がいくつか存在します。
上記、基本的な操作方法を理解できた方は、応用的な内容として↓の記事をご確認ください。
SAP:テーブルのまとめ
初めてABAPを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。
ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?
読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!