假设其中一个SAP表中有100条记录,而我只想访问其中5条。当我要求执行BAPI函数时,它将所有100条记录存储在内存中,然后只有我可以对其进行迭代。我想在执行BAPI函数之前将记录限制为5。
我不能要求客户端限制表本身中的记录数,所以我使用JCO lib编写了代码。
最佳答案
这样的功能必须在BAPI本身中实现。实际上,某些BAPI具有WHERE子句,该子句允许限制BAPI将返回的结果集。
但是“从外部”(即从JCo层),您不能影响BAPI将返回的结果。至少不是在这样精细的级别上:如果调用一个返回数十个表的BAPI(并花费大量时间从表中选择数据),则具有“关闭”整个表的功能。数据库),但您只对其中一些表感兴趣。然后,您可以将其他表设置为“非活动”,后端的RFC层将仅返回活动表的数据。 (如果以一种智能的方式对BAPI进行编程,它将预先确定哪些表是活动的,并跳过SELECT语句中的无效表。)
以下是一些示例代码,该示例代码停用了名称为“ TABLE_NAME”的BAPI表:
JCoFunction myBapi = ...;
JCoParameterList tables = myBapi.getTableParameterList();
tables.setActive("TABLE_NAME", false);
// Now you can execute myBapi, and the backend system will not return
// data for the table named TABLE_NAME.
关于java - 限制使用JCO库从SAP接收的记录数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60705985/