SAPJco 调用 BAPI_MATERIAL_DISPLAY

SAPJco invoking BAPI_MATERIAL_DISPLAY

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

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

从我的程序输出中我得到了

material10不存在或未激活

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

我的输入为 00000000000010。因此返回响应。

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

我直接从 SAPJCo 传递了值 00000000000010,这次我得到了一个错误, com.sap.conn.jco.JCoException: (104) JCO_ERROR_SYSTEM_FAILURE: 没有连接到用户的屏幕输出。

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

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

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

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

关于错误消息 "Screen output without connection to user" 的第二个问题,我猜想此 BAPI 需要连接到 SAP GUI 以显示所选数据。对于远程函数调用,默认情况下您没有 SAP GUI 连接,但您可以将 SAP GUI 附加到您与 JCo 的 RFC 连接,即通过指定附加登录参数 jco.client.use_sapgui=1。为此,当然,还需要在 JCo 位于 运行 的主机上安装 SAP GUI 前端(用于 Windows 或 Java)。