For integration with external TMS (Transportation Management Systems) the standard process is that SAP shipment is created from TMS. For that we can use TPSSHT01 idoc type and message type SHIPPL where standard inbound process code triggers FM ‘IDOC_INPUT_SHIPPL’.
Alternative solution is to use SHPMNT06 type with message type SHPMNT linked to FM ‘IDOC_INPUT_SHPMNT’.
TPSSHT01 approach is more specifically dedicated to external TMS and has limited segments& fields. Usually it is sufficient to create shipments since additional data are anyway not available in TMS systems.
SHPMNT06 on the other hand is more flexible in terms of data contents, but then implies more complexity to define message structures for interfaces.
The biggest difference however is related to update messages. ‘IDOC_INPUT_SHIPPL’ we can call a ‘full replace’ interface. Meaning if SAP receives updates using this FM, then all the data in SAP shipment is overwritten. In case the field is not populated in TPSSHT01 idoc, then it is cleared out in SAP shipment.
While for SHPMNT06 only the selected data are getting updated in SAP shipment, the ones which are coming in the idoc fields.
We should note, that TMS does not always own all the data of SAP shipment. There are other fields that need to be sourced from eg. warehousing systems. And then receiving an update from TMS which might overwrite warehousing data via ‘IDOC_INPUT_SHIPPL’ is not recommended.
The conclusion is following:
– For create messages you can easily choose ‘IDOC_INPUT_SHIPPL’ processing logic.
– For updates you need to consider if any data is changed in SAP shipment from other sources than TMS. If yes, consider using ‘IDOC_INPUT_SHPMNT’ which would not overwrite your data in the document.
Any comments welcome!