ABAP SQL Path Expression 路径表达式

如果我们要在ABAP SQL中访问CDS视图中的association(关联),那么就需要使用到Path Expression,即路径表达式,SAP希望我们使用关联而不是连接,因为关联是按需加入,只有使用路径表达式访问关联目标中的字段时,才会创建实际的join连接,下面通过几个简单的例子来说明路径表达式的使用方法。

在路径表达式中指定基数

当CDS view的关联指定基数[min..max]中的max为 * 时,在通过ABAP路径表达式访问时,需要指定基数,否则会有语法警告。

ABAP中的基数可以指定为[ (*) ]、[ (1) ]、[ (2) ],等同于to *、to 1、to 2,且会覆盖CDS view中指定的基数。

在路径表达式中指定连接类型 [ JOIN / LEFT OUTER JOIN ]

当路径表达式中指定了基数时,系统会默认连接类型为LEFT OUTER JOIN,以下SQL的结果可以验证这个默认规则,可以看到SPFLI表中并没有起飞机场为RTM的条目,但依然有结果输出,只是对应字段信息为空。

可以通过指定连接类型来达到内关联的效果:

在路径表达式中使用参数Parameters

 

在路径表达式中使用过滤条件

4.1. 在SELECT中的路径表达式上使用过滤条件

可以看到只有ID为“JFK”的条目的NAME字段有值,其他条目NAME字段的值则为空。

4.2. 在FROM中的路径表达式上使用过滤条件

需要注意的是,当在FROM中的路径表达式中使用了过滤条件时,只能查询该关联目标中的字段,比如上面SQL中对_SAIRPORT的关联使用了过滤条件,则只能查询_SAIRPORT关联中的字段,如果查询SPFLI中的字段则会报错,无法通过语法检查:

同时CDS view中也可以使用路径表达式以及指定过滤条件和连接类型,如下所示:

以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeveloperMrMeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值