[英]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.