Let us start with some definitions I used here:
- SAP-ALE is part of SAP-Netweaver being a matured and widley used technology for cross-system communication.
SAP-ALE is built on the SAP-Standards SAP-IDOC and SAP-tRFC.
- SAP-IDOC’s describe messages (structured text files) used for communication of applications
- SAP-tRFC is used as communication infra structure by SAP-ALE to send/receive SAP-IDOC-messages. For external systems SAP provides the SAP-RFC-SDK which is distributed with SAP-GUI disks, or by SDN.
The tRFC implements an asynchronous method to call function on a remote system. The tRFC is per definition transaction save -> that means the tRFC implementation ensures that a remote function call is done in a save way and guaranted to be executed once. tRFC is able to handle network failures, temporary missing partners et cetera by using message queues and unique transactions ID’s (= TID) for each call. The use of tRFC is a must if you want to change data at the target system (FI, documents, master data, SD documents, material movments …)
- transaction = a event which causes a secured change in databases. The system ensures that a transactions data base change is done once.
My definition of a SAP-ALE-message using tRFC is that each remote-call to transfer IDOCs gets a unique transaction ID from SAP-tRFC-Modules and is allowed to be executed exactly once in the target system.
I testet serveral SAP-Systems and I can show a unexpeted behavior. I could force all systems to process the same TID / IDOC-Message as many times as I want.
Therefore I say SAP-ALE is not transaction safe and SAP-Users using this technology are endangered to screw up all data in their system because the SAP-System does not check for processed TIDs. If any System resends tRFC-calls because of any problem the SAP-System processes this calls again and again instead of blocking the all subsequent calls.
Detailed information is here http://www.wa-mozart.eu/SAP-ALE_check.pdf