生成AIプロンプト|SAPの機能(T-CD)がアクセスしているテーブルを調べる

SAPシステムがアクセスしているデータテーブル

生成AIを使って、SAPシステム(SAP ERP, SAP S/4HANA)の機能名から、その機能がアクセスしているT-CDと、データテーブルの一覧を作成してみよう。

本記事は、ChatGPTGoogle Gemini などの生成AIに、貼り付けるだけで使える、プロンプト(命令文)を紹介する。

SAPシステムの中身は非公開

SAPシステムも情報システムの一つ。
そのデータは、リレーショナルデータベース(RDB)のテーブルに保存されている。

たとえば、「品目マスタ」(T-CD:MM01)のテーブルなら、MARA, MAKT, MARC... など複数のテーブルに保存されていることが知られている。

しかし、どの機能のデータが、どのテーブルに保存されているのか、といった具体的な技術情報を、SAP社は公式には公開していない。

SAPシステムの中身は、基本的に非公開なのだ。

個々の機能(トランザクションコード:T-CD)が使用しているテーブルを知りたい場合、SAPコンサルトと呼ばれる、SAPシステムの専門家に尋ねることになる(最近なら、ネットを検索して調べることもできるが)。

いずれにしても、個々の機能がアクセスしているテーブルを、いちいち検索して調べるのは、かなり面倒だ。

でも、面倒な調べ物なら、時短ツール = 生成AI の出番である。

生成AIは、SAPシステムの専門家でもある
データが格納されているテーブルだって、教えてもらえるはずだ。

この記事のプロンプトサンプルでは、SAPシステムのトランザクションコード(T-CD)を指定すると、そのT-CDがアクセスしているテーブルの一覧表を出力することができる

このプロンプトで得られる情報

このプロンプトでできること

  • 指定したT-CDがアクセスしている、データテーブル(物理名、論理名)の抽出
  • データテーブルに保存されている、レコード数の平均
  • データテーブルの、用途、特徴などの表示

プロンプトサンプル

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

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

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

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

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

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

プロンプトの使い方

  1. 上記のプロンプトサンプル全体をコピーし、「メモ帳」などのテキストエディタに貼り付ける。
  2. #機能名」以下に、調べたいSAPシステムの機能名、またはT-CDを列挙する。
  3. 生成AIのチャットボックスに、テキストエディタの内容をコピー&ペーストする。
  4. 生成AIに、問い合わせる(送信する)。
  5. 数秒後、SAP機能とテーブルの一覧が表示される。

プロンプトの解説

プロンプトの表記方法や、各ブロックの記述ルールについては、次の記事を参照してほしい。

生成AIで期待通りの回答を得るためのコツ

#役割

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

#データ項目

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

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

#ルール

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

出力結果の例

ChatGPT 3.5

概ね間違っていないが、「テーブル数が少ないな」という印象。

機能名T-CDテーブル名テーブルの日本語名平均レコード数特記事項
品目マスタMM01MAKT短文本の品目マスタ1000品目に関する短文本情報を格納
品目マスタMM01MAST品目マスタ (通称マスタ)500品目に関する基本情報を格納
BOMマスタCS01STKO標準BOMヘッダー200製造上の構造を持つ品目に関する情報を格納
BOMマスタCS01STPO標準BOMアイテム1000BOMの構成部品に関する情報を格納
作業区マスタCR01T001W会社コードの作業区50会社コードごとの作業区を定義
作業手順マスタCA01CAUFVD作業指図のフィードバック500生産における作業指図のフィードバック情報を格納
ビジネスパートナー(得意先)XD01KNVV営業支援データ (顧客)1000顧客に関する営業支援情報を格納
ビジネスパートナー(得意先)XD01KNA1一般データ (顧客)2000顧客に関する一般的な情報を格納
ビジネスパートナー(仕入先)XK01LFA1一般データ (供給元)1500供給元に関する一般的な情報を格納
ビジネスパートナー(仕入先)XK01LFB1会社コード別データ (供給元)1000会社コードごとの供給元に関する情報を格納
購買情報ME21NEBAN調達要求500購買に関する要求情報を格納
購買情報ME21NEBKN調達要求の購買項目1000調達要求に関連する購買項目の情報を格納

