You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAP CDS OData服务$metadata缺失UI.lineItem注解问题咨询

问题描述

我创建了带有UI注解的CDS实体并发布为OData服务,代码示例如下:

@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Test'
@Metadata.ignorePropagatedAnnotations: true
@OData.publish: true
define view entity Z_Test_View
  as select from acdoca
{
  key cast(rldnr as rldnr preserving type)      as rldnr,
  key cast(rbukrs as bukrs preserving type)     as rbukrs,
  key gjahr,
  key belnr,
  key docln,
      @UI.lineItem: [{ position: 10, value: 'ryear' }]
      ryear,
}

此外,我为其创建了类型为OData V2 - UI的服务绑定。原本预期UI注解会出现在OData服务的$metadata中,但实际缺失。通过Eclipse预览调试发现,该注解存在于请求/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/Annotations(TechnicalName='Z_TEST_VIEW_BND_VAN',Version='0001')的响应中:

<edmx:DataServices>
  <Schema Namespace="z_test_view_bnd_van.v1" xmlns="http://docs.oasis-open.org/odata/ns/edm">
    <Annotations Target="cds_z_test_view_srv.Z_Test_ViewType">
      <Annotation Term="UI.LineItem">
        <Collection>
          <Record Type="UI.DataField">
            <PropertyValue Property="Value" Path="ryear"/>
          </Record>
        </Collection>
      </Annotation>
    </Annotations>
  </Schema>
</edmx:DataServices>

请问为何需要额外发起该请求,且UI注解未包含在OData服务的$metadata中?


解答

1. OData V2 注解的分离存储机制

OData V2 原生未定义注解嵌入核心元数据的规范,SAP 在实现OData V2服务时,将UI类注解(如@UI、@EndUserText)与核心元数据($metadata)分离存储。核心元数据仅保留实体结构、字段类型、主键等基础服务信息,UI相关注解则单独存入SAP Gateway的注解仓库,通过Catalog Service的专属接口对外暴露。

2. OData V2 - UI服务绑定的设计逻辑

你选择的OData V2 - UI绑定类型,正是为适配这种分离模式而生:

  • 该类型会自动将CDS中的UI注解同步到Gateway注解目录,而非直接嵌入服务的$metadata。
  • 这种设计能减小核心元数据体积,同时让UI注解可独立于服务元数据维护更新,避免频繁修改核心服务定义。

3. 单独请求Catalog Service注解接口的原因

SAP Fiori等前端框架在消费OData V2服务时,会自动调用Catalog Service的注解接口获取UI配置(如字段显示顺序、标签)。这种分离模式是SAP的最佳实践:

  • 核心服务专注数据提供,UI配置通过专门接口分发,职责划分更清晰。
  • 支持注解版本化管理(通过Version='0001'参数),便于迭代和回滚。

可选:让注解出现在$metadata中的方法

如果需要将UI注解直接嵌入$metadata,可将服务绑定类型改为OData V2 - Web API。该类型会把所有注解包含进核心元数据,但会增加$metadata体积,且注解变更需重新发布服务,灵活性不如分离模式。


内容的提问来源于stack exchange,提问作者Annie W.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 18:42:19