Sometimes the link between SAP XI and the target system (say ERP) goes down and messages fail on the outbound side. It may not be possible to restart them from using RWB or the transactions like SXI_MONITOR/SXMB_MONI. This article explains how to deal with such messages.
Generally, messages are picked up and sent via SAP XI when the link returns. However, in some scenarios, it may be possible that SAP XI server could not finish conversation with ERP. Main status of messages is “Processed successfully” – but there is an error in the outbound side as shown below. (Transactions – SXI_MONITOR/SXMB_MONI).
These messages do not get picked up automatically – and it is not possible restart them from using RWB or the transactions like SXI_MONITOR/SXMB_MONI.
Such messages could be processed in the following way:
- Send data directly to Integration Engine
- Change the status of failed message
This example shows how to solve the problem – two error messages are shown and one of them is solved here.
Step 1: Send data directly to Integration Engine
Go to Component Monitoring in SAP XI Runtime Workbench. Click on the Test Message tab for the Adapter Engine. Specify the URL of SAP XI Integration engine to send the message to e.g. http://<XIServer>:<J2EE Port>/sap/xi/engine?type=entry
Specify the header Information. Copy payload of the message using SXI_MONITOR/SXMB_MONI and paste it into Payload area in RWB.
Send the message using Send Message button.
Step 2: Change the status of failed message
Call the transaction SWWL.
Delete appropriate work items.
Check that the messages are complete in SXI_MONITOR/SXMB_MONI.
Another simpler way to accomplish this is to use transaction SXMB_MONI_BPE . Select Continue Process Following Error under Business Process Engine -> Monitoring and Execute (F8). Update the selection criteria as required and Execute (F8). Choose the appropriate line item and click on Restart workflow button.
In these ways we can reprocess the messages failed on the outbound side. If the messages do not participate in BPM process, then they can still be traced via outbound queues or SM58 logs and restarted.
Hi riyaz when u say outbound side that means message fails to make it XI from ERP or msg fails in XI after coming from ERP (not sure abt this case) can u be little bit elobarate on this
Hi Naga,
In terms of SXMB_MONI, Outbound Status refers to the message transfer status from XI to the receiver system. So when message fails on outbound side, it means that message has been successfully processed in XI, but failed while sending it to the receiving system.
Do not confuse this convention with that for outbound interface and inbound interface. These are always with respect to communicating systems i.e. outbound interface is on sender side and inbound on receiver side.
Thanks.
Regards,
Riyaz
Hi Riyaz
when i have send test message from adapter engine then following error occured
please help me
com.sap.engine.services.servlets_jsp.server.exceptions.WebServletException
com.sap.engine.services.servlets_jsp.server.exceptions.WebServletException: Error in dispatching request to servlet [/sub/componentmonitoringpageprocessor].
at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.doWork( RequestDispatcherImpl.java:319)
at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.forward( RequestDispatcherImpl.java:368)
at jsp_FC_Secure1142242888046._jspService(jsp_FC_Secure1142242888046.java:26)
at com.sap.engine.services.servlets_jsp.server.servlet.JSPServlet.service(JSPServlet.java:541)
at com.sap.engine.services.servlets_jsp.server.servlet.JSPServlet.service(JSPServlet.java:186)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet( HttpHandlerImpl.java:390)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest( HttpHandlerImpl.java:264)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet( RequestAnalizer.java:347)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet( RequestAnalizer.java:325)
at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer( RequestAnalizer.java:887)
at com.sap.engine.services.httpserver.server.RequestAnalizer.handle( RequestAnalizer.java:241)
at com.sap.engine.services.httpserver.server.Client.handle( Client.java:92)
at com.sap.engine.services.httpserver.server.Processor.request( Processor.java:148)
at com.sap.engine.core.service630.context.cluster.session
.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
at com.sap.engine.core.cluster.impl6.session.MessageRunner.run( MessageRunner.java:41)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
Caused by: java.lang.NullPointerException
at com.sap.aii.rwb.web.componentmonitoring.viewcontroller.CmDynPage.doProcessAfterInput( CmDynPage.java:61)
at com.sapportals.htmlb.page.PageProcessor.handleRequest(PageProcessor.java:101)
at com.sapportals.htmlb.page.PageProcessorServlet.handleRequest( PageProcessorServlet.java:62)
at com.sapportals.htmlb.page.PageProcessorServlet.doPost( PageProcessorServlet.java:22)
at com.sap.aii.rwb.web.componentmonitoring.viewcontroller.CmPageProcessor.doPost( CmPageProcessor.java:35)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.sap.engine.services.servlets_jsp.server.runtime.RequestDispatcherImpl.doWork( RequestDispatcherImpl.java:312)
… 19 more
Thanks
Amit Shivhare
Hi Amit,
Find out whether the adapter engine is running properly. You can check the status using component monitoring in RWB. The Basis administrator should be able to resolve the issue.
Regards,
Riyaz
hi Riyaz,
i’m using a Sender Mail Adapter, and I keep getting an error in my Channel Monitoring.
exception caught during processing mail message; java.lang.NullPointerException
i tried everything. There is no more details.
can you help?
Hi Riyaz,
sender mail communication chennel showing the below error .I could not find the root cause of it. can you help me to resolve the issue.
‘exception caught during processing mail message; java.lang.NullPointerException’
Thanks,
Sudhakar
Hi,
Check if you are passing any blank inputs. check the connectivity with your mail server and use correct credentials. See this article: https://www.riyaz.net/blog/xipi-configuring-the-sender-mail-adapter/
PS:Please post your queries under relevant articles. Alternately use forums.
Hi Riyaz,
When you mention the header information , is it sender or receiver details I have to put, cause payload is outbound as you have mentioned. Therefore I thought it should be the receiver details but I’m confused..
and also, is there any other alternatives to “messages fail on the outbound side'”?
Header Information means the header information under Test Message tab in RWB. You must specify at least the sender information i.e. mandatory (marked with *) fields like Sender Service, outbound Interface and corresponding namespace and the QoS as applicable.
Alternative, as already mentioned in the article (for BPM flows): Another simpler way to accomplish this is to use transaction SXMB_MONI_BPE . Select Continue Process Following Error under Business Process Engine -> Monitoring and Execute (F8). Update the selection criteria as required and Execute (F8). Choose the appropriate line item and click on Restart workflow button.
Hi Riyaz,
Thanks for the prompt reply. None of the workitems are displayed when I checked using SXMB_MONI_BPE and still the messages remain same with the red flag.
tried the first option as well but din work. Any way thanks for the help and really do appriciate your blogs.
prabash
Hi Riyaz,
I have a question about the number of messages that a displayed under Database Overview of Adapter Engine & Interface Engine in Message Monitoring in the RTWB. There has been an instance where for particular time frame (e.g. Friday 7 pm to Saturda 7pm) the Adapter engine overview shows 82 successful messages being sent from the 3rd party system to the XI for a particular interface, however the Integration engine overview shows only 75 as successfull for the same interface with no values Scheduled or Errors. Can you please advise me as to what could be wrong or what needs to be looked into?
Thanks & Regards,
Pablo
The numbers might vary as some messages bypass integration engine. If you choose Integration Server and display the messages, you can see if the message was processed by adapter engine, integration engine or by both. To see this click on the Versions button after selecting a particular message.
Also, if some messages fail/or could not be delivered in the first attempt, they may show up again on the next attempt by the adapter engine.
Hi Riyaz,
I have to resend/reprocess the successfully sent message from XI to a non SAP system.
The scenerio is that Non SAP system will get the message from XI and will try to process it but they may have problems either with data or something else so they send the status message back to XI which is stored in some application diretory. Now someone is monitoring that log and wiull have to resend it.
Is there any way to do that? Thanks a lot for input.
BR
Sachin
You can resend successful messages by manually copying the payload and using test message tab in runtime workbench or via this method. However, this is not recommended for Production systems.
Hi Riyaz,
Thank you so much for your great tutorial blog!
I have a question about creating an empty file (no records) from SAP to a non-SAP system via PI.
I found out that it is possible to make an empty file by changing the occurance of Message Mapping > Signiture Tab> Source Message(s) & Target Messages(s) to “0..unbounded”, but actually the setting of other object occurances like Operation Mappings are still set at ‘1″. I can’t find the reason why it was able for me to create a file by these settings. Could you please tell me why?
Best Regards,
Yoshi
Hi Riyaz ,
Assalamalaikum
I have a scenario in q03 where messages are flowing from ecc to vendorftp. and it is reflecting in SXMB_MONI as acknowledgment still waiting ( ? mark ) and the messages are not getting posted on the other end.till date i was manually proccessing the messages. Though it is not recommended.can i get a permenent fix for this
Best Regards
razack mohammed abdul
Good morning,
I have an issue that I am sending outbound Idocs through the PI and I can get confirmation once they are all processed. The issue I am having is needing a trigger or setting in PI that will tell me when all the records have been sent to a downstream DB. I need to know the completion time so that I can trigger a work flow from a third pary application. Is there a certain code or confirmation message I can have sent down to the DB? Any suggestions you have are greatly appreciated.
Thank you ,
Brett
Hi Riyaz,
My scenario is, I have to copy the target file to another location of that of the existing one,i.e., Generate single file and save it in 2 different locations in the FTP server.
How can i Achieve this in the File Receiver communication channel using PI 7.1?
Regards,
Anu
A better handling for an IDoc scenario is use IDX5 run the report according to the downtime of the Back-End system,
go to Display qeue Entry (F8).
andf then execute LUWs.
This will release the outbound queue of the adapter allowing the message to continute thire floow to the end system.
Clear,Neet and simple!