Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
Timo_John
Active Participant
Last week I ended up with a task to convert special characters before writing them into a text file for a legacy system ( no #utf-8 support ) using :
OPEN DATASET lv_filename FOR APPENDING IN TEXT MODE ENCODING NON-UNICODE.

(Don't forget to check the authority upfront link )

Some special letters as German "Ä ü ..." are accepted but others like "šũvá" are to be replaced. Replaced at a best by a close "friend": ũ -> u;  š -> s to avoid names Like "#av#"
CALL FUNCTION 'SCP_REPLACE_STRANGE_CHARS'

helps a lot, but I hazzled so much to find a code page that fitted to my needs.

 

 

Here is the code of a small report that converts a "dirty" string and test if it fits to my requirements.
START-OF-SELECTION.

DATA lv_clean TYPE string.
DATA(lv_dirty) = 'Jáošũvá Алксй Äü'.
WRITE lv_dirty.

SELECT cpcodepage FROM tcp00a INTO TABLE @DATA(lt_codepages)
GROUP BY cpcodepage.


LOOP AT lt_codepages ASSIGNING FIELD-SYMBOL(<s_codepage>).

CALL FUNCTION 'SCP_REPLACE_STRANGE_CHARS'
EXPORTING
intext = lv_dirty
inter_cp = <s_codepage>-cpcodepage
replacement = '35' " Error Chracters are replaced as #
IMPORTING
outtext = lv_clean
EXCEPTIONS
invalid_codepage = 1
codepage_mismatch = 2
internal_error = 3
cannot_convert = 4
fields_not_type_c = 5
OTHERS = 6.

IF sy-subrc <> 0.
WRITE <s_codepage>-cpcodepage && ' error'.
CONTINUE.

ENDIF.

" Fo me only codepages that output german special characters are relevant.
IF contains( val = lv_clean sub = 'Äü' ).
WRITE / |{ <s_codepage>-cpcodepage } && ` : ` && { lv_clean } | .
CLEAR lv_clean.
ENDIF.
ENDLOOP.

EXIT.

With the report I found the SAP Codepage 1157 for my requirments fast.

Be aware, that the conversion takes a while. #performance

There is a helpful wikipage on this topic as well by sandrarossi  Showing other classes that help on this topic as well.  Thank for posting!

 

 

 
2 Comments