B0BBY
B0BBY

Reputation: 1109

How to transform "Umlaute" (ü) to "ue" in the string?

I have a string which is looking like this for example Lübeck Nürnberg Österreich with "Umlaute".

Now I want to split it and add the new "words" on the string like this Lübeck Nürnberg Österreich Luebeck Nuernberg Oesterreich.

So ä should be ae, ö should be oe and ü should be ue.

But I have no clue how to achieve this, thank you!

DATA: lt_split TYPE TABLE OF char40.

SPLIT string AT space INTO TABLE lt_split.

Upvotes: 2

Views: 1157

Answers (2)

Sandra Rossi
Sandra Rossi

Reputation: 13646

You can use the function module SCP_REPLACE_STRANGE_CHARS, but you have less control than replace on what is changed.

Example:

  DATA name TYPE string.

  name = 'Lübeck Österreich Haßberge Eichstätt'.

  CALL FUNCTION 'SCP_REPLACE_STRANGE_CHARS'
    EXPORTING
      intext            = name
    IMPORTING
      outtext           = name
    EXCEPTIONS
      invalid_codepage  = 1
      codepage_mismatch = 2
      internal_error    = 3
      cannot_convert    = 4
      fields_not_type_c = 5
      OTHERS            = 6.

  ASSERT name = 'Luebeck Oesterreich Hassberge Eichstaett'.

Be careful, the function module affects lots of characters with accent and lots of special characters, for instance, depending on the values of parameters, we may have these replacements:

  • á ==> AE
  • ā ==> A (Acircumflex)
  • Ă ==> Ae (Adieresis)
  • £ ==> L (sterling)
  • ß ==> ss (eszett)
  • ¼ ==> 1/4

You may use the program RSCP0007 to test the function module.

Upvotes: 4

József Szikszai
József Szikszai

Reputation: 5071

You can use REPLACE to replace a string with another string inside a string:

REPLACE ALL OCCURENCES OF: 'ä'
        IN string
        WITH 'ae',
        'ü'
        IN string 
        WITH 'ue'.

There is another variation of this statement, it can be used with an internal table:

REPLACE 'ä'
        IN TABLE lt_split
        WITH 'ae'.

https://help.sap.com/doc/abapdocu_751_index_htm/7.51/de-DE/abapreplace_in_pattern.htm

Please note, the new string will be longer (if at least one replacement happened), this can be a problem, if the string was character type with fixed length and the new string would be longer, than allowed.

Upvotes: 6

Related Questions