Skip to Content
Author's profile photo Former Member

Recognizing file name and type in browser after downloading file from Netweaver Gateway

Let’s consider that we have working solution of file download from gateway as it is described for example in this blog How to Read Photo from SAP system using SAP Gateway.

When we point to the file, browsers does not handle the file name correctly, as they consider $value as name of the file. Thus it is not comfortable to open the file. Also, file name is shown as $value too which is inconvenient for the user when he wants to save the file.

To solve this issue we can set content-disposition response header according to rfc 1806 to inline and set the name of file there. Then browser will be able to recognize the name, user can save it with the name as it is set in SAP system.

Here is the sample code of method GET_STREAM implementation:


METHOD /iwbep/if_mgw_appl_srv_runtime~get_stream.
     DATA: ls_stream      TYPE ty_s_media_resource,
           er_entity      TYPE REF TO data,
           lr_entity      TYPE REF TO data,          
           ls_file  TYPE cl_sample_mpc=>ts_file,
           ls_lheader     TYPE ihttpnvp.
     CASE iv_entity_name.
       WHEN 'File'.
* Load ls_file info here
         ls_stream-value = ls_file-content.
         ls_stream-mime_type = ls_file-mime_type.
         ls_lheader-name = 'Content-Disposition'.
         ls_lheader-value = 'inline; filename="'.
         CONCATENATE ls_lheader-value ls_file-file_name INTO ls_lheader-value.
         CONCATENATE ls_lheader-value '"' INTO ls_lheader-value.
         set_header( is_header = ls_lheader ).
         copy_data_to_ref( EXPORTING is_data = ls_stream
                           CHANGING  cr_data = er_stream ).
     ENDCASE.
   ENDMETHOD.






UPDATE: Escaping characters

If the file name contains specials characters, or just space, it is necessary to escape characters in the backend. To do so, following method can be used:


ls_file-file_name = escape( val = ls_file-file_name
                                                   format = cl_abap_format=>e_url ).


Assigned Tags

      7 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Krishna Kishor Kammaje
      Krishna Kishor Kammaje

      Nice tip Peter..

      Author's profile photo Ekansh Saxena
      Ekansh Saxena

      Thanks Peter for sharing this.

      Author's profile photo Prabaharan Asokan
      Prabaharan Asokan

      Peter,

      Good one.

      Prabaharan

      Author's profile photo Andre Fischer
      Andre Fischer

      Nice and helpful tip Peter.

      Author's profile photo Alex Dong
      Alex Dong

      This really helps for us who never handled download stuff in Gateway before.

      thank you!

      Author's profile photo Pavan Golesar
      Pavan Golesar

      Nice document.

      Thanks for share peter.

      --Pavan G

      Author's profile photo Burak Oral
      Burak Oral

      Thanks for document.

      It does not work in ie 10 browser.

      Does anyone have any suggestions?

      I use below code in sapui5.

      window.open("/sap/opu/odata/sap/MYSERVICE_SRV/DownloadFileSet('"+ guid +"')/$value");