「テーブル名」はどの機能も間違っていないが、表示されたテーブルはそれぞれ2個のみだった。品目マスタ(MM01)のテーブルは、筆者が知っているだけでも8個以上あるので、この回答は、だいぶ物足りない。

生成AIは同じ回答を返さないことが多いので、何度か同じプロンプトでトライしてみたが、テーブルを1個しか回答しない場合すらあった。
どうやら、ChatGPT 3.5はテーブルを1~2個しか返すことができないようである。

「テーブルの日本語名」は、違和感のある名前が混じっている。たとえば、MAKTの日本語名は、「短文本の品目マスタ」という意味不明の回答を返している。
ChatGPT 3.5 に蓄えられているトレーニングデータの日本語は、少々クセがありそうだ。

「平均レコード数」について、最も件数が多かったのは、ビジネスパートナー(得意先)の「2000」だった。
品目マスタのレコード数が、ビジネスパートナーよりも少ないのは、違和感というか、辻褄が合っていない気がする。ERPシステムは大企業への導入実績が豊富であることを考えると、その最大レコード数が1万未満というのは、感覚的に少ない気がする。ChatGPT 3.5は、どのような業界・業種をイメージして回答しているのだろう?

それよりも問題なのは、ビジネスパートナーのT-CDを「BP」と回答しなかったことである。
XD01/XK01は、S/4HANA以前のバージョン(SAP ERP)の、「得意先マスタ」「仕入先マスタ」の機能名だ。
プロンプトで与えた指示は「S/4HANAの機能」だったので、旧バージョンの機能名を答えてしまうのは、明らかに不正解である。

T-CDを「BP」と回答できなかったため、テーブル名も間違えている。
KNVV/KNA1/LFA1/LFB1は、S/4HANAでも使われているが、BPならば最初のテーブルは「BUT000」を答えてほしかった。

品目マスタのテーブルが2個だけというのは少なすぎるので、次のように指摘し、再度回答させてみた。

ご覧のように、間違いを指摘してやると、テーブルが追加され、合計4個となった(本当はもっとあるが)。

テーブルをできるだけ多く回答するよう、プロンプトでは指示しているが、最初の問い合わせでは2個のテーブルしか返さない。その理由は不明である。

このように、指摘すれば回答を修正するので、知識がないわけではなさそうだ。
しかし、毎回指摘しなければならないのは非生産的である。

ChatGPT 3.5を使う場合、主要なテーブルの調査に絞るなど、利用範囲を限定して使うのがよさそうである。

ChatGPT 4

ChatGPT 3.5 の数倍のトレーニングデータを持つ ChatGPT 4 は、 当然ながら ChatGPT 3.5 よりも多くのテーブルを回答してくれた。

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

品目マスタのテーブル数は、ChatGPT 3.5 よりも一つ多い。
もっと多く回答してほしいところだが、ChatGPT 3.5 よりも進化しているところは見せてくれた。

肝心の「テーブル名」は、全て正しい値を返してくれた。
ChatGPT 3.5 では間違えていた、ビジネスパートナーは、T-CDもテーブル名も正しい。

「テーブルの日本語名」は、SAPシステム上に表示される名称とは異なるものの、ChatGPT 3.5 のときのような、不自然な日本語は見当たらなかった。
この点も、ChatGPT 3.5よりも進化していることを伺わせる。

唯一間違っていたのは、「購買情報」のT-CDだ。この間違いはChatGPT 3.5にもあった。正しいT-CDは、ME1K、ME12Kである。
ただし、テーブル名は正解だったので、プロンプトの目的である「テーブル名の列挙」は果たせている。

「平均レコード数」は、ChatGPT 3.5のときよりもグンと増えた。ChatGPT 3.5 と ChatGPT 4 では、イメージしている業界・業種が異なるようだ。

テーブル数が少々物足りないものの、ChatGPT 4は、十分実用に耐えられそうである

ChatGPT 4o

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

