2010-12-06 71 views
4

使用JCo(3.x)讀取SAP服務器發送的IDOC時,應該採取什麼操作來指示消息已被正確接收(即提交) ?如何在讀取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。或者我錯了?

回答

3

在這種情況下,SAP會假定您發送的IDOC類型爲'ALEAUD'。在這種情況下,發件人系統可以將IDOC狀態更改爲「在接收系統中創建的文檔」(41)。 欲瞭解更多詳情,請參閱「實施SAP R/3的應用程序鏈接啓用(ALE)」高級指南文檔

0

從技術角度(而不是從具有IDoc狀態記錄的業務數據工作流的角度)並確認交易RFC(tRfc)的TID是RFC客戶端的任務。在接收IDoc時,您的JCo程序就是這種情況下的RFC服務器,您應該對那些RFC客戶端發送給您的提交,回滾和確認事件做出響應。這是通過實現接口JCoServerTIDHandler完成的。

你會得到一個提交後來也confirmTID情況下,如果你沒有一個例外,從的handleRequest調用返回,否則你將得到一個回滾也是一個confirmTID事件反應因此。

相關問題