本記事では、SAP GUIで実行中のT-CODEがアクセスしているデータベーステーブルを特定する具体的な手順をいくつか紹介する。
実行中T-CODEから調べる方法
技術情報(F1キー)からテーブルをたどる
SAP GUIでは、画面上の任意の項目(フィールド)を選択し、以下の手順を踏むことで、参照しているテーブルやフィールド情報を取得できる。
たとえば、品目マスタの登録/変更/照会を行う T-CD: MM01/ MM02/MM03 にある「品目コード」の技術情報を調べるには、以下のように操作する。
- 実行中のT-CODEの画面上で、調べたい項目(以下の例では品目コード)を選択する。

- F1キーを押下し、“Performance Assistant” 画面を表示させる。
- 「スパナ」のアイコン(技術情報)をクリック

- 表示された「技術情報」画面にて、テーブル名と項目名を確認する。

この方法は、利用中の画面項目から直接的に調べることができるため、開発者からエンドユーザまで、幅広く利用される。
「構造」と「透過テーブル」
上記の「技術情報」画面に表示されている「テーブル名」であるが、T-CD:SE16などでデータ検索しても実データを得ることはできない。
この理由は、技術情報に表示されるテーブル名は、テーブルの「構造」だからである。
構造(Structure): SAPシステムの内部だけで使われる論理的なデータ型の定義

構造は、物理的なデータを格納するテーブルではない。プログラム内の作業領域(Work Area)やインターフェース(例:汎用モジュールのパラメータ)として使われる、表形式のデータ構造である。また、SAP GUI の画面(Dynpro)のフィールド定義にも使われる。
一方、実データが格納されているテーブルは、SAPでは「透過テーブル」という。
透過テーブル: HANAデータベースに物理的に存在し、実データを格納しているテーブル
「構造」から透過テーブルを検索する方法
「構造」から透過テーブルをたどるには、次のように操作する。
- T-CODE: SE11「ABAPディクショナリ」を開始。
- 「DBテーブル」に「構造」の名前を入力して[Enter]キー押下。

- 「Componentタイプ」列の「MATNR(品目コード)」をダブルクリック。

- データエレメントを表示させ、メニューから「使用先一覧」をクリック。

- 「データエレメント」画面が開くので、「Table fields」にチェックをつけて[Enter]キー押下。

- 透過テーブルとフィールドの一覧が表示される。

データ項目「品目コード」は多くのテーブルで使用されている。そのため、上記リストに表示される透過テーブルには、品目マスタ以外のテーブルも多数含まれる。これだけ沢山のテーブルの中から、品目マスタがアクセスする透過テーブルを特定するのは非常に効率が悪い。
したがって、この方法は使用先が限られる項目には有効だが、品目コードのように多方面で使用される項目には向いていない。
トレースツール(ST05)でテーブルアクセスを記録する
トランザクション(T-CODE)や Fioriアプリなど、SAPのプログラムは実行時、SQL文を用いて透過テーブルにアクセスしている。したがって、SQL文をトレース(キャプチャ)すれば、SQLに書かれているテーブル名を特定できる。
T-CD: ST05「SQLトレース」は、実行されたSQL文をトレースできるトランザクションである。ST05を使ったSQLのトレースは以下の手順で行う。
- 調査対象のT-CD(この例では ME1L:仕入先別購買情報の一覧)またはを起動し、検索条件の入力など、処理を実行する直前までの状態にしておく。

- 新規 GUI ウィンドウを開始し、そのウィンドウから T-CD: ST05 を開始。
- 「SQL Trace」にチェックを入れて、上段のメニューから「Active Trace」(F8キー)をONにする。

- 調査対象のT-CDに戻り、処理を行う(下の例ではF8キー押下)。
- ST05に戻り、「Diactivate Trace」(F6キー)を押下してトレースをオフにする。

- 「Display Trace」(F7キー)を押下。

- フィルター条件を入力する。SQLを見るのが目的なので「SQL Trace」にチェックを入れる。
多くのユーザが同時にシステムを利用している環境では、SQLは大量に出力されているため、調査対象のT-CDを実行した時間帯や、「User Name」にユーザIDを入力すると絞りやすくなる。

- 列「Statment」にSQL文が、「Object Name」にそのSQLに書かれている透過テーブル名が表示されている。

ST05を実行したり、多くのSQLの中からテーブルを特定したりする作業は手間だが、「Object Name」列から実際にアクセスしている透過テーブル名を知ることができる。
プログラム名から裏のテーブルを確認する
トランザクション(T-CODE) の本体であるプログラムの中身を確認し、アクセスしているテーブルを調べるという王道的手法である。
とはいえ、ABAPソースコードのすべてを見る必要はない。まず、T-CODEの本体プログラムを次の手順で特定する。
- 調査対象のT-CDを開始し、メニュー「システム」->「ステータス」を開く。
- 「プログラム」(プログラムID)の値をメモする。

プログラムIDを取得できたら、次は
- T-CD: SE80(オブジェクトナビゲータ)を開始する。
- 画面左側にある「リポジトリブラウザ」より「プログラム」を選択し、メモしたプログラムIDを入力、[Enter]キーを押下。
- 「オブジェクト名」ツリー下の「ディクショナリ構造」から、テーブル名を確認することができる。

「ディクショナリ構造」には、透過テーブル以外のビューや「構造」も表示されるため、透過テーブルかどうかを見極めるには、T-CD: SE11 でテーブルを照会すればよい。
まとめ:実行中のT-CODEからテーブル名を取得
実行中のT-CODE(トランザクション)からテーブル名を検索する方法を以下の表で整理しておく。
F1キー 技術情報 | ST05 SQLトレース | SE80 リポジトリブラウザ | |
---|---|---|---|
テーブル特定のしやすさ | 使用先が多いと探し難い | SQLの参照先なので確実 | テーブル判別が難しい |
操作の手間 | 直感的、簡単 | トレース手順が煩雑 | ディクショナリ構造を参照 |
利用者層 | エンドユーザから開発者まで | 開発者・コンサル | 開発者 |
T-CODEが参照しているテーブル名やフィールド名を調べることは、カスタム開発プログラム(アドオン)やSAPクエリを作成するうえで欠かせないスキルのひとつである。本記事で紹介した方法が、テーブル名の検索に役立てば幸いである。
SAPの品目マスタは、参照しているテーブルや項目が特に多いトランザクションである。品目マスタが参照してるテーブルを調べる具体的な方法を解説した記事は以下。

コメント