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博客

相关推荐
踩着两条虫几秒前
去“AI味儿”实操手册:从“机器脸”到“高级脸”,只差这三步!
前端·vue.js·ai编程
Flash.kkl2 分钟前
TCP套接字
服务器·网络·tcp/ip
Mistra丶3 分钟前
记一次 JVM+Postgresql的 “死锁” 问题排查
jvm·数据库·postgresql·死锁
一然明月4 分钟前
Qt QML 锚定(Anchors)全解析
java·数据库·qt
劳埃德福杰10 分钟前
【Kylin银河麒麟】文件系统磁盘空间满导致无法进入操作系统
运维·服务器·电脑·笔记本电脑·kylin
qq_2113874710 分钟前
基于LangGraph多agent
开发语言·前端·javascript·agent·langgraph
逻辑峰19 分钟前
ReadStat在Linux的安装和使用
linux·运维·服务器
分享牛22 分钟前
Operaton入门到精通23-Operaton 2.0 原生支持 JUnit 6 核心指南
数据库·junit
摸鱼仙人~27 分钟前
Vue Todo 实战练习教程(简略版)
前端·javascript·vue.js
dzj88827 分钟前
云朵字生成器-html
前端·css·html·云朵字