mcpField
S
sap-clean-core-atc

sap-clean-core-atc

github.com/arc-mcpテスト・品質239263 回インストール2 日前に更新
リポジトリ

sap-clean-core-atc について

sap-clean-core-atcは、カスタムSAPコードをClean CoreのA~Dレベルに分類するスキルです。依存関係分析、ATCの結果、SAP APIのリリース情報を組み合わせ、オブジェクトごとのレポートを作成してクラウド対応評価や移行計画を支援します。

主な機能

  1. 01パッケージまたは一覧からカスタムオブジェクトを抽出
  2. 02参照されるSAP APIを特定
  3. 03ATCによるクラウド対応チェック
  4. 04APIをClean CoreのA~Dに分類
  5. 05オブジェクト別のリスクと代替案を報告

活用シーン

  1. 01SAPクラウド移行に向けたカスタムコードの評価
  2. 02アップグレード前の高リスクオブジェクトの優先付け
  3. 03BTP移行やコード廃止の計画
  4. 04パッケージ全体のClean Core状況の確認

MCP 対応

このスキルはARC-1のMCPツールでSAPオブジェクトの検索、依存関係分析、ATCチェック、ソース取得を行います。SAP APIの分類にはmcp-sap-docsも利用し、接続できない場合はATCのみの分類に切り替えます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/arc-mcp/arc-1 --skill sap-clean-core-atc

インストール後、Claude Code で/sap-clean-core-atcを入力して読み込まれたか確認します。

詳細

SAP Clean Core ATC 分類

カスタムコードのパッケージをインベントリ化し、使用している SAP API に基づいてすべての Z/Y オブジェクトを Clean Core レベル A~D に分類します。これは「クラウド対応かどうか」を監査するものです。

これは migrate-custom-code とは異なります。このスキルは 1 つのオブジェクトの ATC 指摘を修正しますが、こちらはオブジェクトごとのレベルを含むパッケージ全体の分類レポートを作成し、クリーンコア/BTP 移行の計画に使用します。ARC-1(ATC とソースアクセス)と mcp-sap-docs(SAP/abap-atc-cr-cv-s4hc のリリース済み API 分類データ)を組み合わせます。

Clean Core レベル(意味)

レベル意味クラウド対応?
Aリリース済み SAP API のみを使用✅ はい — そのまま ABAP Cloud / BTP に移行できます
Bクラシック API を使用(オンプレミス専用、文書化済み)🟡 オンプレミスの S/4HANA では動作します。クラウド向けには書き換えが必要です
C内部/安定版 SAP オブジェクトを使用(顧客向けにリリースされていない)🔴 現在はサポートされていますが、API の保証はありません
DAPI ステータスがないオブジェクトを使用(深い内部実装、文書化されていない)🔴 移行リスクが高く、アップグレード時に動作しなくなる可能性があります

出典:SAP/abap-atc-cr-cv-s4hc — SAP 公式の機械可読なリリース状態リストです。

これらは拡張性のレベル(SAP Note 3578329)であり、コードが呼び出す SAP API を表します。SAP は、Note 3690029 で統合テクノロジー(RFC、IDoc、SEGW OData、ファイル転送など)向けに、別個の A~D スケールを定義しています。こちらは「このスケールを補完するものの、重複はしない」ものです。同じ文字でも評価軸は異なるため、2 つを 1 つのスコアにまとめないでください。統合軸については、sap-migration-dossier の Integration Interfaces セクションを使用してください。

スマートデフォルト(黙って適用し、質問しない)

