用途:对一批自定义 ABAP 代码做包级 Clean Core 审计,按所引用的 SAP API 将每个 Z/Y 对象归入 A–D 级,用于规划 Clean Core / BTP 迁移。与 migrate-custom-code 不同,后者修单个对象的 ATC 问题,本技能产出全包分级报告。
分级含义:A 仅用已发布 SAP API,可原样迁至 ABAP Cloud/BTP;B 用经典 API(仅本地、有文档),需重写;C 用内部/稳定对象,无 API 保证;D 用无 API 状态对象,迁移风险高。依据 SAP 官方发布状态列表 SAP/abap-atc-cr-cv-s4hc。注意此为可扩展性轴(SAP Note 3578329),与 Note 3690029 的集成技术 A–D 轴字母相同但维度不同,不可合并。
输入:优先给包(如 Z_FI_CUSTOM),或逗号分隔对象列表,另可指定目标系统类型 public_cloud(默认)| btp | private_cloud | on_premise。未给包或列表时需询问,不应审计“全部”。
流程:先用 SAPRead(type="DEVC", name="<package>") 枚举对象并过滤 PROG/CLAS/INTF/FUGR/FUNC/DDLS/BDEF/SRVD/TABL 且以 Z、Y 或客户命名空间开头的对象(默认不递归子包);对象列表则用 SAPSearch 解析类型。再对每个对象用 SAPContext 提取依赖,保留非 Z/Y 的 SAP 引用;不支持的类型改用 SAPRead 正则扫描并标注“static-scan”。同时用 SAPDiagnose(action="atc", ..., variant="ABAP_CLOUD_READINESS") 跑云就绪检查;若该变体不存在会报错,可用 SAPDiagnose(action="atc_variants") 列出真实名称或省略 variant 用系统默认。随后用 sap_get_object_details 对每个 SAP 对象查 cleanCoreLevel、state、complianceStatus、successorObjects,按 (类型,名称) 缓存。对象级别取所引引用中最差级别(有 D 即 D,否则 C、B、全部 A 为 A)。最终输出汇总表、分级表(D 优先)、Top 违规与替代建议、后续选项。
适用场景:ECC→S/4HANA Cloud 或 BTP/ABAP Cloud 迁移规划、季度自定义代码体检、大版本升级前风险摸底、配合 sap-unused-code 做退役范围界定。BTP 审计中 B 级视为不合规,仅接受 A。
限制:不执行迁移,只分级;不替代 SAP Custom Code Migration 应用(后者含运行时分析与简化数据库);准确度依赖 mcp-sap-docs 数据集时效;ATC 会跳过 $TMP/本地对象,返回 0 条不代表干净,包级分类仅适用于可传输包;对象在数据集中查不到时归为 D 并需人工复核。
错误处理:found: false 归 D 并人工复核;变体缺失需列名重选;SAPContext 不支持时用正则扫描;空包需核对并选子包;mcp-sap-docs 未连接则降级为仅 ATC 分类并提示。