abap判断包含字符当中包含小数点_ABAP中字符串处理方法小结(一)

1, 拆分字符串split

语法:

ABAP

SPLIT AT INTO ... .

1

SPLITATINTO....

代码:

ABAP

DATA: STRING(60),

P1(20) VALUE '',

P2(20) VALUE '',

P3(20) VALUE '',

P4(20) VALUE '',

DEL(3) VALUE '***'.

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

WRITE STRING.

SPLIT STRING AT DEL INTO P1 P2 P3 P4.

WRITE: /'P1:' , P1.

WRITE: /'P2:' , P2.

WRITE: /'P3:' , P3.

WRITE: /'P4:' , P4.

1

2

3

4

5

6

7

8

9

10

11

12

13

DATA:STRING(60),

P1(20)VALUE'',

P2(20)VALUE'',

P3(20)VALUE'',

P4(20)VALUE'',

DEL(3)VALUE'***'.

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

WRITESTRING.

SPLITSTRINGATDELINTOP1P2P3P4.

WRITE:/'P1:',P1.

WRITE:/'P2:',P2.

WRITE:/'P3:',P3.

WRITE:/'P4:',P4.

0a3c2ea4addeeac3654cb24da3fa12ba.gif

2, 连接字符串Concatenate

语法:

ABAP

CONCATENATE ... INTO [SEPARATED BY ].

1

CONCATENATE...INTO[SEPARATED BY].

代码:

ABAP

DATA: C1(10) VALUE 'Sum',

C2(3) VALUE 'mer',

C3(5) VALUE 'holi ',

C4(10) VALUE 'day',

C5(30),

SEP(3) VALUE ' - '.

CONCATENATE C1 C2 C3 C4 INTO C5.

WRITE C5.

CONCATENATE C1 C2 C3 C4 INTO C5 SEPARATED BY SEP.

WRITE / C5.

1

2

3

4

5

6

7

8

9

10

DATA:C1(10)VALUE'Sum',

C2(3)VALUE'mer',

C3(5)VALUE'holi ',

C4(10)VALUE'day',

C5(30),

SEP(3)VALUE' - '.

CONCATENATEC1C2C3C4INTOC5.

WRITEC5.

CONCATENATEC1C2C3C4INTOC5SEPARATED BYSEP.

WRITE/C5.

显示结果:

0a3c2ea4addeeac3654cb24da3fa12ba.gif

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

3, 获得字符串长度STRLEN

语法:

ABAP

[COMPUTE] = STRLEN( ).

1

[COMPUTE]=STRLEN().

代码:

ABAP

DATA: int TYPE i,

word1(20) TYPE c VALUE '12345',

word2(20) TYPE c,

word3(20) TYPE c VALUE ' 4 '.

int = strlen( word1 ).

WRITE int.

int = strlen( word2 ).

WRITE / int.

int = strlen( word3 ).

WRITE / int.

1

2

3

4

5

6

7

8

9

10

DATA:intTYPEi,

word1(20)TYPEcVALUE'12345',

word2(20)TYPEc,

word3(20)TYPEcVALUE'   4         '.

int=strlen(word1).

WRITEint.

int=strlen(word2).

WRITE/int.

int=strlen(word3).

WRITE/int.

显示结果:

0a3c2ea4addeeac3654cb24da3fa12ba.gif

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

4, 删除字段中空格CONDENSE

语法:

ABAP

CONDENSE [NO-GAPS].

1

CONDENSE[NO-GAPS].

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

ABAP

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

LEN TYPE I.

LEN = STRLEN( STRING ).

WRITE: STRING, '!'.

WRITE: / 'Length: ', LEN.

CONDENSE STRING.

LEN = STRLEN( STRING ).

WRITE: STRING, '!'.

WRITE: / 'Length: ', LEN.

CONDENSE STRING NO-GAPS.

LEN = STRLEN( STRING ).

WRITE: STRING, '!'.

WRITE: / 'Length: ', LEN.

1

2

3

4

5

6

7

8

9

10

11

12

13

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

LENTYPEI.

LEN=STRLEN(STRING).

WRITE:STRING,'!'.

WRITE:/'Length: ',LEN.

CONDENSESTRING.

LEN=STRLEN(STRING).

WRITE:STRING,'!'.

WRITE:/'Length: ',LEN.

CONDENSESTRINGNO-GAPS.

LEN=STRLEN(STRING).

WRITE:STRING,'!'.

WRITE:/'Length: ',LEN.

显示结果:

0a3c2ea4addeeac3654cb24da3fa12ba.gif

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

5, 搜索字符串SEARCH

语法:

ABAP

SEARCH FOR .

1

SEARCHFOR.

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

否则将 SY-SUBRC 设置为4。

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

                       目 的

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

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

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

*               搜 索以 结尾的词。

*               搜 索以 开始的词。

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

代码:

ABAP

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

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

ULINE /1(26).

