EOIO Queue Message processing in SAP PO and S4HANA
EOIO Queue Message processing in SAP PO and S4HANA
We have requirement that PP115 and QM55 interfaces are combination of batch characteristics and process order update from MES -> SAP PO -> SAP S4HANA. MES system generate either batch characteristics or process order update or both as XML file. The process order number always to be there in SAP before update and there is dependency on process where process order number update first and then batch characteristics creates in SAP S4HANA.
SAP PO follows sequence in message processing based on file created time in MES FTP folder. The queue name defined in SAP PO sender communication channel make sure that all messages processed sequentially in SAP PO and send to SAP S4HANA in same sequence.
Assume that functional configuration missing/ incorrect date format of payload message in SAPS4HANA. In this case, the inbound message stuck in queue (SMQ2 tcode) with system failure error message which can be seen in sxmb_moni tcode.
All the remaining inbound messages will stuck in same queue for whatever reason with the first message failed with the system failure error status.
To avoid such issues, the custom program “ZPI001R_QUEUE_MOVE_ERROR” / tcode ZPIR_QUEUE_LOCK is developed to move the system failure messages from EOIO inbound queue (SMQ2) to saved inbound queue (SMQ3) in SAP S4HANA automatically. The program is scheduled to run for every 5 mins to avoid any blockage in the queue if there are any failures. All the remaining scheduled status messages in the EOIO queue gets processed automatically.
If first message stuck in SMQ2 (i.e Queue Name: XBQREOIO_PP115NQM55) for functional configuration issue then the message gets moved to SMQ3 by the Job and the email notification will be sent to the business/functional and technical team to further investigate and reprocess the message manually by restoring the message from SMQ3 after the issue is resolved by the business user/functional team.
If first message stuck in SMQ2 (i.e Queue Name: XBQREOIO_PP115NQM55) for incorrect data then the message gets moved to SMQ3 by the Job and the email notification will be sent to the business/functional and technical team to further investigate and reprocess the message manually by sending a new corrected message from MES. The problematic incorrect payload message in the SMQ3 needs to be cancelled manually from SXMB_MONI.
Here, the example of queue processing from end to end.
- Go to PI system http://<host>:<port>/dir/start/index.jsp
- Click on Integration builder
- Click on communication channel “CC_FILE_SEND_ProcessOrderBatchUpdate”
- Click on processing tab
- Define the queue name “EOIO_PP115NQM55”
- Two files placed in MES FTP folder
- The first file create at 12:59 AM and second one create at 1:03 AM. The file should be picked up by SAP PO in sequence of created time.
- SAP PO picks up file “POBatchUpdate_9010201612160022.xml” and processed first in SAP PO with unique message id.
- The second file “POBatchUpdate_9010201612220002.xml” processed sequence in SAP PO with unique message id.
- Click on first message id.
- Check the message log which explains each step of processed message.
- Sequence number is unique for each message. When two files processed at same time, this sequence number feature helps to identify the processed message in order.
- Sequence ID is queue name which defined in sender communication channel.
- Click on open message for validating first records.
- File name “POBatchUpdate_9010201612160022.xml” and processed first successfully.
- Login to SAP S4HANA and go to sxmb_moni tcode.
- Click on “Monitor for Processed XML Messages”
- Enter “SI*” and press F4 button. Select service interface “PP115_QM55” (inbound).
- Press F8 or click Execute button.
- Overall status shows individual message status. The red flag meant “System Error – Manual Restart Possible” and green flag meant “Scheduled”
- The program “ZPI001R_QUEUE_MOVE_ERROR” run in background for every 5 min and move the inbound queue (SMQ2) to Saved Inbound Queue (SMQ3). Business user will get alert notification mail and need to investigate and take action.
a. Go to SMQ3 tcode and click execute button
b. The moved queue name shows below. Double click the queue name as shows in second screen.
c. Now, investigate why the message failed.
d. Double click the row to view inbound message from SAP PO.
e. Example: The inbound record has date and timestamp which is not allowed in SAP S4HANA, because of that system could not process the payload message.
f. Validate field GeneratedDate in inbound payload
g. Since this is data issue, it needs to be sent from MES system without timestamp or validate and remove the timestamp in SAP PO mapping and process again from MES system.
- Now, Error message to be removed from queue. It can be cancelled via sxmb_moni tcode.
Click on cancel button
Click Refresh button and status shows cancel now
- If the error is related to functional configuration, the functional team/business user has to solve the issue. Once issue solved, follow below steps to restore the queue which will be placed again in inbound queue and process successfully.
a. Go to SMQ3 tcode
b.The moved queue name shows below. Right click the queue name as shows in second screen.
c.The message will be placed back to SMQ2 (inbound queue).
d. Go to tocode SMQ2 (inbound queue) and select the EOIO Queue name “XBQREOIO_PP115NQM55” and UNLOCK the queue to process the messages automatically the message just restored from the SMQ3 including if there are any other remaining messages in the queue.
Important Note: XBQREOIO_PP115NQM55 Queue in SMQ2 will go to READY status whenever we restore any message from SMQ3 to SMQ2. Hence the queue “XBQREOIO_PP115NQM55” needs to be unlocked after restoring every message from the SMQ3.
I'm facing similar issues wherein queues are getting stucked in SMQ2 inbound queues and it should be processed in EOIO quality of service.
regards to point 21, requesting you to kindly provide more details around the custom program “ZPI001R_QUEUE_MOVE_ERROR in elucidate.
Also adding on wherein point 22 says the message can be cancelled/deleted , in this way looks the data loss is occurred abruptly ? Also moving error queue to another queue can also end up in partial non sequentially processing.
Please share your inputs. Thanks!