Wednesday, March 4, 2009

ABAP STRING

REPORT ZDEMO_DATA_STRING.

* shifting strings by a given number of places

DATA: t1(10) TYPE c VALUE 'abcdefghij',
string1 LIKE t1.

string1 = t1.
WRITE string1.
SHIFT string1.
WRITE / string1.
string1 = t1.
SHIFT string1 BY 3 PLACES LEFT.
WRITE / string1.
string1 = t1.
SHIFT string1 BY 3 PLACES RIGHT.
WRITE / string1.
string1 = t1.
SHIFT string1 BY 3 PLACES CIRCULAR.
WRITE / string1.

abcdefghij
bcdefghij
defghij
abcdefg
defghijabc


SKIP.
ULINE.

* shifting up to a given string

DATA: t2(10) TYPE c VALUE 'abcdefghij',
string2 LIKE t2,
str2(2) TYPE c VALUE 'ef'.

string2 = t2.
WRITE string2.
SHIFT string2 UP TO str2.
WRITE / string2.
string2 = t2.
SHIFT string2 UP TO str2 LEFT.
WRITE / string2.
string2 = t2.
SHIFT string2 UP TO str2 RIGHT.
WRITE / string2.
string2 = t2.
SHIFT string2 UP TO str2 CIRCULAR.
WRITE / string2.

abcdefghij
efghij
efghij
abcdef
efghijabcd


SKIP.
ULINE.

* shifting a string depending on the first or last sign

DATA: t3(14) TYPE c VALUE ' abcdefghij',
string3 LIKE t3,
str3(6) TYPE c VALUE 'ghijkl'.

string3 = t3.
WRITE string3.
SHIFT string3 LEFT DELETING LEADING space.
WRITE / string3.
string3 = t3.
SHIFT string3 RIGHT DELETING TRAILING str3.
WRITE / string3.

abcdefghij
abcdefghij
abcdef

SKIP.
ULINE.

* replacing values

DATA: t4(10) TYPE c VALUE 'abcdefghij',
string4 LIKE t4,
str41(4) TYPE c VALUE 'cdef',
str42(4) TYPE c VALUE 'klmn',
str43(2) TYPE c VALUE 'kl',
str44(6) TYPE c VALUE 'klmnop',
len4 TYPE i VALUE 2.

string4 = t4.
WRITE string4.
REPLACE str41 WITH str42 INTO string4.
WRITE / string4.
string4 = t4.
REPLACE str41 WITH str42 INTO string4 LENGTH len4.
WRITE / string4.
string4 = t4.
REPLACE str41 WITH str43 INTO string4.
WRITE / string4.
string4 = t4.
REPLACE str41 WITH str44 INTO string4.
WRITE / string4.

abcdefghij
abklmnghij
abklmnefgh
abklghij
abklmnopgh


SKIP.
ULINE.

* translating signs

DATA: t5(10) TYPE c VALUE 'AbCdEfGhIj',
string5 LIKE t5,
rule5(20) TYPE c VALUE 'AxbXCydYEzfZ'.

string5 = t5.
WRITE string5.
TRANSLATE string5 TO UPPER CASE. "#EC SYNTCHAR
WRITE / string5.
string5 = t5.
TRANSLATE string5 TO LOWER CASE. "#EC SYNTCHAR
WRITE / string5.
string5 = t5.
TRANSLATE string5 USING rule5. "#EC SYNTCHAR
WRITE / string5.

AbCdEfGhIj
ABCDEFGHIJ
abcdefghij
xXyYzZGhIj



SKIP.
ULINE.

* overlaying strings

DATA: t6(10) TYPE c VALUE 'a c e g i ',
string6 LIKE t6,
over6(10) TYPE c VALUE 'ABCDEFGHIJ',
str6(2) TYPE c VALUE 'ai'.

string6 = t6.
WRITE string6.
WRITE / over6.
OVERLAY string6 WITH over6.
WRITE / string6.
string6 = t6.
OVERLAY string6 WITH over6 ONLY str6.
WRITE / string6.

a c e g i
ABCDEFGHIJ
aBcDeFgHiJ
A c e g I


SKIP.
ULINE.

*searching strings

