2010-12-06 10 views
4

JCo(3.x)を使用してSAPサーバーから送信されたIDOCを読み取るときに、メッセージが正しく受信された?IDOCを読み取るときにトランザクション(コミット/ロールバック)を制御する方法

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に当たった場合でも、失われないことを確認したい場合は、コミットのこのタイプは、必要と思われる:Javaでは

は、私のようなものを想像してみてください。または私は間違っていますか?

答えて

3

このような場合、SAPでは、IDOCにタイプ「ALEAUD」を返送することを前提としています。この場合、センダシステムはIDOCのステータスを '受信システムで登録された伝票'(41)に変更することができます。 詳細については、「SAP R/3のアプリケーションリンク対応(ALE)の事前ガイド」ドキュメント

0

技術的な観点から(IDocステータスレコードによるビジネスデータワークフローの観点から)トランザクションRFC(tRfc)のTIDを確認することは、RFCクライアントのタスクです。 IDocを受け取ると、このシナリオではJCoプログラムがRFCサーバーになります。したがって、RFCクライアントから送信されたコミット、ロールバック、および確認のイベントに反応する必要があります。これは、インターフェイスJCoServerTIDHandlerを実装することによって行われます。

あなたがそうでなければ、ロールバックとも反応するためのconfirmTIDイベントを取得します、あなたは例外なく、あなたののhandleRequest呼び出しから戻る場合は、また後でconfirmTIDイベントををコミットして取得しますそれに応じて。

関連する問題