热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

abap转换成字符串_SAPABAP处理字符串串串串串串串串(详细)

关于ABAP中处理字符串的方法,非常详细,学习过程中总结一下分享给大家,,,ABAP4提供多个处理类型C即字符

关于ABAP中处理字符串的方法,非常详细,学习过程中总结一下分享给大家,,,

ABAP/4 提供多个处理类型 C 即字符串 的数据对象的关键字。

处理字符串 的方法有:

1.拆分字符串split

2.连接字符串

3.获得字符串长度

4.压缩字段内容(去空格)

5.搜索字符串

6.覆盖字符字段

7.替换字段内容

8.转换大/小写并替换字符

9.转换为可排序格式

10.根据第一个或最后一个字符移动字段串SHIFT

11.MOVE TO 分配字符串部分

12.字符串的比较

-----------------------------------

1.拆分字符串

语法:

SPLIT AT INTO ... .

1 DATA: STRING(60),

2 P1(20) VALUE '',

3 P2(20) VALUE '',

4 P3(20) VALUE '',

5 P4(20) VALUE '',

6 DEL(3) VALUE '***'.

7 STRING = 'Part 1 *** Part 2 *** Part 3 *** Part 4 *** Part 5'.

8 WRITE STRING.

9 SPLIT STRING AT DEL INTOP1 P2 P3 P4.

10 WRITE: /'P1:', P1.

11 WRITE: /'P2:', P2.

12 WRITE: /'P3:', P3.

13 WRITE: /'P4:' , P4.

该过程的输 出如下:

Part 1 *** Part 2 *** Part 3 *** Part 4 *** Part 5

P1:Part 1

P2:Part 2

P3:Part 3

P4:Part 4 *** Part 5

2.连接字符串

语法:

CONCATENATE ... INTO [SEPARATED BY ].

1 DATA: C1(10) VALUE 'Sum',

2 C2(3) VALUE 'mer',

3 C3(5) VALUE 'holi ',

4 C4(10) VALUE 'day',

5 C5(30),

6 SEP(3) VALUE '- '.

7 CONCATENATE C1 C2 C3 C4 INTOC5.

8 WRITEC5.

9 CONCATENATE C1 C2 C3 C4 INTO C5 SEPARATED BYSEP.

10 WRITE / C5.

该过程的输 出如下:

Summerholiday

Sum - mer - holi - day

在 C1 到 C5 之间,忽略 尾部空格。 分隔符 SEP 保留尾部空格。

3.获得字符串长度

语法:

[COMPUTE] = STRLEN( ).

1 DATA: INT TYPEI,

2 WORD1(20) VALUE '12345'.

3 WORD2(20).

4 WORD3(20) VALUE '4 '.

5 INT =STRLEN( WORD1 ).

6 WRITEINT.

7 INT =STRLEN( WORD2 ).

8 WRITE /INT.

9 INT =STRLEN( WORD3 ).

10 WRITE / INT.

结果分别是 5,0 和 4。

WORD3(20) VALUE '4         '. 结果为 4 。

请注意,STRLEN 将操作数 作为字符数 据类型处理 ,而不考虑 其实际类型 。不进行转换。

4.压缩字段内容

语法:

CONDENSE [NO-GAPS].

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

1 DATA: STRING(25) VALUE 'one two three four',

2 LEN TYPEI.

3 LEN = STRLEN( STRING).

4 WRITE: STRING, '!'.

5 WRITE: / 'Length: ', LEN.

6 CONDENSE STRING.

7 LEN = STRLEN( STRING).

8 WRITE: STRING, '!'.

9 WRITE: / 'Length: ', LEN.

10 CONDENSE STRING NO-GAPS.

11 LEN = STRLEN( STRING).

12 WRITE: STRING, '!'.

13 WRITE: / 'Length: ', LEN.

该过程的输出如下:

one  two   three    four !

Length:          25

one two three four       !

Length:          18

onetwothreefour          !

Length:          15

