[英]How to send/check the status of an IDOC sent to SAP ECC through ALE Audit?
我正在研究一个Java应用程序,该应用程序从ECC接收中间文档(IDoc),并将iDocs传递给ECC。
我们的应用程序就像ECC与其他系统之间的桥梁一样,它从ECC接收IDoc,这些IDoc由我们的应用程序存储在磁盘中,然后由后台进程负责检查保存有IDoc的文件并随后发送的文件系统位置。通过HTTP请求到达其他目的地。 该应用程序还与其他系统通信,以检索也保存到文件中的信息,然后在后台进程中读取它们并构造要发送给ECC的IDoc。
当应用程序从ECC接收到IDoc时,它会向ECC发送一个确认IDoc,在发送给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的确认?
如果使用标准IDOC输入法(http和函数),则返回IDOC保存号。 因此,您无需等待另一个IDOC。 只需检查IDOC保存号码即可。
正如我在Suncatcher答案下的评论中所见,您想在IDoc在ECC端处理后查询IDoc的状态。
首先,您正在使用事务性RFC,因此ECC端的处理是异步的,因此必须等待不确定的时间,直到IDoc被SAP处理。
因此,您有两种可能性:
RBDSTATE
安排在ECC端,作为以固定间隔触发的后台作业,该作业发送对已处理IDoc的确认,然后开发一个侦听这些确认的附加Java应用程序。 我建议您选择RFC协议发送确认。
RBDSTATE
扫描已处理的IDoc,并将ALEAUD01
类型的确认IDoc发送到发送方系统,其中包含已处理IDoc的编号,其处理状态(成功,错误),消息,已创建或已更改的业务对象... WE20
, WE21
, BD97
, SM59
) ALEAUD01
IDoc。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.