Skip to Content
Technical Articles
Author's profile photo Bärbel Winkler

Setting up a central ATC-system – Part 3: Tweaking the settings to our liking

This is part 3 of my ongoing blog series about setting up our central ATC system.

Part 1: Setting the stage and Part 2: Preparing the systems

By now we’ve become fairly comfortable with how our new central ATC system behaves and how to connect satellite systems to it. So it’s time to get down to the nitty-gritty details like prototyping the baseline checks, tweaking the message priorities and setting up the exemption process. In parallel, I’m putting together the necessary documentation to share with the developers before going live with central ATC checks in a couple of weeks from now.


Setting the baseline

The first thing I needed to do was to decide which checks to include in the variant for what would define our baseline. In order to do that, I however first had to think about and define which checks should go into our future check-variants used during task/transport release where prio 1 & 2 findings will prevent the release. As my related question unfortunately didn’t get any responses I just went ahead and started with the check-variant we already had, taking out and adding checks not quite at random but basically just following my “gut-feeling” of what would make sense for us and what wouldn’t.

We made the decision to have some checks prevent task/transport release even if they came from “old” code and not just from newly created or changed sections. One such example are hard updates to SAP-tables (with the exception of TVARVC) where we know that we have way too many of in legacy code. We plan to use the exemption process to at least document the places and reasons for why these updates are in the code (and why they cannot easily be changed to better methods). Because of this decision, the check-variant used for the baselines contains a few checks less than the one in the works for transport release.

Once I had the check-variant defined I set up a run series to check all objects in all packages starting with “Z*” in the sandbox system:

Some 5 hours later, the job had finished with just a “few” findings and check failures:

The missing prerequisites errors no longer occurred for the impacted objects in a rerun after we downloaded an updated version of OSS-Note 2270689 – Remote Analysis (for source system) in the sandbox system. The other errors – as far as I can tell – are actual issues in the source code like syntax-errors or missing screen-definitions.

One thing was a bit weird while the checks for the baseline were being executed: for most of the time, refreshing the status screen showed updates in increments of 50 objects and the process kept running at a steady pace. But during some periods of time (more than an hour actually) nothing much happened as far as visible progress goes. Checking via SM50 it looked as if the process was somewhat stuck in routines related to class CL_CI_PROVIDE_CHECKSUM where – judging from taking some peeks via SAT – quite a lot happened in just a few seconds, with some counts getting into the high 10th of thousands within 10 seconds.

After getting the results I added them to the baseline:

I then “played” with the results to check that this really works as described in the related blog post published by Olga Dolinskaja . And, guess what? It does!


Tweaking the message priorities

One task I was looking forward to the least was tweaking the message priorities. Even though this can be done easily enough from either transaction ATC or SCI and the check variants definition by going to Code Inspector –> Management of –> Message Priorities it is a bit of a tedious task.

Our plan is to start with just a few checks preventing a task/transport release which in turn entails having to reclassify quite a lot of checks from message priority 1 or 2 to 3. In order to know which checks needed to be tweaked, we did the following steps:

  1. Properly connected our development systems via trusted-RFC connections to the central ATC system
  2. Defined the central check variant to be used during task/transport release: CHECKS_TRANSPORT_RELEASE (tip: copy the name to the clipboard as there’s no F4-help in the satellite systems!)
  3. Defined the check variants in the satellite development systems with reference to the central variant in the check system: CENTRAL_TRANSPORT_RELEASE (I plan to make more such referenced checks available for developers and will have all the variant names start with “CENTRAL”)
  4. Have a program select all open transports once a day and execute the ATC-checks for its objects via the central check now available (some more details about this step can be found here)
  5. Take a look each day at the results in the satellite systems to see which findings get flagged with which priority and update them as needed to get closer to the envisioned future state for task/transport release

Doing it like this has the advantage, that I can see how the findings from a transport change from day to day dependent on the tweaks I apply to the priorities. I therefore don’t have to guess, what will happen, but will actually know (or so I hope!). It should also help with not inconveniencing the developers too much once we go live as I can tell – and show! – them what to expect beforehand.


Defining the exemption process

ABAP development happens in many locations and also by external developers around the globe so we knew in advance that we’d have to take a close look at how best to define the exemption process before going live with checks preventing the release of tasks/transports. Of particular concern was the apparent restriction (described in another of Olga’s neat blog posts) that a developer needed to select a specific approver for an exemption request as most developers wouldn’t really know who of the perhaps handful potential approvers might actually be available to “hit the button” at any given time.

We have now figured out a way to do this within the current environment:

  1. We defined a new user “ATC_APPROVER” which is available in the satellite systems and the central ATC system with the needed authorizations
  2. We will have an email group address created for this user
  3. Emails triggered by the exemption process will go to this group address from where they’ll be passed on to the actual approvers
  4. The point person (or whoever gets to it first) logs in to the central ATC-system with her/his own user ID and approves or rejects the request(s)

