Skip to Content

Imagine this:

You’ve been working long and hard on a very important development. You’ve created your classes, WDA’s, programs, function modules, and the related DD elements, domains, table types and structures.

Everything looks fine. Your transport is ready to go. You release it to the Q system, and everything still looks fine. Users are happy, and so are you. You get the green light. The transport makes it to production. You leave the office, happy that yet another accomplishment is done.

Next morning…

…you arrive at the office. You’ve barely had time to gulp down those first few drops of caffeine before your mailbox starts to inflate. Or the phone rings. Or both. -Hey, we have situation. In Prod. And it seems to be, uh, your fault.

Or your development, more precisely.

What??

MY development? Can’t be. It was tested. Double checked. It’s watertight.

Except we’re not talking functional issues. The thing failed to generate. It won’t work. Why? Because one of your tables refer to domain ZZ_WHATEVER, and ZZ_WHATEVER doesn’t seem to be included in the transports…

Uh. Right. OK. Um…

Turns out ZZ_WHATEVER is on another transport, created by your colleague Bob, in the next cubicle. Now good old Bob created ZZ_WHATEVER for one of his own projects, and it looked so good you decided to use it for one of your own table fields.

No use re-inventing the wheel, right?

Problem is…

…although Bob’s transports have gone all the way to Q, they’re still in test phase… so that nice domain of his, ZZ_WHATEVER, is not in Prod. Which is why your table fails to generate.

I guess this situation has occurred to many of you. Every once in a while, it might happen that a transport released to a downstreams system “misses” one or two vital components. This could happen for several reasons:

  • you have created a new development that re-uses an existing class or DD element, which has not been previously transported
  • you want to import the development into a freshly installed system (without using SAPlink), and you have manually compiled a transport containing all the parts, but forgotten one or two pieces
  • an emergency fix has been implemented that relies on some other custom development objects, and you didn’t think of adding these to the current transport (or maybe they are locked in other transports)

The solution (well, one solution, anyway)

  image

 Whatever the reason is, it would be nice to have a tool to analyze your transport, before releasing it, just to check for inconsistencies. This is where the Transport Consistency Analyzer come in handy. It will do the following:

  1. create a list of all objects in the transport
  2. scan all code lines (programs, includes, functions (including the whole function group), classes)
  3. iteratively scan all objects referred to or used in the master object list (down to the n’th level) to obtain a complete list of code objects
  4. scan the final, complete list of objects and compile an exhaustive list of all DD objects, functions, programs, includes, classes etc. that are used or referred
  5. provide the opportunity to add the missing pieces to your original transport – or create a new one, automatically

image

How & Where?

I started working on this tool more than 2 years ago. It was originally a small(ish) report, but has been properly “Object-Oriented” along the way. Now, I’ve decided to set up a project on Code Exchange for it. The TCA is, in it’s current version (which I humbly call 0.9), already a tool that does all of the above. It is currently in “test phase”, and is being continuously worked on. I am providing it as a Code Exchange project because I believe it already has a certain value, and would welcome inputs and comments – as well as any corrections that the community might find it worthwhile to point out!

Please note that as this is still a preliminary version, there might be bugs and issues. I take no responsibility for any flaws or incorrect results, or their possible consequences, and would like to encourage ABAP geeks out there to examine the results closely before relying on the output of the program. Nevertheless, I believe the tool provides decent functionality as of now, and that it has a certain “business value”.

Here’s a direct link: Transport Consistency Analyzer

Collaborative projects like the Code Exchange are one of the many areas where SDN/SCN proves it’s undisputed value to the SAP community. From the humble beginnings, it is now becoming a vibrant scene for developers all around the world. Just one more reason to get involved and contribute!

To report this post you need to login first.

9 Comments

You must be Logged on to comment or reply to a post.

  1. Tom Cenens
    Hello Trond

    Code Exchange is a really good initiative and the tool you have build looks useful.

    I do wonder to what extent SAP has this included (or perhaps totally not) in central CTS (CCTS) which was supposed to be launched with Solution Manager 7.1 but which is not there (at least I think so, I haven’t seen it anywhere?).

    They claimed to address all the customer challenges there were concerning CTS with cCTS.

    Kind regards

    Tom

    (0) 
    1. Trond Stroemme Post author
      Hi Tom,

      wow, I created this blog less than 30 minutes ago and it’s already published… weird.

      I haven’t had time to look at CCTS/SolMan since briefly touching on it more than a year ago, but would not be surprised if there is similar functionality there. I know SAP are doing their best to push everyone towards the SolMan way of doing things.

      Anyway my lightweight development can be used in almost any system without the xtra SolMan overhead, which is convenient 🙂

      I’m working on the next version, which will enable the analysis of complete packages, as well. Most of the code is actually in there already, but commented out. This would enable detecting objects being referenced/used across package boundaries, which is an area I’ve had some “interesting” issues with previously…

      (0) 
      1. Tom Cenens
        Hello Trond

        “wow, I created this blog less than 30 minutes ago and it’s already published… weird.” – That’s because the SCN team and the volentary moderators do such a good job 🙂

        I will surely flash this functionality before the eyes of some of our customers who might be interested to use it.

        Looking forward to reading more on this in future blogs. Another nice community project would be proper impact analysis of transport request / support packages and enhancement packages.

        Kind regards

        Tom

        (0) 
  2. Michelle Crapo

    It will be something I download and use!  Yes, I have run into that problem more than once, and it drives me crazy.  Sometimes it’s not just a data element.  Sometimes I transport someone else code with mine.  There code hasn’t been completely tested in Q, mine has.  But I didn’t test specifically for XYZ.  Regression testing, new testing, but no extra testing for that new development that I knew nothing about.  <Smile.  NOW.  Not then.><br/><br/>I wonder how this will work with that scenario or if something could be built out for that.<br/><br/>Yes, we have lots of pieces parts in different transports our Development box has next to no data.  We transport to our sandbox and test there.  Think about several people on one object doing that!  Yuck.<br/><br/>Anyway cool new tool.  I will be downloading.<br/><br/>Thank you!<br/><br/>Michelle<br/>

    (0) 
  3. Sandra Rossi
    Hi,

    I had also proposed something probably very close I guess, I’ll try your tool (I can’t log in CW currently, don’t know why, error 404 page doesn’t exist) and revert back.

    My tool was really ugly so your blog/project is very much welcome . For more info about this tool, see here : http://wiki.sdn.sap.com/wiki/display/ABAP/ABAP+program+to+simulate+transports .

    One thing I proposed is the capability to enter multiple transport requests, with a given sequence (if objects are missing in one TR, it checks the previous ones).

    Sandra

    (0) 
  4. Thomas Zloch
    I will compare to my own efforts I had come up with in the past. I’m sure many developers tried to code solutions to these everlasting issues.

    One suggestion at this point:
    You are using data element TAB_STRING in method SCAN_DD_OBJECT, this belongs to component SAP_APPL (ECC 6.0, Logistics and Accounting). I replaced it by TEXT1000 from component SAP_BASIS and was then able to install in an ABAP Trial Version without syntax errors.
    If it runs there, it will run anywhere 😉

    Thomas

    (0) 

Leave a Reply