sap abap 对字符串的操作

替换字段内容

REPLACE [FIRST /ALL OCCURRENCES OF]<STR1>INTO <STR> WITH <STR2>

DATA STR TYPE C  LENGTH 50 VALUE  ‘    HOW    ARE YOU HOW‘.

DATA STR1 TYPE C  LENGTH 3 VALUE ‘HOW‘.

DATA STR2 TYPE C  LENGTH 4 VALUE ‘SDFH‘.

REPLACE FIRST OCCURRENCE OF STR1 IN STR  WITH ‘SDFH‘.

REPLACE FIRST OCCURRENCE OF STR1 IN STR  WITH STR2.

REPLACE FIRST OCCURRENCE OF ‘HOW‘ IN STR  WITH STR2.

替换字符串STR 中第一次出现STR1 的地方.

OF 后面跟被替换的内容,可以是变量和常数,

WITH 后面跟要替换的内容,可以是变量和常数。

DATA STR TYPE C  LENGTH 50 VALUE  ‘    HOW    ARE YOU HOW‘.

REPLACE ALL OCCURRENCES OF STR1 IN STR  WITH STR2.

替换字符串STR 中所有出现STR1 的地方.

REPLACE  STR1 IN STR  WITH STR2 .

默认只替换第一次出现的地方.

REPLACE <STR1> WITH <STR2> INTO <STR> [LENGTH <1>]

只能替换字符串STR 中第一次出现STR1 的地方.

DATA STR TYPE C  LENGTH 50 VALUE  ‘    HOW    ARE YOU HOW‘.

DATA STR1 TYPE C  LENGTH 3 VALUE ‘HOW‘.

DATA STR2 TYPE C  LENGTH 4 VALUE ‘SDFH‘.

REPLACE  STR1  WITH STR2 INTO STR  LENGTH ‘2‘.

LENGTH ‘2‘ 表示被替换的字符长度。

REPLACE  STR1  WITH STR2 INTO STR.

没有LENGTH 默认全部替换

注意

FIRST /ALL OCCURRENCES OF 不能与 LENGTH 同时用,两种语法间的区别。

转换大/小写

将字符串转换成大写

DATA STR3 TYPE C  LENGTH 50 VALUE  ‘ qaewrwetW‘.

TRANSLATE STR3 TO UPPER CASE.

将字符串转换成小写

DATA STR TYPE C  LENGTH 50 VALUE  ‘    HOW    ARE YOU HOW‘.

TRANSLATE STR TO LOWER  CASE.

查找字符串

若要查看结果,将查找结果放入查找结果表中.

ABAP 中有专门的存放查找结果的表类型MATCH_RESULT_TAB.

DATA STR TYPE C  LENGTH 50 VALUE  ‘    HOW    ARE YOU HOW‘.

DATA STR1 TYPE C  LENGTH 3 VALUE ‘HOW‘.

DATA RESLT TYPE MATCH_RESULT_TAB.

FIND FIRST OCCURRENCE OF STR1 IN STR RESULTS RESLT.

找出字符串STR 中第一次出现字符串 STR1 的地方。

查找结果是行数(第0行),起始位数(第4位),长度(3位)

起始位数19,长度3

起始位数4,长度3

找出字符串STR 中所有出现字符串 STR1 的地方。

DATA STR TYPE C  LENGTH 50 VALUE  ‘    HOW    ARE YOU HOW‘.

DATA STR1 TYPE C  LENGTH 3 VALUE ‘HOW‘.

FIND ALL OCCURRENCES OF STR1 IN STR RESULTS RESLT.

获得字符串长度.

STRLEN(<c>) :<c>数据类型只能是C,N,D,T

DATA STR TYPE C  LENGTH 50 VALUE  ‘    HOW    ARE YOU HOW‘.

DATA INT1 TYPE I.

INT1 = STRLEN( STR ).

获取字符串STR的长度,结果放入变量INT1 中.

INT1 = STRLEN( ‘STR‘ ).

注意:括号内两边要有空格,括号内可以是常量,也可以是变量.

D,T数据类型的长度是固定的,为8位和6位,而C,N 型根据实际情况.

压缩字段内容

单个单词时

DATA STR4 TYPE C  LENGTH 10 VALUE ‘  HOW  ‘.

CONDENSE STR4.

去掉单词两边得空格。

有多个单词时,单词之间用空格隔开,其余空格全部去掉。

DATA STR TYPE C  LENGTH 50 VALUE  ‘    HOW    ARE YOU HOW‘.

CONDENSE  STR  .

DATA STR TYPE C  LENGTH 50 VALUE  ‘    HOW    ARE YOU HOW‘.

