SAPトランザクションがアクセスするテーブルを生成AIで調べる方法

sap-table-transaction-code-ai

この記事は、指定したSAPシステムの機能がアクセスしているテーブルの情報を、生成AIを使って取得する方法を紹介する。

SAPシステムは、その中身や技術情報は基本的に非公開である。テーブル情報も例外ではない。

トランザクションコードがどのテーブルにアクセスしているのかを調べるには、通常、SAPシステムに精通しているエンジニアに頼るか、インターネット上の集団知を活用することになる。

しかし、生成AIを使用することで、これらの情報を迅速に取得することが可能である。

本記事では、トランザクションコードがアクセスしているテーブルを生成AIに調査依頼するためのプロンプトを紹介し、実際の使用例も交えて解説する。

目次

トランザクションコードとテーブルの関係

テーブルを理解することの意味

トランザクションコードは、SAPシステム内で特定の業務プロセスを実行するためのコマンドである。

例えば、受注伝票を登録するトランザクションコード「VA01」は、注文データを保存するために複数のテーブルにアクセスする。このようなテーブルには、注文ヘッダ情報を格納する「VBAK」や、注文明細を格納する「VBAP」などが含まれる。

トランザクションコードがどのテーブルにアクセスするかを理解することは、システムのカスタマイズやトラブルシューティングにおいて重要である。

また、アドオンプログラムなどの追加開発においては、欲しいデータがどのテーブルに格納されているのか、理解しておかなければ、SQL文などをコーディングすることができない。

トランザクションコードとテーブルの関係を調査する方法

SAPシステム上では、トランザクションコードとテーブルの関係を調査するために、以下のような方法が一般的に用いられる。

トランザクションコードの定義を見る

T-CODE:SE93より、トランザクションコードの本体プログラムを特定し、そのプログラムに関連する「ディクショナリ構造」を確認することで、アクセスしているテーブルを知ることができる。

SQLトレースを使う

T-CODE:ST05 を使用してSQLトレースを実行し、特定のトランザクションコードがどのテーブルに対してSQLを発行しているかを確認することができる。

関連する汎用モジュールを確認する

トランザクションコードが使用している汎用モジュール(BAPI)をT-CODE:SE37 で照会し、その中でアクセスしているテーブルを調べる方法もある。

SAPのテーブルを生成AIで調べる方法

テーブルを生成AIで調べるメリット

上記の方法は、いずれも時間がかかるし、根気も必要だ。

しかし、生成AIを使えば、指定した機能やトランザクションコードに関連するテーブルを、瞬時に調べることができる。さらに、テーブルの平均的なレコード数や、補足情報なども合わせて見せてくれるので、開発の手助けとなることだろう。

以下に紹介するプロンプトは、複数のトランザクションコードに関連するテーブル情報を、一度に表形式で出力することとができる。

生成AI + プロンプトで得られる情報

このプロンプトで得られるテーブル情報
  • 指定したトランザクションコードがアクセスしている、データテーブル(物理名、論理名)の抽出
  • データテーブルに登録されている、レコード数の平均
  • データテーブルの、用途、特徴
  • 指定されたトランザクションコードの、変更/廃止/変化無し の判定

サンプルプロンプト

テーブルを調査したいトランザクションコード、または機能名(画面名)は、「#機能」より下に記述する。

以下のサンプルでは、機能名を指定している。

