使用 JCO 库限制从 SAP 接收的记录数
Limit number of records to be received from SAP using JCO library
假设其中一个 SAP table 中有 100 条记录,而我只想访问其中的 5 条。当我调用 BAPI 函数执行时,它会将所有 100 条记录带到内存中,然后只有我可以对它们进行迭代。我想在执行 BAPI 函数之前将记录限制为 5。
我不能要求客户限制 table 本身的记录数,所以我使用 JCO lib.
对其进行编码
像这样的功能必须在 BAPI 本身中实现。事实上,一些 BAPI 有一个 WHERE 子句,允许限制 BAPI 将 return.
的结果集
但是 "from the outside"(即来自 JCo 层)您不能影响 BAPI 将 return 的结果。至少不是在如此精细的粒度级别上:如果您调用 return 数十个 [=25] 的 BAPI,则可以使用 "turn off" 整个 table 的功能=]s(并花费大量时间从数据库中为他们选择数据),但您只对这些 tables 中的几个感兴趣。然后你可以将其他table设置为"inactive",后端的RFC层只会return活动table的数据。 (如果 BAPI 以智能方式编程,它会预先确定哪些 table 是活动的,并跳过不活动的 SELECT 语句。)
这里有一些示例代码,它停用了名称为 "TABLE_NAME" 的 BAPI table:
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.
假设其中一个 SAP table 中有 100 条记录,而我只想访问其中的 5 条。当我调用 BAPI 函数执行时,它会将所有 100 条记录带到内存中,然后只有我可以对它们进行迭代。我想在执行 BAPI 函数之前将记录限制为 5。 我不能要求客户限制 table 本身的记录数,所以我使用 JCO lib.
对其进行编码像这样的功能必须在 BAPI 本身中实现。事实上,一些 BAPI 有一个 WHERE 子句,允许限制 BAPI 将 return.
的结果集但是 "from the outside"(即来自 JCo 层)您不能影响 BAPI 将 return 的结果。至少不是在如此精细的粒度级别上:如果您调用 return 数十个 [=25] 的 BAPI,则可以使用 "turn off" 整个 table 的功能=]s(并花费大量时间从数据库中为他们选择数据),但您只对这些 tables 中的几个感兴趣。然后你可以将其他table设置为"inactive",后端的RFC层只会return活动table的数据。 (如果 BAPI 以智能方式编程,它会预先确定哪些 table 是活动的,并跳过不活动的 SELECT 语句。)
这里有一些示例代码,它停用了名称为 "TABLE_NAME" 的 BAPI table:
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.