使用GET_STREAM OData预览文档.docx,png

2020-08-18 18:28发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,专家

我的要求是预览安装在PO上的所有文档,并且我已经在OData上实现了GET_STREAM。 我可以预览.PDF文档,但是没有其他文档类型可以预览。 它们会立即下载,这不是我想要的。

呼叫功能'SO_DOCUMENT_READ_API1'
       出口
         document_id = lv_docid
       输入
         document_data = ls_document_data
       桌子
         contents_hex = lt_hex_content
       例外情况
         document_id_not_exist = 1
         operation_no_authorization = 2
         x_错误= 3
         其他= 4。
    
     如果sy-subrc = 0。
       如果lt_hex_content不是INITIAL。
 * ...设置流
         ls_stream-mime_type = |应用程序/|  && | {ls_document_data-obj_type} |。

         循环至lt_hex_content分配字段符号()。
           如果ls_stream-value是INITIAL。
             ls_stream-value = 行。
           其他。
             ls_stream-value = ls_stream-value && -行。
           万一。
         结局。

         copy_data_to_ref(导出is_data = ls_stream
                           更改cr_data = er_stream)。

 * ...下载或预览文档
         ls_header-name ='内容处置'。
         ls_header-value ='inline;  filename ="'&& ls_document_data-obj_descr &&
                           |。|  && | {ls_document_data-obj_type} |  && |"; |。"预览
         set_header(is_header = ls_header)。

       万一。
     ENDIF。

PDF文档将在浏览器中预览,但其他类型将立即下载,但我想在浏览器中预览。

致谢

以撒王子

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,专家

我的要求是预览安装在PO上的所有文档,并且我已经在OData上实现了GET_STREAM。 我可以预览.PDF文档,但是没有其他文档类型可以预览。 它们会立即下载,这不是我想要的。

呼叫功能'SO_DOCUMENT_READ_API1'
       出口
         document_id = lv_docid
       输入
         document_data = ls_document_data
       桌子
         contents_hex = lt_hex_content
       例外情况
         document_id_not_exist = 1
         operation_no_authorization = 2
         x_错误= 3
         其他= 4。
    
     如果sy-subrc = 0。
       如果lt_hex_content不是INITIAL。
 * ...设置流
         ls_stream-mime_type = |应用程序/|  && | {ls_document_data-obj_type} |。

         循环至lt_hex_content分配字段符号()。
           如果ls_stream-value是INITIAL。
             ls_stream-value = 行。
           其他。
             ls_stream-value = ls_stream-value && -行。
           万一。
         结局。

         copy_data_to_ref(导出is_data = ls_stream
                           更改cr_data = er_stream)。

 * ...下载或预览文档
         ls_header-name ='内容处置'。
         ls_header-value ='inline;  filename ="'&& ls_document_data-obj_descr &&
                           |。|  && | {ls_document_data-obj_type} |  && |"; |。"预览
         set_header(is_header = ls_header)。

       万一。
     ENDIF。

PDF文档将在浏览器中预览,但其他类型将立即下载,但我想在浏览器中预览。

致谢

以撒王子

付费偷看设置
发送
1条回答
小熊yu生菜
1楼-- · 2020-08-18 18:52

更新:

我设法获得了一些文档类型进行预览,但是特别是一种.DOC仍然可以立即下载。 我必须进行的更改是使用文档的文件扩展名从表SDOKFEXT中检索MIME_TYPE。

 * ...设置媒体类型
         ls_stream-mime_type = me-> get_mime_type(| {ls_document_data-obj_type CASE = LOWER} |)。

         循环至lt_hex_content分配字段符号()。
           如果ls_stream-value是INITIAL。
             ls_stream-value = 行。
           其他。
             ls_stream-value = ls_stream-value && -行。
           万一。
         结局。

         copy_data_to_ref(导出is_data = ls_stream
                           更改cr_data = er_stream)。

 * ...下载或预览文档
         ls_header-name ='内容处置'。
         ls_header-value ='inline;  filename ="'&& ls_document_data-obj_descr &&
                           |。|  && | {ls_document_data-obj_type} |  && |"; |。"预览
         set_header(is_header = ls_header)。

一周热门 更多>