如何限制bapi输出中的表列数

时间:2013-12-07 05:11:39

标签: response sap jco bapi

在查询BAPI时,我们通常只对表中的几列感兴趣。

例如,PO_ITEMS表(在BAPI_PO_GETITEMS下)有58列。在查询时,我只对其中的10个列感兴趣。但是BAPI响应包含所有列 开销。

在SQL世界中,我们总是可以选择要检索的列。查询响应仅包含那些列,而不是所有列。

我记得我已经读过某个地方,我们可以禁用不需要的列作为响应。但是当我现在需要它时,我无法找到有关它的信息。

任何人都可以共享代码片段来实现这一目标吗?或者具体的在线资源/指针会有帮助吗?

由于

2 个答案:

答案 0 :(得分:1)

根据您用来调用BAPI的技术,有时可以限制传输哪些参数。例如,如果使用SAP Java Connector(JCo 3),则可以使用参数的方法setActive来限制是否传输参数。但是:

  • 据我所知,您只能启用或禁用整个TABLES参数或其他参数。您无法启用或禁用单个列。
  • 据我所知,BAPI本身并不知道这个设置 - 即使它知道,很少有实现可以关注。

有时会有其他参数允许您有选择地启用或禁用字段,但这是实际BAPI实现的一部分,而不是一些无所不在的基本技术。

答案 1 :(得分:0)

这不是你问题的确切答案。我希望它会有所帮助。我认为我们没有选择从功能模块表中选择一定数量的列。但是我们可以从该表中访问特定行,例如从中传递强制值java side .....像这样的示例代码我在这里为功能模块(不是表格表)。

JCoDestination destination = JCoDestinationManager.getDestination(DESTINATION_NAME);

  JCoFunction jf=destination.getRepository().getFunction("ZUSER_DET");

jf.getImportParameterList()的setValue( “FIRST_NAME”, “用户名”);

 jf.execute(destination);

String jfex = jf.getExportParameterList()。getString(“返回表中的某些列名”);

的System.out.println(jfex);

它会返回一行表值。你可以操纵任何你想要的东西