We already checked and when everybody a) has the required authorizations and b) is listed as an approver in the ATC “Maintain Approver” settings exemption requests can be updated by whoever is available – it doesn’t have to be the ID listed as approver. Once the approval or rejection is done, the username switches to whoever actually did it.

At first, it looked as if we’d had to manually tweak the settings of the job to send out notifications about requested and processed exemptions because the standard configuration would only run the job once per day – obviously not enough for our requirements! Luckily enough, we found OSS-Note 2619387 – ATC: Downport Immediate E-Mail Notification and after its implementation, it’s now possible to trigger notifications immediately:

This should hopefully give us the needed flexibility to turn around exemption requests fairly quickly – esp. as we hope to start all of this with just a small set of checks where exemptions might play a role and get requested.


Next Steps

To get our local, global and external developers on board with the new process, I already invited them to another workshop-like session during which I’ll show them what has been set up and how we plan to implement it. After the session – and before I go on vacation 🙂 – we’ll go live with the newly defined check-variant BUT without preventing task/transport release for a couple of weeks. That way, everybody can get accustomed to the new checks and can also try the exemption process without potential rejections having any kind of real effect. The time can also be used to collect feedback about which message priorities might still need to be tweaked before really hitting the switch.

That’s it for now – I’ll keep you posted about how it goes the closer we get to the final stage.


Here are the links to the other parts of the series for easy reference:

Part 1: Setting the stage

Part 2: Preparing the systems

Part 4: The final stretch

Part 5: Keeping an eye on things (January 2019)

Part 6 – accumulated FAQs (March 2021)

For the overall journey, please see the long, long winding road edition.

