应用场景:A表a字段取值后面四位与B表b字段进行匹配连表,假设要把工厂作为供应商查询。
方法有两种:
1.截取法,知道数据的固定位数。
官方解释:SUBSTRING( arg, pos, len ) ,Substring arg from the position pos with length len. pos and len must be specified so that the substring is within arg.
翻译:长度为len的位置pos的子字符串arg。Pos和len必须指定,以便子字符串在arg内。
2.去零法,位数不固定。
官方解释: LTRIM( arg, char ), String with the content of arg in which all trailing blanks and leading characters are removed that match the character in char. A blank in char is significant.
翻译:内容为arg的字符串,删除所有与char中字符匹配的尾随空格和前导字符。char中的空白是重要的。
截取法源代码
"工厂连接为供应商
SELECT
marc~werks,
marc~matnr,
l~lifnr
FROM marc "substring 供应商号 第七位开始取值4位 与 工厂匹配
LEFT JOIN lfa1 AS l ON SUBSTRING( l~lifnr,7,4 ) EQ marc~werks
WHERE marc~werks = '7000'
INTO TABLE @DATA(lt_alv)
UP TO 10 ROWS.
IF sy-subrc = 0.
cl_demo_output=>display( lt_alv ).
ENDIF.
截取法结果图
工厂与供应商的后四位进行匹配连表结果。
除了7000供应商还有其他包含7000的供应商也出来了。
去零法源代码
SELECT
marc~werks,
marc~matnr,
l~lifnr
FROM marc "LTRIM 供应商号 前导零去掉,与工厂匹配
LEFT JOIN lfa1 AS l ON ltrim( l~lifnr, '0' ) EQ marc~werks
WHERE marc~werks = '7000'
INTO TABLE @DATA(lt_LTRIM)
UP TO 10 ROWS.
IF sy-subrc = 0.
cl_demo_output=>display( lt_LTRIM ).
ENDIF.
去零法结果图
只取值的到7000的供应商。
注意点
这两种方法,都有相对应的使用场景,请灵活使用。
今天的分享到这里
分享使我快乐,我是寒武青锋。