请注意,字段 STRING 的总长度保持不变(注意!的位置),但删除的空格再次出现在右边。

5.搜索字符串

语法:

SEARCH FOR .

该语句在字 段 中搜索 中的字符串 。如果成功 ,则将 SY-SUBRC 的返回代码 值设置为0,并将 SY-FDPOS 设置为字段 中该字符串 的偏移量。

否则将 SY-SUBRC 设置为4。

搜索串 可为下列格 式之一:

                       目 的

---------------------------------

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

..               搜 索 ,但是不忽略尾部空格 。

*               搜 索以 结尾的词。

*               搜 索以 开始的词。

单词之间用 空格、逗号 、句号、分 号、冒号、 问号、叹号 、括号、斜 杠、加号和等号等分隔 。

1 DATA STRING(30) VALUE 'This is a little sentence.'.

2 WRITE: / 'Searched', 'SY-SUBRC', 'SY-FDPOS'.

3 ULINE /1(26).

4 SEARCH STRING FOR 'X'.

5 WRITE: / 'X', SY-SUBRC UNDER 'SY-SUBRC',

6 SY-FDPOS UNDER 'SY-FDPOS'

7 SEARCH STRING FOR 'itt '.

8 WRITE: / 'itt ', SY-SUBRC UNDER 'SY-SUBRC',

9 SY-FDPOS UNDER 'SY-FDPOS'

10 SEARCH STRING FOR '.e .'.

11 WRITE: / '.e .', SY-SUBRC UNDER 'SY-SUBRC',

12 SY-FDPOS UNDER 'SY-FDPOS'.

13 SEARCH STRING FOR '*e'.

14 WRITE: / '*e ', SY-SUBRC UNDER 'SY-SUBRC',

15 SY-FDPOS UNDER 'SY-FDPOS'.

16

17 SEARCH STRING FOR 's*'.

18 WRITE: / 's* ', SY-SUBRC UNDER 'SY-SUBRC',

19 SY-FDPOS UNDER 'SY-FDPOS'.

该过程的输 出如下:

SEARCHED   SY-SUBRC   SY-FDPOS

X                   4               0

itt                  0               11

.e .            0            15

*e             0            10

s*                 0                17

搜索字符字 段 的各种选项 () 如下:

ABBREVIATED

在字段 中搜索包含 中的单词, 其中字符可以被其它字符隔开,但是单词和字符串的第一个字母必须相同 。

STARTING AT

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

ENDING AT

在字段 搜索 直到位置 。

AND MARK

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

1 DATA: STRING(30) VALUE 'This is a fast first example.',

2 POS TYPEI,

3 OFF TYPEI.

4 WRITE / STRING.

5 SEARCH STRING FOR 'ft'ABBREVIATED.

6 WRITE: / 'SY-FDPOS:', SY-FDPOS.

7 POS = SY-FDPOS + 2.

8 SEARCH STRING FOR 'ft' ABBREVIATED STARTING AT POS ANDMARK.

9 WRITE / STRING.

10 WRITE: / 'SY-FDPOS:', SY-FDPOS.

11 OFF = POS + SY-FDPOS -1.

12 WRITE: / 'Off:', OFF.

该过程的输出如下:

This is a fast first example.

SY-FDPOS:    10

This is a fast FIRST example.

SY-FDPOS:    4

Off:        15

请注意,在 找到单词‘ fast’ 之后,为了 查找包含‘ ft’的第 二个单词, 必须在偏移 量 SY-FDPOS 上加2,然 后从位置 POS 开始查找。 否则,会再 次找到单词 ‘fast’ 。要获得‘ first’ 相对于字段 STRING 开始的偏移 量,从 POS 和 SY-FDPOS 计算。

字符串: 'Aaa-Bbb'  如何判断字符串中含有 '-'?

并且将 '-' 后面的字符舍去?

DATA string(20) VALUE 'Aaa-Bbb'.SEARCH string FOR '-'.IF sy-subrc = 0.string = string+0(sy-fdpos).WRITE string.ENDIF.

6.覆盖字符字段

语法:

OVERLAY WITH [ONLY ].

该语句用字符串 中相应位置上的内容“覆盖” 字段 中包含 中字母的所有位置。 保持不变。

如果省略 ONLY , 则覆盖字段 中所有包含空格的位置 ,如果没有空格,则不会被“覆盖”。 如果至少要替换 中的一个字 符,则将 SY-SUBRC 设置为 0。对于所有其它情况 ,将SY-SUBRC 设置为 4。

如果 比 长,则只覆 盖 中的长度。

解释:

注意是"覆盖"不是”替换“!!!!!!!!!

OVER '1 2 3' WITH '456   '.

结果为:152 3。

OVER '1 2 3' WITH '456' only '12'.

结果为:4 6 3 。

OVER '123' WITH '456'.

结果为:123。(没有空格)

OVER '1 2 3 ' WITH '456   ' only '13' .

结果为:4 2   。

DATA: T(10) VALUE 'a c e g i ',

STRING LIKET,

OVER(10) VALUE 'ABCDEFGHIJ',

STR(2) VALUE 'ai'.

STRING =T.

WRITE STRING.

WRITE /OVER.

OVERLAY STRING WITHOVER.

WRITE / STRING.

STRING =T.

OVERLAY STRING WITHOVER ONLY STR.

WRITE / STRING.

该过程的输 出如下:

a c e g i

ABCDEFGHIJ

aBcDeFgHiJ

A c e g I

T 与 OVER 的长度都是10。

7.替换字段内容

语法:

REPLACE WITH INTO [LENGTH ].

ABAP/4 搜索字段 中模式 前 个位置第一 次出现的地 方。如果未 指定长度, 按全长度搜 索模式 。 然后,语句 将模式 在字段 中第一次出 现的位置用 字符串 替换。如果 指定长度, 则只替换模 式的相关部 分。 如果将系统 字段 SY-SUBRC 的返回代码 设置为0, 则说明在 中找到 且已用 替换。非 0 的返回代码 值意味着未 替换。

、 和 可为变量。

1 DATA: T(10) VALUE 'abcdefghij',

2 STRING LIKET,

3 STR1(4) VALUE 'cdef',

4 STR2(4) VALUE 'klmn',

5 STR3(2) VALUE 'kl',

6 STR4(6) VALUE 'klmnop',

7 LEN TYPE I VALUE 2.

8 STRING =T.

9 WRITE STRING.

10 REPLACE STR1 WITH STR2 INTO STRING.

11 WRITE / STRING.

12 STRING =T.

13 REPLACE STR1 WITH STR2 INTO STRINGLENGTH LEN.

14 WRITE / STRING.

15 STRING =T.

16 REPLACE STR1 WITH STR3 INTO STRING.

17 WRITE / STRING.

18 STRING =T.

19 REPLACE STR1 WITH STR4 INTO STRING.

20 WRITE / STRING.

该过程的输 出如下:

abcdefghij

abklmnghij

abklmnefgh

abklghij

abklmnopgh

请注意,在最后一行中字段 STRING 是如何在右 边截断的。长度为 4 的搜索模式 ‘cdef’ 用长度为6的 ‘klmnop’ 替换。然后 ,填充字段 STRING 的剩余部分直到字段结尾。

8.转换大/小写并替换字符

可以将字母 转换大/小 写或使用替 换规则。 要转换大/小 写,请使用 TRANSLATE 语句,用法 如下:

语法

TRANSLATE TO UPPER CASE. TRANSLATE TO LOWER CASE.

这些语句将 字段 中的所有小 写字母转换 成大写或反 之。

使用替换规 则时,请使 用以下语法 :

语法

TRANSLATE USING .

该语句根据 字段 中存储的替 换规则替换 字段 的所有字符 。 包含成对字 母,其中每 对的第一个 字母用第二 个字母替换 。 可为变量。 有关包含更 复杂替换规 则的 TRANSLATE 语句的更多 变体,参见 关键字文档 。

1 DATA: T(10) VALUE 'AbCdEfGhIj',

2 STRING LIKET,

3 RULE(20) VALUE 'AxbXCydYEzfZ'.

4 STRING =T.

5 WRITE STRING.

6 TRANSLATE STRING TO UPPER CASE.

7 WRITE / STRING.

8 STRING =T.

9 TRANSLATE STRING TO LOWER CASE.

10 WRITE / STRING.

11 STRING =T.

12 TRANSLATE STRING USINGRULE.

13 WRITE / STRING.

该过程的输 出如下:

AbCdEfGhIj

ABCDEFGHIJ

abcdefghij

xXyYzZGhIj

9.转换为可排序格式

可以将字符 字段转换为 可按字母顺 序排列的格 式:

语法

CONVERT TEXT INTO SORTABLE CODE .

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

创建相关字 段 , 作为 的按字母顺 序排列的排 序关键字。

如果对未转 换的字符字 段进行排序 ,则系统创 建与各字母 的特定平台 内部编码相 对应的顺序 。在对目标 字段进行排 序之后,转 换 CONVERT TEXT 按这样的方 式创建目标

字段,相应 的字符字段 顺序按字母 排序。例如 ,在德语中 ,顺序为‘ Miller、 Moller、 M?ller、 Muller’ ,而不是‘ Miller、 Moller、 Muller、 M?ller’ 。

转换方法依 赖于运行 ABAP/4 程序的文本 环境。文本 环境在用户 主记录中定 义。例外的 是可以使用 如下语句, 在程序中设 置文本环境 :

语法

SET LOCALE LANGUAGE [COUNTRY ] [MODIFIER ].

该语句根据 语言 设置文本环 境。对于选 项 COUNTRY, 只要特定国 家语言不同 ,就可以在

语言以外指 定国家。对 于选项 MODIFIER, 只要一个国 家内语言不 同,就可以 指定另一个 标识符,例 如,排序顺 序在电话簿 和词典之间 不同。 字段 、 和

必须是类型 C 且长度必须 与表 TCP0C 的关键字段 长度相等。 表 TCP0C 是一个表格 ,从中进行 平台相关的 文本环境维 护。在语句 SET LOCALE 期间,系统 根据

TCP0C中 的条目设置 文本环境。 除了内部传 送的平台特 性之外,用 SET 语句指定表 关键字。如 果 等于 SPACE ,则系统根 据用户主记 录设置文本 环境。如果 对于指

定的 关键字在表 中无条目, 则系统将产 生运行错误 。

文本环境影 响 ABAP/4 中依赖于字 符集的所有 操作。

10.移动字段内容

按给定位置 数移动字段串

要按给定位 置数移动字 段内容,请 使用 SHIFT 语句,用法 如下:

语法

SHIFT [BY PLACES] [].

该语句将字 段 移动 个位置。如 果省略 BY PLACES, 则将 解释为一个 位置。如果 是 0 或负值,则 保持不变。 如果 超过 长度,则 用空格填充 。 可为变量。 对不同() 选项,可以 按以下方式 移动字段 :

LEFT:向左移动 位置,右边 用 个空格填充 (默认设置 )。

RIGHT:向右移动 位置,左边 用 个空格填充 。

CIRCULAR:向左移动 位置,以便 左边 个字符出现 在右边。

1 DATA: T(10) VALUE 'abcdefghij',

2 STRING LIKET.

3 STRING =T.

4 WRITE STRING.

5 SHIFT STRING.

6 WRITE / STRING.

7 STRING =T.

8 SHIFT STRING BY 3 PLACES LEFT.

9 WRITE / STRING.

10 STRING =T.

11 SHIFT STRING BY 3PLACES RIGHT.

12 WRITE / STRING.

13 STRING =T.

14 SHIFT STRING BY 3PLACES CIRCULAR.

