Search on this Website

Sunday, February 20, 2011

How to compare two strings in ABAP

1. CO (Contains Only):

c1 contains only characters in the string c2.

The comparison takes into account the full length of c1,
including blanks at the end.
If the result of the comparison is negative, the system
field SY-FDPOS contains the offset of the first character in
c1 which is not also in c2.
If the result of the comparison is positive, the system
field SY-FDPOS contains the length of c1.
The comparison is case-sensitive.

Examples:


'ABCDE' CO 'XYZ' is false; SY-FDPOS = 0.
'ABCDE' CO 'AB' is false; SY-FDPOS = 2.
'ABCDE' CO 'ABCDE' is true; SY-FDPOS = 5.

CN (Contains Not only):

"c1 CN c2" is equivalent to "NOT ( c1 CO c2 )".

c1 contains not only characters from c2.

If the result of the comparison is positive, the system
field SY-FDPOS contains the offset of the first character in
c1 which is not also in c2.
If the result of the comparison is negative, the system
field SY-FDPOS contains the length of c1.

CA (Contains Any):

c1 contains at least one character from the string c2.

The comparison takes into account the full length of c1,
including blanks at the end.
If the result of the comparison is positive, the system
field SY-FDPOS contains the offset of the first character in
c1 which is also in c2.
If the result of the comparison is negative, the system
field SY-FDPOS contains the length of c1.
The comparison is case-sensitive.

Examples:

'ABCDE' CA 'CY' is true; SY-FDPOS = 2.
'ABCDE' CA 'XY' is false; SY-FDPOS = 5.

NA (contains Not Any):

"c1 NA c2" is equivalent to "NOT ( c1 CA c2 )".

c1 contains no characters from c2.

SY-FDPOS is set accordingly.

CS (Contains String):

c1 contains the character string c2.

Trailing blanks in c1 and c2 are ignored.
If the result of the comparison is positive, the system
field SY-FDPOS contains the offset of the first character of
c2 in c1.
If the result of the comparison is negative, the system
field SY-FDPOS contains the length of c1.
The comparison is not case-sensitive.

Examples:

'ABCDE' CS 'CD' is true; SY-FDPOS = 2.
'ABCDE' CS 'XY' is false; SY-FDPOS = 5.
'ABAAA' CS 'AB ' is true; SY-FDPOS = 0.
' ABC' CS ' AB' is true; SY-FDPOS = 1.
'ABC DEF' CS ' ' is true; but: SY-FDPOS = 0,
since ' ' is interpreted as a trailing blank and is thus
ignored.


NS (contains No String):

"c1 NS c2" is equivalent to "NOT ( c1 CS c2 )".

c1 does not contain c2.

SY-FDPOS is set accordingly.

CP (Contains Pattern):

c1 matches c2.

The pattern c2 can contain ordinary characters and
wildcards.
'*' stands for any character string and '+' denotes any
character.
If the result of the comparison is positive, the system
field SY-FDPOS contains the offset of the first character of
c2 in c1. The wildcard character '*' at the beginning of the
pattern c2 is ignored when determining the value of
SY-FDPOS.
If the result of the comparison is negative, the system
field SY-FDPOS contains the length of c1.

Examples:

'ABCDE' CP '*CD*' is true; SY-FDPOS = 2.
'ABCDE' CP '*CD' is false; SY-FDPOS = 5.
'ABCDE' CP '++CD+' is true; SY-FDPOS = 0.
'ABCDE' CP '+CD*' is false; SY-FDPOS = 5.
'ABCDE' CP '*B*D*' is true; SY-FDPOS = 1.

The character '#' has a special meaning. It serves as an
escape symbol and indicates that the very next character
should be compared "exactly".

No comments: