Metadata.allowExtensions 注解的一个实际使用例子

发布时间 2023-10-03 12:40:23作者: JerryWang_汪子熙

@UI 注解随着 SAP 标准的 Fiori Elements 应用一起发布。

如果 SAP 发布的标准 CDS view 包含了 @Metadata.allowExtensions:true 的注解,意味着 Partner 或者其他 Industry Solution 可以通过 Extension view 的方式来 override 标准 CDS view 里的 annotation,前提是这些 Extension 不能修改标准 CDS view 的 DDL.

下图是一个例子:

@Metadata.allowExtensions:true 是 SAP Fiori Elements 中的一个重要注解,用于允许合作伙伴或行业解决方案提供商通过扩展视图的方式,来覆盖标准的CDS(Core Data Services)视图中的注解内容,而不修改标准CDS视图的数据定义语言(DDL)。这个注解的作用非常关键,因为它允许了对Fiori Elements应用的定制化,使其适应各种不同的业务需求和行业标准。

在本文中,我将详细解释@Metadata.allowExtensions:true的作用、使用方法以及如何通过示例来说明其功能。

1. 了解@Metadata.allowExtensions:true

首先,让我们深入了解@Metadata.allowExtensions:true注解的关键方面:

  • 作用:该注解的主要作用是允许在标准CDS视图上创建扩展视图,并在扩展视图中覆盖标准CDS视图上的注解。这使得合作伙伴或行业解决方案提供商可以通过扩展定制化Fiori Elements应用,以满足不同的业务需求,而无需修改标准CDS视图的数据定义。

  • 限制:@Metadata.allowExtensions:true的使用有一些限制,其中最重要的是不能修改标准CDS视图的DDL。这意味着扩展视图可以改变标准CDS视图上的注解,但不能更改其表结构、字段定义或主键等关键元素。

  • 扩展视图:扩展视图是一种特殊的CDS视图,它通过继承标准CDS视图并应用@Metadata.allowExtensions:true注解来实现。扩展视图中可以添加、修改或删除标准CDS视图上的注解,以满足特定的需求。

  • 合作伙伴和行业解决方案提供商:这个功能主要针对SAP的合作伙伴和行业解决方案提供商,使他们能够为特定行业或客户提供高度定制化的Fiori Elements应用,而不会影响标准CDS视图的稳定性和兼容性。

2. 使用示例说明@Metadata.allowExtensions:true

为了更清晰地理解@Metadata.allowExtensions:true的功能,让我们通过一个示例来说明它的用法。

假设您是一个合作伙伴,您希望为标准的SAP销售订单Fiori Elements应用添加一些自定义功能,而不改变销售订单CDS视图的结构。以下是示例:

步骤1:创建标准CDS视图

首先,SAP提供了一个标准的CDS视图,表示销售订单数据。这个CDS视图包含一些默认的注解,用于定义显示和行为。

@AbapCatalog.sqlViewName: 'ZSALESORDER'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Sales Order'
define view ZSalesOrder as select from sord as so {
  key so.salesOrder as SalesOrder,
  so.customer as Customer,
  so.orderDate as OrderDate
} where so.salesOrderType = 'OR'.

步骤2:创建扩展视图

接下来,您可以创建一个扩展视图,以覆盖标准CDS视图上的注解。在扩展视图上,您可以添加自定义的注解,以改变Fiori Elements应用的行为。请注意,这个扩展视图必须应用@Metadata.allowExtensions:true注解。

@Metadata.allowExtensions: true
extend view ZSalesOrder with {
  @UI.lineItem: [ { position: 10, importance: #HIGH } ]
  @UI.headerInfo: {
    typeName: '{i18n>ZSalesOrder.SalesOrderTypeName}',
    typeNamePlural: '{i18n>ZSalesOrder.SalesOrderTypeNamePlural}',
    title: '{i18n>ZSalesOrder.SalesOrderTitle}',
    description: '{i18n>ZSalesOrder.SalesOrderDescription}'
  }
  @UI.selectionField: [ { position: 20, importance: #HIGH } ]
  @UI.lineItem: [ { position: 30, importance: #HIGH, label: '{i18n>ZSalesOrder.Customer}' } ]
}

在这个扩展视图中,我们添加了一些自定义的UI注解,以改变销售订单Fiori Elements应用的外观和行为。例如,我们调整了行项目的位置、标题和描述,并指定了某些字段作为选择字段。

步骤3:使用扩展视图

现在,您可以在应用中使用扩展视图而不是标准CDS视图。Fiori Elements应用将根据扩展视图上的注解进行渲染,从而实现了个性化定制,而无需修改标准CDS视图。

<AnnotationTerm Term="Common.EntitySet" Qualifier="SalesOrderSet">
  <AnnotationPath Target="ZSalesOrder"/>
</AnnotationTerm>

在这个示例中,我们通过AnnotationPath将扩展视图应用于特定的实体集。

步骤4:实现个性化定制

现在,您可以在Fiori Elements应用中看到自定义的注解生效。例如,销售订单列表中的字段位置、标题和描述都会根据扩展视图上的注解进行调整,而不会影响标准CDS视图的结构。

这样,您就可以为您的客户提供一个高度定制化的Fiori Elements应用,以满足其特定的业务需求,同时仍然可以享受标准CDS视图的稳定性和升级性。

3. 总结

@Metadata.allowExtensions:true

是SAP Fiori Elements中的关键注解,允许合作伙伴和行业解决方案提供商通过扩展视图的方式对标准CDS视图进行注解覆盖,从而实现Fiori Elements应用的个性化定制,而无需修改标准CDS视图的DDL。这一功能非常重要,因为它保证了应用的稳定性和兼容性,同时允许根据具体业务需求进行灵活的定制化。

通过上述示例,我们详细说明了@Metadata.allowExtensions:true的作用和用法,以及如何创建扩展视图来实现个性化定制。这个功能使得SAP Fiori Elements应用更加灵活和适应不同行业和客户的需求,为企业提供了强大的工具来定制和扩展其应用。