15 WRITE / STRING.

输出为:

abcdefghij

bcdefghij

defghij

abcdefg

defghijabc

移动字段串 到给定串

要移动字段 内容以到给 定串,则使 用 SHIFT 语句,

语法:

SHIFT UP TO .

ABAP/4 查找 字段内容直 到找到字符 串 并将字段 移动到字段 边缘。 选项与按给定位置数移动字段串中所 述相同。 可为变量。 如果 中找不到 , 则将 SY-SUBRC 设置为 4 并且不移动 。否 则,将 SY-SUBRC 设置为0。

1 DATA: T(10) VALUE 'abcdefghij',

2 STRING LIKET,

3 STR(2) VALUE 'ef'.

4 STRING =T.

5 WRITE STRING.

6 SHIFT STRING UP TOSTR.

7 WRITE / STRING.

8 STRING =T.

9 SHIFT STRING UP TO STR LEFT.

10 WRITE / STRING.

11 STRING =T.

12 SHIFT STRING UP TOSTR RIGHT.

13 WRITE / STRING.

14 STRING =T.

15 SHIFT STRING UP TOSTR CIRCULAR.

16 WRITE / STRING.

输出如下:

abcdefghij

efghij

efghij

abcdef

efghijabcd

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

假设第一个或最后一个 字符符合一定条件,则 可用 SHIFT 语句将字段 向左或向右 移动。为此 ,请使用以 下语法:

语法

SHIFT LEFT  DELETING LEADING  .

SHIFT RIGHT DELETING TRAILING .

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

1 DATA: T(14) VALUE 'abcdefghij',

2 STRING LIKET,

3 STR(6) VALUE 'ghijkl'.

4 STRING =T.

5 WRITE STRING.

6 SHIFT STRING LEFTDELETING LEADING SPACE.

7 WRITE / STRING.

8 STRING =T.

9 SHIFT STRINGRIGHT DELETING TRAILING STR.

10 WRITE / STRING.

该过程输出 如下:

abcdefghij

abcdefghij

abcdef

11.MOVE TO 分配字符串部分

MOVE 语句的以下 变体只使用 类型 C 字段:

语法:

MOVE TO PERCENTAGE

[RIGHT].

将字符字段 的左边,百分比

的部分复制到 ,结果为左对齐。 ( 如果用 RIGHT 选项指定, 则为右对齐 )。

值可为 0 和 100 之间的任何数。将要从 复制的长度 取整为下一个整数。 如果语句中 某一参数不是类型 C,则忽略参数 PERCENTAGE。

1 DATA: C1(10) VALUE 'ABCDEFGHIJ',2 C2(10).3 MOVE C1 TO C2 PERCENTAGE 40.4 WRITE C2.5 MOVE C1 TO C2 PERCENTAGE 40RIGHT.6 WRITE / C2.

该过程的输 出如下:

ABCD

ABCD

12.比较字符串

要比较字符 串(类型 C)和数字 文本(类型 N),可以 在逻辑表达 式中使用下 列运算符。

          含 义

CO                   仅包含

CN                   不仅包含

CA                   包含任何

NA                   不包含任何

CS                   包含字符串

NS                   不包含字符串

CP                    包含模式

NP                    不包含模式

因为除类型 N 和 C 外,系统不 能执行任何 其它类型转 换,所以, 在进行包含 这些运算之 一的比较时 ,操作数应 该是类型 N 或 C。 运算符的功 能如下:

CO (仅包含)

如果 仅包含 中的字符, 则逻辑表达 式 CO 为真。该比 较区分大小 写,并包括 尾部空格。 如果比较结 果为真,则 系统字段 SY-FDPOS 包括 的长度。如 果为假,则 SY-FDPOS 包含 中第一个未 在 内出现的字 符的偏移量 。

CN (不仅包含 )