DATA string7(30) TYPE c VALUE 'This is a little sentence.'.
WRITE: / 'Searched', 'SY-SUBRC', 'SY-FDPOS'.

ULINE /1(26).
SEARCH string7 FOR 'X'.
WRITE: / 'X', sy-subrc UNDER 'SY-SUBRC',
sy-fdpos UNDER 'SY-FDPOS'.
SEARCH string7 FOR 'itt '.
WRITE: / 'itt ', sy-subrc UNDER 'SY-SUBRC',
sy-fdpos UNDER 'SY-FDPOS'.
SEARCH string7 FOR '.e .'.
WRITE: / '.e .', sy-subrc UNDER 'SY-SUBRC',
sy-fdpos UNDER 'SY-FDPOS'.
SEARCH string7 FOR '*e'.
WRITE: / '*e ', sy-subrc UNDER 'SY-SUBRC',
sy-fdpos UNDER 'SY-FDPOS'.
SEARCH string7 FOR 's*'.
WRITE: / 's* ', sy-subrc UNDER 'SY-SUBRC',
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


SKIP.
ULINE.

*

DATA: string8(30) TYPE c VALUE 'This is a fast first example.',
pos8 TYPE i,
off8 TYPE i.

WRITE / string8.
SEARCH string8 FOR 'ft' ABBREVIATED.
WRITE: / 'SY-FDPOS:', sy-fdpos.
pos8 = sy-fdpos + 2.
SEARCH string8 FOR 'ft' ABBREVIATED STARTING AT pos8 AND MARK.
WRITE / string8.
WRITE: / 'SY-FDPOS:', sy-fdpos.
off8 = pos8 + sy-fdpos - 1.
WRITE: / 'Off:', off8.

This is a fast first example.
SY-FDPOS: 10
This is a fast FIRST example.
SY-FDPOS: 4
Off: 15


SKIP.
ULINE.

* length of a string

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.

5
0
4


SKIP.
ULINE.

* condensing strings

DATA: string9(25) TYPE c VALUE ' one two three four',
len9 TYPE i.

len9 = strlen( string9 ).
WRITE: string9, '!'.
WRITE: / 'Length: ', len9.
CONDENSE string9.
len9 = strlen( string9 ).
WRITE: string9, '!'.
WRITE: / 'Length: ', len9.
CONDENSE string9 NO-GAPS.
len9 = strlen( string9 ).
WRITE: string9, '!'.
WRITE: / 'Length: ', len9.

one two three four !
Length: 25 one two three four !
Length: 18 onetwothreefour !
Length: 15

SKIP.
ULINE.

* concatenating strings

DATA: c1(10) TYPE c VALUE 'Sum',
c2(3) TYPE c VALUE 'mer',
c3(5) TYPE c VALUE 'holi ',
c4(10) TYPE c VALUE 'day',
c5(30) TYPE c ,
sep(3) TYPE c VALUE ' - '.

CONCATENATE c1 c2 c3 c4 INTO c5.
WRITE c5.
CONCATENATE c1 c2 c3 c4 INTO c5 SEPARATED BY sep.
WRITE / c5.

Summerholiday
Sum - mer - holi - day


SKIP.
ULINE.

* splitting strings

DATA: string10(60) TYPE c ,
p1(20) TYPE c VALUE '++++++++++++++++++++',
p2(20) TYPE c VALUE '++++++++++++++++++++',
p3(20) TYPE c VALUE '++++++++++++++++++++',
p4(20) TYPE c VALUE '++++++++++++++++++++',
del10(3) TYPE c VALUE '***'.
string10 = ' Part 1 *** Part 2 *** Part 3 *** Part 4 *** Part 5'.
WRITE string10.
SPLIT string10 AT del10 INTO p1 p2 p3 p4.
WRITE / p1.
WRITE / p2.
WRITE / p3.
WRITE / p4.

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


SKIP.
ULINE.

* moving parts of strings

DATA: mc1(10) TYPE c VALUE 'ABCDEFGHIJ',
mc2(10) TYPE c .
MOVE mc1 TO mc2 PERCENTAGE 40.
WRITE mc2.
MOVE mc1 TO mc2 PERCENTAGE 40 RIGHT.
WRITE / mc2.

ABCD
ABCD


No comments:

Post a Comment