Introduction:
While many of us would like to simulate/check our transport request for error before we import the changes into production system, it becomes almost a necessity during big Go-Live’s / Release Management phase to sequence the transport request and check dependency between requests.
Although there are lot of solutions already been implemented like the followings
Home Made Transport Sequencer
Transport Checking Tool Object Level
Program to Simulate Transport Request
it is always best to use tools provided by SAP.
Solution:
With ST-PI component, SAP has delivered tcode /SDF/TRCHECK (program: /SDF/CMO_TR_CHECK) which makes sure errors of transport request gets detected before TR is imported to production system.
Refer to program documentation for details.
Lot more details can be found in
Idea:
Given that we have a solution doesn’t mean we end up using it to the best of its value. Hence it will be great to integrate this with SE10. 😉
I implemented BADI: CTS_REQUEST_CHECK to execute report: /SDF/CMO_TR_CHECK before releasing the transport request (method: CHECK_BEFORE_RELEASE) and then giving a pop-up to decide if I wish to continue to release the transport request.
Also I created a custom SET/GET parameter to ensure BADI calls report only when the user parameter is set to X.
To conclude:
Results are good 🙂
Identifies if objects are missing in production system.
Catches missing transport request.
Can be a life saver 🙂
Update 31st July 2020.
Code as follows:
"----------------------------------------------------- Data Declaration
DATA:
lr_transports TYPE RANGE OF e070-trkorr,
lv_answer TYPE char1,
lf_perform_check TYPE xfeld.
CONSTANTS:
co_none TYPE rfcdes-rfcdest VALUE 'NONE',
co_production TYPE rfcdes-rfcdest VALUE 'RFC_FOR_PROD'.
"--------------------------------------------------------- Logical Code
CLEAR: lf_perform_check.
"---- Get parameter to check if TR check should be executed.
"---- This is done to control which users should be able to use this
"---- feature. Also helpful to switch off for certain transports where
"---- note or too many objects are being sent. Timeout can occur.
GET PARAMETER ID 'CHECK_TR' FIELD lf_perform_check.
IF lf_perform_check IS NOT INITIAL.
"----- Get main request
SELECT SINGLE strkorr
FROM e070
INTO @DATA(lv_main_transport)
WHERE trkorr EQ @request.
IF sy-subrc IS NOT INITIAL.
"--- No Main TR ???
"--- Impossible..
RAISE cancel.
ENDIF.
CLEAR: lr_transports[].
"---- Collect TR in range
APPEND VALUE #( sign = 'I' option = 'EQ' low = lv_main_transport )
TO lr_transports.
"--- Note: We have excluded/included certain options.
"--- This is done for our requirement, you can select
"--- any of the below based on your requirement.
"--- Call report to check transport request
SUBMIT /sdf/cmo_tr_check
WITH p_source = co_none "-- Source System
WITH p_target = co_production "-- Target System
WITH r_prj_co = abap_true "-- Check TR
WITH p_ori_tr IN lr_transports "-- Give TR number
WITH p_crsref = abap_true "-- Cross reference
"-- WITH p_dgp = abap_true "-- Sequence Check
WITH p_swcomp = abap_true "-- Cross release
"-- WITH p_imptim = abap_true "-- Import Time in source
"-- WITH p_oichck = abap_true "-- Online import check
AND RETURN.
CLEAR: lv_answer.
"---- Confirm from User if he wishes to release TR
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = TEXT-a01 "-- Release Transport Request
text_question = TEXT-a02 "-- Continue to release TR ?
display_cancel_button = abap_true
IMPORTING
answer = lv_answer
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
CLEAR: lv_answer.
ENDIF.
IF lv_answer EQ '1'.
"--- Release transport request
ELSE.
"--- Cancel release of TR
RAISE cancel.
ENDIF.
ENDIF.
“it is always best to use tools provided by SAP.”
No. Not always.
I really need to add that I like this transport checker, but in my opinion it’s something which need to be integrated in a process and not at such a place.
When people really care about releases and transports the tool is something which just make sure for the quality manager everything is really fine.
Because just releasing the transport does not save you via “STMS”, and that’s just one example 😉
With before_release method, we can identify errors before releasing the TR and stop the release. Then we can make corrections before releasing the TR itself.
It might save from “STMS” in this case.
We are currently experimenting with /SDF/CMO_TR_CHECK as well but are looking for another option:
While experimenting with the program, we noticed that it did catch some issues which could then be corrected before hitting production.
Cheers
Bärbel
Thank you for sharing the experience.
Today I learned that /SDF/TRCHECK exists. 🙂 We have a home-grown program with similar purpose but I’ve had some issues with it recently as it doesn’t seem to work with the classes and SE91 messages. So this should be useful, I hope.
Thanks for sharing!
You are welcome ?
Hello Rameez
thank you for sharing this information. The cross-reference check can be further integrated into SAP Solution Manager ChaRM: Cross Reference Check in ChaRM
Regards
Fabian
Thank You Fabian for shedding more light on this.
Thanks Abhijit for sharing information with us..
We have also asked our team to note down the points related to this report.
One of the points that I noted is that in a standard table if .INCLUDE structure is not yet implemented then the report gives error of object does not exist in target system which is quite confusing.
Currently our plan is to observe report for a while and the we can submit all findings to SAP at once.
Rameez Khan
Thanks for a nice blog, I was excited to try out this transaction., but I am greatly disappointed with the cross reference errors which makes this transaction almost obsolete for us. How did your team address this? Are you able to use this transaction? Any insights?
Regards,
Suneetha
Hello Suneetha Yanimineni ,
Can you please elaborate on “almost obsolete for us”.
Because we have already integrated this transaction with SE10 and it works very well for us. It checks for error before we could import them to production system.
Eg of some errors.
Let me know what problem’s you are facing with this transaction in details.
Thanks
Rameez Khan
Hi Rameez Khan
Its the same error that you mentioned on your previous comment.
“One of the points that I noted is that in a standard table if .INCLUDE structure is not yet implemented then the report gives error of object does not exist in target system which is quite confusing.” How did your team overcome with this?
I have a report program which has CI include and in the current version of my program, I am not referencing any of the fields from the CI include, but the transport check tool shows me an error.
Another instance is on the SD user exit enhancements. This transaction checks for all the cross reference objects and other enhancements and errors about other enhancements which will be moved later. I would not expect an error in this case too.
Regards,
Suneetha
Hello Suneetha Yanimineni ,
We are living with it, may be SAP will bring some fixes in future. Btw did you raise an OSS by any chance ?
Thanks & Regards
Rameez Khan
Thanks, very helpful if you want to clean up the import queue and have to examine hundreds of transports that never went productive.
However, when processing a complete import queue, we still have an error, which we have not yet been able to get under control with OSS messages. It is called “Error in /SDF/TEAP_ENVI_ANA” (S1/333). Does anyone have the same problem ?
True. I too end up with same problem “Error in /SDF/TEAP_ENVI_ANA” . Does anyone got response from OSS. Appreciate if you could share.
Thanks & Regards
TRRaman
SAP released note 2851012. It should fix this error.
Hi Rameez Khan
Your idea is very useful, thank you very much to share this article with the SAP Community.
I would like to know how could you execute the report /SDF/CMO_TR_CHECK? Did you use a batch input program?
Thanks in advance.
Esteban
Hello Luis Esteban Moreno Ruiz ,
I have updated the blog with code.
Thanks
Rameez
Hi Rameez,
Can you share the code which you have used in se10 BADI, check before release to integrate it with SE10.
Thanks in advance
Hello Shweta Jain ,
I have updated the blog.
Thanks
Rameez