4

当使用 JCo (3.x) 读取从 SAP 服务器发送的 IDOC 时,应该采取什么操作来指示消息已被正确接收(即提交)?

在Java中,我想像:

public class MyHandler implements JCoIDocHandler {
  public void handleRequest(JCoServerContext serverCtx, IDocDocumentList documentList) {
    IDocDocumentIterator iterator = documentList.iterator();
    while (iterator.hasNext()) {
             IDocDocument doc = iterator.next();
             // some processing
    }
    // here I would like to say COMMIT
    // i.e., I confirm all the documents have been read
    // and our side takes ownership
  }   
}

如果我们想确保没有消息 (IDOC) 丢失,这种类型的提交似乎是必要的,即使在某个.hasNext()调用期间子弹击中 CPU 也是如此。还是我错了?

4

2 回答 2

3

在这种情况下,SAP 假定您发回的 IDOC 类型为“ALEAUD”。在这种情况下,发送方系统可以将 IDOC 状态更改为“在接收系统中创建的文档”(41)。有关详细信息,请查看“实施 SAP R/3 的应用程序链接分析 (ALE) 的高级指南”文档

于 2011-01-30T11:58:41.737 回答
0

从技术角度(而不是从具有 IDoc 状态记录的业务数据工作流的角度)提交和确认事务 RFC (tRfc) 的 TID 是 RFC 客户端的任务。通过接收 IDoc,您的 JCo 程序在这种情况下就是 RFC 服务器,您应该对 RFC 客户端发送给您的那些提交、回滚和确认事件做出反应。这是通过实现接口来完成的JCoServerTIDHandler

如果您从您的handleRequest调用中返回而没有异常,您将获得一个提交和一个ConfirmTID事件,否则您将获得一个回滚以及一个用于做出相应反应的ConfirmTID事件。

于 2016-12-27T13:16:05.080 回答