機能名T- CDテーブル名テーブルの日本語名平均レコード数特記事項
品目マスタMM01MARA一般データ10000
品目マスタMM01MAKT品目の短文テキスト10000
品目マスタMM01MBEW会計データ10000
品目マスタMM01MLGN倉庫管理データ10000
品目マスタMM01MARM品目単位10000
品目マスタMM01MLAN販売データ10000
品目マスタMM01MPOP予測データ10000
品目マスタMM01MLGT倉庫テキストデータ10000
品目マスタMM01MLGG倉庫管理単位データ10000
品目マスタMM01MVKE販売データ10000
BOMマスタCS01STKOBOMヘッダー5000
BOMマスタCS01STPOBOMアイテム5000
BOMマスタCS01STASBOM代替品5000
作業区マスタCR01CRHD作業区データ3000
作業区マスタCR01KAKO標準データ3000
作業手順マスタCA01PLKOルーティングヘッダー4000
作業手順マスタCA01PLPOルーティングステップ4000
作業手順マスタCA01MAPLルーティングリンク4000
ビジネスパートナー(得意先)BPBUT000BP一般データ8000
ビジネスパートナー(得意先)BPKNA1得意先一般データ8000
ビジネスパートナー(得意先)BPKNVV得意先販売エリアデータ8000
ビジネスパートナー(仕入先)BPBUT000BP一般データ8000
ビジネスパートナー(仕入先)BPLFA1仕入先一般データ8000
ビジネスパートナー(仕入先)BPLFB1仕入先会社コードデータ8000
購買情報ME11EINA購買インフォレコード(一般データ)6000
購買情報ME11EINE購買インフォレコード(購買組織データ)6000

品目マスタのテーブルが多い! ビジネスパートナーのテーブルも増えている。
回答のボリュームが多いので、他のChatGPTと比べ、知識量が増えたことが一目でわかる。

しかし、よく見ると、一部のテーブル名が正しくない。
MSEG,EINA,EINE は、品目マスタのテーブルではなく、在庫購買管理のトランザクションデータのテーブルである。

プロンプトの「品目マスタなら、テーブル数は10個以上」という指示がバイアスとなり、無理に件数を増やしたのかもしれない。
他のテーブル名は正確だった。

「テーブルの日本語名」は、ChatGPT 4と同じ。問題なし。

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

ChatGPT 3.5、ChatGPT 4 のどちらも間違えていた「購買情報」のT-CDは、ChatGPT 4oでも修正されていなかった。
(ただし、値は変化している)
ChatGPT 4o が ChatGPT 4 の正常進化版であることを示唆する結果であるが、これは残念。

しかし、ChatGPT 4 以上の知識を持つ ChatGPT 4o は、ChatGPT 4 以上に実用に耐えられると言っていいだろう。

Google Gemini

Geminiは「量」で押すタイプだろうか? 一見、すごい量の回答を返してきたので期待したが、中身をよく見ると間違いが多かった。