如果 还包含 之外的其他 字符,则逻 辑表达式 CN 为真。该比 较区分大小 写,并包括 尾部空格。 如果比较结 果为真,则 系统字段 SY-FDPOS 包含 中第一个未 同时在 中出现的字 符的偏移量 。如果为假 ,SY-FDPOS 包含 的长度。

CA (包含任何 )

如果 至少包含 的一个字符 ,则逻辑表 达式 CA 为真。该比 较区分大小 写。如果比 较结果为真 ,则系统字 段 SY-FDPOS 包含 中第一个也 在 中出现的字 符的偏移量 。如果为假 ,SY-FDPOS 包含 的长度。

NA (不包含任 何)

如果 不包含 的任何字符 ,则逻辑表 达式 NA 为真。该比 较区分大小 写。如果比 较结果为真 ,则系统字 段 SY-FDPOS 包含 的 长度。如果 为假,则 SY-FDPOS 包含 中在 内出现的第 一个字符的 偏移量。

CS (包含字符 串)

如果 包含字符串 , 则逻辑表达 式 CS 为真。忽略 尾部空格并 且比较不区 分大小写。 如果比较结 果为真,则 系统字段 SY-FDPOS 包含 在 中的偏移量 。如果为假 ,SY-FDPOS 包含 的长度。

NS (不包含字 符串)

如果 不包含字符 串 , 则逻辑表达 式 NS 为真。忽略 尾部空格且 比较不区分 大小写。如 果比较为真 ,系统字段 SY-FDPOS 包含 的长度。如 果为假,系 统字段 SY-FDPOS 包含 在 中的偏移量 。

CP (包含模式 )

如果 包含模式 , 则逻辑表达 式 CP 为真。如果 属于类型 C,则可以 在 中使用下列 通配符:

* 用于任何字 符串

+ 用于任何单 个字符

忽略尾部空 格且比较不 区分大小写 。如果比较 结果为真, 系统字段 SY-FDPOS 包含 在 中的偏移量 。如果为假 ,SY-FDPOS 包含 的长度。 如果要对 中的特殊字 符进行比较 ,请将换码 字符 # 放到其前面 。可以使用 换码字符 # 指定

大小写字 符

