使用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查询的笔记,可移步查看: