ABAP语法基础篇(5)——字符串处理
五、字符串
5.1 移动字符串
5.1 .1 按给定位置数移动字符串
要按给定位置数移动字 段内容, 使用 SHIFT 语句,用法如下:
SHIFT 
该语句将字段 BY  ,则将 
对不同( 
LEFT: 向左移动 
RIGHT: 向右移动 
CIRCULAR : 向左移动 
5.1.2 移动字符串到给定串位置
要移动字段内容以到给定串位置 ,则使用 SHIFT 语句,用法如下:
SHIFT 
ABAP/4 查找 
如果 SY-SUBRC 设置为 4 并且不移动 SY-SUBRC 设置为 0 。
5.1.3 根据第一个或最后一个字符移动字符串
假设第一个或最后一个字符符合一定条件,则可用 SHIFT 语句将字段向左或向右移动。为此,请使用以下语法:
SHIFT 
SHIFT 
假设左边的第一个字符或右边的最后一个字符出现在 
5.2 替换字段内容
要用其它字符串替换字段串的某些部分, 使用 REPLACE 语句。
REPLACE 
ABAP/4 搜索字段 
如果指定长度 SY-SUBRC 的返回代码设置为 0 ,则说明在 
5.3 大小写转换 并替换字符串
可以将字母转换大 / 小写或使用替换规则。要转换大 / 小 写, 使用 TRANSLATE 语句,用法如下:
TRANSLATE 
TRANSLATE 
这些语句将字段 
使用替换规则时, 使用以下语法:
TRANSLATE 
该语句根据字段 
5.4 转换为可排序格式
可以将字符字段转换为可按字母顺序排列的格式:
CONVERT TEXT 
该语句为字符字段 C 且字段 X ,最小长度为 
该语句目的是为字符字段 
如果对未转换的字符字段进行排序,则系统创建与各字母的特定平台内部编码相对应的顺序。在对目标字段进行排序之后,转换 CONVERT TEXT 按这样的方式创建目标字段,相应的字符字段顺序按字母排序。例如,在德语中,顺序为Miller 、 Moller 、 Mller 、 Muller ,而不是 Miller 、 Moller 、 Muller 、 Mller 。
转换方法依赖于运行 ABAP/4程序的文本环境。文本环境在用户主记录中定义。例外的是可以使用如下语句,在程序中设置文本环境:
SET LOCALE LANGUAGE 
该语句根据语言 COUNTRY,只要特定国家语言不同,就可以在语言以外指定国家。对于选项 MODIFIER,只要一个国家内语言不同,就可以指定另一个标识符,例如,排序顺序在电话簿和词典之间不同。
字段 C 且长度必须与表 TCP0C的关键字段长度相等。表 TCP0C 是一个表格,从中进行平台相关的文本环境维护。在语句 SET LOCALE 期间,系统根据TCP0C 中的条目设置文本环境。除了内部传送的平台特性之外,用 SET 语句指定表关键字。如果 SPACE,则系统根据用户主记录设置文本环境。如果对于指定的关键字在表中无条目,则系统将产生运行错误。
文本环境影响 ABAP/4 中依赖于字符集的所有操作。
5.5 覆盖字符字段
要用另一字符字段覆盖字符字段,使用 OVERLAY 语句,用法如下:
OVERLAY 
该语句用 ONLY  ,则覆盖字段 
如果至少要替换 SY-SUBRC 设置为 0。对于所有其它情况,将 SY-SUBRC 设置为 4 。如果 
5.6 搜索字符串
要搜索特定模式的字符串,请使用 SEARCH 语句,用法如下:
SEARCH 
该语句在字段 SY-SUBRC 的返回代码值设置为 0 并将 SY-FDPOS 设置为字段 SY-SUBRC 设置为 4 。
搜索串 
| 目的 | |
|---|---|
| 搜索 | |
| . | 搜索 | 
| * | 搜索以 | 
| 搜索以 | 
单词之间用空格、逗号、句号、分号、冒号、问号、叹号、括号、斜杠、加号和等号等分隔。
搜索字符字段 
- ABBREVIATED
在字段 
- STARTING AT 
在字段 SY-FDPOS 参照相对于 
- ENDING AT 
在字段 
- AND MARK
如果找到搜索串,则将搜索串中的所有字符(和使用 ABBREVIATED时的所有字符)转换为大写形式。
5.7 获得字符串长度
要决定字符串到最后一个字符而不是 SPACE 的长度, 使用内部函数 STRLEN ,用法如下:
[COMPUTE] 
STRLEN 将操作数 COMPUTE 可选。
5.8 压缩字符串去空格
要删除字符字段中多余 空格,使用 CONDENSE 语句,用法如下:
CONDENSE 
该语句去除字段 NO-GAPS ,则去除所有空格。
5.9 连接字符串
要将单个字符串连接成一体, 使用 CONCATENATE 语句,用法如下:
CONCATENATE ].
该语句连接字符串 
该操作忽略尾部空格,附加 SEPARATED BY  允许指定字符字段  
如果结果符合 SY-SUBRC 设置为 0 。然而,如果结果必须被截断,则将 SY-SUBRC 设置为 4 。
5.10 拆分字符串
要将字符串拆分成两个或更多小串 , 使用 SPLIT 语句,用法如下:
SPLIT  INTO 
该语句在字符字段 
要将所有部分放到不同目标字段中,必须指定足够目标字段。否则,用字段 
如果所有目标字段足够长且不必截断任何部分,则将 SY-SUBRC 设置为 0 ,否则,将其设置为 4 。
5.11 分配字符串部分
MOVE 语句的以下变体只使用类型 C 字段:
 [RIGHT].MOVE 
将左对齐的字符字段  (或如果用 RIGHT 选项指定,则为右对齐)复制到 
 值可为 0 和 100 之间的任何数。将要从 
如果语句中某一参数不是类型 C ,则忽略参数 PERCENTAGE 。