If you get into a little more than average detail concerning strings, you'll come across blanks or spaces in your string. The CONDENSE statement can be used to clean up the string. Can more be said about blanks ? Or rather: White-space ?

CONDENSE can remove double (triple, quadruple, ..) spaces and transform them into a single space. There is also a utility class CL_ABAP_STRING_UTILITIES that can help you remove spaces from the end of a string (method DEL_TRAILING_BLANKS).

Blanks are blanks, but they can also be referred to as "White spaces". To be platform independent, the "White space" can be a different character accross the universe of systems/platforms. Check out method GET_SIMPLE_SPACES_FOR_CUR_CP on class CL_ABAP_CHAR_UTILITIES: this will return a string with all possible white-space characters.

Have you tried to replace blanks with something else using the REPLACE statement ? Or the other way around, replace the ; with a space in "I;wish;this;worked!". The REPLACE statement will die with a REPLACE_INFINITE_LOOP dump (replace space with something else) or simply return "Iwishthisworked". The space or blank is a special character which is best avoided with REPLACE. Use TRANSLATE instead: TRANSLATE yourwords USINE ' -'. will change all spaces into a dash.

lv_tokensize = STRLEN( lv_token ).
IF lv_tokensize > 0.
  TRANSLATE lv_token USING ' #'.
  lv_token = lv_token(lv_tokensize).
ENDIF.

The above example also tackles the issue that a char 20 fiels has 20 spaces, even when it's empty.