The MIME repository is a safe solution in aspect, it is keeping the file as it is, without any transitions.
- Create your text based file (HTML,txt etc.) with UTF-8 encoding
- Launch transaction SE80 and choose MIME repository, and upload it to a desired folder, and remember the path
(in new NW releases, you need to enable the button to display the MIME repository button under settings, because by default only the repository browser is displayed)
- Use the code below to get it as string table
DATA: lo_mr_api TYPE REF TO if_mr_api, lv_text_x TYPE xstring, lo_conv_in TYPE REF TO cl_abap_conv_in_ce, lv_bom TYPE x LENGTH 3, lv_string TYPE string, lt_string TYPE string_table. lo_mr_api = cl_mime_repository_api=>get_api( ). lo_mr_api->get( EXPORTING i_url = iv_mime_path IMPORTING e_content = lv_text_x EXCEPTIONS parameter_missing = 1 error_occured = 2 not_found = 3 permission_failure = 4 OTHERS = 5 ). "Trick to Remove the BOM, when exists lv_bom = lv_text_x. IF lv_bom EQ cl_abap_char_utilities=>byte_order_mark_utf8. lv_text_x = lv_text_x+3. ENDIF. lo_conv_in = cl_abap_conv_in_ce=>create( encoding = 'UTF-8' ). lo_conv_in->convert( EXPORTING input = lv_text_x IMPORTING data = lv_string ). SPLIT lv_string AT cl_abap_char_utilities=>cr_lf INTO TABLE lt_string.
Do not forget to handle exceptions properly.
Hint: if you would like to use the files uploaded to MIME repository as eMail templates, you can pack them with Function Module WWW_PACK_TABLE. (One step more: you can use placeholders in your template and replace them with current values before packing )
Unfortunately merge functions are limited to line length 255 for the templates uploaded in tx. SMW0. Other thing is, that however you upload content encoded with UTF-8 in SMW0, the emails sent out have encoding problems, and wrongly displayed characters, due SAP is managing only ANSI properly, however the system is unicode...