ABAP+如果在join的时候需要表1的字段某几位等于表2的字段的某几位,需要怎么做?

使用substring,

代码:SUBSTRING( C~KUNAG,5,6 ) = SUBSTRING( A~KUNNR,5,6 )

表明:C表的KUNAG字段的第5位开始,取6个字符,与C表的KUNNR字段的第5位开始,取6个字符,所对应的值相同。

一般可以用于需要连接的两个表中,一个表有前导零,另一个表没有前导零的时候使用,就可以不用去LOOP里面给其中一个表添加前导零了,但是没有试过效率哪个更高。

比如GT_ALV表里面没有前导零,后台表KNVV里面有前导零,这时不想去补充前导零,想直接在SELECT的时候截取或者补充前导零,如何做呢?

下面是完整的代码示例:

复制代码
SELECT DISTINCT C~KUNAG,A~BZIRK ,B~BZTXT
      FROM KNVV AS A
      RIGHT JOIN @GT_ALV AS C ON ( SUBSTRING( C~KUNAG,5,6 ) = SUBSTRING( A~KUNNR,5,6 )
      OR C~KUNAG = SUBSTRING( A~KUNNR,5,6 ) )
      LEFT JOIN T171T AS B ON A~BZIRK = B~BZIRK
      WHERE A~VKORG = @P_BUKRS
*      AND B~SPRAS = @SY-LANGU
      INTO TABLE @DATA(LT_T171T_INNER).

因为GT_ALV里面既有一些有前导零又有一些没前导零,所以用了一个OR

另外,写了一篇比较全面的SAP select查询的笔记,可移步查看:

【案例总结】简直绝了------非常全面的SELECT总结-CSDN博客

相关推荐
许彰午3 分钟前
87_Python Django模型与数据库
数据库·python·django
流量猎手9 分钟前
Vscode登陆服务器
服务器·ide·vscode
—Miss. Z—23 分钟前
计算机二级MySQL选择题考点Ⅱ
数据库·mysql·oracle
敖行客 Allthinker23 分钟前
IM 融合专题:后端架构师的核心修炼
java·开发语言·数据库
翔云12345633 分钟前
MySQL 中 CURRENT_TIMESTAMP 到底取的是 INSERT 时间,还是 COMMIT 时间?
数据库·mysql
程序员爱钓鱼39 分钟前
Rust 变量与不可变性:为什么默认不能修改变量?
前端·后端·rust
矜持的左手40 分钟前
硬件故障后数据文件大小不对故障处理—Oracle碎片扫描恢复
数据库·oracle
随风一样自由1 小时前
【前端工程化】前端工程化解耦实践:从问题分析到架构重构
前端·重构·架构
vortex51 小时前
Web 渗透测试:未授权与越权漏洞全流程挖掘思路
前端
我有满天星辰2 小时前
【前端模块化】前端模块化演进之路:从脚本堆砌到标准统一
前端