该技能的名称是 Generate RAP OData UI Service,用于从自然语言描述的业务对象生成完整的 RAP OData UI 服务。其说明指出,技能会创建完整的工件栈,包括数据库表、CDS 视图、行为定义、元数据扩展、服务定义以及行为池类。该技能定位为复刻 SAP Joule 的「RAP Service Generation」能力,方式是结合 ARC-1(SAP 系统访问)与 mcp-sap-docs(文档与最佳实践)。
用途
用户提供业务对象的自然语言描述,例如带有代理机构、客户、目的地、开始/结束日期、总价、货币、状态等字段的差旅预订应用。技能据此生成可用的 RAP 服务工件栈。
主要能力与版本护栏
v1 快速路径的护栏为:仅支持托管场景、UUID 内部早期编号、默认单一根实体、标准 CRUD 优先、草稿可选、优先 OData V4。对于多实体组合或大量自定义动作,技能建议改用 generate-rap-service-researched。
技能列出的智能默认值(静默应用、不询问):包使用用户带传输的 Z* 包,仅在用户明确要求时用 $TMP;键策略为 UUID(sysuuid_x16)托管编号;行为场景为托管;OData 版本为 V4;草稿优先用于事务型 Fiori Elements UI 服务,但需按发布版与约束验证;管理字段在本地部署用 syuname/timestampl,在 BTP 用 abp_* 类型;严格模式默认为 strict( 2 ),除非系统模式或 SAP 约束另有要求;实体前缀为 Z + 实体名;命名遵循 SAP 标准 ZI_、ZC_、ZSD_、ZSB_、ZBP_I_;服务暴露默认使用 OData V4 UI 提供者契约。
输入
必须提供的是业务对象描述。若只提供描述,技能应用智能默认值并立即继续。可选输入包括实体名前缀(默认从描述自动生成)、包(必需,未提供则询问,仅当用户明确说明才默认 $TMP)、传输请求(仅非 $TMP 包需要)、是否启用草稿(BTP 默认是、本地部署默认否)、OData 版本(默认 V4)。
使用方式
第 1 步检查系统能力:通过 SAPManage(action="probe") 验证 SAP 系统支持 RAP/CDS 并检测系统类型;如需更明确的语法与格式化基线,可读取 SAPRead(type="SYSTEM")、SAPLint(action="list_rules")、SAPLint(action="get_formatter_settings")。关键门禁:若探测明确报告 RAP/CDS 不可用,则停止并告知用户通过 ARC-1 无法创建 RAP 对象,直到端点/系统设置修复。随后确定 BTP 还是本地部署,因为这会影响命名约定、语言版本与草稿处理。
第 1b 步解析包与传输:未提供目标包时询问用户,然后解析传输请求(仅当包为 $TMP 时跳过),使用 SAPTransport(action="check", objectType="DDLS", objectName="<first_object_name>", package="<package>")。若需要传输:用户已提供则用于所有创建;找到已有传输则列出让用户选择;没有可用传输则创建,使用 SAPTransport(action="create", description="RAP Service: <Entity>", package="<package>")。若需要传输但不可用则停止,因为非 $TMP 包没有有效传输时所有写操作都会失败。若包不存在且用户想要新包,先创建,使用 SAPManage(action="create_package", ...)。
技能还列出 BTP 与本地部署的差异,包括命名空间、语言版本、草稿表、OData 版本、行为池与表实体。并列出本地部署 7.5x 的快速护栏,例如 TABL 源中使用 syuname + timestampl、布尔类标志用 abap.char(1)、每个 abap.curr(...) 字段上方需要 @Semantics.amount.currencyCode、投影 BDEF 头保持为 projection 且不添加 use etag 头行、保持 RAP 预检检查启用等。
第 2 步设计数据模型:根据描述设计完整工件栈并遵循 SAP 命名约定,给出各工件类型与其模式及示例,例如数据库表(表实体)Z<ENTITY>D、接口 CDS 视图 ZI<Entity>、投影 CDS 视图 ZC_<Entity>、元数据扩展 ZC_<Entity>、接口行为定义 ZI_<Entity>、投影行为定义 ZC_<Entity>、访问控制 ZI_<Entity>DCL、服务定义 ZSD<Entity>、服务绑定 ZSB_<Entity>V4、行为池类 ZBP_I<Entity>、草稿表 Z<ENTITY>_DD。字段设计规则要求每个实体具备标准字段:key_uuid、created_by、created_at、last_changed_by、last_changed_at、local_last_changed_at;并依据描述添加业务字段,选择合适 ABAP 类型。技能会向用户输出完整设计表格并询问是否继续(yes / modify fields / change names)。
第 3 步(可选)研究 RAP 模式:若 mcp-sap-docs 可用,获取当前 RAP 最佳实践,先使用参考式查询(includeSamples=false),需要时再用示例(includeSamples=true),查询主题包括投影 BO 与接口、草稿处理与总 ETag、服务定义提供者契约、元数据驱动 UI 等。
第 3b 步(可选)委托给 SAP 官方 ABAP 生成器:若官方 SAP ABAP MCP 服务器与 ARC-1 同时连接,可将单根构建交给 SAP 自带的 Generate ABAP Repository Objects 框架,跳过第 4–13 步的手工模板。技能列出使用生成器必须同时满足的条件:恰好一个根实体、托管加草稿、基础表带有现代时间戳字段或使用从零开始的变体、接受一次性生成不用于生成后扩展。随后描述探测服务器、解析生成器 ID(ID 随发布版不同,绝不硬编码)、读取输入模式、生成、验证并继续用 ARC-1 的流程,并强调发布服务绑定应使用 ARC-1 的 SAPActivate(action="publish_srvb")。
批量创建(首选)
技能推荐使用批量创建,在单次工具调用中创建所有 RAP 工件,使用 SAPWrite(action="batch_create", objects=[...], package="<package>", transport="<transport>")。对象按数组顺序创建并激活,依赖项在前(表先于 CDS 视图、DCLS 在 DDLS 之后、CDS 视图先于 BDEF、行为池先于接口 BDEF)。批量在首次失败时停止并报告成功与失败的对象。若所有工件共用包与传输,在顶层设置;若某项需要覆盖,在该对象上放置 package 和/或 transport,项级值优先。对于存在跨兄弟引用的栈,传入 activateAtEnd: true,使 ARC-1 写入非活动草稿后发出一次终止 activateBatch,让激活器在单次遍历中解析跨引用。若批量创建失败,回退到后续顺序方法(第 4–13 步)。
第 4 步:创建数据库表(顺序回退)
通过 CDS DDL 创建表实体,使用 SAPWrite(action="create", type="TABL", name="<table_name>", package="<package>", transport="<transport>", source="<ddl_source>"),并给出表实体 DDL 模板的开头部分。
适用场景
适用于需要根据自然语言业务对象描述快速生成 SAP RAP OData UI 服务的场景,尤其是单一根实体、托管场景、标准 CRUD、优先 OData V4、面向 Fiori Elements 的事务型 UI 服务。
限制
v1 快速路径仅支持托管场景、默认单一根实体、标准 CRUD 优先,草稿为可选。多实体组合或大量自定义动作建议改用 generate-rap-service-researched。若系统探测报告 RAP/CDS 不可用,则无法通过 ARC-1 创建对象。非 $TMP 包若需要传输但不可用,所有写操作会失败。官方 ABAP 生成器只适用于恰好一个根实体、托管加草稿、一次性生成的狭窄形态,且不用于生成后扩展。文中未提供收费、价格、平台或效果的说明。