SAP ABAP 问题探索:维护视图的选择条件(Maintenance views Selection conditions)
在维护视图中设置选择条件过滤数据(Maintenance views Selection conditions),这个功能比较少用,但今天要用的时候发现不生效,鼓捣了一阵才知道原因,特以此文章记录。
·
SAP ABAP 问题探索:维护视图的选择条件(Maintenance views Selection conditions)
简介: 在维护视图中设置选择条件过滤数据(Maintenance views Selection conditions),这个功能比较少用,但今天要用的时候发现不生效,鼓捣了一阵才知道原因,特以此文章记录。
关键字:SAP ABAP 维护视图/选择条件 Selection conditions
文章目录
1 问题描述
在开发一个含有物料编码主键的配置表时,维护视图关联了 MARA 和 MAKT ,设置了物料描述视图字段,期望通过维护视图的选择条件页签将 MAKT~SPRAS 的条件值固定为 E 英文。
- 维护视图

- 选择条件

- 执行效果

执行效果不是期望的。
2 问题结论
维护视图的选择条件仅对视图主表的字段起过滤作用,对关联表的字段不起过滤作用。赶时间的读者可以不阅读以下探索部分。
3 问题探索
3.1 搜索指证资料
资料搜索关键字:Maintenance views Selection conditions ,selection criteria
- 在百度和必应上没找到有用的资料。
- F1 文档也没直接的相关说明


- 在 SAP SUPPORT 上也没找到有用资料


3.2 第 1 种猜想和验证
维护了视图字段才能在选择条件生效。此猜想验证失败,记录如下,
我在视图字段页签下增加了 SPRAS ,保持上述截图的选择条件设置。
维护数据测试失败。
3.3 第 1 种猜想和验证
视图主表的字段才能在选择条件生效。此猜想验证成功,记录如下,
我找到了一个有意思的函数 VIEW_FILL_WHERETAB ,
Debug 进入,
外层调用堆栈,可以看到选择条件用于主表查询,
他的数据关联查询机制不是直接关联查询,而是分别查询。
4 思维发散
- 为什么使用分别查询而不是关联查询?
我记得 ABAP 视图中的连接都是默认 INNER JOIN ,如果使用 INNER JOIN 关联查询,那么 where condition 就可能导致无法查到数据结果,这个问题在我们写报表程序的 GET DATA 部分也是常考虑问题,写其他 SQL 查询时也是,如 CDS 开发。 - 印证了 F1 文档

- 我的疑问:选择条件页签中,应该检查或提醒不允许输入关联表?又或者还有我没探索到的内容?(本次探索到这里截止。)有答案的读者欢迎私信指教我。
其他
我的微信群、QQ群和其他发布平台。
长期提供开发和运维服务。
更多推荐




所有评论(0)