Skip to Content
Author's profile photo Former Member

How to show file name when calling GET_STREAM

This document is about how to enhancement our OData service  – Download File.


Currently base on training material, we usually redefine GET_STREAM method and pass mime type and stream value to the result.

ls_streammime_type = outputreturnMIME_TYPE .
ls_stream
-value = outputreturnDOCUMENT_STREAM .
copy_data_to_ref
( EXPORTING is_data = ls_stream
CHANGING  cr_data = er_stream ).

This works, however the problem is if you trigger the service in Chrome. You can only get a document with named ‘entity’.

/wp-content/uploads/2016/01/1_872984.png

Problem

  • What if customer has already stored file name in ECM or in Database? They want to see the real name.
  • What if customer don’t want to direct download, they may want to review the file before download.

Solution

Solution to this is to set a header to http framework. I attached code below.

DATA ls_lheader TYPE ihttpnvp.
“DATA lv_filename TYPE string.
“lv_filename = escape( val = lv_filename format = cl_abap_format=>e_url ).
ls_lheader
name = ‘Content-Disposition’.
ls_lheader
value = ‘outline; filename=”Mobile.pdf”;’.
set_header
( is_header = ls_lheader ).

ls_streammime_type = outputreturnMIME_TYPE .
ls_stream
value = outputreturnDOCUMENT_STREAM .
copy_data_to_ref
( EXPORTING is_data = ls_stream
CHANGING  cr_data = er_stream ).

Let’s test the result now:

2.PNG

If customer want to preview the document instead of directly download, please change code as below.

ls_lheadervalue = ‘inline; filename=”Mobile.pdf”;’.

Let’s test the result:

A new page was opened for preview, you can right click and choose to save. File name ‘Mobile.pdf’ comes up.

3.PNG

Assigned Tags

      12 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Giridharan Somaskandan
      Giridharan Somaskandan

      Thanks to share this useful bit of info

      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");

      Author's profile photo Former Member
      Former Member

      Good afternoon  Eric Zhao,

      I just want to say THANK YOU for this SOLUTION which I used right now. Through this I was also able to learn new things. THANKS and have a GREAT DAY 🙂 🙂 🙂

      Author's profile photo Mauricio Pinheiro Predolim
      Mauricio Pinheiro Predolim

      Hi Eric. Outstanding post!

      I need to download when the user clicks on download button. What do i need to do using your solution pls?

      In local service it works, but in UI5 dont...

      Best Regards.

      Author's profile photo tisha dharod
      tisha dharod

      Hi Eric. Outstanding post!

      I have written same code as stated above but still file gets downloaded with name $ value . Does above code support only some browser version or fiori version .

      Thanks in advance for your support .

       

      Author's profile photo Former Member
      Former Member

      Hi,

      I have a Master-Detail app. The pdf file opens successfully in the browser as planned.

      But the file is still titled $value.pdf, and switching outline/inline has no effect.

      ls_stream-value = pdf_stream.
      ls_stream-mime_type = 'application/pdf'.
      ls_header-name = 'Content-Disposition'.
      ls_header-value = 'inline; filename="Report.pdf";'.
      
      set_header( is_header = ls_header ).
      copy_data_to_ref( EXPORTING is_data = ls_stream
                        CHANGING  cr_data = er_stream ).

      Best Regards.

      Author's profile photo umit duran
      umit duran

      the solution's link is https://blogs.sap.com/2018/01/31/sap-fiori-tricks-get-rid-of-value-in-pdf-displaydownloads/

      Author's profile photo ahmet deveci
      ahmet deveci
      ls_header-value = |attachment; filename="test.pdf"|.

      You have to change inline to attachment to enable direct download request from your browser.

      Author's profile photo Peng Zhou
      Peng Zhou

      Thanks very much, @Eric Zhao your answer solve my problem wich confused me much long time.  Thanks again!

      Author's profile photo Wouter Lemaire
      Wouter Lemaire

      Just noticed that if you want to download the file, you should choose "attachment" instead of "outline", more information here: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition

      Author's profile photo Dunja Nagel
      Dunja Nagel

      Just wanted to thank you! The line

      lv_filename = escape( val = lv_filename format = cl_abap_format=>e_url ).

      fixed my wrong displayed filenames with german 'ä,ö,ü, ..'

      Author's profile photo Bijesh RB
      Bijesh RB

      Hi Eric .

      Thank you. now its working fine, i can give any name.

       

      thanks,

      bijesh.