sap_odata_api 资源用于接入 SAP 系统中的 OData 服务。UOSE 会同时从 OData V4 catalog 和 Gateway V2 catalog 发现已发布服务,读取用户本次选择的服务 $metadata,并把 Service、Entity Type、Entity Set、导航关系和 Operation 转化为可搜索、可发现动作的本体对象。
支持范围
当前支持:- OData V4 metadata,以及 Microsoft EDMX 1.0/2.0/3.0 风格的 OData V2 metadata。
- 同时从
catalog_v4和catalog_v2发现服务。 - 在同一个服务选择框中混合展示 V2/V4 catalog 来源,包含来源标签、来源筛选和来源计数。
- 按规范化后的服务根路径去重。同一服务同时出现在两个 catalog 时,优先使用
catalog_v4元数据。 - Basic Auth 和 static bearer 认证。
- V2 和 V4 服务的 collection 查询和单实体查询。
- SAP metadata 声明 Entity Set 可写时,支持 create entity 和 update entity。
- V4 action/function import,以及 V2 function import。
- V2 运行时约定,例如 key predicate、
$inlinecount=allpages、function import 参数和MERGE更新。 - V4 运行时约定,例如
$count=true和PATCH更新。 - 写请求前的 CSRF token 获取配置。
- V2 JSON 响应归一化:
d.results暴露为value,d.__count暴露为@odata.count,__metadata.etag保留给预览和执行上下文使用。
- delete 动作。
$batch。- media stream。
- deep insert。
- bound action 或 bound function。
同步对象
同步后通常包含:sap_odata_service:服务根、catalog 来源、协议版本和 metadata 位置。sap_odata_entity_type:EDMX 中的结构化类型,包含 key、属性和导航属性。sap_odata_entity_set:面向执行的集合入口,包含 query capabilities、写入元数据和导航绑定。sap_odata_operation:unbound action import 或 function import。
sap_odata_service_has_entity_setsap_odata_service_has_entity_typesap_odata_entity_set_targets_entity_typesap_odata_entity_type_navigates_to_entity_typesap_odata_service_exposes_operation
Capabilities
SAP OData capabilities 现在只描述持久连接行为和 catalog 位置,不再要求用户维护协议或白名单限制。 常用 capabilities 包括:catalogV4Path:OData V4 服务 catalog 路径。catalogV4Expand:V4 catalog 中用于展开服务的表达式。catalogV2Path:Gateway V2 catalog 路径。metadataPath:通常为$metadata。csrf:写请求前的 CSRF token 获取方式。
- 协议版本:由每个服务的
$metadata自动识别。 - 发现模式:发现过程会同时查询 V4 和 V2 catalog。
- 用户手工维护的 service、Entity Set 或 operation 白名单:同步范围通过服务选择框确定。
- 手工写入覆盖配置:写动作由 SAP metadata restriction 决定,例如 V4 Capabilities 注解或 V2
sap:creatable、sap:updatable。
Actions
常用动作包括:sap_odata.read_collectionsap_odata.read_entitysap_odata.create_entitysap_odata.update_entitysap_odata.invoke_operation
推荐使用方式
- 创建 SAP Secret,填写系统 baseUrl、认证方式、sap-client 和 TLS 配置。
- 注册
sap_odata_apiresource。 - 同步前打开服务发现。
- 在
catalog_v4和catalog_v2的混合结果中搜索、分组并按来源筛选服务。 - 勾选本次同步要包含的服务根路径。
- 执行 full sync。
- 查询
sap_odata_entity_set。 - 查看邻域,确认目标 Entity Type、字段、key schema、query capabilities、协议版本和 catalog 来源。
- 先
discoverActions,再simulateAction。 - 对写动作查看预期效果和审批要求后执行。
排障提示
- 如果预期服务没有出现,检查它是否发布在 SAP V4 或 Gateway V2 catalog 中、当前 SAP 用户是否有读取 catalog 的权限、
sap-client是否正确、服务是否已在 SAP 系统中激活。 - 如果某个服务出现在 SAP 文档中但发现不到,确认目标系统是否具备并启用了对应的 S/4HANA 组件、业务功能、communication scenario 或 Gateway service。
- 如果 metadata 解析失败,检查
$metadata是否返回有效的 OData V2 或 V4 EDMX 文档。 - 如果发现不到 create 或 update,检查 SAP metadata 写入 restriction 和源系统权限。
- 如果写请求失败,检查 CSRF、ETag 和源系统权限。
- 如果字段不存在,优先查看关联 Entity Type 的
properties,不要只看 Entity Set 摘要。