0

我试图从 SAP JCO 调用 BAPI_MATERIAL_DISPLAY 功能模块,这就是我传递输入参数的方式。

function.getImportParameterList().setValue("MATERIAL", "10");

从我的程序输出中我得到

材料10不存在或未被激活。

如果我使用 SAP 登录执行 BAPI_MATERIAL_DISPLAY,我将获得该条目。使用调试器我发现,

我的输入是 00000000000010。所以返回响应。

不知道,如何在 SAPJCO 中以适当的方式处理这个问题。

我直接从 SAPJCo 传递了值 00000000000010,这一次我收到一个错误,com.sap.conn.jco.JCoException: (104) JCO_ERROR_SYSTEM_FAILURE: Screen output without connection to user。

希望 SAP 正在打开一个弹出窗口。让我知道如何解决 SAPJCO 中的这两个问题

4

1 回答 1

0

Field Material 有一个转换退出例程。另请参阅 DDIC 中的域 MATNR。这些转换出口总是由 SE37 自动调用,但不是在直接调用远程功能模块时 - 就像从 JCo 程序的外部一样。

因此,如果 BAPI 期望以它们的 SAP 内部表示格式获取某些参数(我不知道这里是否是这种情况),那么您必须事先自行进行此数据转换,或者纯粹在自己的内部进行Java 端的例程,或者通过 RFC 在 ABAP 端调用适当的转换例程。

有关这方面的更多详细信息,我建议研究 SAP note 206068

关于您的第二个问题,错误消息“屏幕输出未连接到用户”,我猜这个 BAPI 期望连接到 SAP GUI 以显示所选数据。使用远程函数调用,默认情况下您没有 SAP GUI 连接,但您可以将 SAP GUI 附加到与 JCo 的 RFC 连接,即通过指定附加登录参数jco.client.use_sapgui=1。为此,当然,还需要在运行 JCo 的主机上安装 SAP GUI 前端(用于 Windows 或 Java)。

于 2018-10-30T16:27:11.237 回答