0

私は、ECC から中間ドキュメント (IDoc) を受け取り、iDoc を ECC に渡す Java アプリケーションに取り組んでいます。

私たちのアプリケーションは、ECC と他のシステムの間の橋渡しのように機能し、アプリケーションによってディスクに保存された IDoc を ECC から受け取ります。バックグラウンド プロセスは、IDoc を含むファイルが保存され、後で送信されるファイル システムの場所をチェックします。 HTTP リクエストを介して他の宛先に送信します。また、アプリケーションはこれらの他のシステムと通信して、ファイルにも保存されている情報を取得し、バックグラウンド プロセスで情報を読み取り、ECC に送信される IDoc を構築します。

アプリケーションが ECC から IDoc を受信すると、ECC に確認 IDoc を送信します。ECC に送信するときも同様の処理が必要です。つまり、Java アプリケーションが IDoc をアプリケーションに送信するときに、ECC に ALE 確認を送信してもらいます。 IDoc が正しく送信された場合、アプリケーションは、送信されたバッチを履歴フォルダーに安全に移動できることを認識します。確認で問題があったことが示されている場合は、IDoc の送信をもう一度試行する必要があります。

Java アプリケーションに確認を送信するように ECC を構成するにはどうすればよいでしょうか?

Java から ECC に送信するために使用するコードは次のとおりです。

try {
     destination= JCoDestinationManager.getDestination(PROGID);
     iDocRepository = JCoIDoc.getIDocRepository(destination);
     tid = destination.createTID();
     iDocFactory = JCoIDoc.getIDocFactory();
 } catch (JCoException e) {
     e.printStackTrace();
 }
 List<Invoic02> invoic02s = new ArrayList<>();

 EDI_DC40 edi_dc40 = IdocUtil.generateIdocControlRecordObject(IdocUtil.invoiceIdocType, IdocUtil.invoiceMsgType);

 for(InvoiceIdoc invoicIdoc : invoices){
     Invoic02 invoic02 = new Invoic02();
     invoicIdoc.setBEGIN("1");
     invoicIdoc.setEDI_DC40(edi_dc40);
     invoic02.getInvoiceIdoc().add(invoicIdoc);
 }

 String invoicesIdocString = XmlParser.objectToXmlString(invoices, Invoic02.class);

 try {
     IDocXMLProcessor processor= iDocFactory.getIDocXMLProcessor();
     IDocDocumentList iDocList=processor.parse(iDocRepository, invoicesIdocString.toString());
     JCoIDoc.send(iDocList, IDocFactory.IDOC_VERSION_DEFAULT, destination, tid);
 } catch (JCoException e) {
     e.printStackTrace();
 } catch (IDocParseException e) {
     e.printStackTrace();
 }

着信 IDOC をリッスンするには、プライベート ライブラリを使用しますが、JCO IDOC ライブラリも使用します。

JCO IDOC ライブラリを使用して、送信された IDOC のステータスをチェックできますか? または、受信したすべての IDOC の確認を送信するように ECC を構成する方法はありますか?

4

3 に答える 3

0

標準の IDOC 入力メソッド (http および関数) を使用している場合は、IDOC 保存番号が返されます。したがって、別の IDOC を待つ必要はありません。応答で IDOC 保存番号を確認するだけです。

于 2016-10-23T17:49:08.033 に答える