abap 字符串处理
1).SHIFT:截断字符串
SHIFT {c} [BY {n} PLACES] [{mode}].:
作用:去掉字符串的前n个位置的字符,如果n未指定,默认为1,如果指定的n小于等于0,则字符串不变。如果n超出字符串的长度,则字符串变空,所以在做此操作的时候要注意n的指定。可以首先获得该字符串的长度,方法:len=STRLEN(C)。
Mode:指定字符串截断的方向。
LEFT:从左边截断
RIGHT:从右边截断
CIRCULAR:把左边的字符放到右边。
SHIFT {c} UP TO {str} {mode}.:
作用:把字符串中在str以前的字符都去掉,同样可以指定mode,原理同上。
SHIFT {c} LEFT DELETING LEADING {str}.
SHIFT {c} RIGHT DELETING TRAILING {str}.:
作用:这两个语句就是把字符串c中前的(LEFT)或者后的(RIGHT)的字符str都去掉。
以上语句常用的场合:
A.去掉字符串中的前导字符。例如:如果alv中定一了一个字段是10位的字符,里面放的是so,po等number,而你不想显示前面的0,那么就可以这样做:SHIFT {c} LEFT DELETING LEADING 0.
B.已知某个字符串中包含固定的字符,想把这个固定字符前面的字符删掉,那么可以使用:SHIFT {c} UP TO {str}。例如:某个物料,通过增强mga00002和mga00003对其加了前缀,这个前缀部分是在某固定值表中取得的数据,在具体显示中,要把其前缀去掉。如TE-MRP-MAT1中想把te去掉,mrp表示该物料是跑mrp的,需求要求把te-去掉,mrp可以在固定值表中取得,则可以使用SHIFT {c} UP TO 'MRP'.
2).REPLACE:替换字符串
REPLACE {str1} WITH {str2} INTO {c} [LENGTH {l}].:
作用:把字符串c中的str1替换成str2,如果指定l,就是指定了替换的长度。如果替换成功,则SY-SUBRC设置成0。
备注:一次只可以替换一个字符串。
常用场合:
字符串的替换操作比较常用,需要注意的是l的指定长度。
3). TRANSLATE:转换字符串
TRANSLATE {c} TO UPPER CASE.
TRANSLATE {c} TO LOWER CASE.:
作用:字符串的大小写的转换
TRANSLATE {c} USING {r}. :
作用:根据规则r转换字符串c
常用场合:
Sap系统一般都是使用大写字母的,但是某些特定的字段却是用小写字母来标记的,在操作这些字段的时候就需要注意大小写的转换了。转换规则倒是不太常用,到现在我还没有遇到过。
4). SEARCH:查找字符串
SEARCH {c} FOR {str} {options}.:
作用:在字符串c中查找str,如果找到了,SY-SUBRC为0,SY-FDPOS为找到字符串的具体位置。
需要说明的地方:注意模式的使用
指定str:查找str,str中后面的空格忽略
指定.str.:查找str,包含了str中尾部的空格
指定*str:查找以str结尾的字符串
指定str*:查找以str开头的字符串
{options}的指定:
主要用到的就是:STARTING AT {n1}指定开始位置
ENDING AT {n2}指定结束位置
常用场合:
一般用来判断某个字符串是否符合条件。也可以结合其他语句对字符串进行操作。
5).CONDENSE:去掉字符串中的空格
CONDENSE {c} [NO-GAPS].:
作用:去掉字符串中的前面和后面的空格,如果指定NO-GAPS,则去掉字符串中的所有空格。
常用场合:获得字符串的精确长度,用于判断。
6).SPLIT:拆分字符串
SPLIT {c} AT {del} INTO {c1} ... {cn}.
作用:按照分割字符del把字符串c分割成c1…cn。
SPLIT {c} AT {del} INTO TABLE {itab}.
作用:按照分割字符del把c分割,然后放到内表中的相应字段
常用场合:
文件名的分割,根据完整的文件路径加文件名把文件名分割出来。
难点:无法确定要分割多少次.
解决方法:两两分割,到最后的那个就是了。例如:str=c:\dir1\dir2\dir3\file
Split str at '\' into str1 str2.
Find str2 for '/'.
Check sy-subrc = 0.
Do.
Find str2 for '/'.
If sy-subrc = 0.
Split str2 into str1 str2.
Else.
Exit.
Endif.
Enddo.
文件上传的类型是字符串,把其分割后放到内表中。例如上面的问题:
data: begin of itab occurs 0 ,
col1(30) type c,
end of itab.
Split str at '\' into table itab.
describe table itab lines line.
Read table itab index line.
Itab-col1就是file
7).CONCATENATE:连接字符串
CONCATENATE {c1} ... {cn} INTO {c} [SEPARATED BY {s}].
作用:把c1…cn用s分隔连接到c中
常用场合:文件下载,对文件中的字段编辑。
abap 字符串处理的更多相关文章
- ABAP字符串操作 截取字符长度 取位数
ABAP字符串操作 ABAP對字串的操作方法與其他語言的操作有較大差別,以下是較常用的對字串操作的方法: 1. 字串的連接:CONCATENATEDATA: t1 TYPE c LENGTH 10 ...
- ABAP 字符串操作
1).SHIFT:截断字符串 SHIFT {c} [BY {n} PLACES] [{mode}].: 作用:去掉字符串的前n个位置的字符,如果n未指定,默认为1,如果指定的n小于等于0,则字符串不变 ...
- ABAP字符串的加密与解密
FIEB_PASSWORD_DECRYPT:字符串解密:FIEB_PASSWORD_ENCRYPT:字符串加密.旧版本的可以用. PARAMETERS:str1 type char32 OBLIGAT ...
- ABAP 字符串函数
CONCATENATE:合并字符串. CONCATENATE f1 … fn INTO g [SEPARATED BY h]. 1 * CONCATENATE合并字符串 2 DATA: c1(10) ...
- ABAP 字符串换行符处理
今天发现BW系统从K3系统数据库抽取会计科目的描述时,转换出错. 从监控器上看是值2KO 845 412D#有问题,但不知道有什么问题,检查后感觉是符号#的问题. 在转换中添加代码,替换#,发现没有起 ...
- ABAP字符串操作1 检查字段小数位的长度
目的: 标准值1-6检查----最多保留小数点后3位 ,如果超出3位,显示错误信息”请检查父件XXX工序XXX的标准值X 的数值XXXX超出3位 “,退出. 关键语法1. SPLIT , ...
- ABAP字符串处理
字符串中包含单引号:单引号前面再加一个单引号 例:jest~stat = 'E0002' jest~stat = 'E0003' OR jest~stat = 'E0004' IF z_stat IS ...
- ABAP字符串翻转
就这个函数STRING_REVERSE 略显蛋疼,好搞那么复杂.... 简单的转换嘛: FUNCTION ZSTRING_REVERSE. *"----------------------- ...
- ABAP字符串按长度拆分
REPORT ytest_012 MESSAGE-ID oo. ) TYPE c. ) TYPE c. ) TYPE c. DATA: l_pos TYPE i. DATA: BEGIN OF ls_ ...
随机推荐
- PHP的学习--PHP的引用
引用是什么 在 PHP 中引用意味着用不同的名字访问同一个变量内容.这并不像 C 的指针,替代的是,引用是符号表别名.注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字.最 ...
- Moon River
读书笔记系列链接地址http://www.cnblogs.com/shoufengwei/p/5714661.html. 昨晚无意中听到了一首英文歌曲,虽不知其意,但是瞬间就被优美的旋律 ...
- 利用Microsoft.Office.Interop.Excel 将web页面转成PDF
网上有很多将Web页面转成PDF的方法,还有许多收费的第三方插件.其实利用Office 自带的将EXCEL发布成PDF的功能就可以实现,如果你的需求没有多复杂,可以采用笔者的方法. 首先将web页面h ...
- Spring MVC 学习总结(三)——请求处理方法Action详解
Spring MVC中每个控制器中可以定义多个请求处理方法,我们把这种请求处理方法简称为Action,每个请求处理方法可以有多个不同的参数,以及一个多种类型的返回结果. 一.Action参数类型 如果 ...
- 15个来自 CodePen 的酷炫 CSS 动画效果【下篇】
CodePen 是一个在线的前端代码编辑和展示网站,能够编写代码并即时预览效果.你在上面可以在线分享自己的 Web 作品,也可以欣赏到世界各地的优秀开发者在网页中实现的各种令人惊奇的效果. 今天这篇文 ...
- oracle数据库字符集US7ASCII,在java中处理中文问题
原来项目中oracle数据库一直是US7ASCII,我新项目对接的时候,查询以及插入中文,出现乱码问题. 暂时未能解决此问题,最终决定每次转码: 查询的时候: List<Record> l ...
- 第23/24周 临时数据库(TempDb)
在今天的性能调优培训里我们讨论下TempDb——SQL Server的公共厕所,在SQL Server里我是这样描述它的.我们的每个人都会经常使用TempDb.有些人直接使用它,有些人不直接使用它.今 ...
- SQL Server代理(7/12):作业活动监视器
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这个系列的前几篇文章里,你创建配置了SQ ...
- 【原创】Kakfa message包源代码分析
笔者最近在研究Kafka的message包代码,有了一些心得,特此记录一下.其实研究的目的从来都不是只是看源代码,更多地是想借这个机会思考几个问题:为什么是这么实现的?你自己实现方式是什么?比起人家的 ...
- Nancy 学习-身份认证(Forms authentication) 继续跨平台
开源 示例代码:https://github.com/linezero/NancyDemo 上篇讲解Nancy的Basic Authentication,现在来学习Nancy 的Forms身份认证. ...