SAP Gateway通过参数&$ format = xlsx->更改文件名下载Excel

2020-09-12 16:48发布

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

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


嗨,

以下情形:我想通过OData(SAP Gateway)通过参数&$ format = xlsx下载Excel文件。 如何更改文件名?

参考文档,响应中有一个字段负责文件名。

" HTTP响应标头的内容分配已填充,以向客户端建议实体集名称作为文件名:

 content-disposition:附件;  filename = Employees.xlsx 

"

https://help.sap .com/saphelp_nw74/helpdata/zh-CN/a2/4c8490449041b88b7890d299b57351/frameset.htm

但是我无法在GET_ENTITYSET方法中设置此字段。 有什么想法吗?

感谢和问候

Christoph

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

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


嗨,

以下情形:我想通过OData(SAP Gateway)通过参数&$ format = xlsx下载Excel文件。 如何更改文件名?

参考文档,响应中有一个字段负责文件名。

" HTTP响应标头的内容分配已填充,以向客户端建议实体集名称作为文件名:

 content-disposition:附件;  filename = Employees.xlsx 

"

https://help.sap .com/saphelp_nw74/helpdata/zh-CN/a2/4c8490449041b88b7890d299b57351/frameset.htm

但是我无法在GET_ENTITYSET方法中设置此字段。 有什么想法吗?

感谢和问候

Christoph

付费偷看设置
发送
4条回答
CPLASF-自律
1楼-- · 2020-09-12 17:49

这是标准的HTTP,换句话说:您必须在响应中添加一个简单的http标头。 但是,您可以在GET_STREAM中而不是在GET_ENTITYSET中进行此操作。

因此,在重新定义的GET_STREAM中执行以下操作:

数据:
     ls_header TYPE ihttpnvp,
     lv_filename类型字符串。

 " ...

 lv_filename ='Employees.xlsx'。  "从某处获取价值...
 ls_header-name ='内容处置'。
 ls_header-value ='附件;  filename ="'&& lv_filename &&'"'。

 me->/iwbep/if_mgw_conv_srv_runtime〜set_header(is_header = ls_header)。

 " ... 
Bunny_CDM
2楼-- · 2020-09-12 17:28

我遇到了同样的问题,并且仅适用于GET_STREAM方法。

"前成员"使用XXX_GET_ENTITYSET是因为他/她正在生成 使用$ format = xlsx查询选项的excel文件。

尽管上面的代码在语法上是正确的,但没有任何作用。

hongfeng1314
3楼-- · 2020-09-12 17:24

我对此进行了调查。

首先,请注意,xlsx文件是在前端系统中生成的。因此,您在后端所做的任何操作都不会对您有所帮助。

文件名是在前端系统中生成的 以下代码段

类:/IWFND/CL_SODATA_POST_PRO_XLSX
方法:/IWFND/IF_SODATA_POST_PRO_XLSX〜ENTITY_SET_READ

如您所见,这段代码中没有增强点,我不建议在方法" lo_binary_provider-> set_entity_header "中使用隐式增强。

内部使用" IF_SALV_EXPORT_CONFIGURATION"接口,因此具有相同的优势 d使用标准ALV导出功能导出内部表的缺点。

很遗憾,这是文档中未指定的限制。

落灬小鱼
4楼-- · 2020-09-12 17:35

Andre Fischer 是否可以为SAP Gateway创建功能请求?

一周热门 更多>