The inbound function module that uses an ALE enabled transaction must pass the IDoc number to the transaction’s IDoc memory variable before calling the transaction.

Inbound Processing with ALE-enabled Transaction: transaction succeeded.

How can you tell whether the Call Transaction has succeeded?
On the face of it, you would think that the Call Transaction has succeeded if "Sy-Subrc = 0" after the call. In an ALE environment this is only half the story, because when the import parameter Input_Method takes on the value "A" or "E", the inbound function module must call the transaction using mode = "A" or "E" ("show all screens" or "show the screens starting with the one where the error occurred"). In this case, the user sees the screens and can cancel the transaction using OK-code "/n"’, which also leads to "Sy-Subrc = 0" after the call! Hence the only reliable way to tell whether the Call Transaction succeeded or not is to check the message ID (Sy-Msgid) and number (Sy-Msgno). Beware that some transactions have more than one "success" message.