CONDENSE  STR  NO-GAPS.

NO-GAPS作用,去除所有的空格。

在定义时,如果指定了字符串长度,WRITE输出时,输出长度等于定义长度

DATA STR TYPE C  LENGTH 50 VALUE  ‘    HOW    ARE YOU HOW‘.

CONDENSE  STR  .

WRITE :str,‘!‘.

50位

DATA STR TYPE STRING VALUE  ‘    HOW    ARE YOU HOW‘.

CONDENSE  STR  .

WRITE :str,‘!‘.

注意:CONDENSE 后面的变量只能是C,N,D,T类型的。

DATA INT1(15) TYPE N VALUE ‘21  02    3‘.

CONDENSE  INT1  .

对于N型数据,CONDENSE去掉空格后,会在前面补充前导0.

DATA INT1 TYPE D VALUE ‘21  2  3‘.

CONDENSE  INT1  .

DATA INT1 TYPE T VALUE ‘22  3 ‘.

CONDENSE  INT1  .

连接字符串

CONCATENATE <c1> ... <cn> INTO<c> [SEPARATED BY <s>].

DATA STR1 TYPE  STRING VALUE ‘ AB01 ‘  .

DATA STR2 TYPE  STRING VALUE ‘ CD02 ‘.

DATA STR TYPE  STRING .

CONCATENATE  STR1 STR2 INTO STR  .

被去掉了

DATA STR1 TYPE  STRING VALUE ‘ AB01         ‘  .

DATA STR2 TYPE  STRING VALUE ‘     CD02 ‘.

5位空格

DATA STR1 TYPE  STRING VALUE ‘ AB01         ‘  .

DATA STR2 TYPE  STRING VALUE ‘CD02 ‘.

通过对比,拼接时会自动去掉拼接对象后面的空格,而前面的空格保留。

SEPARATED BY  拼接时用什么隔开。

CONCATENATE  STR1 STR2 INTO STR SEPARATED BY ‘,‘  .

TAB键隔开.

CONCATENATE  STR1 STR2 INTO STR

SEPARATED BY CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB .

TAB 键在这里无法显示,以#号键表示

日期拼接

DATA INT1 TYPE  D VALUE ‘20110218‘  .

DATA INT2 TYPE   D VALUE ‘20110219‘.

DATA STR TYPE  STRING .

CONCATENATE  INT1 INT2  INTO STR.

时间拼接

DATA INT1 TYPE  T VALUE ‘123226‘  .

DATA INT2 TYPE   T VALUE ‘112336‘.

DATA STR TYPE  STRING .

CONCATENATE  INT1 INT2  INTO STR.

数字文本拼接

DATA INT1(6) TYPE  N VALUE ‘123226‘  .

DATA INT2(6) TYPE   N VALUE ‘112336‘.

DATA STR(12) TYPE  N .

CONCATENATE  INT1 INT2  INTO STR.

注意:C,N,D,T类型的数据可拼接,I,F,P,X类型的数据 不能拼接。

D,T型拼接时,因为都是定长度,如果用DT类型接收,只能取到第一条数据,失去拼接的意义,所以接收类型定为STRING或N型。

4位空格

拼接时,若要保留字符串后面的空格,使用偏移量方法。

1位空格

5位空格

DATA STR1 TYPE  STRING VALUE ‘ AB01    ‘  .

DATA STR2 TYPE  STRING VALUE ‘ CD02 ‘.

DATA STR3 TYPE  STRING VALUE ‘ EF03 ‘.

DATA STR TYPE  C LENGTH 16.

STR+0(9) = STR1.

STR+9(5) = STR2.

使用偏移量时注意:(1)括号前面的数字位开始位,括号里面的数字为长度。

(2)接收的变量需要指定长度,不能用STRING类型.

拆分字符串

SPLIT <c> AT <del> INTO <c1> ...<cn>.

DATA STR1 TYPE  STRING .

DATA STR2 TYPE  STRING .

DATA STR3 TYPE  STRING .

DATA STR TYPE  STRING VALUE ‘OK,GOOD,NICE‘.

SPLIT STR AT‘,‘ INTO STR1 STR2  STR3.

DATA STR4 TYPE C VALUE ‘,‘.

SPLIT STR AT STR4 INTO STR1 STR2  STR3.

将字符串STR 按‘,’拆分,放入变量STR1 STR2 STR3 中.

按字母拆分时,需要识别大小写

注意以上各部分的变化,先将字符串做TAB 拼接,因TAB 键在这里无法显示,以’#’号表示,但这里的‘#’号不代表#号键,所以在用按’#’号拆分时无法成功。这里的’#’代表的是TAB键,只能用TAB 拆分.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-15 12:01:25

