通过 RFC 提供 SAP 报告

Make SAP Report available via RFC

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

步骤:

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

如何在 SAP 内部实现这个部分?

我正在使用 PyRFC 作为客户端库。但是 AFAIK 这对于这个问题根本不重要。本题只针对SAP内部的server部分。

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

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

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

从咨询的角度来看,我会定期推荐 运行 报告,将结果写入 table,通过启用 RFC 的功能模块从 table(来自第三方系统)获取数据.

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

在理想情况下,您可以将报告逻辑封装在 abap class 或专用功能模块中,并将其用作报告和 RFC 调用的基础。但如果这是一个标准的 SAP 报告,而 SAP 本身不够好,无法提供上述功能模块,您可能没有这个选项。

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

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

Xtract Universal 使用许多客户功能模块在目标系统中执行报告,捕获输出并 return 它,本质上是作为文本墙。您必须自己解析该结果,您不会得到一个很好的预解析 table 和其中的数据。

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

你需要一个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 格式的列表,你可以将它转换成你想要的格式。

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

要转换 Spool,您可以使用以下函数:

RSPO_RETURN_ABAP_SPOOLJOB
RSPO_RETURN_SPOOLJOB_DAT
RSPO_RETURN_SPOOLJOB_HTML