如何使用 JCo 在显式目标上执行 RFC 函数?

How to execute RFC function on explicit destination using JCo?

我想使用 JCo 在显式目标上执行 RFC 函数。

我修改了现有的 JCo StepByStepClient.java 并且 我能够 以与使用 Sap GUI "se37" 完全相同的方式执行 RFC 功能"RFC target sys" 字段为 。 为了我的 demo 目的,我调用了 "TH_USER_LIST" 函数。

然后我用程序 ID "MY_PROG_ID" 注册了我自己的 JCo 服务器,然后使用 "sm59" 和 "Registered Server Program"="MY_PROG_ID" 添加了 tcpip 目标 "MY_DEST"。

我现在可以使用 "se37" 和 RFC 目标 sys = "MY_DEST"

在我的 JCo 服务器上调用 TH_USER_LIST

我希望能够使用 JCo 客户端在我的 JCo 服务器上执行 TH_USER_LIST 的相同实现,但我仍在调用默认实现并且 不是 我的注册程序。

我想我只需要像下面那样将目的地指定为新的 属性 但它没有帮助

connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "appserver");
connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,  "00");
connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "000");
connectProperties.setProperty(DestinationDataProvider.JCO_USER,   "JCOTESTER");
connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "JCOTESTERSPASSWORD");
connectProperties.setProperty(DestinationDataProvider.JCO_LANG,   "en");

请指教

DestinationDataProvider.JCO_ASHOST 和 DestinationDataProvider.JCO_SYSNR 是指定目标系统的正确属性。 但仅设置属性是不够的。 您还必须从 JCoDestinationManager.getDestination("MYDESTNAME") 获取具有这些属性的新 JCoDestination 对象,然后使用此目标执行调用。

顺便说一下,我建议将所有这些文件创建内容从您的 Java 程序中删除,并直接手动编辑适当的 MYDESTNAME.jcoDestination 属性 文件以进入主题。

调用注册的外部RFC服务器程序请阅读

所需的目标配置参数。

而不是 jco.client.ashostjco.client.sysnr 您需要指定 jco.client.tpnamejco.client.gwhostjco.client.gwserv。此外,您可能需要 ABAP 系统的另一个目的地来查询所需的 RFC 元数据。此目的地需要指定为 属性 jco.destination.repository_destination.