Assigned Tags

      23 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Jelena Perfiljeva
      Jelena Perfiljeva

      Thanks for sharing! Very interested in this, will need to go back to the beginning and read the whole series now.

       

      Author's profile photo Ian Stubbings
      Ian Stubbings

      Hi Bärbel

      I have been reading all of your blogs with interest as we have been embarking on the same journey. I am now at the point of building the program you mention above to provide pre-warning of transport issues. so far so good, I get the errors/warnings and info messages in my ALV, but did you find a way to also include the exemptions?

       

      Regards

      Ian

      Author's profile photo Bärbel Winkler
      Bärbel Winkler
      Blog Post Author

      Thanks for your feedback, Ian!

      Which ALV are you referring to? I just use the aggregated result for the factory-class to put that into an email I have the program sent to me daily. The ALV screenshots in my post are taken from the check results as seen in TCode ATC for those results and I haven't even checked if the number of exempted findings could be shown here as well.

      Cheers

      Bärbel

       

      Author's profile photo Ian Stubbings
      Ian Stubbings

      I created an ALV since I didn't have the email functionality to hand (rather rusty developer - been hands off for too long). I am now validating the results online to ensure they are identical from the program and from when I execute the checks with the same variant manually.  Once happy, I'll convert to using email.

      Cheers

      Ian

      Author's profile photo Ian Stubbings
      Ian Stubbings

      Hi Bärbel

       

      Also, we have a requirement to download all the SCI tests and priorities. Is there a way to do this? The closest I have come is SLIN_DESC which I assume only includes SLIN and SLIN_SEC check messages.

       

      Regards

      Ian

      Author's profile photo Bärbel Winkler
      Bärbel Winkler
      Blog Post Author

      Hi Ian,

      I tried to find a way to do that as well but there doesn't seem to be one unfortunately. Perhaps Olga Dolinskaja or Thomas Fiedler know a means to do this?

      Cheers

      Bärbel

       

      Author's profile photo Florian Henninger
      Florian Henninger

      If you want to download only the central ones.. Go for the /SDF/ functions;-)

      Author's profile photo Ian Stubbings
      Ian Stubbings

      Hi Florian

       

      I'm checking the list of /SDF/ functions on our Central ATC system but nothing jumping out at the moment.

      Can you elaborate? 🙂

      Thanks

      Ian

      Author's profile photo Florian Henninger
      Florian Henninger

      To get the central results you can use function /SDF/CC_ATC_RESULTS

       

      Author's profile photo Ian Stubbings
      Ian Stubbings

      Hi Florian

       

      Thanks for the reply but I think we talking about 2 different things. As it happens I am already extracting the results out of the central ATC for further analysis fine.

       

      What I after here though is a way to download all tests and priorities from the main SCI screen i.e. in Management of-Message Priorities.

       

      Thanks

      Ian

      Author's profile photo Ian Stubbings
      Ian Stubbings

      Hi Bärbel

       

      Thanks for the speedy response. Good to know that I should not look to hard if you also hit the same roadblock!

       

      Regards

      Ian

       

      Author's profile photo Ian Stubbings
      Ian Stubbings

      Hi Bärbel

      The open transport inspection program now works very well and I have added the emailing functionality - many thanks again for steering me in the right direction :-). I may now use ABAPGit to 'open source' it as I'm sure others would benefit from it and it would give me an opportunity to delve into this area also.

      I have also come across another scenario for a bespoke program - for exemption reporting. During our workshops the question of SLA (Service Level Agreements) came up in relation to the turnaround of approvals/rejections/input from the approval team.  Ideally, I would like to automate this and send emails round in relation to open approvals that are nearing their SLA limit. Therefore I have started to develop this.

      Have you had to address a similar requirement?

      Regards

      Ian

      Author's profile photo Bärbel Winkler
      Bärbel Winkler
      Blog Post Author

      Hi Ian,

      good idea to put the program on Github!

      We don't really have/need SLAs for exemption processing as we don't get very many - due to the fact that we on purpose don't have many findings with priority 1 or 2. If we have 5 to 10 requests per week it's "a lot".

      I can't check at the moment but the exemption requests are stored in just one table with all the required data (I think). So you'd just need to query that and put the result into an(other) email.

      Cheers

      Bärbel

      Author's profile photo Ian Stubbings
      Ian Stubbings

      Hi Bärbel

      While running the workshops it was a question (SLAs) that came up a couple of times so I thought I'd better implement something even if we don't really require it immediately. No harm in me flexing some ABAP muscles anyway - it's been a while!

      Indeed you are correct. The exemptions are held in the SATC_CI_EXEMPT table, so easy to read the exemptions in a state of OPEN, check the last_changed timestamp and react accordingly.

      BTW Did you see my questions on Olga's blog regarding upgrading to 7.53? Pretty annoying. I've been waiting for that functionality!

      Cheers

      Ian

      Author's profile photo Ian Stubbings
      Ian Stubbings

      Hi Bärbel

       

      Did you have any issues with your email notification settings?  Initially after implementing the  OSS-Note 2619387 – ATC: Downport Immediate E-Mail Notification all was well, but Now I get a warning when I switch to Immediately and it doesn't ver send out the notifications.

      Regards

      Ian

      Author's profile photo Bärbel Winkler
      Bärbel Winkler
      Blog Post Author

      Hi Ian,

      not that I'm aware of and I just checked to make sure that the periodicity is still set to "Immediately".

      Cheers

      Bärbel

      Author's profile photo Ian Stubbings
      Ian Stubbings

      Hi Bärbel

       

      Ok. Thanks. Just something odd on my system then!

       

      Cheers

      Ian

      Author's profile photo Kavita Mane
      Kavita Mane

      Hello Barbel,

      We are currently using ATC along with our transport tool and enabled on release of Tranport.( Block on Priority 1 and Priority 2). As there are so many checks for priority 2, we would like to block the TRs only for Priority 1). Is there any customization possible.?

       

      Regards

      Kavita

      Author's profile photo Bärbel Winkler
      Bärbel Winkler
      Blog Post Author

      Hi Kavita,

      this depends on the version of your SAP-System. We are on NW7.50 SP25 EHP8 and there you only have the option for combined Priority 1 and 2. On higher releases - or a S/4HANA system on 7.56 you also can only pick Priority 1.

      As explained in the blog post, in order to not get too many blocked transport releases, I tweaked several message priorities, switching some priority 1 or 2 messages to 3.

      Hope this helps!

      Cheers

      Bärbel

      Author's profile photo Kavita Mane
      Kavita Mane

      Thanks Barbel!.

      Currently we are looking for an option to Baseline our code. Our satellite systems are on 750 version so Baselining is not available. To get this feature, we have setup a central ATC system and provided RFC to central ATC system as Reference Check system in our Development (Satellite) system.

      We expect that wherever we are running ATC in Development system, it should use variant from central ATC system and show the results there, so that we can baseline the code from central ATC. This is not happening currently. Could you please assist what settings we need to do to make this work.

       

      Regards

      Kavita

      Author's profile photo Bärbel Winkler
      Bärbel Winkler
      Blog Post Author

      Kavita Mane

      Hi Kavita,

      if you read through my series of blog posts as well as Olga's you should find all the information you need. When we set up our central ATC-system on NW 7.52 we did so by following Olga's detailed step by step instructions and it worked well. My summary "long, long winding road" blog post might be helpful.

      Cheers

      Bärbel

      Author's profile photo Kavita Mane
      Kavita Mane

      Thanks Barbel for quick response !. I could fix the issue and I am able to get the results in Central ATC system from our development system but when trying to Baseline the results its giving popup --Results based on remotely triggered checks cannot be added to baselin.

      Could you advice here.

       

      Regards

      Kavita

      Author's profile photo Kavita Mane
      Kavita Mane

      Hello Barel,

      I have got some support from SAP on this issue. We are now executing ATC run on a package from central ATC System and able to Baseline the results. This baselining is getting replicated if we are executing ATC on the Objects included in this package. This really solved our Baseline issue for the systems on lower Basis version. Hope we are on the correct path.

      Thanks for your continous support on this topic.

       

      Regards

      Kavita