簡體   English   中英

讀取 IDOC 時如何控制事務(提交/回滾)

[英]How to control transaction (commit/rollback) when reading an IDOC

當使用 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。 還是我錯了?

在這種情況下,SAP 假定您發回類型為“ALEAUD”的 IDOC。 在這種情況下,發件人系統可以將 IDOC 狀態更改為“在接收系統中創建的文檔”(41)。 有關更多詳細信息,請查看“實施 SAP R/3 應用程序鏈接分析 (ALE) 的高級指南”文檔

從技術角度(而不是從具有 IDoc 狀態記錄的業務數據工作流的角度)提交和確認事務性 RFC (tRfc) 的 TID 是 RFC 客戶端的任務。 接收 IDoc 后,您的 JCo 程序就是此場景中的 RFC 服務器,您應該對 RFC 客戶端發送給您的那些提交、回滾和確認事件做出反應。 這是通過實現接口JCoServerTIDHandler來完成的。

如果您從handleRequest調用中無異常返回,您將收到一個提交,稍后還會收到一個confirmTID事件,否則您將收到一個回滾以及一個用於相應反應的confirmTID事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM