Reading text / html file from MIME Repository
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).
Being an active ABAP Developer Tools user already, you can launch transaction SO2_MIME_REPOSITORY alternatively š - 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 there only ANSI properly, however the system is unicode…