設定デフォルト理由
対象システムの種類public_cloudクリーンコア監査では、ほぼ常にクラウド対応が対象となります
ATC バリアント利用可能な場合は ABAP_CLOUD_READINESS、そうでなければシステムのデフォルトこの作業の目的はクラウド対応です。まず atc_variants で名前を確認してください
対象に含めるものZ*、Y*、およびユーザーが指定した /namespace/*顧客コードのみを対象とし、SAP 提供のものは除外します
レポートの詳細度サマリーテーブル+レベル別内訳+主な違反実行可能な概要を示し、要望があれば詳細を掘り下げます

入力

ユーザーはパッケージ(推奨)またはカンマ区切りのオブジェクト一覧と、任意で対象システムの種類を指定します。

  • パッケージ(例:Z_FI_CUSTOM):パッケージ内のすべてのカスタムオブジェクトを監査します
  • オブジェクト一覧(例:ZCL_POSTING, ZR_SALES_REPORT):指定されたオブジェクトのみを監査します
  • 対象システムの種類:public_cloud(デフォルト) | btp | private_cloud | on_premise

パッケージもオブジェクト一覧も指定されていない場合は、どちらを使用するか尋ねてください。「すべて」を監査してはいけません。ユーザーがそれを望むことはありません。

手順 1:カスタムオブジェクトの列挙

1a. パッケージのパス
SAPRead(type="DEVC", name="<package>")

結果を絞り込み、PROG | CLAS | INTF | FUGR | FUNC | DDLS | BDEF | SRVD | TABL のうち、名前が Z、Y、または顧客名前空間で始まるものだけを残します。サブパッケージは別途監査するため除外します。ただし、ユーザーが「recursive」と指定した場合を除きます。

1b. オブジェクト一覧のパス

各名前について、型を解決します。

SAPSearch(query="<name>")

最初に見つかった完全一致を使用します。

手順 2:オブジェクトごとに SAP API 参照を抽出

各カスタムオブジェクトについて、参照している SAP 提供オブジェクトの一覧を収集します。

2a. 依存関係の抽出に SAPContext を使用
SAPContext(type="<type>", name="<object_name>", depth=1)

SAPContext は依存関係の一覧を返します。名前が Z/Y/顧客名前空間で始まらない依存関係のみを残します。これらが SAP 参照です。それぞれを (objectType, objectName) として記録します。

SAPContext は CLAS、INTF、PROG、FUNC、DDLS(オンプレミス)および CLAS、INTF、DDLS(BTP)をサポートします。それ以外の型(FUGR、BDEF、SRVD、TABL)については、ソースを SAPRead で読み込み、行に対する正規表現スキャン(例:CL_*、IF_*、SAP*、CALL FUNCTION '...')で SAP クラス/インターフェース/関数の参照を抽出してください。AST から導出した依存関係より確度が低いことがユーザーにわかるよう、レポートではこれらの参照に「static-scan」と記してください。

2b. クラウド対応状況を確認するため、ATC も実行します
SAPDiagnose(action="atc", type="<type>", name="<object_name>", variant="ABAP_CLOUD_READINESS")

システムに ABAP_CLOUD_READINESS が存在しない場合、ARC-1 は DEFAULT を黙って実行するのではなく、呼び出しを拒否します。SAPDiagnose(action="atc_variants") で実際のバリアント名を一覧表示して選択するか、variant を省略してシステムで設定されたデフォルト(systemCheckVariant)を使用し、レポートに選択内容を記載してください。オンプレミスシステムには、ABAP_CLOUD_READINESS の代わりに S4HANA_READINESS_<release>(例:S4HANA_READINESS_2023)または SAP_CLOUD_PLATFORM_DEFAULT が用意されていることがよくあります。ATC の検出結果は API 分類を補完するものです。リリース済みの API でも、誤った使い方をしている可能性があります。

ATC は $TMP/ローカルオブジェクトをスキップします(S/4HANA 2023 で実稼働環境にて確認済み)。 $TMP オブジェクトに対してチェックを実行すると、オブジェクトセットが空として解決され、検出結果はゼロになります。これは「問題なし」ではなく、「チェックされていない」ことを意味します。パッケージ全体の分類は、移送可能なパッケージでのみ機能します。パッケージがローカル/$TMP の場合は、レポートに ATC 結果を利用できない旨を記載し、mcp-sap-docs の API 分類のみを使用してください。フラグが付くと想定されるコードの検出数が 0 の場合、そのほとんどは問題のないコードではなく、$TMP の落とし穴が原因です。

ステップ 3:mcp-sap-docs で SAP 参照を分類する

カスタムコードが参照する SAP オブジェクトごとに、以下を実行します。

sap_get_object_details(object_type="<type>", object_name="<name>", system_type="<target>", target_clean_core_level="A")

次の情報が返されます。

  • cleanCoreLevel — A、B、C、または D。これは拡張性の軸です(注記 3578329)。sap-migration-dossier のカードに渡す場合は、統合レベルと混同されないよう extensibilityLevel に割り当てます
  • state — released | deprecated | classicAPI | stable | notToBeReleased | noAPI
  • complianceStatus — 目標レベルに対する compliant | non_compliant
  • successorObjects — 非推奨の場合の置き換え先の推奨

結果は (object_type, object_name) ごとにキャッシュしてください。同じ SAP クラスが複数の Z オブジェクトから参照されることはよくあります。

オブジェクトがデータセットに見つからない(found: false)場合は、**D(不明/API なし)**に分類し、手動レビューが必要であることを示してください。

ステップ 4:オブジェクトごとのレベルに集約する

各カスタムオブジェクトのレベルは、SAP 参照のうち最も高い(最も問題のある)レベルです。

次の参照が 1 つでもある場合オブジェクトのレベル
DD
C(D なし)C
B(C/D なし)B
すべて AA

オブジェクトごとに以下を記録します。

  • オブジェクトのレベル(A/B/C/D)
  • 参照の内訳(レベルごとの件数)
  • 最も問題のある参照の上位 3 件と、その後継(存在する場合)
  • ATC のクラウド対応状況チェックでの検出数(優先度 1/2/3)

ステップ 5:レポートを出力する

5a. 概要
Clean Core Audit — <package_or_list>
Target system: <target>   ATC variant: <variant>

Objects audited:  42
  Level A:  12  (29%)  — ready for ABAP Cloud as-is
  Level B:  18  (43%)  — on-prem only; rewrite for cloud
  Level C:   8  (19%)  — uses internal APIs; plan replacement
  Level D:   4   (9%)  — high risk; manual review required
5b. レベルごとの表

各レベルについて、D から始めて順に下げながら(最も問題のあるものから)表示します。

Level D — High Risk (4 objects)

Object                    Non-compliant refs  Top violation           ATC P1
ZCL_MIGRATION_HELPER      8                   CL_SALV_TREE_WRAPPER    3
ZR_OLD_POSTING           12                   SAPLSMTR_NAVIGATION     5
...
5c. 置き換え候補(レベル B/C/D のみ)

最も参照されている非推奨 API の上位 10 件について、件数とともに {非推奨 API → 後継 API} の組み合わせを表示します。

CL_GUI_ALV_GRID  (used in 18 Z-objects)  →  CL_SALV_TABLE  (A)
CL_IXML          (used in 12 Z-objects)  →  XML transformations (A)
...
5d. 次の選択肢

次のステップを提示します。

  • 「レベル D のオブジェクトごとの詳細を表示しますか?」(リスクの高い 4 件を詳しく確認します)
  • 「これらのオブジェクトの 1 つを今すぐ移行しますか?」(→ migrate-custom-code)
  • 「使用されている Z オブジェクトを確認しますか?」(→ sap-unused-code — 使用されていないコードを移行しても意味がありません)
  • 「レベル A のオブジェクトを参考例として文書化しますか?」(→ sap-object-documenter)
  • 「エビデンス、顧客への質問、視覚化を保存したレビュー済みのドシエを作成しますか?」(→ sap-migration-dossier)

エラー処理

エラー原因対処方法
sap_get_object_details が found: false を返すSAP オブジェクトがリリース状態データセットにありませんD に分類し、手動レビュー対象としてフラグを立てます。データセットは S/4HANA のみを対象としています
ABAP_CLOUD_READINESS バリアントが見つからないシステムで設定されていません(サイレントフォールバックではなく、ハードエラーです)SAPDiagnose(action="atc_variants") で名前を一覧表示し、最も近いものを選ぶか、variant を省略してシステムのデフォルトを使用します。検出結果がクラウドに特化したものではなくなることをレポートに記載してください
SAPContext がオブジェクトタイプに対応していない例:動的プログラム、生成コードソースを正規表現でスキャンし、CL_*、IF_*、SAP* パターンを探します
パッケージが空入力ミス、またはパッケージが構造パッケージのみですSAPSearch で確認し、子パッケージを選ぶようユーザーに依頼します
mcp-sap-docs が接続されていないMCP サーバーがありませんスキルは ATC のみの分類に機能を縮小します。ユーザーに警告してください

注意事項

このスキルでできないこと
  • 移行ツールではありません — リスクを分類するものであり、実際の修正には migrate-custom-code を使用してください。
  • SAP の Custom Code Migration アプリの代替ではありません — このアプリには、より詳細な分析機能(ランタイム使用状況の分析、simplification DB、トランスポートへの影響)があります。このスキルは、迅速に使える LLM 向けの近似的な手段です。
  • 精度は mcp-sap-docs データセットの鮮度に左右されます — SAP/abap-atc-cr-cv-s4hc リポジトリは、S/4HANA のリリースごとに更新されます。
BTP とオンプレミス
  • BTP 監査(system_type=btp):レベル B は非準拠になります。BTP で受け入れられるのはレベル A のみです。public_cloud より厳しい条件です。
  • オンプレミス監査(system_type=on_premise):レベル A と B はどちらも準拠します。「クラウドで実行できるか」ではなく、「次の S/4HANA アップグレード後もカスタムコードが動作するか」が目的の場合に使用してください。
このスキルを使用する場面
  • ECC から S/4HANA Cloud への移行計画
  • ECC から BTP 上の ABAP Cloud への移行計画
  • 四半期ごとのカスタムコード健全性チェック
  • メジャーリリースのアップグレード前(高リスクのオブジェクトを早期に特定するため)
  • カスタムコード廃止プロジェクトの範囲決定(sap-unused-code と組み合わせます)

コメント