什么是 SAP ABAP CDS view 的 Filtered

2023-09-03  本文已影响0人  _扫地僧_

下图展示了 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 视图,展示所有销售订单,但只包括其中某一类型的销售订单项。

以下是一个详细的示例说明:

  1. 创建实体:
    首先,在 CDS 定义文件中定义两个实体,一个表示 SalesOrder,另一个表示 SalesOrderItem。每个实体都会包含与其相关的属性,例如订单号、项目号、类型等。

  2. 定义 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' 的项目。

  1. 创建 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 可以提高开发效率和系统性能。

上一篇 下一篇

猜你喜欢

热点阅读