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

时间:2018-06-28 11:54:01

标签: sap jco saprfc

我想使用JCo在显式目标上执行RFC功能。

我已经修改了现有的JCo StepByStepClient.java,并且我能够执行RFC功能,就像在“ RFC target sys”字段为空。 出于我的演示目的,我正在调用“ TH_USER_LIST”功能。

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

现在,我可以使用RFC目标sys =“ MY_DEST”的“ se37”在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");

请告知

2 个答案:

答案 0 :(得分:1)

有关调用已注册的外部RFC服务器程序的信息,请阅读

获取必需的目标配置参数。

您需要指定 jco.client.tpname ,而不是 jco.client.ashost jco.client.sysnr jco.client.gwhost jco.client.gwserv 。另外,您可能需要ABAP系统的另一个目标来查询所需的RFC元数据。需要将此目的地指定为属性 jco.destination.repository _destination。

答案 1 :(得分:0)

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

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