java - 使用 JCo 库限制从 SAP 接收的记录数量

标签 java jco

假设 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/

相关文章:

java - WritableRaster 方法 setPixels() 中需要什么类型的数组?

java - 使用两个标识符(rowIndex、colIndex)比较数组的快速方法

java - SAP JCo JAVA 无法初始化类 com.sap.conn.jco.JCo

java - 将 JCo 项目部署到 SCP 时出现错误 500

java - 如何使用BAPI在SAP系统中重置密码?

Java FileChannel.size() 与 File.length() - 在 FileChannel.truncate() 之后

java - sj :submit and s:submit on the same form

java - 将 java List<Double> 传递给 dart List<double> 时出错

java - 使用 SAP JCo (v3.0) 时,如何处理 JCoContext.end() 期间的异常?