Я работаю над приложением Java, которое получает промежуточные документы (IDocs) из ECC и передает iDocs в ECC.
Наше приложение работает как мост между ECC и другими системами, оно получает IDoc от ECC, которые хранятся на диске нашим приложением, затем фоновый процесс отвечает за проверку расположения файловой системы, где файлы с IDoc сохраняются и позже отправляются в другие места назначения через HTTP-запросы. Приложение также взаимодействует с этими другими системами для получения информации, которая также сохраняется в файлах, а затем в фоновом процессе для их чтения и создания IDoc для отправки в ECC.
Когда приложение получает IDoc из ECC, оно отправляет IDoc подтверждения в ECC, что-то подобное необходимо сделать при отправке в ECC, то есть, когда приложение Java отправляет ему IDoc, мы хотим, чтобы ECC отправлял подтверждение ALE в наш приложению, если IDoc были отправлены правильно, поэтому наше приложение знает, что отправленный пакет можно безопасно переместить в нашу папку истории, и в случае, если подтверждение указывает на наличие проблемы, следует предпринять еще одну попытку отправить IDoc.
Как мы можем настроить ECC для отправки подтверждения нашему Java-приложению?
Код, который мы используем для отправки из 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? Или есть способ настроить ECC для отправки подтверждений каждого полученного IDOC?