问题解决之左连接字段作为查询条件

作者:ABAP技巧与实战 约 5 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, WM, 仓库管理, 开发, 数据工程

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

**点击蓝字** 关注我们

问题描述

不知道你有没有创建过这样的报表. 在查询结果中,特定字段为空. 但是用该字段为空去查询, 却查不出记录.

• 如图一,没有限制查询条件时,可以查询到数据

• 如图二.通过ALV过滤能只显示地点为空的数据

• 如图三.限制地点为空时, 用户期望能查询到图一红色框中的数据.

• 如图四.实际查询不到任何数据.

问题解决之左连接字段作为查询条 - 封面图
问题解决之左连接字段作为查询条 - 封面图

图一

问题解决之左连接字段作为查询条 - 封面图
问题解决之左连接字段作为查询条 - 封面图

图二

问题解决之左连接字段作为查询条 - 封面图
问题解决之左连接字段作为查询条 - 封面图

图三

问题解决之左连接字段作为查询条 - 封面图
问题解决之左连接字段作为查询条 - 封面图

图四

问题分析

上述问题产生的原因很简单,因为报表程序中使用了左连接(如图五),并且选择条件是左连接的表字段.

当左连接的右表中不存在的条目被查询出来的时候, 该字段的实际值是NULL. 因为ABAP变量的定义及显示对于NULL值都转换为初始值处理.

所以导致图一中的查询输出内容为空.

因为SQL语句本身支持NULL值,图二的选择条件无法被解释成 IS NULL . 所以添加选择条件为空时,无法查询到数据. 如果期望能查询到数据,

SQL语句需要调整.

问题解决之左连接字段作为查询条 - 封面图
问题解决之左连接字段作为查询条 - 封面图

图五

问题解决

有两种方式可以解决这个问题

• 调整报表程序,动态设置 右表字段的查询条件

• 使用CDS视图,调整输出的结果

_**01** _

**调整查询条件**

按下图的代码,调整查询条件, 判断左连接的选择条件内容,如果存在空值, 则解析为IS NULL. 否则使用标准的解析逻辑.如图六

问题解决之左连接字段作为查询条 - 封面图
问题解决之左连接字段作为查询条 - 封面图

图六

**动态报表中的NULL值支持**

**SPRING**

动态报表(D-Query)中使用了一种类似的方式,支持了选择屏幕输入null 值

> 详见连接 无峰,公众号:ABAP 技巧与实战 [ 动态报表D-Query 添加NULL查询支持

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485604&idx=1&sn=4ed61a1374d2ffd5356254939d32a6ce&chksm=cf5dd592f82a5c84008f62f22dc78c5959d3d63e5684e42b9a5e468677df38f8a3518fcb63ee&token=109355441&lang=zh_CN#rd)

> 动态报表简介 无峰,公众号:ABAP 技巧与实战 [ 动态报表D-Query简介

> ](http://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486429&idx=1&sn=8cbab08040255baa4c7495e6e106230d&chksm=cf5dd6ebf82a5ffdf6cd2cca5ef3b3a298dcb7e3aac2b4cae5073af9c6720bf57b5544c57a49#rd)

_**02** _

**通过CDS视图**

视图输出中时把NULL值调整成空值.查询语句调整为从视图读取数据.

问题解决之左连接字段作为查询条 - 封面图
问题解决之左连接字段作为查询条 - 封面图
问题解决之左连接字段作为查询条 - 封面图
问题解决之左连接字段作为查询条 - 封面图

总结

左连接在查询中广泛应用,如果左连接的表字段参与了查询条件, 并且没有做特殊处理, 就会给业务人员带上困惑,用户会质疑报表的正确性.

通过对报表查询方式的一点调整, 就能解决业务的这个困惑. 让报表的查询结果更符合业务预期.

** THE **

** END **

**约定**

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.

( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.

越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )

问题解决之左连接字段作为查询条 - 封面图
问题解决之左连接字段作为查询条 - 封面图

**公众号 : syjf1976_abap**

**ABAP开发技巧**

**微信号 : 392077**

请微信联系管理员

syjf1976

sharry_xlp

Yannick_Duan 申请进入公众号讨论群

ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「问题解决之左连接字段作为查询条件.md」整理生成,仅用于内部技术分享与学习交流。