Thursday, April 17, 2008

String Operations

SAP ABAP String Operations

Computing the length of character Strings.

To find the length of character strings ABAP function STRLEN is used. This function returns the length of the string counting till the last character that is not a space. Please note that if you try to compute the length of a sentence like 'This is a sentence' then the length of the complete sentence is calculated ie 18. Consider the word 'FUNCTION  ' in this example there are 2 spaces after the word FUNCTION but the STRLEN function will consider the length only for the word FUNCTION ie 8. If you put spaces preceding the word then the spaces are also counted for example '          SPACES' the length of this will be counted as 16.

In cases where you want to count just the number of characters it is better to use CONDENSE with the addition of NO-GAPS on field variable before using STRLEN.

CONDENSE statement is used to delete unwanted leading spaces in strings. To remove all the space even those between words use CONDENSE with NO-GAPS.

Example.

DATA: INT TYPE I,
WORD1(20) VALUE '12345',
      WORD2(20),
      WORD3(20) VALUE '      4',
      WORD4(20) VALUE ' ABCD EFGH',
      WORD5(20) VALUE 'ABCD                    ',
      WORD6(20) VALUE 'ABCD EFGH IJKL'.

INT = STRLEN( WORD1 ). WRITE INT.

INT = STRLEN( WORD2 ). WRITE / INT.

INT = STRLEN( WORD3 ). WRITE / INT.

INT = STRLEN( WORD4 ). WRITE / INT.

INT = STRLEN( WORD5 ). WRITE / INT.

INT = STRLEN( WORD6 ). WRITE / INT.

The output of the above program will be as follows.

String Length    
                 
         5       
         0       
         7       
        10       
         4       
        14       


In cases where you want to find the exact length of the the characters you can use CONDENSE with the addition of NO-GAPS before finding the length. Please see the examples given below. Note that CONDENSE without the addition of NO-GAPS will remove only the leading spaces.

DATA: CHK_LEN(25) VALUE ' one two three four',
LEN TYPE I.

LEN = STRLEN( CHK_LEN ).
WRITE: CHK_LEN, '!'.
WRITE: / 'Length: ', LEN.

* Will remove the leading and trailing spaces.
CONDENSE CHK_LEN.
LEN = STRLEN( CHK_LEN ).
WRITE: CHK_LEN, '!'.
WRITE: / 'Length: ', LEN.

* Will remove the spaces between the words as NO-GAPS is used
CONDENSE CHK_LEN NO-GAPS.
LEN = STRLEN( CHK_LEN ).
WRITE: CHK_LEN, '!'.
WRITE: / 'Length: ', LEN.

The output of the above program will be as follows.

Example on Condesne                                   
                                                      
 one two three four       !                           
Length:          19  one two three four        !      
Length:          18  onetwothreefour           !      
Length:          15