什么是 SAP CDS view 中的 Exposed Association with filter 技术

发布时间 2023-08-22 19:44:03作者: JerryWang_汪子熙

在SAP S/4HANA中,CDS(Core Data Services)是一种强大的数据建模和查询语言,而“Exposed Association with filter”是其功能之一。

下图是一个具体的例子。这里我们使用 _bookings[ class = 'C' ] 的语法来给 association 指定一个过滤条件,然后暴露成 _business_flights 给外部消费者使用。

SAP CDS视图中Exposed Association with filter的简介:

在CDS视图中,关联(Association)用于建立实体之间的关系,类似于数据库中的外键。Exposed Association是一种允许从一个CDS视图中引入其他CDS视图中的关联的方式。而“Exposed Association with filter”是在引入关联的同时,允许通过过滤条件限制引入的数据。这种功能在SAP S/4HANA的数据建模中非常有用,可以帮助开发人员更加灵活地定义视图之间的数据关系。

“Exposed Association with filter”的应用举例:

假设我们在一个公司的SAP S/4HANA系统中,有两个实体:SalesOrder(销售订单)和Customer(客户)。每个销售订单都与一个客户相关联。我们希望创建一个CDS视图,展示所有客户,但只包括那些具有特定类型的销售订单的客户。

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

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

  2. 定义“Exposed Association with filter”:
    接下来,我们在Customer实体中定义一个“Exposed Association with filter”,将其与SalesOrder实体的关联关系引入。在这个关联中,我们可以通过添加条件来指定只选择具有特定类型的销售订单的客户。

    entity Customer {
        key CustomerID: UUID;
        ...
        // Expose association with filter
        @ObjectModel.association.usage: #Exposure
        @ObjectModel.association.type: #Association
        @ObjectModel.association.filter: 'SalesOrders.OrderType = ''Standard'''
        salesOrders: association [0..*] to SalesOrder on $projection.CustomerID = CustomerID;
    }
    

    在上述示例中,Customer实体中的salesOrders关联将仅包括SalesOrder实体中OrderType为 'Standard' 的订单。

  3. 创建CDS视图:
    最后,我们可以创建一个CDS视图,基于Customer实体,引入salesOrders关联。由于已经在关联中定义了过滤条件,所以在视图中引入的数据将只包括具有特定类型销售订单的客户。

    @AbapCatalog.sqlViewName: 'ZV_CustomersWithStandardOrders'
    define view ZCustomersWithStandardOrders as select from Customer {
        key CustomerID,
        ...
        salesOrders
    }
    

    在上述视图中,我们引入了salesOrders关联,但由于已经定义了过滤条件,所以只有符合条件的销售订单的客户被包括在内。

通过这个示例,我们可以看到“Exposed Association with filter”的应用。它允许我们在一个CDS视图中引入关联数据,同时通过过滤条件来限制数据的范围,以满足特定的业务需求。这种功能不仅有助于优化性能,还可以让开发人员更灵活地定义视图的内容。

总结而言,SAP CDS视图中的“Exposed Association with filter”是一种强大的特性,允许从其他视图中引入关联数据并通过过滤条件进行筛选。在SAP S/4HANA的开发中,合理使用这一特性可以提高开发效率,同时实现数据选择性加载和业务需求的满足。