我们看到下图 CDS view 源代码里 association 条件中的
$projection.
在SAP CDS(Core Data Services)中,
$projection 是一个特殊的关键字,用于在查询中选择特定的字段并创建一个临时视图。它可以在CDS视图的源代码中使用,以对结果集进行处理和转换。通过使用
$projection,可以根据需要过滤和转换数据,将源数据集投影到一个新的、更具体的数据视图中。
假设有一个简单的业务场景,涉及到一个名为
SalesOrder 的数据表,其中包含销售订单的信息,包括订单号、客户名称、产品、数量和金额。我们可以创建一个基本的CDS视图,然后使用
$projection 来创建一个新的视图,仅选择所需的字段。
以下是一个示例,假设我们有一个名为
SalesOrder 的CDS数据表:
现在,我们可以基于上述
SalesOrder 实体创建一个CDS视图,并使用
$projection 选择所需的字段,如下所示:
在上面的示例中,
$projection 关键字用于选择
CustomerName 和
Product 字段,并保留了原始的
Quantity 字段。
Amount 字段也被选择到新的视图中,但没有进行特殊处理,因此它保持不变。
通过使用
$projection,我们可以创建一个新的CDS视图,仅包含我们感兴趣的字段,而不必重新定义所有的字段和逻辑。这有助于简化查询和数据处理,同时还可以提高查询的性能,因为只选择了所需的字段。
再看另一个例子。
在 SAP 的 ABAP 编程环境中,CDS(Core Data Services)视图是一个强大的工具,可以让开发者以更高效、更简洁的方式操作数据库。在 CDS 视图的源代码中,
$projection 是一个特殊的关键字,它被用来引用当前的投影列表。也就是说,
$projection 引用的是当前 CDS 视图定义中所包含的所有字段。
举例来说,如果你在 CDS 视图中定义了一些字段,例如
id、
name 和
status,然后你在视图的某个部分(如一个条件表达式或者一个计算表达式)需要引用这些字段,那么你就可以使用
$projection 关键字。
以下是一个使用
$projection 的简单示例:
在上面的例子中,CDS 视图
ZMyView 包含了几个字段,如
CarrierId、
ConnectionId、
FlightDate、
Price、
Currency、
Passengers 和
Distance。然后我们定义了一个计算字段
TotalDistanceTravelled,这个字段的值是
Distance 字段的值乘以
$projection.Passengers 的值。在这里,
$projection.Passengers 就是用来引用
Passengers 字段的。
然后,在
where 子句中,我们又使用了
$projection.TotalDistanceTravelled 来引用
TotalDistanceTravelled 字段。这里的
$projection.TotalDistanceTravelled > 10000 就表示只选择那些
TotalDistanceTravelled 字段的值大于 10000 的记录。
需要注意的是,
$projection 只能在 CDS 视图的计算表达式和条件表达式中使用,不能在
select 子句的列表中使用。也就是说,你不能写出像
$projection.someField as SomeField 这样的代码。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24475491/viewspace-2978804/ ,如需转载,请注明出处,否则将追究法律责任。