SEARCH STRING FOR 'X'.

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

SY-FDPOS UNDER 'SY-FDPOS' .

SEARCH STRING FOR 'itt '.

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

SY-FDPOS UNDER 'SY-FDPOS' .

SEARCH STRING FOR '.e .'.

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

SY-FDPOS UNDER 'SY-FDPOS'.

SEARCH STRING FOR '*e'.

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

SY-FDPOS UNDER 'SY-FDPOS'.

SEARCH STRING FOR 's*'.

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

SY-FDPOS UNDER 'SY-FDPOS'.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

DATASTRING(30)VALUE'This is a little sentence.'.

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

ULINE/1(26).

SEARCHSTRINGFOR'X'.

WRITE:/'X',SY-SUBRCUNDER'SY-SUBRC',

SY-FDPOSUNDER'SY-FDPOS'.

SEARCHSTRINGFOR'itt   '.

WRITE:/'itt   ',SY-SUBRCUNDER'SY-SUBRC',

SY-FDPOSUNDER'SY-FDPOS'.

SEARCHSTRINGFOR'.e .'.

WRITE:/'.e .',SY-SUBRCUNDER'SY-SUBRC',

SY-FDPOSUNDER'SY-FDPOS'.

SEARCHSTRINGFOR'*e'.

WRITE:/'*e ',SY-SUBRCUNDER'SY-SUBRC',

SY-FDPOSUNDER'SY-FDPOS'.

SEARCHSTRINGFOR's*'.

WRITE:/'s* ',SY-SUBRCUNDER'SY-SUBRC',

SY-FDPOSUNDER'SY-FDPOS'.

显示结果:

0a3c2ea4addeeac3654cb24da3fa12ba.gif

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

ABBREVIATED

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

STARTING AT

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

ENDING AT

在字段 搜索 直到位置 。

AND MARK

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

代码:

ABAP

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

POS TYPE I,

OFF TYPE I.

WRITE / STRING.

SEARCH STRING FOR 'ft' ABBREVIATED.

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

POS = SY-FDPOS + 2.

SEARCH STRING FOR 'ft' ABBREVIATED STARTING AT POS AND MARK.

WRITE / STRING.

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

OFF = POS + SY-FDPOS - 1.

WRITE: / 'Off:', OFF.

1

2

3

4

5

6

7

8

9

10

11

12

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

POSTYPEI,

OFFTYPEI.

WRITE/STRING.

SEARCHSTRINGFOR'ft'ABBREVIATED.

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

POS=SY-FDPOS+2.

SEARCHSTRINGFOR'ft'ABBREVIATEDSTARTING ATPOSANDMARK.

WRITE/STRING.

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

OFF=POS+SY-FDPOS-1.

WRITE:/'Off:',OFF.

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

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

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

ABAP

DATA string(20) VALUE 'Aaa-Bbb'.

SEARCH string FOR '-'.

IF sy-subrc = 0.

string = string+0(sy-fdpos).

WRITE string.

ENDIF.

1

2

3

4

5

6

7

DATAstring(20)VALUE'Aaa-Bbb'.

SEARCHstringFOR'-'.

IFsy-subrc=0.

string=string+0(sy-fdpos).

WRITEstring.

ENDIF.

0a3c2ea4addeeac3654cb24da3fa12ba.gif

6, 覆盖字符字段OVERLAY

语法:

ABAP

OVERLAY WITH [ONLY ].

1

OVERLAYWITH[ONLY].

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

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

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

解释:

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

ABAP

OVER '1 2 3' WITH '456 '.

1

OVER'1 2 3'WITH'456   '.

结果为:152 3。

ABAP

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

1

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

结果为:4 6 3 。

ABAP

OVER '123' WITH '456'.

1

OVER'123'WITH'456'.

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

ABAP

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

1

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

结果为:4 2   。

代码:

ABAP

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

STRING LIKE T,

OVER(10) VALUE 'ABCDEFGHIJ',

STR(2) VALUE 'ai'.

STRING = T.

WRITE STRING.

WRITE / OVER.

OVERLAY STRING WITH OVER.

WRITE / STRING.

STRING = T.

OVERLAY STRING WITH OVER ONLY STR.

WRITE / STRING.

1

2

3

4

5

6

7

8

9

10

11

12

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

STRINGLIKET,

OVER(10)VALUE'ABCDEFGHIJ',

STR(2)VALUE'ai'.

STRING=T.

WRITESTRING.

WRITE/OVER.

OVERLAYSTRINGWITHOVER.

WRITE/STRING.

STRING=T.

OVERLAYSTRINGWITHOVERONLYSTR.

WRITE/STRING.

显示结果:

0a3c2ea4addeeac3654cb24da3fa12ba.gif

T 与 OVER 的长度都是10。

以上。

你可能感兴趣的:(abap判断包含字符当中包含小数点_ABAP中字符串处理方法小结(一))