SAP RFC:大数据的分块

时间:2018-04-06 11:02:15

标签: python sap saprfc

有没有办法做" chunking"使用SAP-RFC将大结果分成几个较小的部分?

根据这些链接,您似乎需要自己实施分块: - (

我想避免这种情况,我希望有一种方法可以让SAP-RFC库进行分块。

用例:

  

结果是100k行。我想获取1k行,直到收到所有行。

我想这并不重要,但我会使用PyRFC作为我的代码。

2 个答案:

答案 0 :(得分:4)

根据这个issue #60 sap-rfc无法进行分块。您需要进行几个较小的RFC调用。

那太可悲了。我想在专有封闭源中有几百个脏的本土分块解决方案,所有这些都一遍又一遍地解决了同样的事情。

答案 1 :(得分:2)

RFC库在这里不能做很多事情:它只是发出一个请求,然后从R / 3系统接收响应。因此,如果R / 3系统返回10万行,则库将接收这100k行,如果R / 3系统返回这些行的一部分,则库将仅接收该行...

为了进行分块(或“分页”),双方(外部程序和被调用的ABAP代码)必须以某种方式进行协作。普通库无法做到这一点。

RFC基本上遵循“请求-响应”模式,如果您需要较小的响应数据,则客户端必须发出多个请求,而服务器必须为每个服务器仅返回一部分“整体数据”这些请求。

编辑:我现在也阅读了您的第60期,如果您主要关注性能,那么也许最好直接使用C / C ++ NW RFC库而不是Python包装器?

我不熟悉Python的工作方式,但是如果它与Java / JNI有点相似,那么我希望您在内存中总共拥有两个数据的两个副本:首先,RFC库从以下位置接收数据:连接并将其存储在C堆上,然后某个C <-> Python互操作层需要将该数据复制到Python虚拟机上?如果是这样,您可以通过用C / C ++编写提取程序来确保50%的内存消耗。