Here's a routine that shows ABAP/4 is not really 4GL. Sometimes it could be useful to add 1 to a character string.

Adding 1 to "B" would result in "C". The use of `TRANSLATE`

can come in quite handy here.

This `TRANSLATE`

statement changes every first (third, fifth) character into the second (fourth, sixth) character. This can be used to determine the next-higher character after the current one. Thus A => B, B => C and Z => A.

Data: lv_example type c length 6 value 'ABCXYZ'. write: / lv_example. TRANSLATE lv_example USING 'ABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZA'. write: / lv_example.

The result:

ABCXYZ BCDYZA

**Z to AA, AB, AC...**

To elaborate on this example a little, here's a routine that adds 1 to a character string:

constants: lc_ALPHABETH type string value ' AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZA'. data: lv_Excel_column type c length 2. lv_Excel_Column = ' A'. "Space first, for the sorted sequence. TRANSLATE lv_Excel_Column+1(1) USING lc_ALPHABETH. if lv_Excel_Column+1(1) = 'A'. TRANSLATE lv_Excel_Column+0(1) USING lc_ALPHABETH. endif.

The above actions will lead to a series of characters A .. Z, then AA ... AZ then BA .. BZ then .... ZA .. ZZ and then AA again. Note, it won't switch back from ZZ to A, but from ZZ to AA. Thus the counter will reset at entry 702 (that's 26 + (26 * 26) ).