绕过RFC_READ_TABLE限制



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

  1. RFC_READ_TABLE不支持SAP的RFC,因此大多数专家都认为它不应该在生产中使用

  2. RFC_READ_TABLE不支持表联接。

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

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

我需要像C#中的DataTable一样的东西。

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通用工具,否则不需要所有字段。我从这次经历中看得出来。

欢呼奥托

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

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

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

替代表为DDIF_FIELDINFO_GET FM。请使用此表了解的详细信息

到目前为止,RFC_READ_TABLE中没有联接。然而,您可以合并的步骤(这是一个漫长的步骤)是:

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

  2. 通过在RFC_READ_TABLERFC_GET_TABLE_ENTRIES中放置滤波器(这是可能的)来提取相关数据;单独数据;因为CCD_ 8具有512字节的限制——这可以通过使用CCD_。

    注意:但第二个FM中的数据在一个字符串中,您需要基于进行过滤

    在您提取的结构上。

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

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

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

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

我在youtube上还有两个视频。

希望这能有所帮助。

感谢

Ram.S

相关内容

  • 没有找到相关文章

最新更新