IDOCを読むときにトランザクションを制御する方法(コミット/ロールバック)
質問
JCO(3.x)を使用してSAPサーバーから送信されたiDocsを読み取る場合、メッセージが適切に受信されたことを示すためにどのようなアクションを実行する必要がありますか(つまりコミット)。
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
}
}
弾丸がCPUにヒットしたとしても、メッセージ(IDOC)が失われないようにしたい場合、このタイプのコミットは必要と思われます .hasNext()
電話。それとも私は間違っていますか?
解決
そのような場合、SAPは、「Aleaud」のタイプでidocを送り返すことを想定しています。この場合、送信者システムは、iDocsステータスを「受信システムで作成されたドキュメント」に変更できます(41)。詳細については、「SAP R/3のアプリケーションリンクANABLING(ALE)」を押し付けるためのアドバンスガイド」を参照してください。
他のヒント
技術的な観点から(IDOCステータスレコードを使用したビジネスデータワークフローの観点からではなく)、トランザクションRFC(TRFC)のTIDをコミットおよび確認することは、RFCクライアントのタスクです。 IDOCSを受信すると、JCOプログラムがこのシナリオでRFCサーバーであり、RFCクライアントが送信するイベントに反応し、ロールバックし、確認する必要があります。これは、インターフェイスを実装することによって行われます JCoServerTIDHandler
.
あなたは取得します 専念 そして後にa CONDICETID イベント、あなたがあなたから戻った場合 ハンドレールクエスト 例外なく呼び出し、そうでなければあなたは ロールバック また、 CONDICETID それに応じて反応するためのイベント。