SHIFT
Variants
1. SHIFT c.
2. SHIFT c BY n PLACES.
3. SHIFT c UP TO c1.
4. SHIFT c LEFT DELETING LEADING c1.
5. SHIFT c RIGHT DELETING TRAILING c1.
Variant 1
SHIFT c.
Additions
1. ... CIRCULAR
2. ... RIGHT
3. ... LEFT
Effect
Shifts the field c one position to the left.
Omits the first letter and inserts a blank on the right.
Example
-
DATA ALPHABET(10) VALUE 'ABCDEFGHIJ'.
SHIFT ALPHABET.
ALPHABET now contains 'BCDEFGHIJ ' .
Addition 1
... CIRCULAR
Effect
Shifts the field c , so that the "lost" character
on the left appears on the right.
Example
-
DATA ALPHABET(10) VALUE 'ABCDEFGHIJ'.
SHIFT ALPHABET CIRCULAR.
ALPHABET now contains 'BCDEFGHIJA' .
Addition 2
... RIGHT
Effect
Shifts the field c to the right instead of the
left.
Example
-
DATA ALPHABET(10) VALUE 'ABCDEFGHIJ'.
SHIFT ALPHABET RIGHT CIRCULAR.
ALPHABET now contains 'JABCDEFGHI' . The additional
specifications can also be combined.
Addition 3
... LEFT
Effect
Shifts the field c to the left. Since this is the
default, you can omit this addition.
Variant 2
SHIFT c BY n PLACES.
Additions
Similar to variant 1.
Effect
Shifts the field c by n positions to the
left and inserts blanks on the right.
Example
-
DATA ALPHABET(10) VALUE 'ABCDEFGHIJ',
FIVE TYPE I VALUE 5.
SHIFT ALPHABET BY FIVE PLACES.
ALPHABET now contains 'FGHIJ ' .
Note
If n = 0 or has a negative value, c remains
unchanged.
If n is greater than the field length of c , c is
padded with blanks.
Variant 3
SHIFT c UP TO c1.
Additions
Similar to variant 1.
Effect
Searches c for the character string in c1
(starting on the left!). If it finds a match, it shifts the contents of
c to the left until the character string concerned appears on
the left. If no match is found, c remains unchanged.
The return code value is set as follows:
SY-SUBRC = 0
c1 was found in c .
SY_SUBRC = 4
c1 was not found in c ; c
remains unchanged.
Example
-
DATA ALPHABET(10) VALUE 'ABCDEFGHIJ',
THREE(3) VALUE 'DEF',
FOUR(4) VALUE 'DEF '.
SHIFT ALPHABET UP TO FOUR.
SY-SUBRC is now set to 4 and the field ALPHABET remains
unchanged.
-
SHIFT ALPHABET UP TO THREE CIRCULAR.
SY-SUBRC is now set to 0 and the field ALPHABET
contains 'DEFGHIJABC'.
Note
The operation searches c for the full length of the
string in c1 , together with any existing blanks.
Variant 4
SHIFT c LEFT DELETING LEADING c1.
Variant 5
SHIFT c RIGHT DELETING TRAILING c1.
Effect
Shifts the field c to the left or right so that
it begins or ends with a character which occurs in c1 and pads
it with blanks accordingly.
If c does not begin or end with a character from c1 ,
c remains unchanged.
Example
-
DATA: ALPHABET(15) VALUE ' ABCDEFGHIJ',
M1(4) VALUE 'ABCD',
M2(6) VALUE 'BJJCA '.
SHIFT ALPHABET LEFT DELETING LEADING M1.
The field ALPHABET is unchanged.
-
SHIFT ALPHABET LEFT DELETING LEADING SPACE.
The field ALPHABET now contains 'ABCDEFGHIJ ' .
-
SHIFT ALPHABET RIGHT DELETING TRAILING M2.
The field ALPHABET now contains ' ABCDEFGHI' .
Note
Performance
The use of the SHIFT command in WHILE loops should be
avoided for performance reasons.
Shifting a field one position to the right or left requires approx. 5
msn (standardized microseconds), while
cyclical shifting requires approx. 7 msn. The variant ... LEFT
DELETING LEADING ... needs about 3,5 msn, the variant ...RIGHT
DELETING TRAILING ... about 4,5 msn.
Related
CONCATENATE ,
SEARCH ,
SPLIT
Index
© SAP AG 1996