sap abap 对字符串的操作的相关文章

SAP ABAP编程 字符串加密-MD5_CALCULATE_HASH_FOR_CHAR

DATA: str1 TYPE c LENGTH 12 VALUE 'zxcv', str2 TYPE c LENGTH 32, str3 TYPE c LENGTH 32. CALL FUNCTION 'MD5_CALCULATE_HASH_FOR_CHAR' EXPORTING data    = str1 length  = 0 *   VERSION = 1 IMPORTING hash    = str2. WRITE: / '原来:', str1. WRITE: / '改动:', s

理解CSV文件以及ABAP中的相关操作

在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separator:两个字段之间的界线,在CSV文件中即是“,”. Delimiter:这种符号的开端和结束,代表了某种东西的界限.举个例子“测试字符串”有两个delimiters,即两个双引号.在很多逗号需要成为文本的情况下,这些CSV文件会使用双引号作为Delimiter. Terminator : 代表片段

ABAP开发顾问必备:SAP ABAP开发技术总结

声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4260224.html 该文档是根据我过去多年学习文档与工作文档总结而成,项目开发过程中我都会参考此文档,主要ABAP很多细节上的东西不可能你记得很牢固,或者你记得一时,但过不了几天做别的项目就会

SAP ABAP之第一,二,三代出口类型BADI实现 概念解释

BADI是用户的第三代出口类型,我们来看看其具体的是如何实现的. 一,用户出口的类型 1,第一代 sap提供一个空代码的子过程,在这个子过程中用户可以添加自己的代码,控制自己的需求.这类增强都需要修改sap的标准代码.示例:USEREXIT.. in SAPMV45A 2,第二代 sap提供的是CUSTOMER-FUNCTION,它是通过SMOD和CMOD完成实现. 3,第三代 sap提供的第三代的用户出口就是BADI,他的调用方式是CALL METHOD (instance),(相关的TCOD

[SAP ABAP开发技术总结]ABAP程序之间数据共享与传递

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 19.             数据共享与传递... 222 19.1.         程序调用.会话.SAP/ABAP内存 关系... 222 19.2.         ABAP Memory数据共享... 224 19.2.1.     EXPORT. 224 19.2.2.     IMPORT. 226 19.2.3.     DELETE. 227 19.3

5.4 SAP ABAP 面向对象概念 - 多态 - 摘自 《SAP ABAP面向对象程序设计:原则、模式及实践》

<SAP ABAP面向对象程序设计:原则.模式及实践> https://book.douban.com/subject/30317853/ http://www.duokan.com/shop/tbt/book/179473 https://item.jd.com/12423999.html https://e.jd.com/30429611.html 5.4 多态 5.4.1 多态的概述 多态是一个生物学和化学中的专有名词,被面计算机科学家引用到面向对象的程序设计中. 我们用柯林斯英语词典看

SAP ABAP 库存盘点注意点及BAPI的使用

欢迎看到文章的朋友加入SAP技术交流QQ群:160061507 关于盘点的一点介绍: 盘赢:帐面库存小于实际库存.盘亏:帐面库存大于实际库存 盘点在系统中的步骤: 1.创建盘点凭证MI01 告知系统在需要盘点的:工厂,库存地,物料,是否批次,是否特殊库存. 2.冻结上述物料的库存移动 如果在盘点凭证中的Posting Block打勾,那么在盘点凭证中登记的物料就自动block了. 当然在实际操作中,最好就是把仓库大门一关,送货进来的供应商敲破大门就是不开,^_^,玩笑. 3.库存盘点MI04 盘

abap处理字符串

abap处理字符串 1. 字符串连接CONCATENATE dobj1 dobj2 ... INTO result[IN { BYTE | CHARACTER } MODE][SEPARATED BY sep]. 2.字符串分隔, split 一个string的部分到一个内表或一系列的变量SPLIT dobj AT sep INTO{ {result1 result2 ...} | {TABLE result_tab} }[IN {BYTE|CHARACTER} MODE]. 3. 字符串查找,

ABAP数据表的操作

这几天对于数据标的操作表较多,自己从网上找资料和自己动手操作总结了一些数据表的增删改查操作,希望对一些初学者有所帮助,仅供参考. 开源的数据库操作都离不开INSERT.UPDATE.MODIFY和DELETE语句.其中当SY-DBCNT返回为0,则表示操作成功,此外还将返回实际操作的数据行数.需要指明的是Open SQL本身并不进行操作权限的检查,若需要进行设定,则要在系统中创建授权对象. 一.INSERT语句Open SQL中的INSERT语句用于向数据库中插入新条目.1.插入单行数据:dbt