An acknowledgment message informs the sender of an asynchronous message about the result of message processing for this message. The reported result is referred to as an asynchronous acknowledgment.
Within the request message you must define whether an acknowledgment message is required, and if so, what kind of acknowledgment message. The acknowledgment message can refer to two events:
● The arrival of the request message at the final receiver
● The execution of the application in the receiver system
For this purpose, the request message contains an acknowledgment tag, which specifies the event for which an acknowledgment is expected. This tag must be specified by the sender (or a sender adapter that supports acknowledgment messages).
Message processing ensures that the acknowledgment message follows the same route from the receiver to the sender as the request message did from the sender to the receiver. For this purpose, the request message contains a hop list that logs the route of the request message. All Integration Engines and Integration Servers that are involved in the processing of the request message provide the data for this log.
As soon as the request message encounters an event that requires an acknowledgment message, a corresponding acknowledgment message is created and sent to the sender.
An acknowledgment message receives a new message ID, but also has a reference to the message ID of the request message as well as the value Response in the Directory tag of the message header. The request message hop list is copied to the acknowledgment message header, thus enabling backward routing of the acknowledgment message.
If a message is branched, a separate acknowledgment message is returned for each newly created request message. These acknowledgments enable the sender to recognize that its original message has been branched.
Acknowledgment messages are processed using backward pipelines. They are defined for each pipeline involved in the processing of request messages:
Pipelines and Corresponding Backward Pipelines:
The backward pipelines have the following main tasks:
● Transport from the receiver system to the Integration Server
The receiver system sends an acknowledgment message back to the corresponding Integration Server (RECEIVER_BACK), as defined for the local Integration Engine.
If a receiver adapter is involved in message processing, it sends the acknowledgment message back to the Integration Server, provided that the respective adapter supports this procedure. Otherwise, a final acknowledgment message is returned with a comment that an acknowledgment is not possible.
● Transport from the Integration Server to the Sender System
The Integration Server sends an acknowledgment message back to the sender (CENTRAL_BACK). It uses the name of the sender system for logical and technical backward routing.
If the sender is addressed using an ABAP proxy, you must define a corresponding receiver agreement for this sender.
If a sender adapter is involved in processing the message, the Integration Server sends an acknowledgment message to the sender adapter, which is then responsible for returning the acknowledgment to the sender.
To do this, some adapter types require a corresponding receiver agreement for the sender.
Acknowledgments of Errors and Correcting Errors
If the sender system has requested an acknowledgment message, when the response message is processed successfully, the acknowledgment message contains a corresponding comment. However, the acknowledgment message can also inform the sender about application or system errors that occurred during processing of an asynchronous request message. The fault message is then appended as a binary attachment in the payload of the acknowledgment message.
Message processing is terminated if either request messages or acknowledgment messages contain errors. You can either cancel such messages manually in the system where the error occurred or restart them once you have corrected the error. To do this, use the monitor for processed XML messages.
If a system error has occurred, an acknowledgment message is only generated if the configuration parameter ACK_SYSTEM_ERROR in the RUNTIME category has the value 1 in the system in which the error occurred.
If a system error occurs during processing of acknowledgment messages, no further acknowledgment messages are created, because an acknowledgment message must refer to a request message and not to another acknowledgment message.
If processing of a request message with errors is canceled manually, a final acknowledgement message is generated with an appropriate comment.
Due to this procedure, multiple error acknowledgments can reach the sender before a final acknowledgment about a message being successfully processed or ended manually. For this reason, the sender must always wait for the final acknowledgment before taking active steps to correct any errors.
Notes for the IDoc Adapter
IDoc technology supports its own acknowledgment technology, namely the ALE Audit. Here there are no acknowledgment requests from the sender. Instead, the receiver decides whether an acknowledgment IDoc should be sent back to the sender based on the ALE configuration. These acknowledgment IDocs are only used for monitoring on the sender side.
IDoc technology is the only technology in which positive acknowledgments from the application contain data. This data can be sent by the IDoc adapter in an acknowledgment IDoc if the sender is an IDoc system. Otherwise, the data is discarded.
For the IDoc adapter to be able to send an acknowledgment IDoc to the sender, a communication channel with the interface ALEAUD.ALEAUD01 must be maintained for the sender.