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列。
- 機能名: S/4HANAの機能名(画面名)
- T-CODE: 機能名に該当するトランザクションコード
- テーブル名: データテーブルの物理名
- テーブルの日本語名: データテーブルの論理名
- 平均レコード数: データテーブルに保存されているレコードの平均数
- 特記事項: データテーブルの用途、特徴、注意事項など
#ルール
- SAPシステムは複雑なので、T-CODEがアクセスしているデータテーブルは複数存在するのが通常である。それにも関わらず、テーブルを1,2個しか回答しないケースが多かったので、複数個を回答するよう明示的に指示している。また、「たとえば品目マスタなら、テーブル数は10個以上」という具体例を提示し、できるだけ多くのテーブルを回答させるようにしている。
- 「回答結果の値をダブルクォーテーションで囲まない」は、ChatGPTで出力される値が、ダブルクォーテーションで囲われていることが何度かあったため。防止策として指示している。
- 「あなたが実際のS/4HANAにアクセスできないことは理解しているので、それを述べる必要はない」は、「生成AIは実際のSAPシステムにアクセスできないから、回答は不正確かもしれない」云々の言い訳が鬱陶しいので、それを表示させないため。
- 「日本語で」は、回答を英語で返すことがあるため(ChatGPTあるある対策)。
- 平均レコード数についての条件は、敢えて指定していない。レコード数は、業界・業種や、会社・事業の規模などによって異なる。条件を指定しなかった時、生成AIはどのような回答を返すかを確かめるため。
出力結果の例
プロンプトを使い、ChatGPT 4/ChatGPT 4o/Gemini のそれぞれで回答を出力した結果は以下。
生成AIの回答は毎回同じになるとは限らないので、あくまで参考として見てほしい。
- 表の体裁は、実際の出力結果を元に、記事掲載用に加工している。
- 赤い文字は誤りだと認められる箇所。
ChatGPT 4
機能名 | T-CODE | テーブル名 | テーブルの日本語名 | 平均レコード数 | 特記事項 |
---|---|---|---|---|---|
品目マスタ | MM01 | MARA | 一般素材データ | 500,000 | 素材の基本情報 |
MARC | 工場ごとの素材データ | 1,000,000 | 工場固有の設定 | ||
MARD | 倉庫ごとの素材データ | 750,000 | 倉庫レベルの在庫情報 | ||
BOMマスタ | CS01 | STKO | BOMヘッダ | 300,000 | BOMの構造情報 |
STPO | BOMアイテム | 2,500,000 | 個々のBOMコンポーネント情報 | ||
作業区マスタ | CR01 | CRHD | 作業区マスタ | 50,000 | 作業区の定義と基本データ |
CRTX | 作業区テキスト | 45,000 | 作業区の説明テキスト | ||
作業手順マスタ | CA01 | PLKO | 作業手順ヘッダ | 150,000 | 作業手順の管理情報 |
PLPO | 作業手順操作 | 600,000 | 操作詳細情報 | ||
ビジネスパートナー(得意先) | BP | BUT000 | ビジネスパートナー一般情報 | 400,000 | BPの基本情報 |
BUT100 | ビジネスパートナー役割 | 500,000 | BPの役割ごとの詳細情報 | ||
ビジネスパートナー(仕入先) | BP | BUT000 | ビジネスパートナー一般情報 | 400,000 | BPの基本情報 |
BUT100 | ビジネスパートナー役割 | 500,000 | BPの役割ごとの詳細情報 | ||
購買情報 | ME21N | EKKO | 購買文書ヘッダ | 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/MM03 | MARA | 一般データ | 100,000 | 全品目の基本データ |
MAKT | 品目テキスト | 100,000 | 品目のテキスト情報 | ||
MARM | 単位データ | 100,000 | 計量単位に関するデータ | ||
MBEW | 会計データ | 100,000 | 評価エリアごとの会計データ | ||
MARC | 工場データ | 100,000 | 工場ごとの品目データ | ||
MARD | 在庫データ | 100,000 | 倉庫ごとの在庫データ | ||
MAST | BOMリンク | 100,000 | 品目とBOMのリンク | ||
MVKE | 販売データ | 100,000 | 販売組織ごとのデータ | ||
MLGN | 倉庫管理データ | 100,000 | 倉庫管理システムのデータ | ||
MLGT | 倉庫管理セクションデータ | 100,000 | 倉庫管理システムのセクションデータ | ||
EINA | 購買情報レコード | 100,000 | 購買情報の基本データ | ||
EINE | 購買組織データ | 100,000 | 購買組織ごとのデータ | ||
BOMマスタ | CS01/CS02/CS03 | STKO | BOMヘッダ | 50,000 | BOMのヘッダデータ |
STPO | BOM項目 | 500,000 | BOMの項目データ | ||
STAS | BOM代替項目 | 10,000 | 代替項目に関するデータ | ||
STZU | BOM階層 | 100,000 | BOMの階層データ | ||
作業区マスタ | CR01/CR02/CR03 | CRHD | 作業区ヘッダ | 20,000 | 作業区のヘッダデータ |
KAKO | キャパシティデータ | 20,000 | 作業区のキャパシティデータ | ||
CRCA | 作業区キャパシティ | 20,000 | 作業区のキャパシティデータ | ||
作業手順マスタ | CA01/CA02/CA03 | MAPL | 作業計画リンク | 50,000 | 品目と作業計画のリンク |
PLKO | 作業計画ヘッダ | 50,000 | 作業計画のヘッダデータ | ||
PLPO | 作業計画項目 | 500,000 | 作業計画の項目データ | ||
PLAS | 作業計画代替項目 | 10,000 | 代替項目に関するデータ | ||
ビジネスパートナー(得意先) | BP | BUT000 | 一般データ | 200,000 | BPの基本データ |
BUT020 | ロールデータ | 200,000 | BPロールに関するデータ | ||
KNA1 | 得意先マスタ | 100,000 | 得意先の基本データ | ||
KNVV | 販売データ | 100,000 | 販売組織ごとのデータ | ||
KNVP | 取引先データ | 50,000 | 取引先に関するデータ | ||
KNVK | 連絡先データ | 50,000 | 連絡先に関するデータ | ||
ビジネスパートナー(仕入先) | BP | LFA1 | 仕入先マスタ | 100,000 | 仕入先の基本データ |
LFM1 | 購買データ | 100,000 | 購買組織ごとのデータ | ||
LFAS | 代替仕入先 | 10,000 | 代替仕入先に関するデータ | ||
LFB1 | 会計データ | 100,000 | 会計エリアごとのデータ | ||
ADRC | 住所データ | 100,000 | BPの住所データ | ||
購買情報 | ME11/ME12/ME13 | EINA | 購買情報レコード | 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, MM03 | MARA, MARC, MBEW, MARD, … | 品目マスタヘッダ, 品目マスタプラント, 品目マスタ評価, 品目マスタ販売… | 10000 | 品目に関するマスターデータ。品目コード、品目名称、品目グループ、単位など |
BOMマスタ | CS01, CS02, CS03 | STPO, STKO, STPO_REL, … | BOMヘッダ, BOM構成品目, BOM関係… | 5000 | 製品を構成する部品と数量の関係を定義。 |
作業区マスタ | CO01, CO02, CO03 | CO01, CO02, CO03, … | 作業指示ヘッダ, 作業指示詳細, 作業指示履歴… | 2000 | 生産計画に基づいて生成される作業指示書の情報。 |
作業手順マスタ | CA01, CA02, CA03 | CA01, CA02, CA03, … | 作業手順ヘッダ, 作業手順詳細, 作業手順履歴… | 1500 | 製品を製造するための作業手順を定義。 |
ビジネスパートナー(得意先) | KD01, KD02, KD03 | KNA1, KNB1, ADRC, … | 得意先マスタヘッダ, 得意先マスタ会社コード, アドレス… | 8000 | 得意先に関するマスターデータ。得意先番号、名称、住所、支払条件など |
ビジネスパートナー(仕入先) | XK01, XK02, XK03 | LFA1, LFB1, ADRC, … | 仕入先マスタヘッダ, 仕入先マスタ会社コード, アドレス… | 5000 | 仕入先に関するマスターデータ。仕入先番号、名称、住所、支払条件など |
購買情報 | ME21N, ME22N, ME23N | EKKO, 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 4 | ChatGPT 4o | Google Bard | |
T-CODEの正しさ | ★★☆ | ★★★ | ★☆☆ |
テーブルの正しさ | ★★☆ | ★★☆ | ★☆☆ |
テーブルの網羅性(数) | ★★☆ | ★★★ | ★☆☆ |
最も使えそうなのは ChatGPT 4o であるが、ChatGPT 4 でも実用に耐えられそうである。
Google Gemini は誤回答が多いため、テーブル情報の調査で使用するのは避けた方がよさそうだ。
生成AIを使うことで、迅速かつ正確に必要な情報を取得できる。この記事で紹介したプロンプトや、実際の使用例を参考に、SAP S/4HANAの解析やアドオン開発の生産性を向上させてほしい。
【関連記事】
コメント