为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

ABAP 字符串变量和字符变量的区别

2017-12-01 5页 doc 18KB 26阅读

用户头像

is_511210

暂无简介

举报
ABAP 字符串变量和字符变量的区别ABAP 字符串变量和字符变量的区别 ABAP 字符串变量和字符变量的区别 字符变量 字符变量是通过DATA语句后面跟上TYPE C进行定义的,且跟上LENGTH n来定义字符变量的长度。字符变量的长度定义后就不能再改变,它没有象C语言用'[message]'表示字符变量结束。在ABAP中所有在字符右边的空格都将被忽略,也就是说将一个由空格字组成字符串赋值给字符变量,系统仍然认为是个空字符串(empty/initial)。 DATA:cvar TYPE cLENGTH 20, len TYPE i. cvar=''...
ABAP  字符串变量和字符变量的区别
ABAP 字符串变量和字符变量的区别 ABAP 字符串变量和字符变量的区别 字符变量 字符变量是通过DATA语句后面跟上TYPE C进行定义的,且跟上LENGTH n来定义字符变量的长度。字符变量的长度定义后就不能再改变,它没有象C语言用'[message]'示字符变量结束。在ABAP中所有在字符右边的空格都将被忽略,也就是说将一个由空格字组成字符串赋值给字符变量,系统仍然认为是个空字符串(empty/initial)。 DATA:cvar TYPE cLENGTH 20, len TYPE i. cvar=''. len=STRLEN(cvar). WRITE:/'Charlen:',len. 这段代码将一个由空格组成的字符串赋值给字符变量,系统得到变量长度是0. 注意:有一个特例,在concatenate语句中的separated by'',该语句中的''将作为空格处理而非空字符串处理。 字符串变量 字符串变量在内存里是由两部分组成:数据管理头和字符串数据。在数据管理头里有指向字符串数据指针域和字符串长度指示域。字符串变量最大理论长度为2147483647个字符,它的长度常常受ztta/max_memreq_MB参数和并发处理进程限制。 DATA:svar TYPE string, len TYPE i. svar=''. len=STRLEN(svar). WRITE:/'Stringlen:',len. 运行该段代码,字符串的长度也是0。这主要由于字符常量''在ABAP里当作字符变量处理,这样空格就被忽略了(也就是认为是初始化的)。 我们可以使用字符串常量来避免该问题。字符串常量和字符常量的区别主 。使用字要起始和结束的标记符号不同,字符串常量使用"`",字符常量使用"'"符串常量``,我们将可以得到包含空格的字符串变量,系统将不忽略尾部的空格。 expected result: DATA:svar TYPE string, len TYPE i. svar=``. len=STRLEN(svar). WRITE:/'Stringlen:',len. 注意:ABAP将保留关键字SPACE定义为一个字符长度的字符常量,参见系统代码单元:SYSINI。因此,将SPACE赋值给字符串变量,字符串变量认为空,而非是一个空格。如果要将空格串赋值给字符串变量,我们就需要用到字符串常量赋值。请参见下面用空格替换分号的代码: DATA:cvar TYPE cLENGTH 20, svar TYPE string, len TYPE i. cvar='A;B;C;D;E'. REPLACE ALL OCCURRENCES OF';'IN cvar WITH''."(1) WRITE:/cvar. REPLACE ALL OCCURRENCES OF';'IN cvar WITH space."(2) WRITE:/cvar. REPLACE ALL OCCURRENCES OF';'IN cvar WITH``."(3) WRITE:/cvar. svar=`A;B;C;D;E`. REPLACE ALL OCCURRENCES OF';'IN svar WITH``."(4) WRITE:/svar. 运行该代码我们看到(1)和(2)没有得到需要的结构,字符常量(space和'')都被系统当作空字符处理,而非空格字符处理。代码(3)也不能得出正确的结果,主要由于``将先转换为字符变量,再参与计算,这样空格又被忽略。只有代码(4)才能得到我们需要的结果:A BC DE. 与其他类型变量混合使用 DATA:cvar TYPE cLENGTH 20,svar TYPE string,pvar TYPE pLENGTH 5,l TYPE i. pvar=5. cvar=pvar. l=STRLEN(cvar). WRITE:/'Content:|',cvar,'|(',l,')'. svar=pvar. l=STRLEN(svar). WRITE:/'Content:|',svar,'|(',l,')'. -5. pvar= cvar=pvar. l=STRLEN(cvar). WRITE:/'Content:|',cvar,'|(',l,')'. svar=pvar. l=STRLEN(svar). WRITE:/'Content:|',svar,'|(',l,')'. 使用字符变量将使用右对齐的转换进行赋值,其中最右边一位为符号位,如果是正5符号将为空格将被忽略,字符长度将为19。如果负5的话符号将为"-"占用,那样字符长度将为20. 使用字符串变量将使用左对齐的转换进行赋值,其中最左边一位为符号位,如果是正5符号将为空格,字符长度将为2。如果负5的话符号将为"-"占用,那样字符长度仍然为2. 对于这个赋值转换差异,大家在代码处理时一定要注意。 使用字符串变量的缺点 很多人都会认为使用字符串变量将会影响性能,其实这对于ABAP系统来说不是很大问题,ABAP程序的性能更多取决数据的处理性能。 子串处理 使用字符变量你可以使用下列方式进行字串赋值。 DATA:cvar TYPE cLENGTH 20,svar TYPE stringi. cvar='Hello World'. cvar+5(1)=','. write:/cvar. 但对于字符串变量,你就不能这么操作,你就得需要使用REPLACE命令进 行字串处理。 DATA:cvar TYPE cLENGTH 20,svar TYPE stringi. svar='Hello World'." svar+5(1)=','.=compiler error REPLACE SECTION OFFSET 5LENGTH 1OF svar WITH','. WRITE:/svar. So,you have to write alittle bit more code. 字符串翻译 If you need to translate your report to different languages you can just add anummer in brackets after the literal'Error Message'(001)which is more readable as text-001.This is not working with string literals. 几个常用字符串处理类 CL_ABAP_CHAR_UTILITIES CL_ABAP_STRING_UTILITIES Source URL:本文 来自CSDN博客:作者:web-software发表于2010-10-20 21:10原文链接 评论:0查看评论发表评论 最新新闻: ?王煜全:诺基亚若不更新观念光裁员不解决问题(2010-10-21 22:38) ?诺基亚宣布Qt为Symbian和MeeGo唯一开发环境(2010-10-21 22:01) PC Magazine:苹果为什么不能统治PC市场(2010-10-21 21:43) ? ?微软WP7超越Android、iOS的五大优势(2010-10-21 21:36) ?Globalization:JavaScript全球化插件(2010-10-21 21:02) 编辑推荐:成为一名优秀程序员所需要知道的那些事 网站导航:博客园首页我的园子新闻闪存小组博问知识库
/
本文档为【ABAP 字符串变量和字符变量的区别】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索