How to detect transport-related errors before they occur? – The Cross Reference Check
Do you import transport requests via STMS into a SAP system and you are sometimes surprised to spot an import error? Or you find out you missed a transport after importing another one? If this sounds familiar to you, then this blog post is for you!
Dependencies between transports can cause problems
Transports are often logically related to each other. A simple example for this is a SAP report that calls a function module in the same system. If you transport the report without the called function module to another SAP system, this could lead to a dump.
Missing transports can lead to different potential errors like dumps, version inconsistencies or import errors (STMS return code 8).
These errors can cause a lot of stress during a big production import when you only have limited time. Wouldn’t it be better if you have this information already before you start the import? Sure! Luckily, there is a report to help you to find potential errors before they occur.
How do you find potential errors?
Call report /SDF/CMO_TR_CHECK via SE38 or via transaction /SDF/TRCHECK. As this report is part of the ST-PI component, you can call this report from every AS ABAP system. However, the easiest way is normally to call it from SAP Solution Manager. That is because the required RFC connections normally already exist from Solution Manager as the central SAP system in your system landscape.
1 . Selection screen of Transport Request Check Report
In the selection screen you must fill a source and a target system. Imagine you want to import a transport from one system to another. The source system is the system where your transport currently is located. The target system is the system in which you want to import your transport request. So, if you transport from development system (DEV) to quality assurance system (QAS), DEV is source and QAS is your target. If you want to transport from quality (QAS) to production (PRD), QAS is your source and PRD is your target. Select the flag for the Cross Reference and run the report.
SAP recommends using the existing READ- and TMW-RFC connections. However, in case you have TRUSTED RFC connections and the right authorisations in the connected systems, this is even more convenient. Then you can directly jump from the result screen to the connected system.
2. The result screen
In the result screen the report detects the issue before an actual import. In the example above, the program Z_REPORT calls function module Z_FUNCTION. The report is in transport SM1K900001, the function module in transport SM1K900002. As the function module is not included in transport SM1K900001 and only in the source system (see status message “only in source”) this could lead to a dump in the target system when the report is called. Next to the missing object you even have a column that gives you the number of the missing transport request (SM1K900002).
Besides the presented case “Only in source”, the report can detect a lot of other cases showing potential errors throughout your system landscape. Technically for all objects in the selected transport requests, the referenced objects are identified by a where-used-analysis. If the referenced objects are not included in the transport requests, their versions between the source and target system are compared. You will receive often “other version” issues. This means that the checked development object uses another version of a development object in the source and the target system.
Another very useful information is “Locked in target system” if you make a cross-system transport. Then an object of the transport to be imported is already locked in the target, because a developer is currently working on this object.
3. Automated integration into SAP Solution Manager Change Request Management
Right now, you must run the report always by yourself. Even better would be if you can automate the checks. And you can!
With SAP Solution Manager 7.2 SP8 you can integrate this check into the change request management process. It is called cross-reference check. The transports are automatically checked during release and import of a transport request. And of course, you can still run manual checks.
3.1 Pop-Up during release of a transport
If you release a transport request and there is a potential issue, a pop-up comes up in an urgent correction. With the right authorizations you can ignore the conflict and continue or else you can cancel the pop-up and take a corrective action. If you ignore, this will be logged.
3.2 Transport-related checks assignment block
In the change document assignment block “Transport Related Checks” you can see the result of the cross-reference check.
3.3 Details screen
In both screens above you have the possibility to see the details. The details screen below looks like the result screen from the report /SDF/CMO_TR_CHECK.
The cross-reference check is a real help in transport management to avoid import errors and other transport-related errors. It should be used alongside with downgrade or overtaker checks. Whereas downgrade protection cares about two transports containing the same object, the cross reference is about two transports containing two different objects that are linked to each other.
You can easily start to figure out how it works by calling it in your system with report /SDF/CMO_TR_CHECK. In case you are using ChaRM, you can integrate it automatically into your change process. However, in some cases like cross system transports where ChaRM is not used, or to check a huge list of transports before a big Go-Live, you must call the report directly.
Good job and well described!
Thanks Fabian for sharing the sane. One observation though the import of CTS will not fail if the function module is located somewhere else or not the program will dump while running. If this would have been the case we would not be able to have dynamic fm call or rfc call. Yes i agree report helps in checking the dependency of the objects referred in the report.
I really appreciated your comment. You are right. A dump will not happen in this case. I changed the text accordingly.
Very nice blog and solution for a very common problem!
Is this also available for Normal Changes?
thank you for your feedback. The cross reference check works for normal changes as well. You will be notified when you release and import transport requests. The mechanism is very similar to the urgent change. Of course you import transports in this case via tasklist.
Thanks for sharing this.!
We have integrated this tool with CTS using CTS_REQUEST_CHECK. Here it is.
However I am more interested in the solution manager option.
Would you be able to provide more details on this one.?
Thank you for mentioning your blog.
The integration into Solution Manager requires that you manage your transports with ChaRM. If you do so, you only have to select a checkbox for the cross-reference check in the ChaRM Admin cockpit. No further configuration is needed. Authorizations to ignore warnings and errors must be provided to the relevant users (authorization object SM_CM_FUNC).
great Post. Looking forward to seeing more!
Indeed a very good and helpful blog.
Kind regards Peter
Thank you for an informative post. This could be very useful.
This is a very usefull tool, however don't you face performance issues running Cross-reference Checks on ChaRM?
Very usefull, I have added /SDF/TRCHECK to my favorites !
thanks for sharing 😉
We would like to integrate this tool with SolMan but we are facing performance issue running this tool manually. Even for 1 object it ran for 2-3 mins. So wondering how much time would it take for 10-50+ objects especially in Project Transports.
Thanks and Regards
We have the same problem. We switch on cross reference check in SAP SM. And during import of big realize (about 600 requests) the check takes too long time.
Can the Transport Check Report by SAP be used for checking retrofit compatibility as well?
Thanks for sharing!