首页 > 其他分享 >Metadata.allowExtensions 注解的一个实际使用例子

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

时间:2023-10-03 12:46:18浏览次数:38  
标签:allowExtensions 视图 Fiori CDS 注解 Metadata

@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应用更加灵活和适应不同行业和客户的需求,为企业提供了强大的工具来定制和扩展其应用。

标签:allowExtensions,视图,Fiori,CDS,注解,Metadata
From: https://www.cnblogs.com/sap-jerry/p/17740990.html

相关文章

  • springMVC自定义校验注解
     1.定义注解校验器PhoneNoValidator.java1/**2*@Authorhxy3*@Description4*@Date2023/9/1410:485*@Version1.06*/7publicclassPhoneNoValidatorimplementsConstraintValidator<PhoneNo,String>{8@Override9publicvo......
  • 注解和反射
    注解和反射注解Annotation1.什么是注解注解是从JDK5.0开始引入的新技术,注解和注释是有一定区别的,可以把注解理解为代码中的特殊标记。注解的作用注解不是程序本身,可以对程序作出解释注解可以在程序编译,类加载,运行时被读取,并且执行相应的处理注解的格式注解是以@注释......
  • @LoadBalanced注解实现负载均衡功能过程
     基本流程如下:拦截我们的RestTemplate请求http://userservice/user/1RibbonLoadBalancerClient会从请求url中获取服务名称,也就是user-serviceDynamicServerListLoadBalancer根据user-service到eureka拉取服务列表eureka返回列表,localhost:8081、localhost:8082I......
  • maven 编译.../maven-metadata.xml 报错
    问题突然编译报错:解决打开maven的里离线工作模式,感觉就是下载包到本地.一个是在maven设置里面或者直接在maven编译的窗口:......
  • SSM注解记录
    属性自动注入@Autowired该注解在实体类属性上使用,首先通过ByType注入,若存在多个bean有相同属性,再通过ByName注入,若此时id也不唯一或者与实体类set方法不一致的情况下,需配合@Qualifier注解指定对应bean的id@Resource首先通过ByName注入,若id相同,通过ByType注入区别@Autowired......
  • 3、SpringMVC之RequestMapping注解
    3.1、环境搭建创建名为spring_mvc_demo的新module,过程参考2.1节3.1.1、创建SpringMVC的配置文件<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/......
  • lombok注解:@Builder
    带有注释的方法@Builder(从现在起称为target)会导致生成以下7个内容:名为的内部静态类FooBuilder,具有与静态方法相同的类型参数(称为builder)。在构建器中:目标的每个参数都有一个私有非静态非最终字段。在构建器中:包私有无参数空构造函数。在构建器中:目标的每个参数都有一个类......
  • 关于测试类注解对应的依赖
    对于测试类使用的@SpringBootTest@RunWith(SpringRunner.class)publicclassDaoTest{@AutowiredprivateUserDaouserDao;@Testpublicvoidtest1(){Useruser=newUser();user.setId(1l);user.setItemId(1L);user.setOpen......
  • SpringIOC的注解使用
    1,实体类Student.javapackagecom.mashibing.bean;publicclassStudent{privateIntegerage;privateStringname;publicStudent(){System.out.println("student");}publicStudent(Integerage,Stringname){this.age=......
  • 同一个类调方法导致注解式事务失效的问题
    说明在项目启动时,如果有@Transactional注解,spring是生成代理类来开启事务、提交事务和回滚事务的,但是如果是同一个类之间调用,就是直接调方法,导致事务失效。我们可以用一下方式在同一类获取当前类的代理对象,从而避免事务失效的问题。但是这种方式会有问题,下面有说明。推荐调用拆到......