本文へスキップ
cd /languages
  • エンタープライズの中核
  • プログラミング
  • AST・シンボル対応

MaguyvaのABAP対応: SAPカスタムコードのクラスグラフ

MaguyvaはAST、シンボル、グラフでABAPに対応しています。AIエージェントはSAPカスタムコードのクラス、インターフェース、再定義、例外をマッピングできます。

変更前にABAPをマッピングする価値

カスタムABAPには、何十年分もの業務ルールが詰まっていることがよくあります。コードはある部分ではオブジェクト指向、別の部分では手続き型で、どのメソッドが実行されるかは継承とインターフェースの構造で決まります。クラスを1つずつ読んでいては、それが見えません。

Maguyvaはまずエージェントにクラスグラフを渡します。そのため、変更計画は推測からではなく、そのクラスに何が依存しているかから始まります。

MaguyvaがABAPで抽出するもの

Maguyvaは .abap ソースを専用のABAP文法で解析します。シンボルには、クラスの定義と実装、インターフェース、メソッドの宣言と実装、そして FORM ルーチンが含まれます。

グラフには、ABAP開発者が気にかける関係が記録されます。

  • CLASS ... INHERITING FROM による継承。
  • INTERFACES によるインターフェース実装。
  • METHODS ... REDEFINITION によるオーバーライド。
  • RAISE EXCEPTION と CATCH による例外。
  • メソッド呼び出し(obj->m( )、cls=>m( )、CALL METHOD)、TYPE と TYPE REF TO による型参照、そしてクラスに帰属する公開セクションのメソッドのエクスポート。
  • メソッド本体内の読み取り、書き込み、制御フロー(IF、CASE、LOOP、TRY)。

エージェントへのプロンプト例

  • 「zcl_order_base を継承するクラスはどれで、それぞれどのメソッドを再定義しているか?」(find_symbol、次に dependency_search の incoming)
  • 「zcx_pricing_error はどこで発生し、誰が捕捉しているか?」(dependency_search)
  • 「出荷作成フローがレポートから永続化クラスまでどう流れるかを要約して。」(get_task_context)

既知の制限

  • Open SQL(SELECT ... FROM ... INTO)、EXEC SQL、AUTHORITY-CHECK は現在のABAP文法では解析できないため、SQL経由のテーブル読み取りはまだグラフのエッジになりません。テーブル名には text_pattern_search を使ってください。
  • INTERFACES 句は実装の関係であり、インポートではありません。構造検索でインポートとして選択されるのは INCLUDE 文だけです。
  • Maguyvaは、Gitリポジトリ内に .abap ファイルとして置かれたABAPをインデックスします。SAPシステムには接続しません。

次のステップ

クイックスタートでリポジトリを接続し、互換性ページで対応マトリクスを確認してください。ほかのレガシー資産についてはCOBOLガイドをご覧ください。

最適な用途

  • > カスタムABAPを `.abap` ソースファイルとしてGitで管理し、移行やクリーンコアのレビュー前にそれを理解する必要があるSAPチーム。
  • > クラス階層、インターフェース、再定義によって、実際にどの実装が動くのかが見えにくくなっているオブジェクト指向ABAPの資産。
  • > 「このクラスを変えたら何が壊れるか?」が問いになる、エージェント支援型の影響分析。

エージェントワークフロー

  • > 基底クラスを継承するクラスと、それらが再定義するメソッドをマッピングする。
  • > メソッドシグネチャを変更する前に、インターフェースを実装するクラスをすべて見つける。
  • > 例外クラスがどこで発生し、どこで捕捉されるかを追跡する。

エンジンの詳細

  • > ABAPは専用の文法で解析されます。クラス、インターフェース、メソッドの宣言と実装、`FORM` ルーチンがシンボルになります。
  • > グラフには、`INHERITING FROM` による継承、`INTERFACES` による実装、`REDEFINITION` によるオーバーライド、`RAISE EXCEPTION` と `CATCH`、そして `obj->m( )` や `cls=>m( )` のような呼び出しが記録されます。
  • > Open SQL、`EXEC SQL`、`AUTHORITY-CHECK` は現在の文法では解析できないため、SQL経由のテーブル読み取りはまだグラフのエッジになりません。

役立つMCPエントリーポイント

  • find_symbol

    定義と参照が必要なときに、クラス、インターフェース、メソッドの名前で使ってください。

  • dependency_search

    変更前に、基底クラスやインターフェースに対してincomingのトラバーサルを使い、サブクラス、実装クラス、呼び出し元を見つけてください。

  • text_pattern_search

    グラフがまだカバーしていない、データベースのテーブル名やSQL文に使ってください。