SAP ABAP 字符串截取

一、截取右边N位的字符串

DATA matnr TYPE string.
matnr = 1234567890.
SHIFT matnr BY strlen( matnr ) - 5 PLACES LEFT.

二、从第N+1位开始,截取后面所有字符串,但会覆盖此字符串。

DATA lv_str TYPE string VALUE ‘123456789ABCDEFGHI’.
SHIFT lv_str by 18 PLACES LEFT.
WRITE lv_str.

三、把字符串中在str以前的字符都去掉
SHIFT {c} UP TO {str} {mode}.

四、字符串c中前的(LEFT)或者后的(RIGHT)的字符str都去掉
SHIFT {c} LEFT DELETING LEADING {str}.
SHIFT {c} RIGHT DELETING TRAILING {str}.

### SAP ABAP 中使用 SQL 进行字符串截取SAP ABAP 环境下,可以利用 `SELECT` 语句中的 `SUBSTRING` 函数来实现对数据库表中特定字段的字符串截取功能。此方法允许开发人员灵活地指定起始位置以及所需子串的长度。 对于具体的应用场景而言,在查询销售订单头部数据时可以通过如下方式仅选取交货单号(`VBELN`)中间部分的数据作为筛选条件: ```sql SELECT SINGLE * FROM VBAK WHERE SUBSTRING( VBAK~VBELN FROM 2 FOR 9 ) EQ '000000339' INTO @DATA(lwa_vbak). WRITE |{ lwa_vbak-vbeln ALPHA = IN }|. ``` 上述代码片段展示了如何通过 `SUBSTRING` 函数从 `VBAK~VBELN` 字段第二位开始读取九个字符并与给定值对比匹配记录[^2]。 另外一种常见需求是从现有字段中提取固定长度的部分并将其存储到新定义的结果集中去。下面的例子说明了怎样把物料编号(`MATNR`)第四个字符之后连续五个字符取出,并创建一个新的列名保存这些信息: ```abap SELECT marc~werks, " 工厂 SUBSTRING( marc~matnr FROM 4 FOR 5 ) AS matnr_t " 物料, 截取之后的 FROM marc WHERE marc~werks = '1000' INTO TABLE @DATA(lt_temp3) UP TO 5 ROWS. IF sy-subrc = 0. cl_demo_output=>display( lt_temp3 ). ENDIF. ``` 这段程序不仅实现了基于SQL层面的字符串处理逻辑,还能够高效地完成多条记录的同时转换工作[^3]。 值得注意的是,当涉及到更复杂的业务逻辑或者需要更高性能的情况下,则可能要考虑采用其他高级特性如OPEN SQL增强选项或是ABAP内部对象模型来进行优化改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值