用途
该技能用于将经典的 SEGW OData V2 服务(由 MPC/DPC/MPC_EXT/DPC_EXT 类构成)逆向工程为现代 RAP 服务,目标是在同一 SAP 系统上生成 CDS 根视图、投影视图、行为定义(BDEF)、服务定义(SRVD)、服务绑定(SRVB)以及行为池类。迁移过程与旧服务并行运行:旧服务保持在线,新 RAP 服务落在独立、可重置的包中。
主要能力
- 授权预检:在建模前检查系统能力、RAP/CDS 端点可用性、传输 API 可用性、ADT 对象搜索权限、传输读取权限,以及对源 MPC 类的读取权限和目标包的写入权限。
- 发现旧服务:解析 MPC 类名,确认 MPC、MPC_EXT、DPC、DPC_EXT 四个类存在并记录元数据。
- 提取 OData 模型:从 MPC 类的 DEFINE_* 方法中解析实体类型、实体集、属性、关联、导航属性、函数导入等,编译为结构化模型。
- 提取行为:从 DPC_EXT 类中识别重定义方法,将 GET 方法映射为 CDS 读取(托管场景下免费),将函数导入映射为 BDEF 动作,将自定义创建/更新/删除映射为 BDEF 确定/验证。
- 读取底层表:读取相关 DDIC 表结构,记录字段、键、管理字段约定、外键引用。
- 设计计划与用户确认:在写入前展示完整 RAP 设计计划(命名、组合树、动作、服务绑定 URL),等待用户明确批准。
- 智能默认值:发现策略默认使用 MPC 类源码(Tier 1);目标包若未提供则创建源包的子包
<source_package>_RAP;目标传输自动创建;OData 版本默认 V4;RAP 场景默认托管内部编号;草稿默认关闭(除非旧服务暴露 CUD 且用户需要 Fiori Elements 兼容);严格模式strict(2);强制投影层;命名遵循 SAP 标准Z<prefix>_<entity>。
使用方式
用户需至少提供以下之一:SEGW 服务技术名、包含 SEGW 生成类的包、或 MPC 类名。还需提供目标包(若未提供且源包已知,技能会创建 <source_package>_RAP;否则询问;仅当用户明确要求时才回退到 $TMP)以及非 $TMP 写入所需的传输(现有或自动创建)。可选参数包括 RAP 场景、草稿开关、OData 版本、命名覆盖。若仅提供旧标识符,技能会应用智能默认值并在阶段 5 展示解析后的计划供用户确认后再写入。
技能按阶段执行:阶段 0 授权预检;阶段 1 发现旧服务;阶段 2 从 MPC 源码提取 OData 模型;阶段 3 从 DPC_EXT 提取行为;阶段 4 读取底层表;阶段 5 设计计划与用户批准;阶段 6 写入。非交互模式下,若初始提示已提供阶段 5 等效输入并说明“端到端运行”或“不停止审查”,则跳过确认门,直接打印计划清单并进入阶段 6。
适用场景
适用于需要将 SAP 系统中基于 SEGW 的 OData V2 服务迁移到现代 RAP V4 服务的场景,尤其是希望保留旧服务在线、并行运行新服务,并利用 RAP 托管场景简化读写逻辑的情况。技能模板使用 Project → Tasks → TimeEntries 领域示例(实体名如 ZR_DM_PROJECT、ZBP_DM_PROJECT、ZDM_PROJECT_D),实际运行时需替换为用户实体。
限制
- 需要 SAP 系统暴露 RAP/CDS 端点,且传输 API 可用。
- 需要相应的 SAP 授权对象(如 S_DEVELOP、S_TRANSPRT)。
- 草稿表字段名需使用 BO 别名大小写(无下划线),如
projectid、startdate,而非project_id、start_date。 - 在 7.58 上,托管组合语法不接受
on子句;@Semantics.*注解中createdAt、lastChangedAt、localInstanceLastChangedAt以及businessDate.from/to均有效。 - 投影层必须始终创建,服务绑定暴露投影而非根视图。
- provider contract 仅放在根投影上,不放在根视图或子投影上。
- 具体收费、价格、平台支持范围等信息暂未提供。