增强或扩展CDS视图

在对标准CDS视图需要扩展字段或者一些功能时,我们可以考虑对标准的CDS进行EXTEND VIEW定义,也就相当于对标准CDS视图的增强,主要可用于扩展字段,如下

增强或扩展CDS视图 - 第1张  | 优通SAP
CDS查看扩展
  • CDS视图扩展是通过DDL语句EXTEND VIEW在专用DDL源中定义的。
  • 每个具有CDS视图扩展名的DDL源均定义两个对象:实际的CDS视图扩展名和追加视图。这对应于由标准DDL定义的两个对象。CDS视图和SQL视图。

可以在HANA Studio 创建EXTEND VIEW.

增强或扩展CDS视图 - 第2张  | 优通SAP
创建扩展CDS视图

专用模板可用于创建视图扩展的定义。创建DDL源之后,必须指定要扩展的CDS视图的名称,新的CDS实体(视图扩展)的名称以及SQL视图附加的名称。

增强或扩展CDS视图 - 第3张  | 优通SAP
CDS视图和扩展视图示例
  • 在此示例中,CDS视图S4d430_Extend_Target _A在元素列表中包含六个元素。CDS视图扩展Z4d430_Extend_View_A将字段airpfrom和airpto添加到此列表。
  • 两个DDL源之间的链接是通过关键字EXTEND VIEW之后的CDS视图名称建立的。

注意: 无法在此处指定SQL视图的名称,也就是说标准的视图名在这里是修改不了的,只能修改DDL的名字。

1.EXTEND VIEW说明

1.1.元素清单

  • 文字,字段,表达式,函数
  • 输入参数
  • 路径表达式
  • 聚集(从7.51开始,仅在目标已经包含聚集的情况下)

1.2.社团协会

  • View Extension可以添加关联

1.3.GROUP BY子句(自7.51版开始)

  • 仅当目标视图包含GROUP BY子句时
  • 强制非聚合的新元素

1.4.UNION(ALL)语句(自7.51版开始)

  • 如果目标视图包含UNION(ALL)语句,则必须提供
  • 需要相同数量的UNION(ALL)语句

像传统的追加视图一样,CDS视图扩展可以将元素添加到SELECT列表中。新的事实是扩展视图还可以定义其他关联。例如,可以使用它来定义与特定于客户的数据库表或CDS视图的关联。

注意: CDS View Extend可能包含关联,但不包含直接联接。

从7.51版开始,还可以扩展包含聚合和/或UNIONS的视图。但是要这样做,目标视图必须通过注释AbapCatalog.viewEnhancementCategory主动允许这样做。

增强或扩展CDS视图 - 第4张  | 优通SAP
具有关联关系的CDS视图扩展

在上面的示例中,CDS视图S4d430_Extend_Target _B CDS视图使用CDS视图扩展Z4d430_Extend_View_B进行了扩展。

此视图扩展不仅扩展了字段列表。它还向表机场添加了两个关联。

注意:视图扩展也可以直接使用新的关联,而不是直接使用关联数据源的字段。

增强或扩展CDS视图 - 第5张  | 优通SAP
具有Group By和UNION的CDS视图扩展
  • 在上面的示例中,CDS视图S4d430_Extend_Target_C包含两个与UNION语句链接的SELECT语句。每个SELECT语句在元素列表中都有一个聚合表达式,并具有一个相应的GROUP BY子句。
  • CDS视图扩展Z4d430_Extend_View_C反映了此结构。它包含两个SELECT语句的扩展名,并与关键字UNION链接。
  • 在两个SELECT语句中,扩展名都将字段city和country添加到元素列表中,并相应地扩展GROUP BY子句。

注意: 仅当扩展视图通过注释@ AbapCatalog.viewEnhancementCategory明确允许时,才可以使用GROUP BY和UNION进行扩展。

2.视图扩展的建议和限制

2.1.1.建议:

  • (客户)存储库对象的命名空间(DDL源和SQL Append视图)
  • 其他元素和关联的名称不常用(以避免以后发生冲突)

基础软件包中的CDS视图

  • 从基础软件包扩展CDS视图之前,请联系SAP。

2.1.2.限制条件:

运输后不重命名

  • 首次传输DDL源后,不能更改CDS View Extend和SQL Append View的名称

没有其他关键字段

  • CDS视图扩展中不允许使用前缀KEY

扩展CDS视图时,建议仔细选择存储库对象和其他实体的名称,以避免将来升级时发生冲突。建议将其他存储库对象放在适当的命名空间中。另一个是指附加元素列表条目和关联。通过使用非常通用的名称,您与以后在标准中添加的名称会增加发生冲突的风险。

注意:对于将字段追加到透明表中,建议的命名空间为ZZ。CDS View扩展不存在此类名称空间

  • 与一般的CDS视图一样,建议但并非强制性的是,对DDL源和CDS实体使用相同的名称。
  • 最重要的限制还涉及命名:从开发系统传输DDL Source后,SQL Append View和CDS View Extend的名称是固定的,不能再更改。

2.1.3.批注视图增强类别

注释AbapCatalog。viewEnhancementCategory

  • 限制CDS视图的可扩展性
  • 以方括号括起来的值列表,以逗号分隔

可能的值

  • #没有
  • #PROJECTION_LIST
  • #通过…分组
  • #联盟

允许的组合

  • #NONE不能与其他值组合
  • #GROUP BY和#UNION要求#PROJECTION_LIST

默认值

  • #PROJECTION_LIST

从7.51版开始,CDS视图的可扩展性可能会受到注释AbapCatalog.viewEnhancementCategory的限制。

注释可以与方括号中的逗号分隔值列表一起使用。存在以下值:

2.1.4.#没有

  • 不允许扩展。该值不能与其他值组合。

2.1.5.#PROJECTION_LIST

  • 允许SELECT列表的扩展名和其他关联;必须允许使用其他值的SELECT列表包含聚合表达式或具有UNION子句的CDS视图扩展。

2.1.6.#通过…分组

  • 允许将聚合的或非聚合的元素添加到具有聚合表达式的SELECT列表中,并且还允许GROUP-BY子句的关联扩展名。
  • 只能与#PROJECTION_LIST一起指定。

2.1.7.#联盟

  • 允许扩展带有UNION子句的CDS视图的SELECT列表。只能与#PROJECTION_LIST一起指定。
  • 如果使用的注释没有方括号,或者根本没有注释,则视图的可扩展性就好像已使用值#PROJECTION_LIST指定了注释。
增强或扩展CDS视图 - 第6张  | 优通SAP
从扩展目标导航到查看扩展

延伸检视

  • 如果此特定CDS视图有任何扩展,则可以直接在DDL源中看到它。
  • 如果一个或多个CDS视图扩展指向此CDS视图,则DEFINE VIEW语句的左侧会出现一个螺旋形符号。将指针放在该符号上时,将打开一个对话框,其中列出了现有扩展名。通过单击列表中CDS视图扩展的名称来打开其定义。