# 依頼
あなたは{# 役割}です。SAP S/4HANAのプログラム開発を行うため、S/4HANAのトランザクションコード(T-CODE)がアクセスしているデータテーブルの調査をしています。次の{# ルール}を必ず守り、{# 機能名}からS/4HANAの機能名を読み取って、その機能がアクセスしているデータテーブル(透過テーブル)を{# 形式}の形式で出力してください。

# 役割
SAPシステムのコンサルタント

# 形式
- 表形式
- 列は{# データ項目}を参照

# データ項目
":"より左が結果として表示する列名。右が列に表示する内容。
- 機能名:{# 機能名}で与えられたS/4HANAの機能名
- T-CODE:機能名に該当するトランザクションコード
- テーブル名:データテーブルの物理名
- テーブルの日本語名:データテーブルの論理名
- 平均レコード数:データテーブルに保存されているレコードの平均数
- 特記事項:データテーブルの用途、特徴、注意事項など

# ルール
- T-CODEがアクセスしているデータテーブルは、必ず複数個ある。たとえば品目マスタなら、テーブル数は10個以上。
- T-CODEがアクセスしているデータテーブルが3個以下の場合、再調査すること。再調査してもテーブル数が3個以下の場合は、回答として出力してよい。
- 発見したデータテーブルは、一つ残らず全て表示すること。
- 一つのT-CODEについてデータテーブルを複数発見した場合、改行して複数行で表示する。
- 回答結果の値をダブルクォーテーションで囲まないこと。
- 回答結果の値の両端にダブルクォーテーションが付いていた場合、ダブルクォーテーションを除去する。
- あなたが実際のS/4HANAにアクセスできないことは理解しているので、それを述べる必要はない。
- 回答は{# 形式}による結果のみを出力すること。回答に関する、補足説明や注意書きは不要。
- 回答出力後に、質問者に対し、実際のシステムを確認するような注意を述べる必要はない。
- 回答は日本語で。

# 機能名
品目マスタ
BOMマスタ
作業区マスタ
作業手順マスタ
ビジネスパートナー(得意先)
ビジネスパートナー(仕入先)
購買情報

プロンプトの解説

プロンプトそのものの記述方法については、以下の記事を参考にしてほしい。

#役割

依頼内容が、SAPシステムの機能や、テーブルに関する情報を得ることなので、生成AIの役割は「SAPシステムのコンサルタント」としている。

#データ項目

結果の出力はCSV形式を指定している。出力する列は次の6列。

  1. 機能名: S/4HANAの機能名(画面名)
  2. T-CODE: 機能名に該当するトランザクションコード
  3. テーブル名: データテーブルの物理名
  4. テーブルの日本語名: データテーブルの論理名
  5. 平均レコード数: データテーブルに保存されているレコードの平均数
  6. 特記事項: データテーブルの用途、特徴、注意事項など

#ルール

  • SAPシステムは複雑なので、T-CODEがアクセスしているデータテーブルは複数存在するのが通常である。それにも関わらず、テーブルを1,2個しか回答しないケースが多かったので、複数個を回答するよう明示的に指示している。また、「たとえば品目マスタなら、テーブル数は10個以上」という具体例を提示し、できるだけ多くのテーブルを回答させるようにしている。
  • 回答結果の値をダブルクォーテーションで囲まない」は、ChatGPTで出力される値が、ダブルクォーテーションで囲われていることが何度かあったため。防止策として指示している。
  • あなたが実際のS/4HANAにアクセスできないことは理解しているので、それを述べる必要はない」は、「生成AIは実際のSAPシステムにアクセスできないから、回答は不正確かもしれない」云々の言い訳が鬱陶しいので、それを表示させないため。
  • 日本語で」は、回答を英語で返すことがあるため(ChatGPTあるある対策)。
  • 平均レコード数についての条件は、敢えて指定していない。レコード数は、業界・業種や、会社・事業の規模などによって異なる。条件を指定しなかった時、生成AIはどのような回答を返すかを確かめるため。

出力結果の例

プロンプトを使い、ChatGPT 4/ChatGPT 4o/Gemini のそれぞれで回答を出力した結果は以下。

生成AIの回答は毎回同じになるとは限らないので、あくまで参考として見てほしい。

  • 表の体裁は、実際の出力結果を元に、記事掲載用に加工している。
  • 赤い文字は誤りだと認められる箇所。

ChatGPT 4

機能名T-CODEテーブル名テーブルの日本語名平均レコード数特記事項
品目マスタMM01MARA一般素材データ500,000素材の基本情報
MARC工場ごとの素材データ1,000,000工場固有の設定
MARD倉庫ごとの素材データ750,000倉庫レベルの在庫情報
BOMマスタCS01STKOBOMヘッダ300,000BOMの構造情報
STPOBOMアイテム2,500,000個々のBOMコンポーネント情報
作業区マスタCR01CRHD作業区マスタ50,000作業区の定義と基本データ
CRTX作業区テキスト45,000作業区の説明テキスト
作業手順マスタCA01PLKO作業手順ヘッダ150,000作業手順の管理情報
PLPO作業手順操作600,000操作詳細情報
ビジネスパートナー(得意先)BPBUT000ビジネスパートナー一般情報400,000BPの基本情報
BUT100ビジネスパートナー役割500,000BPの役割ごとの詳細情報
ビジネスパートナー(仕入先)BPBUT000ビジネスパートナー一般情報400,000BPの基本情報
BUT100ビジネスパートナー役割500,000BPの役割ごとの詳細情報
購買情報ME21NEKKO購買文書ヘッダ250,000購買発注文書のヘッダ情報
EKPO購買文書アイテム2,000,000購買発注文書の各アイテム情報

「テーブル名」は、全て正しい。ただし、テーブルの数は少々物足りない。たとえば、品目マスタのテーブルは MARA, MARC, MARD の3テーブルを挙げているが、実際のテーブル数はもっと多い。

間違っていたのは、「購買情報」である。ME21N は購買発注登録で、正しいT-CODEは ME11 である。T-CODEを間違えてしまったため、そのテーブル名も間違っている。EKKO, EKPO はME21Nのテーブルだ。

テーブル数が物足りないが、ChatGPT 4 によるテーブル情報は概ね正しい。トランザクションコードさえ間違えなければ、十分実用に耐えられそうである。

ChatGPT 4o

ChatGPT 4 が更に進化した ChatGPT 4o の回答は、期待以上だった。

機能名T- CODEテーブル名テーブルの日本語名平均レコード数特記事項
品目マスタMM01/MM02/MM03MARA一般データ100,000全品目の基本データ
MAKT品目テキスト100,000品目のテキスト情報
MARM単位データ100,000計量単位に関するデータ
MBEW会計データ100,000評価エリアごとの会計データ
MARC工場データ100,000工場ごとの品目データ
MARD在庫データ100,000倉庫ごとの在庫データ
MASTBOMリンク100,000品目とBOMのリンク
MVKE販売データ100,000販売組織ごとのデータ
MLGN倉庫管理データ100,000倉庫管理システムのデータ
MLGT倉庫管理セクションデータ100,000倉庫管理システムのセクションデータ
EINA購買情報レコード100,000購買情報の基本データ
EINE購買組織データ100,000購買組織ごとのデータ
BOMマスタCS01/CS02/CS03STKOBOMヘッダ50,000BOMのヘッダデータ
STPOBOM項目500,000BOMの項目データ
STASBOM代替項目10,000代替項目に関するデータ
STZUBOM階層100,000BOMの階層データ
作業区マスタCR01/CR02/CR03CRHD作業区ヘッダ20,000作業区のヘッダデータ
KAKOキャパシティデータ20,000作業区のキャパシティデータ
CRCA作業区キャパシティ20,000作業区のキャパシティデータ
作業手順マスタCA01/CA02/CA03MAPL作業計画リンク50,000品目と作業計画のリンク
PLKO作業計画ヘッダ50,000作業計画のヘッダデータ
PLPO作業計画項目500,000作業計画の項目データ
PLAS作業計画代替項目10,000代替項目に関するデータ
ビジネスパートナー(得意先)BPBUT000一般データ200,000BPの基本データ
BUT020ロールデータ200,000BPロールに関するデータ
KNA1得意先マスタ100,000得意先の基本データ
KNVV販売データ100,000販売組織ごとのデータ
KNVP取引先データ50,000取引先に関するデータ
KNVK連絡先データ50,000連絡先に関するデータ
ビジネスパートナー(仕入先)BPLFA1仕入先マスタ100,000仕入先の基本データ
LFM1購買データ100,000購買組織ごとのデータ
LFAS代替仕入先10,000代替仕入先に関するデータ
LFB1会計データ100,000会計エリアごとのデータ
ADRC住所データ100,000BPの住所データ
購買情報ME11/ME12/ME13EINA購買情報レコード100,000購買情報の基本データ
EINE購買組織データ100,000購買組織ごとのデータ
EIPA一般データ100,000一般的な購買データ
EIKP価格条件100,000購買価格に関するデータ

ChatGPT 4のとき、トランザクションコードは一つのみだったが、ChatGPT 4o では登録/変更/照会の三種類全てを表示している。

なにより、ChatGPT 4 と比べてテーブル数が明らかに多い。ChatGPT 4 よりも知識量が増えたことが一目でわかる。しかし、よく見ると、一部のテーブルが正しくない。特に、品目マスタのテーブルは多かったが、誤りも多かった。これは、プロンプトの「品目マスタなら、テーブル数は10個以上」という指示がバイアスとなり、無理に件数を増やしたのかもしれない。

レコード数は、ChatGPT 4 とは違う値を返した。ChatGPT 4o の方は、ChatGPT 4 よりも一貫性のある回答をしているように見える。そう考える理由は、同じ機能のテーブルは全て同じ件数を回答しているからである。たとえば、品目マスタなら、どのテーブルのレコード数も 100,000 と答えている。

ChatGPT 4 では間違っていた、「購買情報」のT-CODEは、ChatGPT 4oでは修正されていた。

幾つかテーブル名を間違えたものの、テーブルを多く回答する点は評価したい。情報の誤りは開発の過程で気付けるが、情報が不足していると、自分で調査する手間が発生してしまい、生産性向上の妨げになるからである。

Gemini

機能名T-CODEテーブル名テーブルの日本語名平均レコード数特記事項
品目マスタMM01, MM02, MM03MARA, MARC, MBEW, MARD, …品目マスタヘッダ, 品目マスタプラント, 品目マスタ評価, 品目マスタ販売…10000品目に関するマスターデータ。品目コード、品目名称、品目グループ、単位など
BOMマスタCS01, CS02, CS03STPO, STKO, STPO_REL, …BOMヘッダ, BOM構成品目, BOM関係…5000製品を構成する部品と数量の関係を定義。
作業区マスタCO01, CO02, CO03CO01, CO02, CO03, …作業指示ヘッダ, 作業指示詳細, 作業指示履歴…2000生産計画に基づいて生成される作業指示書の情報。
作業手順マスタCA01, CA02, CA03CA01, CA02, CA03, …作業手順ヘッダ, 作業手順詳細, 作業手順履歴…1500製品を製造するための作業手順を定義。
ビジネスパートナー(得意先)KD01, KD02, KD03KNA1, KNB1, ADRC, …得意先マスタヘッダ, 得意先マスタ会社コード, アドレス…8000得意先に関するマスターデータ。得意先番号、名称、住所、支払条件など
ビジネスパートナー(仕入先)XK01, XK02, XK03LFA1, LFB1, ADRC, …仕入先マスタヘッダ, 仕入先マスタ会社コード, アドレス…5000仕入先に関するマスターデータ。仕入先番号、名称、住所、支払条件など
購買情報ME21N, ME22N, ME23NEKKO, EKPO, EBAN, …購買発注ヘッダ, 購買発注明細, 購買要求…12000購買に関するトランザクションの履歴。購買発注番号、品目、数量、納期など

ChatGPT に比べて、間違いが多い。

T-CODEからして多数間違えているが、ビジネスパートナーのT-CODEを「XK01」としたのは許しがたい間違いである。XK01 は旧SAPシステムの「仕入先マスタ」のT-CODEであり、S/4HANAでは完全に廃止されているからだ。

購買情報のT-CODEを ME21N としてしまうのは、ChatGPT 4 でも見られた間違いだが、購買情報は生成AIにとって間違いやすい要因が何かあるのであろうか?

Googleが持つ莫大な量のデータを利用できるGeminiは、ChatGPT よりも正確で豊富な回答をするだろうと期待していたが、結果ははっきり言って酷い。Geminiはテーブル調査の使用には耐えられないようだ。

まとめ:トランザクションがアクセスするテーブルを生成AIで調べる

SAPシステムの機能がアクセスしているテーブル情報を取得する各生成AIの能力を、下表に纏めておく(2024年8月時点の調査)。

日本語の機能名から、データテーブルを、どれだけ正確に、網羅的に提示できるか?というのを、上記の実行結果をもとに3段階で評価した。

ChatGPT 4ChatGPT 4oGoogle Bard
T-CODEの正しさ★★☆★★★☆
テーブルの正しさ★★☆★★☆★☆☆
テーブルの網羅性(数)★★☆★★★★☆☆

最も使えそうなのは ChatGPT 4o であるが、ChatGPT 4 でも実用に耐えられそうである。

Google Gemini は誤回答が多いため、テーブル情報の調査で使用するのは避けた方がよさそうだ。

生成AIを使うことで、迅速かつ正確に必要な情報を取得できる。この記事で紹介したプロンプトや、実際の使用例を参考に、SAP S/4HANAの解析やアドオン開発の生産性を向上させてほしい。

【関連記事】

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

コメント

コメントする

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

目次