2

对于我的 C# 应用程序,我需要根据使用选择从 SAP 表中访问一些数据。在这种情况下,我使用 .net 连接器 + RFC_READ_TABLE 从单个表中读取数据并且它可以工作。经过进一步审查,我发现这种方法存在 3 个问题。

  1. RFC_READ_TABLESAP 不支持 RFC,因此大多数专家同意它不应该在生产中使用

  2. RFC_READ_TABLE不支持表连接。

  3. Select *查询在大多数情况下不起作用,因为抛出了 data_buffer_exceed 错误

我在 ABAP 方面做了一些研究,但没有找到任何可以在运行时接受 SQL 语句作为输入参数的替代 API / RFC / BAPI。

我需要类似DataTableC# 的东西。

4

4 回答 4

4

1) 不支持 RFC_READ_TABLE 来自 SAP ==>> 的 RFC 被数百万客户和 SAP 自己开发的所有地方使用。这是通用表访问的官方 API。使用它,不用担心。

2) RFC_READ_TABLE 不支持表连接 ==>> 您可以随时加入自己的应用程序。如果您不想这样做或不能这样做(例如性能原因),请让您的 ABAP 联系人为您准备一个启用 RFC 的功能模块。这与 BAPI 无关。BAPI 意味着完全不同的东西。BAPI 可能非常困难,这是正确的,但启用 RFC 的查询功能不是 BAPI。BAPI 碰巧经常启用 RFC,但这些东西之间没有联系。

3) Select * 查询在大多数情况下不起作用,因为抛出了 data_buffer_exceed 错误 ==>> 恕我直言,无论如何,您不应该阅读所有内容,您需要先进行研究并仅请求您真正需要的那些字段。除非这是某种 BI 通用工具,否则您不需要所有字段。我可以从经验中看出。

欢呼奥托

于 2015-04-18T21:08:46.833 回答
3

允许 .NET 客户端应用程序发送未经检查的 SQL 语句在安全性和性能方面都是一个坏主意。

标准方法是创建远程启用的功能模块或使用网关将数据公开为 ODATA。

http://scn.sap.com/community/gateway

于 2015-04-20T11:46:37.487 回答
-1

目前还没有加入RFC_READ_TABLE。但是,您可以合并的步骤(这是一个冗长的步骤)是:

  1. 创建一个批处理文件以将您的输入 SAP 表作为参数传递给您的代码。

  2. 通过将过滤器(可能)放入RFC_READ_TABLERFC_GET_TABLE_ENTRIES单独获取结构和数据来提取相关数据;因为RFC_READ_TABLE有 512 字节的限制 - 可以使用RFC_GET_TABLE_ENTRIES FM.

    注意:但 2nd FM 中的数据在一个字符串中,您需要根据

    在您提取的结构上。

  3. 现在你应该有两个表的 2 个输出。

  4. 通过一个简单的批处理作业将它们上传到 MS Access,这应该是完全自动化的。

  5. 上传到 MS Access 后,请写下您的加入以连接两者。

查看我的视频 - 我绕过了 512 字节。

我在 youtube 上还有 2 个视频。

希望这可以帮助。

谢谢

拉姆斯

于 2015-07-24T21:39:08.183 回答
-1

替代表是 DDIF_FIELDINFO_GET FM。请使用此获取详细信息

于 2017-06-13T11:51:31.513 回答