假设 SAP 表之一中有 100 条记录,而我只想访问其中 5 条。当我调用 BAPI 函数执行时,它会将所有 100 条记录放入内存中,然后只有我可以迭代它们。
执行BAPI函数之前如何将记录限制为5条?
我不能要求客户端限制表本身的记录数量,所以我使用 JCo 库对其进行编码。
最佳答案
像这样的功能必须在 BAPI 本身中实现。事实上,一些 BAPI 具有 WHERE 子句,允许限制 BAPI 将返回的结果集。
但是“从外部”(即从 JCo 层)您无法影响 BAPI 将返回的结果。至少不是在如此细粒度的级别上:有一个功能可以“关闭”整个表,如果您调用返回数十个表的 BAPI(并花费大量时间从其中选择它们的数据),则可以使用该功能。数据库),但您只对其中的几个表感兴趣。然后你可以将其他表设置为“非 Activity ”,后端的RFC层将只返回 Activity 表的数据。 (如果 BAPI 以智能方式编程,它会事先确定哪些表处于 Activity 状态,并跳过不活动表的 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/