1

SAPs“事务性 RFC 技术描述”文档(4.0 版,参见 http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/ee6bca90-0201-0010-5792-d9693e2eac83 ?QuickLink=index&overridelayout=true ) 在第 6 页的事务性 RFC 部分中说:“最后,服务器告诉客户端,该功能已经执行并且客户端确认了这一点。”。

当服务器通过 JCo(Java 连接器)与客户端通信时,服务器如何将这一点告诉客户端?

4

2 回答 2

1

4.0 版已经很老了——一定要始终使用最新的文档。

据我所知,没有办法将 tRFC 调用的结果交回服务器。tRFC 调用可能被放置在(本地或远程)队列中并稍后执行。有关如何监控 tRFC 调用的信息,请参阅http://help.sap.com/saphelp_nw04/helpdata/en/f0/02a63b9bb3e035e10000000a114084/frameset.htm 。

于 2010-05-08T10:04:46.083 回答
0

答案很简单:不抛出异常!假设这里的JCo端是服务器,只要从实现功能模块的方法中成功返回即可。然后,JCo 将自动将 tRFC 协议所需的确认返回给客户端(在这种情况下为 R/3 系统)。

R/3 系统在收到来自 JCo 的 ACK 后,将触发 Confirm 事件,JCo 接收该事件并将其传递到您的 JCoServerTIDHandler 的适当事件中。然后,您可以在此处从您的状态保持数据库中清除 TID。

如果您的功能模块方法返回错误,JCo 会相应地报告,后端将触发 Rollback 事件。

以下文章更详细地解释了应如何实现外部程序和 SAP 系统之间的 tRFC。它基于 NetWeaver RFC 库 (C/C++),但您可以轻松地将其转换为 JCo 和 Java: https ://wiki.scn.sap.com/wiki/x/FD67Gg

于 2018-03-05T13:15:37.923 回答