SAPテーブル名の調べ方|実行中T-CODEのテーブルを取得する

SAPの実行中T-CODEからテーブル名を調べる

本記事では、SAP GUIで実行中のT-CODEがアクセスしているデータベーステーブルを特定する具体的な手順をいくつか紹介する。

目次

実行中T-CODEから調べる方法

技術情報(F1キー)からテーブルをたどる

SAP GUIでは、画面上の任意の項目(フィールド)を選択し、以下の手順を踏むことで、参照しているテーブルやフィールド情報を取得できる。

たとえば、品目マスタの登録/変更/照会を行う T-CD: MM01/ MM02/MM03 にある「品目コード」の技術情報を調べるには、以下のように操作する。


  1. 実行中のT-CODEの画面上で、調べたい項目(以下の例では品目コード)を選択する。
項目の品目コードを選択
  1. F1キーを押下し、“Performance Assistant” 画面を表示させる。
  2. 「スパナ」のアイコン(技術情報)をクリック
Performance Assistant 画面
  1. 表示された「技術情報」画面にて、テーブル名項目名を確認する。
「技術情報」画面

この方法は、利用中の画面項目から直接的に調べることができるため、開発者からエンドユーザまで、幅広く利用される。

「構造」と「透過テーブル」

上記の「技術情報」画面に表示されている「テーブル名」であるが、T-CD:SE16などでデータ検索しても実データを得ることはできない。

この理由は、技術情報に表示されるテーブル名は、テーブルの「構造」だからである。

構造(Structure)SAPシステムの内部だけで使われる論理的なデータ型の定義

ディクショナリ:構造照会

構造は、物理的なデータを格納するテーブルではないプログラム内の作業領域(Work Area)やインターフェース(例:汎用モジュールのパラメータ)として使われる、表形式のデータ構造である。また、SAP GUI の画面(Dynpro)のフィールド定義にも使われる。

一方、実データが格納されているテーブルは、SAPでは「透過テーブル」という。

透過テーブルHANAデータベースに物理的に存在し、実データを格納しているテーブル

「構造」から透過テーブルを検索する方法

構造」から透過テーブルをたどるには、次のように操作する。

  1. T-CODE: SE11「ABAPディクショナリ」を開始。
  2. DBテーブル」に「構造」の名前を入力して[Enter]キー押下。
ABAPディクショナリ:第一画面
  1. Componentタイプ」列の「MATNR(品目コード)」をダブルクリック。
「Componentタイプ」列の「MATNR(品目コード)」
  1. データエレメントを表示させ、メニューから「使用先一覧」をクリック。
データエレメント照会
  1. データエレメント」画面が開くので、「Table fields」にチェックをつけて[Enter]キー押下。
データエレメントから「Table fields」を選択
  1. 透過テーブルとフィールドの一覧が表示される。
透過テーブルとフィールドの一覧

データ項目「品目コード」は多くのテーブルで使用されている。そのため、上記リストに表示される透過テーブルには、品目マスタ以外のテーブルも多数含まれる。これだけ沢山のテーブルの中から、品目マスタがアクセスする透過テーブルを特定するのは非常に効率が悪い。

したがって、この方法は使用先が限られる項目には有効だが、品目コードのように多方面で使用される項目には向いていない

トレースツール(ST05)でテーブルアクセスを記録する

トランザクション(T-CODE)や Fioriアプリなど、SAPのプログラムは実行時、SQL文を用いて透過テーブルにアクセスしている。したがって、SQL文をトレース(キャプチャ)すれば、SQLに書かれているテーブル名を特定できる。

T-CD: ST05「SQLトレース」は、実行されたSQL文をトレースできるトランザクションである。ST05を使ったSQLのトレースは以下の手順で行う。


  1. 調査対象のT-CD(この例では ME1L:仕入先別購買情報の一覧)またはを起動し、検索条件の入力など、処理を実行する直前までの状態にしておく。
T-CD: ME1Lの開始
  1. 新規 GUI ウィンドウを開始し、そのウィンドウから T-CD: ST05 を開始。
  2. SQL Trace」にチェックを入れて、上段のメニューから「Active Trace」(F8キー)をONにする。
ST05 SQL Trace On
  1. 調査対象のT-CDに戻り、処理を行う(下の例ではF8キー押下)。
  1. ST05に戻り、「Diactivate Trace」(F6キー)を押下してトレースをオフにする。
ST05 SQL Trace Off
  1. Display Trace」(F7キー)を押下。
ST05 Display Trace
  1. フィルター条件を入力する。SQLを見るのが目的なので「SQL Trace」にチェックを入れる。
    多くのユーザが同時にシステムを利用している環境では、SQLは大量に出力されているため、調査対象のT-CDを実行した時間帯や、「User Name」にユーザIDを入力すると絞りやすくなる。
ST05 Filter Conditions for Trace Records
  1. 列「Statment」にSQL文が、「Object Name」にそのSQLに書かれている透過テーブル名が表示されている。

ST05を実行したり、多くのSQLの中からテーブルを特定したりする作業は手間だが、Object Name」列から実際にアクセスしている透過テーブル名を知ることができる

プログラム名から裏のテーブルを確認する

トランザクション(T-CODE) の本体であるプログラムの中身を確認し、アクセスしているテーブルを調べるという王道的手法である。

とはいえ、ABAPソースコードのすべてを見る必要はない。まず、T-CODEの本体プログラムを次の手順で特定する。

  1. 調査対象のT-CDを開始し、メニュー「システム」->「ステータス」を開く。
  2. プログラム」(プログラムID)の値をメモする。
システム: ステータスの「プログラムID」

プログラムIDを取得できたら、次は

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

「ディクショナリ構造」には、透過テーブル以外のビューや「構造」も表示されるため、透過テーブルかどうかを見極めるには、T-CD: SE11 でテーブルを照会すればよい。


まとめ:実行中のT-CODEからテーブル名を取得

実行中のT-CODE(トランザクション)からテーブル名を検索する方法を以下の表で整理しておく。

スクロールできます
F1キー
技術情報
ST05
SQLトレース
SE80
リポジトリブラウザ
テーブル特定のしやすさ使用先が多いと探し難いSQLの参照先なので確実テーブル判別が難しい
操作の手間直感的、簡単トレース手順が煩雑ディクショナリ構造を参照
利用者層エンドユーザから開発者まで開発者・コンサル開発者

T-CODEが参照しているテーブル名やフィールド名を調べることは、カスタム開発プログラム(アドオン)やSAPクエリを作成するうえで欠かせないスキルのひとつである。本記事で紹介した方法が、テーブル名の検索に役立てば幸いである。


品目マスタが参照しているテーブルは?

SAPの品目マスタは、参照しているテーブルや項目が特に多いトランザクションである。品目マスタが参照してるテーブルを調べる具体的な方法を解説した記事は以下。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次