探索 HANA 上的 ABAP [5]:CDS View 中的关联

2021-11-07 22:45发布


          点击此处--->   EasySAP.com 群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)

在这篇文章中,您将了解 CDS 视图中的关联。

什么是关联?

关联定义实体之间的关系,例如数据库表或另一个 CDS 视图。也可以将关联视为 按需加入。 这意味着只有在引用关联实体的字段时才会执行关联。通常,可以将 CDS 关联与 LEFT OUTER Joins 进行比较。

这是表 SCARR 和 SPFLI 之间连接的一个示例。




注:如需复制,所有代码最后以文本格式提供

可以使用 Association 编写相同的内容,如下所示。


解释

  • 左表是 SCARR——我们称之为主表

  • 右表是 SPFLI——我们称之为关联表

  • 使用与基数[1..*] 的关联代替连接

  • 关联表的别名_(下划线)开头。这不是强制性的,只是一个命名约定。

  • ON条件使用从投影列表它来自主表scarr的字段。

  • 最后,关联即 _spfli is exposed

  • 键的选择是强制性的——如果未选择键,则在调用关联时返回关联表中的所有条目。

此类 CDS 视图的输出仅显示 LEFT 表中的数据。关联表中的数据仅按需显示。


选择一个键,单击视图名称后面的三角形以查看关联列表并选择一个显示关联数据。



注意关联表返回的数据是基于 key : carrid = 'AA' 

模板

创建关联时要使用的模板是“使用关联定义视图”。


基数 

基数表示主表中的 1 个条目在使用格式 [a..b] 的关联表中具有 a 到 b 个条目。

  • 为零或一:[ 0..1 ] 或 [ 1 ] 或不指定任何内容

  • 精确到一:[ 1..1 ]

  • 多:[ ] 或 [ * ] 或 [ n..* ]

基数怎么写意义
到零或一[ 0..1 ]
[ 1 ]
不要提及基数
主表中的一条记录在关联表中具有零或一条记录
精确到一[ 1..1 ]主表中的一条记录在关联表中正好有一条记录
太多[ ]
[ * ]
[ n..* ]
用数字替换 n,通常为 0 或 1
主表中的一条记录在关联表中具有多条记录
[ 0..* ] 表示关联表有 0 条或 1 条或 2 条或任意数量的记录
[ 1..* ] 表示关联表有 1 条或 2 条或任意数量的记录记录但不能有 0 条记录

在 ABAP 代码中使用带有关联的 CDS

没有关联字段




带有关联字段


  • 当您访问关联字段时,使用 \  后跟关联名称并使用别名

  • 在选择字段列表中使用 alias~fieldname

  • 使用FIELDS子句在FROM子句之后写入字段- 由于您已经选择了别名,因此更容易编写

当 join 可以给出相同的数据时,为什么要使用关联?

考虑一个需要先显示承运人的应用程序,当用户点击承运人时,然后显示相关联的航班。在这里,用户可能最终会检查 4-5 个运营商,有时只有 1 个。通过加入,所有数据将被一次性选中。只有当用户需要数据时才会关联,才会被获取。


多重关联

一个 CDS 视图可以有多个关联,如下所示。

在这种情况下,数据预览将显示两个关联。


在使用 UI5 应用程序和 OData 服务时可以看到真正的关联。





赞赏支持