Store, read and download file from MIME repository
MIME repository is a nice and convenient way to store and provide built in documents for end users. It comes handy, when working with templates. User can download the up to date templates always. This is especially good, when users use excel documents, to load data into the system.
In case the data model and the program to load the data changes, the user can download the corresponding template with the right data structure. Other use case is when you generate office documents in your program directly using XSLT, where you pickup the empty template from MIME repository first. Of course your possibilities are not restricted only to Office documents, MIME documents are variety of kind. The next example shows you, how-to download a file stored in SE80/MIME Repository (or using transaction SO2_MIME_REPOSITORY). Important thing to keep in mind, you need to deal with authorizations in case the file is stored not under the SAP/PUBLIC/ node in the MIME respository. The authorization check can be ignored in your ABAP program with parameter i_check_authority = abap_false
of method get. Read more about MIME.
CONSTANTS: co_mime_path TYPE string VALUE 'SAP/PUBLIC/MY_FOLDER/My_File.xlsx'. DATA: rc TYPE i, byte_count TYPE i, file_table TYPE solix_tab, filename TYPE string, path TYPE string, fullpath TYPE string. cl_mime_repository_api=>get_api( )->get( EXPORTING i_url = co_mime_path "your string constant holding the MIME repostory path IMPORTING e_content = DATA(file) EXCEPTIONS parameter_missing = 1 error_occured = 2 not_found = 3 permission_failure = 4 OTHERS = 5 ). "Convert to binary CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = file IMPORTING output_length = byte_count TABLES binary_tab = file_table. "Let user browse path for download cl_gui_frontend_services=>file_save_dialog( EXPORTING default_file_name = 'My_File.xlsx' CHANGING filename = filename path = path fullpath = fullpath EXCEPTIONS cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 invalid_default_file_name = 4 OTHERS = 5 ). IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. "Transfer to client IF fullpath IS NOT INITIAL. cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = byte_count filename = fullpath filetype = 'BIN' CHANGING data_tab = file_table EXCEPTIONS file_write_error = 1 no_batch = 2 gui_refuse_filetransfer = 3 invalid_type = 4 no_authority = 5 unknown_error = 6 header_not_allowed = 7 separator_not_allowed = 8 filesize_not_allowed = 9 header_too_long = 10 dp_error_create = 11 dp_error_send = 12 dp_error_write = 13 unknown_dp_error = 14 access_denied = 15 dp_out_of_memory = 16 disk_full = 17 dp_timeout = 18 file_not_found = 19 dataprovider_exception = 20 control_flush_error = 21 not_supported_by_gui = 22 error_no_gui = 23 OTHERS = 24 ). IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDIF.
Share this content: