SAP_ABAP_编程基础_字符串处理_SHIFT / REPLACE / TRANSLATE / CONVERT TEXT / OVERLAY / SEARCH / STRLEN / CONCATE

SAP ABAP 顾问(开发工程师)能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读470次。目标:基于对SAP abap 顾问能力模型的梳理,给一年左右经验的abaper 快速成长为三年经验提供超级燃料!https://blog.csdn.net/java_zhong1990/article/details/132469977


平时在  ‘ 工地搬砖 ’,很少关注基础技能,闲来无事,拿起来复习一下  ! 

实际在项目中用到的非常之少,所以说学编程,先学框架,在学细节 !,因为细节太多,学不完 !


1 移动字符串

按给定位置数移动字符串

SHIFT <c> [BY <n> PLACES] [<mode>].

将字段<c>移动<n>个位置。
如果省略 BY <n> PLACES,则将<n>解释为一个位置。
如果<n>是 0 或负值,则<c>保持不变。
如果<n>超过<c>长度,则<c>用空格填充。
<n>可为变量。

对不同(<mode>)选项,可以按以下方式移动字段<c>:
LEFT: 向左移动<n>位置,右边用<n>个空格填充(默认设置)。
RIGHT: 向右移动<n>位置,左边用<n>个空格填充。
CIRCULAR:向左移动<n>位置,以便左边<n>个字符出现在右边。

移动字符串到给定串位置

SHIFT <c> UP TO <str><mode>.

查找<c>字段内容直到找到字符串<str>并将字段<c>移动到字段边缘。

如果<c>中找不到<str>,则将 SY-SUBRC 设置为 4 并且不移动<c>。否则,将 SY-SUBRC 设置为0。

根据第一个或最后一个字符移动字符串

SHIFT <c> LEFT  DELETING LEADING  <str>.
SHIFT <c> RIGHT DELETING TRAILING <str>.

左边的第一个字符或右边的最后一个字符出现在<str>中,该语句将字段<c>向左或向右移动。
字段右边或左边用空格填充,<str>可为变量。


2 替换字段内容

REPLACE <str1> WITH <str2> INTO <c> [LENGTH <l>].

将<c>中的<str2>用<str1>替换

指定长度<l>,则只替换模式的相关部分。

SY-SUBRC 的返回代码为0,则替换,否则为替换


3 大小写转换并替换字符串

TRANSLATE <c> TO UPPER CASE.

TRANSLATE <c> TO LOWER CASE.

TRANSLATE <c> USING <r>.

根据字段<r>中存储的替换规则替换字段<c>的所有字符。
<r>包含成对字母,其中每对的第一个字母用第二个字母替换。


4 转换为可排序格式

CONVERT TEXT <c> INTO SORTABLE CODE <sc>.

字符字段<c>填充可排序目标字段<sc>。
字段<c>必须是类型 C且字段<sc>必须是类型 X ,最小长度为<c>长度的16倍。

转换后按字母排序,否则是按内部编码顺序


5 覆盖字符字段

OVERLAY <c1> WITH <c2> [ONLY <str>].

用<c2>的内容覆盖字段<c1>中包含<str>中字母的所有位置。<c2>保持不变。
如果省略 ONLY <str>,则覆盖字段<c1>中所有包含空格的位置。


6 搜索字符串

SEARCH <c> FOR <str><options>.

字段<c>中搜索<str>中的字符串。

成功SY-SUBRC 的返回代码值设置为0,并将 SY-FDPOS 设置为字段<c>中该字符串的偏移量。
否则将 SY-SUBRC 设置为4。

<str>格式:

<pattern>  搜索<pattern>(任何字符顺序)。忽略尾部空格

.<pattern>.  搜索<pattern>,但是不忽略尾部空格

*<pattern>  搜索以<pattern>结尾的词

<pattern>*  搜索以<pattern>开始的词

搜索字符字段<c>的各种选项(<options>):

ABBREVIATED

在字段<c>中搜索包含<str>中指定字符串的单词,其中字符可能被其它字符隔开。
单词和字符串的第一个字母必须相同。

STARTING AT <n1>

在字段<c>中搜索从<n1>开始的<str>。
结果 SY-FDPOS 参照相对于<n1>的偏移量而不是字段的开始。

ENDING AT <n2>

在字段<c>搜索<str>直到位置<n2>。

AND MARK

如果找到搜索串,则将搜索串中的所有字符(和使用 ABBREVIATED 时的所有字符)转换为大写形式。


7 获取字符串长度

[COMPUTE] <n> = STRLEN(<c> ).


8 压缩字符串去空格

CONDENSE <c> [NO-GAPS].

去除字段<c>中的前导空格并用一个空格替换其它空格序列。结果是左对齐单词,每个单词用空格隔开。
如果指定附加的 NO-GAPS,则去除所有空格。


9 连接字符串

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

连接字符串<c1>与<cn>并将结果赋给<c>。

该操作忽略尾部空格。

附加 SEPARATED BY <s>允许指定字符字段<s>,它放置在单个字段间已定义的长度中。


10 拆分字符串

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

在字符字段<c>搜索分界字符串<del>,并将分界符之前和之后的部分放到目标字段<c1> ... <cn>中。


11 分配字符串部分

MOVE <c1> TO <c2> PERCENTAGE <p> [RIGHT].

将左对齐的字符字段<c1>的百分比<p>(或如果用 RIGHT选项指定,则为右对齐)复制到<c2>。

<p>值可为 0 和 100 之间的任何数。将要从<f1>复制的长度取整为下一个整数。

如果语句中某一参数不是类型 C,则忽略参数 PERCENTAGE。


猜你喜欢

转载自blog.csdn.net/java_zhong1990/article/details/134705903
今日推荐