機能名T-CDテーブル名テーブルの日本語名平均レコード数特記事項
品目マスタMK01, MK02, MK03, MK04, MK06, MK07, MK08, MK09MARA, MARC, MARD, MSEG, MVKE, MKBM, MKBR, MKVS, MLAN品目マスタヘッダー, 品目マスタ明細, 品目追加テキスト, 品目仕入先情報, 品目販売先情報, 品目購買グループ情報, 品目購買ブランケット情報, 品目販売区分情報, 品目分類情報品目マスタは、品目に関するあらゆる情報を格納する基盤的なデータテーブルです。品目番号、品目名称、品目分類、規格、仕入先情報、販売先情報、価格情報、在庫情報など、幅広い情報が保持されています。品目マスタは、購買、販売、生産、在庫管理など、SAP S/4HANAの様々なモジュールで利用されます。
BOMマスタCS01, CS02, CS03, CS08BOM, BOMF, BOMT, CRHD, CRIT, CRIF, JEST, JSTDBOMヘッダー, BOM明細, BOMテキスト, 品目構成履歴ヘッダー, 品目構成履歴明細, 品目構成履歴インタフェース, ジョブステータス, ジョブステップBOMマスタは、製品を構成する部品とその数量、階層構造を定義するデータテーブルです。部品番号、数量、単位、使用場所、バージョン情報などが保持されています。BOMマスタは、生産計画、部品調達、在庫管理などに利用されます。
作業区マスタCOO1, COO2, COO4WERKS, WERKST, WVOR, WVOR_TEXT工場ヘッダー, 工場明細, 作業区ヘッダー, 作業区テキスト作業区マスタは、生産を行う場所に関する情報を格納するデータテーブルです。工場コード、工場名称、所在地、責任者情報などが保持されています。作業区マスタは、生産計画、作業指示、労務管理などに利用されます。
作業手順マスタCA01, CA02, CA03, CA04, CA06KAH, KAP, KAUF, KSTL, KTSV, KTTI, KTVV作業ヘッダー, 作業明細, 作業フロー, 作業ステップヘッダー, 作業ステップ明細, 作業ステップインタフェース, 作業ステップバージョン作業手順マスタは、製品を製造するための手順を定義するデータテーブルです。作業手順番号、作業手順名称、作業内容、作業時間、必要な資材情報などが保持されています。作業手順マスタは、生産計画、作業指示、労務管理などに利用されます。
ビジネスパートナー(得意先)BP, FBL5NKNA1, KNA1_XP, KNB1, KNB1_XP, ADR2, ADDR得意先ヘッダー, 得意先拡張データ, 得意先明細, 得意先明細拡張データ, 住所ヘッダー, 住所明細ビジネスパートナー(得意先)は、顧客に関する情報を格納するデータテーブルです。顧客番号、顧客名称、住所、連絡先情報、支払条件、信用限度情報などが保持されています。ビジネスパートナー(得意先)は、販売、購買、会計などのSAP S/4HANAの様々なモジュールで利用されます。
ビジネスパートナー(仕入先)BP, EK01, EK02KNA1, KNA1_XP, KNB1, KNB1_XP, ADR2, ADDR仕入先ヘッダー, 仕入先拡張データ, 仕入先明細, 仕入先明細拡張データ, 住所ヘッダー, 住所明細ビジネスパートナー(仕入先)は、仕入先に関する情報を格納するデータテーブルです。仕入先番号、仕入先名称、住所、連絡先情報、支払条件、購買条件などが保持されています。ビジネスパートナー(仕入先)は、購買、会計などのSAP S/4HANAの様々なモジュールで利用されます。
購買情報ME21N, ME22N, ME23NEKKO, EKPO, EKKT, EKKN, EKBE, EKKO_HIST, EKPO_HIST購買発

「T-CD」は正しい回答はわずかで、デタラメなものが圧倒的に多い。

「テーブル名」「テーブルの日本語名」は間違いだらけだ。量が多ければいいというものではない。

「平均レコード数」は数字ですらない。こちらが送ったプロンプトを解読する能力が、ChatGPT と比べてはるかに弱いようである。

「特記事項」には長々とした解説を並べてくれたが、こちらが求めているのはテーブルについての講釈ではない。もうちょっと空気を読んでほしい。

Geminiはレスポンスは素晴らしいが、中身がまったく正しくない。勢いに任せ、デタラメを答えているだけに見える。

Googleが持つ莫大な量の記事を利用できるGeminiは、ChatGPT よりも正確で豊富な回答をするだろうと期待していたのだが、結果は酷いものだった。

本記事のテーマ「SAPシステムのテーブルの調査」に関して言えば、Gemini はとてもじゃないが使えない。ChatGPT 3.5 にすら敵わないようである。

まとめ

SAPシステムの機能がアクセスしているテーブルの調査について、各生成AIのできる・できないを下表に纏めておく(2024年5月現在)。

日本語の機能名から、データテーブルを、どれだけ正確に、網羅的に提示できるか?という視点で、3段で階評価してある。

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

ChatGPT は、最下位モデルであるChatGPT 3.5でも、実用に耐えられそうである

Google Gemini は誤回答が多く、データテーブルという「SAPシステムの中身」に関する調査に利用するのは、避けた方がよさそうだ。

【関連記事】

トランザクションコード(T-CD)の新旧を調べる方法

生成AI用プロンプト|SAP機能の新旧比較調査

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です