使用RESTful Web服务API下载计划的Webi报告实例

2020-09-01 14:36发布

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

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


[BO 4.2 SP7 RESTful Web服务],您好,我现在正在替换预定计划Webi报告并下载创建的实例的应用程序中的一段Java代码(PDF 或Excel)。 目标是删除所有Java SDK依赖关系,并仅使用RESTful Web服务来重建完整的工作流。 到目前为止,我已成功实现以下目标:

1。 使用/logon/long
2登录到BO Server。 使用/documents//parameters?lovInfo = false
3获取所需的报告参数。 通过POST到/documents//schedules
4,将报告安排为具有填充参数的"现在"执行。 通过使用/v1/cmsquery对创建的实例ID进行查询。 (查询将查找报告文档的SI_NEW_JOB_ID属性。)
5。 从/documents//schedules/获取进度状态以检查进度是否已完成。

到目前为止,所有方法都可以正常工作。 我可以在BO Web前端的报告的"历史记录"列表中看到新创建的实例,还可以在此处打开/下载Excel或PDF文件。
Java SDK应用程序的最后一步是下载用于以下目的的二进制实例文件: 客户端计算机上的本地存储。 我是通过以下解决方案做到的:

1。 通过执行上述步骤4中的查询,从IInfoStore中获取实例IInfoObject。
2。 通过调用IInfoObject.getFiles()获取IFiles列表。
3。 从该列表中获取第一个条目,并将其转换为IRemoteFile实例。
4。 通过调用IRemoteFile.getStreamingDownloadFile(0)获得IStreamingDownloadFile类型的二进制下载流。该流使我可以将所述二进制文件下载到运行该应用程序的计算机上。 不幸的是,到目前为止,我还没有成功用RESTful Web服务API替换此解决方案。 我认为它应该与

GET/infostore/folder/<实例的SI_ID>/file

一起使用,但实际上这似乎仅适用于我使用POST/infostore/上传的文件 文件夹/<文件夹ID>/文件。 通过计划报表创建的报表实例不是可通过这种方式访问​​的"文件夹"中的"文件"。 尝试此操作时,我收到"内部服务器错误(RWS 00070)"。

我还尝试通过使用实例的OpenDocument链接来获取文件,但这指向具有Javascript代码的HTML页面 ,只能使用它的是浏览器,不能进行低级二进制下载。

我错过了什么吗? 如何仅使用RESTful Web服务下载实例文件? 还是在BO 4.2 SP7中仍然无法实现?

最好的问候,

Jörg

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

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


[BO 4.2 SP7 RESTful Web服务],您好,我现在正在替换预定计划Webi报告并下载创建的实例的应用程序中的一段Java代码(PDF 或Excel)。 目标是删除所有Java SDK依赖关系,并仅使用RESTful Web服务来重建完整的工作流。 到目前为止,我已成功实现以下目标:

1。 使用/logon/long
2登录到BO Server。 使用/documents//parameters?lovInfo = false
3获取所需的报告参数。 通过POST到/documents//schedules
4,将报告安排为具有填充参数的"现在"执行。 通过使用/v1/cmsquery对创建的实例ID进行查询。 (查询将查找报告文档的SI_NEW_JOB_ID属性。)
5。 从/documents//schedules/获取进度状态以检查进度是否已完成。

到目前为止,所有方法都可以正常工作。 我可以在BO Web前端的报告的"历史记录"列表中看到新创建的实例,还可以在此处打开/下载Excel或PDF文件。
Java SDK应用程序的最后一步是下载用于以下目的的二进制实例文件: 客户端计算机上的本地存储。 我是通过以下解决方案做到的:

1。 通过执行上述步骤4中的查询,从IInfoStore中获取实例IInfoObject。
2。 通过调用IInfoObject.getFiles()获取IFiles列表。
3。 从该列表中获取第一个条目,并将其转换为IRemoteFile实例。
4。 通过调用IRemoteFile.getStreamingDownloadFile(0)获得IStreamingDownloadFile类型的二进制下载流。该流使我可以将所述二进制文件下载到运行该应用程序的计算机上。 不幸的是,到目前为止,我还没有成功用RESTful Web服务API替换此解决方案。 我认为它应该与

GET/infostore/folder/<实例的SI_ID>/file

一起使用,但实际上这似乎仅适用于我使用POST/infostore/上传的文件 文件夹/<文件夹ID>/文件。 通过计划报表创建的报表实例不是可通过这种方式访问​​的"文件夹"中的"文件"。 尝试此操作时,我收到"内部服务器错误(RWS 00070)"。

我还尝试通过使用实例的OpenDocument链接来获取文件,但这指向具有Javascript代码的HTML页面 ,只能使用它的是浏览器,不能进行低级二进制下载。

我错过了什么吗? 如何仅使用RESTful Web服务下载实例文件? 还是在BO 4.2 SP7中仍然无法实现?

最好的问候,

Jörg

付费偷看设置
发送
4条回答
南山jay
2楼-- · 2020-09-01 15:31

你好,

我一直在尝试这种方法,但是直到现在我都没有找到解决方案。 我遇到的一件了不起的事情是:使用REST请求时

获取/infostore/folder/<实例的SI_ID>/文件

我将HTTP请求的" Accept"属性更改为从

派生的MIME类型。 报告实例的

SI_MIME_TYPE属性,例如,Excel文件的" application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"。 在这种情况下,我从BO服务器收到的错误不再是"内部服务器错误(RWS 00070)",而是变为

"请求无法处理;请求所标识的资源只能生成响应实体,该响应实体具有根据请求中发送的接受标头(RWS 00058)不可接受的内容特征"

这听起来有所不同,就好像实例资源确实存在并且可以访问,但是我使用了错误的Accept属性?!?

使用格式错误的HTTP请求,也许是问题所在? 我需要使用哪些Accept属性值来下载Excel,PDF或CSV文件(从计划的WebI报告生成的实例)?

感谢和问候,

Jörg

悠然的二货
4楼-- · 2020-09-01 15:17

尊敬的Ayman Salem,

感谢您的回答。 是的,我已经检查了这些主题,但它们不能解决我的问题。 我可以以此查询报表实例的某些元数据,但不能下载生成的文件本身。

最诚挚的问候,

Jörg

一周热门 更多>