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

问题描述 投票:0回答:2

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

例如

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

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

我记得我在某处读到过,我们可以禁用响应中不需要的列。但是当我现在需要它的时候,我找不到关于它的信息。

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

谢谢

response sap-erp saprfc bapi jco
2个回答
1
投票

根据调用 BAPI 使用的技术,有时可以限制传输哪些参数。比如你使用SAP Java Connector(JCo 3),你可以使用参数的方法

setActive
来限制参数是否被传递。然而:

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

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


0
投票

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

JCoDestination 目的地 = JCoDestinationManager.getDestination(DESTINATION_NAME);

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

jf.getImportParameterList().setValue("FIRST_NAME","username");

 jf.execute(destination);

String jfex=jf.getExportParameterList().getString("返回表中的一些列名");

System.out.println(jfex);

它会返回一行表格值。你可以随意操作

© www.soinside.com 2019 - 2024. All rights reserved.