通配符 "*"(输 入 #*)

通配符 "+" (输入 #+)

换码符号 本身 (输入 ##)

字符串结 尾的空格 (输入 #___)

NP (不包含模 式)

如果 不包含模式 , 则逻辑表达 式 NP 为真。在中 ,可以使用 与 CP 相同的通配 符和换码字 符。 忽略尾部空 格且比较不 区分大小写 。如果比较 结果为真, 则系统字段 SY-FDPOS 包含 . 的长度,如 果为假,SY-FDPOS 包含 在 中的偏移量 。

DATA: F1(5) TYPE C VALUE ,

F2(5) TYPE C VALUE .IF F1 F2.WRITE: / 'Comparison true, SY-FDPOS=', SY-FDPOS.ELSE.WRITE: / 'Comparison false, SY-FDPOS=', SY-FDPOS.ENDIF.

下表列出该 程序的执行 结果,取决 于所用的运 算符和 F1 / F2 字段。

              Result     SY-FDPOS

'BD   '      CO             'ABCD '      真          5

'BD   '      CO         'ABCDE'      假          2

'ABC12'    CN         'ABCD '      真          3

'ABABC'    CN         'ABCD '      假          5

'ABcde'     CA         'Bd   '         真          1

'ABcde'     CA         'bD   '         假          5

'ABAB '     NA         'AB   '         假          0

'ababa'     NA         'AB   '         真          5

'ABcde'     CS         'bC   '         真          1

'ABcde'     CS         'ce   '          假          5

'ABcde'     NS         'bC   '          假          1

'ABcde'     NS         'ce   '          真          5

'ABcde'     CP         '*b*'           真          1

'ABcde'     CP         '*#b*'         假          5

'ABcde'     NP         '*b*'           假          1

'ABcde'     NP         '*#b*'         真          5

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. 字符串查找, 在一个字符串中查找模式串(FIND or SEARCH) FIND sub_string IN SECTION [OFFSET off] [LENGTH len] OF dobj --> 灰色部分用来缩小目的串被查找的范围[ IN { BYTE | CHARACTER } MODE ] [ { RESPECTING | IGNORING } CASE ] [ MATCH OFFSET moff ] [MATCH LENGTH mlen ].

FIND 'knows' IN SECTION OFFSET 5 OF 'Everybody knows this is nowhere' MATCH OFFSET moff " => moff = 10 MATCH LENGTH mlen. " => mlen= 5

在字符串dobj中查找pattern SEARCH dobj FOR pattern [IN { BYTE | CHARACTER } MODE] [STARTING AT p1] [ENDING AT p2] [ABBREVIATED] [AND MARK]. if sy-subrc = 0. then SY-FDPOS = 返回pattern在dobj中的位置About pattern: 'pat' - 忽略尾部空格'.pat.' -不忽略尾部空格'*pat' - 以pat结尾'pat*' - 以pat开始单词是指:用 空格 , ; : ? ! () / + =分隔的字串

4. 字符串替换REPLACE SECTION [OFFSET off] [LENGTH len] OF dobj WITH new [IN { BYTE | CHARACTER } MODE].

REPLACE [{FIRST OCCURRENCE}|{ALL OCCURRENCES} OF] [SUBSTRING] sub_string IN [SECTION [OFFSET off] [LENGTH len] OF ] dobj WITH new [IN {BYTE|CHARACTER} MODE] [{RESPECTING|IGNORING} CASE] [REPLACEMENT COUNT rcnt] [REPLACEMENT OFFSET roff] [REPLACEMENT LENGTH rlen]. eg: DATA: text1 TYPE string VALUE 'xababx'. REPLACE 'ab' IN text1 WITH 'xx'. --> xxxabx

5. 去前导0 (Remove leading zero) SHIFT dobj LEFT DELETING LEADING '0'. FM : CONVERSION_EXIT_ALPHA_OUTPUT

增前导0 (Add leading zero) DATA v_s(5). UNPACK '123' to v_s. ==> v_s = '00123' FM: CONVERSION_EXIT_ALPHA_INPUT

SHIFT dobj [{BY num PLACES} | {UP TO sub_string}] [LEFT|RIGHT] [CIRCULAR] SHIFT dobj {LEFT DELETING LEADING} | {RIGHT DELETING TRAILING} pattern. [IN {BYTE|CHARACTER} MODE].

6. 字符串的长度, 内表的行数STRLEN( dobj) 字符串的长度LINES( itab ) 内表的行数

7. 删字符串中的空格: CONDENSE text [NO-GAPS].

8. 大小写转换,字符变换TRANSLATE text {TO {UPPER|LOWER} CASE} | {USING pattern}. eg: text = `Barbcbdbarb`. TRANSLATE text USING 'ABBAabba'. =>'Abracadabra'

9. CONVERT CONVERT DATE dat [TIME tim [DAYLIGHT SAVING TIME dst]] INTO TIME STAMP time_stamp TIME ZONE tz.

CONVERT TIME STAMP time_stamp TIME ZONE tz INTO [DATE dat] [TIME tim] [DAYLIGHT SAVING TIME dst].

CONVERT TEXT text INTO SORTABLE CODE hex.

10. OVERLAY text1 WITH text2 [ONLY pattern]. 如果不指定后面的ONLY pattern, text1中的空格会被text2中的对应字符替代如果指定只有匹配的字符才会被替代,注意大小写敏感

11. 模式匹配CO / CN contains only or not CA / NA contains any or not any CS / NS contain string or not CP / NP contains pattern or not

NOTE: a) . CO, NO, CA, NA比较时区分大小写, 并且尾部空格也在比较的范围之内data: s1(10) value 'aabb'. if s1 co 'ab' ==> false if s1 co 'ab ' ==>true CS, NS, CP, NP不区分大小写和尾部空格

b) .对于CP, NP * = \s? + = \s # 换码字符, 用于匹配 *, +这样的字符## #* #+ #___ 比较结尾空格#[a-z] 在CP, NP中强制区分大小写

c) . 比较结束后,如果结果为真,sy-fdpos将给出s2在s1中的偏移量信息

12. 特殊字符在字符串中加入回车换行或TAB字符,在其他语言可以使用$13$10这样的ASCII码进行插入.但在ABAP中要使用sap的类CL_ABAP_CHAR_UTILITIES. 里面有字符常量:CR_LF,HORIZONTAL_TAB,NEWLINE等等.

13. 字符串位操作DATA: v_s(10) value 'abcd'. v_s+0(1) = 'b'. v_s+2(*) = '12'. => v_s = 'bb12'.

-----------------结束---------------------

本文中的内容大多来源于HELP文档,总结下来,以便在项目中查找参考。。。。。

PS:

比较所有的字段类型

含义

EQ

等于

=

等于

NE

不等于

<>

不等于

><

不等于

LT

小于

<

小于

LE

小于等于

<&#61;

小于等于

GT

大于

>

大于

GE

大于等于

>&#61;

大于等于

比较字符串   和数字串

含义

CO

仅包含

CN

不仅包含

CA

包含任何

NA

不包含任何

CS

包含字符串

NS

不包含字符串

CP

包含模式

NP

不包含模式



推荐阅读
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom&amp;quot;echarts&amp;quot;;4、如果用到map(地图),还 ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 本文记录了 JavaScript 中正则表达式的使用方法和常见操作,包括匹配、替换、搜索等。 ... [详细]
  • 开发日志:高效图片压缩与上传技术解析 ... [详细]
  • 如何在PHP中获取数组中特定元素的索引位置
    在PHP中获取数组中特定元素的索引位置有多种方法。首先,可以使用 `array_search()` 函数,其语法为 `array_search(目标值, $array)`,该函数将返回匹配元素的第一个键名(即下标)。其次,也可以利用 `array_keys()` 函数,通过 `array_keys($array, 目标值)` 语法来获取所有匹配元素的键名列表。这两种方法都能有效解决数组元素定位的问题,具体选择取决于实际需求和性能考虑。 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 优化Vite 1.0至2.0升级过程中遇到的某些代码块过大问题解决方案
    本文详细探讨了在将项目从 Vite 1.0 升级到 2.0 的过程中,如何解决某些代码块过大的问题。通过具体的编码示例,文章提供了全面的解决方案,帮助开发者有效优化打包性能。 ... [详细]
  • 在《数字图像处理及应用(MATLAB)第4章》中,详细探讨了“逢七必过”游戏规则的实现方法,并结合数字图像处理技术进行了深入分析。本章通过丰富的实例和代码示例,展示了如何利用MATLAB实现这一游戏规则,并介绍了数字图像处理的基本原理和技术应用。内容涵盖了图像增强、滤波、边缘检测等多个方面,为读者提供了全面的技术支持和实践指导。 ... [详细]
  • 本文全面解析了 Python 中字符串处理的常用操作与技巧。首先介绍了如何通过 `s.strip()`, `s.lstrip()` 和 `s.rstrip()` 方法去除字符串中的空格和特殊符号。接着,详细讲解了字符串复制的方法,包括使用 `sStr1 = sStr2` 进行简单的赋值复制。此外,还探讨了字符串连接、分割、替换等高级操作,并提供了丰富的示例代码,帮助读者深入理解和掌握这些实用技巧。 ... [详细]
  • 本文探讨了使用JavaScript在不同页面间传递参数的技术方法。具体而言,从a.html页面跳转至b.html时,如何携带参数并使b.html替代当前页面显示,而非新开窗口。文中详细介绍了实现这一功能的代码及注释,帮助开发者更好地理解和应用该技术。 ... [详细]
author-avatar
mobiledu2502909131
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有