Skip to Content
0
Former Member
Nov 20, 2013 at 02:35 PM

SO_RAW_TO_RTF breaks UTF-8

167 Views

We have a long XML string which we want to send by email as a UTF-8 attachment. But SAP constantly corrupts the attachment by inserting newlines.

So we tried to break the string into lines with one element per line (xml1.png).

We then convert this to an internal table (xml2.png) of type srm_t_solisti1 using SPLIT.

When we then use SO_RAW_TO_RTF to convert it for email it get's corrupted as the Function breaks the double-byte characters (xml3.png).

Surely there must be a simple way to send this XML via Email as UTF-8 without all these steps, confusion and corruption?

**********************************************************************
DATA: lt_att TYPE rmps_t_post_content,
ls_att TYPE rmps_post_content,
lv_to TYPE zemail,
lv_subject TYPE text50,
lv_xml TYPE string,
lt_xml TYPE srm_t_solisti1.
**********************************************************************

" 1. Get data (deep structure) as XML
CALL TRANSFORMATION id
SOURCE data = change
OPTIONS
xml_header = 'NO'
RESULT XML lv_xml.

" 2. Convert to text table
DATA lvs TYPE string. CONCATENATE '>' cl_abap_char_utilities=>newline '<' INTO lvs.
REPLACE ALL OCCURRENCES OF '><' IN lv_xml WITH lvs.
DATA: lts TYPE zstring_tt, lss TYPE solisti1.
SPLIT lv_xml AT cl_abap_char_utilities=>newline INTO TABLE lts.
LOOP AT lts INTO lvs.
lss-line = lvs && cl_abap_char_utilities=>newline.
APPEND lss TO lt_xml.
ENDLOOP.

" 3. Prepare for attachment

CALL FUNCTION 'SO_RAW_TO_RTF'
TABLES
objcont_old = lt_xml
objcont_new = lt_xml.

" 4. Create attachment
ls_att-subject = 'change.xml'.
ls_att-objtp = 'txt'.
ls_att-cont_text[] = lt_xml.
APPEND ls_att TO lt_att.

Attachments

xml3.png (34.6 kB)
xml2.png (21.6 kB)
xml1.png (18.8 kB)