-1

一位客户想要通过 RFC 访问 SAP 报告。

脚步:

  1. 第三方应用程序通过 RFC 连接到 SAP
  2. RFC 调用被传输
  3. SAP 运行报告
  4. SAP 返回报告。

这如何实现 SAP 内部的部分?

我使用 PyRFC 作为客户端库。但是AFAIK这对于这个问题根本不重要。这个问题只是关于 SAP 内部的服务器部分。

在这种情况下,报告 RM07MLBS 应该通过 RFC 提供。

4

4 回答 4

1

在一个完美的世界中,您应该将报告逻辑封装在一个abap 类或一个专用功能模块中,并将其用作您的报告和RFC 调用的基础。但如果这是一个标准的 SAP 报告,并且 SAP 本身还不足以提供上述功能模块,那么您可能没有此选项。

我认为这不是满足您要求的最佳解决方案,而只是为其他答案中已经提到的选项添加另一个选项:商业产品 Theobald Xtract Universal 可以使用几种可用的目标类型执行报告并返回结果。Xtract 是一种 Windows 服务,它提供与多种目标数据库类型以及基于 http 的结果流的连接。不过它并不便宜,而且它基本上只能连接到基于 SAP Netweaver 的系统作为其数据源(至少已经支持 S/4)。目标目的地必须额外购买,但至少不是按系统购买,仅按目的地类型(Oracle、MySQL、MSSQL...)。

https://theobald-software.com/en/xtract-universal/

Xtract Universal 使用许多客户功能模块在目标系统中执行报告,捕获输出并将其返回,本质上是一堵文本墙。你必须自己解析这个结果,你不会得到一个很好的预解析表,其中包含数据。

只是为了确保对可能的利益冲突没有误解:我不为 Theobald 工作,但我们是付费客户并使用 Xtract 进行我们自己的数据提取。它使用起来非常简单,可以在脚本中执行,但如前所述,只完成一项工作。

于 2018-07-26T12:33:42.523 回答
1

您需要一个 ABAPer 来为您提供功能,我认为没有它就没有办法。

如果您有 ABAPer,请执行以下操作:

SUBMIT <REPORT_NAME> ... EXPORTING LIST TO MEMORY AND RETURN.

CALL FUNCTION 'LIST_FROM_MEMORY'
  TABLES
    listobject = t_listobj.

CALL FUNCTION 'LIST_TO_ASCI'
  TABLES
    listasci           = t_ascilist
    listobject         = t_listobj.

现在您有了 ASCII 格式的列表,您可以将其转换为您想要的。

另一种方法是将报告结果发送到假脱机,获取假脱机并将其转换为 HTML/PDF。

要转换 Spool,您可以使用以下功能:

RSPO_RETURN_ABAP_SPOOLJOB
RSPO_RETURN_SPOOLJOB_DAT
RSPO_RETURN_SPOOLJOB_HTML
于 2018-08-01T18:57:49.627 回答
0

据我所知,通过启用 rfc 的功能模块触发报告的可能性有限。否则尝试通过功能模块触发交易(基于您的报告)。另请检查:https ://archive.sap.com/discussions/thread/811196

我认为您无法将报告结果响应到您的第三方系统。

从咨询的角度来看,我建议定期运行报告,将结果写入表格,通过启用 RFC 的功能模块从表格(来自第三方系统)中获取数据。

于 2018-07-26T10:04:12.103 回答
0

最好的方法是将您的报告包装在启用 RFC 的定制功能模块中,然后授予他们运行该 RFC 功能模块的访问权限。

于 2018-07-26T12:16:35.363 回答