下图展示了 SAP S/4HANA 中一个 CDS view 的例子,其中下面的代码就是定义了一个 association:
association[0 ..* ] to sbook as _bookings on customer.id = _bookings.customerid
CDS(Core Data Services)是一种在 SAP 数据库中定义和管理数据模型的方式,而 Filtered Association 是 CDS 视图的一个重要特性之一。
SAP CDS 视图的 Filtered Association 简介:
Filtered Association 是 CDS 视图中的一个概念,它允许在一个视图中通过关联(Association)引入相关表的数据,但可以通过过滤条件来限制引入的数据量。这样可以避免不必要的数据加载和性能损失,同时也能够在视图中定义更精细的数据关系。
在 CDS 中,关联是一种定义不同实体之间关系的方式,类似于数据库中的外键。Filtered Association 利用了这种关系,但通过添加条件来过滤关联的数据,从而实现数据的选择性加载。
Filtered Association 的应用举例:
假设我们在一个公司的 SAP S/4HANA 系统中,有两个实体:SalesOrder
(销售订单)和 SalesOrderItem
(销售订单项),它们之间有一个典型的父子关系。每个销售订单包含多个销售订单项。我们希望创建一个 CDS 视图,展示所有销售订单,但只包括其中某一类型的销售订单项。
以下是一个详细的示例说明:
-
创建实体:
首先,在 CDS 定义文件中定义两个实体,一个表示SalesOrder
,另一个表示SalesOrderItem
。每个实体都会包含与其相关的属性,例如订单号、项目号、类型等。 -
定义 Filtered Association:
接下来,我们在SalesOrder
实体中定义一个 Filtered Association,将其与SalesOrderItem
实体关联起来。在这个关联中,我们可以通过添加条件来指定只选择特定类型的销售订单项。
entity SalesOrder {
key OrderID: UUID;
...
items: association to SalesOrderItem
on items.SalesOrderID = OrderID
where items.ItemType = 'Standard';
}
在上述示例中,SalesOrder
实体中的 items
关联将仅包括 SalesOrderItem
实体中 ItemType
为 'Standard' 的项目。
-
创建 CDS 视图:
最后,我们可以创建一个 CDS 视图,基于SalesOrder
实体,引入items
关联。由于已经在关联中定义了过滤条件,所以在视图中引入的数据将只包括特定类型的销售订单项。
@AbapCatalog.sqlViewName: 'ZV_SalesOrderWithItems'
define view ZSalesOrderWithItems as select from SalesOrder {
key OrderID,
...
items
}
在上述视图中,我们引入了 items
关联,但由于已经定义了过滤条件,所以只有符合条件的销售订单项被包括在内。
通过这个示例,我们可以看到 Filtered Association 的应用。它允许我们在 CDS 视图中引入关联数据,同时通过过滤条件对数据进行限制,以满足特定的业务需求。这种功能不仅有助于提高数据加载的性能,还可以让开发人员更灵活地定义视图的内容。
总结而言,SAP CDS 视图的 Filtered Association 是一种强大的特性,允许在视图中引入关联数据并通过过滤条件进行筛选。这对于优化性能、满足业务需求以及实现数据选择性加载都具有重要意义。在实际的 SAP S/4HANA 开发中,合理运用 Filtered Association 可以提高开发效率和系统性能。
网友评论