有没有办法做" chunking"使用SAP-RFC将大结果分成几个较小的部分?
根据这些链接,您似乎需要自己实施分块: - (
我想避免这种情况,我希望有一种方法可以让SAP-RFC库进行分块。
用例:
结果是100k行。我想获取1k行,直到收到所有行。
我想这并不重要,但我会使用PyRFC作为我的代码。
答案 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%的内存消耗。