Skip to Content

Administrators: Set Up, Running Checks

 

How do I set up the ABAP Test Cockpit for quality checking?

 

Here in brief is what you need to do to set up the ABAP Test Cockpit for central quality checking. You can find detailed instructions in the ATC documentation at the SAP Help Portal (help.sap.com) and also online in transaction ATC.

 

  1. Pick out an ABAP system to be the ATC master system, where you run central ATC checks and manage exemption requests. This is usually your transport consolidation or test/quality system.
  2. Set up ATC RFC destinations between the ATC master system and the development systems that transport code to the master system. SAP recommends using trusted RFC connections – a destination to each development system at the master system, and a destination to the master system at each development system. If you have these destinations already, then you can re-use them.
  3. Set up ATC users (or give existing users ATC authorizations). At the master system, you will need:
    – ATC administrators, who have a derivative of role SAP_SATC_ADMIN.
    – ATC QMs, who have a derivative of role SAP_SATC_QE.
    – ATC developer-users with either S_DEVELOP, ACTVT 02 or 03 or, if developers should not have the right to change code on the master system, then a derivative of role SAP_SATC_XMPT_APPLICANT.
    At each development system, you’ll need the same set of users. Developer users won’t need the SAP_SATC_XMPT_APPLICANT role, since they have an authorization for S_DEVELOP with AKTVT 02 and 03.
  4. Register your name spaces (e.g. /MY_COMPANY/) for the ATC master system. To do this, start ABAP program SATC_AC_INIT_NAMESPACE_REG on a development system. Then follow the online instructions in the program.
  5. Use transaction ATC to configure the master system, as shown. You can also schedule an e-mail job (for notifications about exemptions) and schedule regular ATC central check runs. See the online help for more information.
    /wp-content/uploads/2012/10/atc_q_01_148048.png
  6. Now configure your development systems. Log on to one of the development systems. Start transaction ATC and configure the system as shown.
    /wp-content/uploads/2012/10/atc_q_02_148055.png
  7. On the ATC Change Settings screen, choose Transfer data from the tool bar. SAP recommends setting up the ATC on one development system, and then replicating the configuration to the other development systems that have the same ATC master system. This is more efficient than logging on to each system in turn to do the configuration.

    For each satellite system (development system), enter the RFC destination of the system and transfer Local Priorities and Configuration Data to the satellite system.
    /wp-content/uploads/2012/10/atc_q_03_148056.png

 

Achievements:

  • The ATC has been set up on both the master system and development systems.
  • You are running central ATC checks and distributing these as current active results to satellite development systems.
  • The developers on your satellite systems can request exemptions against the active central ATC findings. The exemptions are managed on the master system, where they are persisted. There is no risk of exemptions being duplicated or lost.

 

How do I start a central run?

 

  1. Start transaction ATC on the ATC master system.
  2. Click on ATC Administration > Runs >Schedule Runs.  Click on Create to schedule a new run series. Or mark an existing run series and click on Schedule to start a new run in the series.
  3. To create a run series, click Create and fill out the screen as suggested below:
    /wp-content/uploads/2012/10/atc_q_04_148062.png
  4. To schedule a check run in your series, mark the series in the Run Series: Browse Configurations screen and click Schedule.  Then fill out the screen as suggested below:
    /wp-content/uploads/2012/10/atc_q_05_148064.png
  5. Press Execute to start the check run.  The run is executed as a background job.  To monitor the progress of the job, from the start screen of transaction ATC, choose ATC Administration > Runs > Monitor and Control Runs.

 

After the check run is done, the ATC distributes the result automatically to the RFC destinations that you specified. With the options shown in the screen shot, the check result is made the active result in the satellite systems. In this example we executed only one single ATC run. In a productive scenario you would schedule this run periodically as a background job.

 

How can I check the status of a check run? What should I do if a check run fails?

On the central system, start transaction ATC and choose ATC Administration > Runs > Monitor and Control Runs.

 

The display shows run status as running, finished, or failed. Usually, you can just restart a failed run. Check the log if want to see execution details and error findings.

/wp-content/uploads/2012/10/atc_q_06_148065.png

 

How can I tell whether the results are complete?

 

If you see this icon in the ATC result, then at least one check could not be run or failed to run correctly and some findings[ZK3] may be missing:

/wp-content/uploads/2012/10/atc_q_07_148066.png

Click on the button to see which checks and which objects were affected.

/wp-content/uploads/2012/10/atc_q_08_148070.png

Here, a check module was interrupted by a runtime error. The ATC check run is not terminated by such a problem. You can find details about the error in the short dump in transaction ST22.

 

Error type Examination not Possible means that the check module shown in Check Title could not check the object shown in Object Name. The context menu Show Documentation for Check gives you more information. If you still have questions, contact the check author.

 

What do I do after a check run is finished?

 

  1. In transaction ATC, choose ATC Administration > Runs > Manage Results to select and display available results.
  2. Everything okay? If you did not distribute the results automatically to satellite development systems, then you can do so now.
    /wp-content/uploads/2012/10/atc_q_09_148071.png

 

Quality Managers: Analysis, Reporting, E-Mailing

How can I access the result of a check run?

 

In a satellite development system, start transaction SE80.  If the ATC Results Browser is not shown in the browser selection, then choose Utilities > Settings.  Mark ATC Result Browser on the Workbench (General) tab.

 

In the browser, the current result is marked with the lighted bulb.

/wp-content/uploads/2012/10/atc_q_10_148072.jpg

 

Where do I review exemptions?

 

It’s best to review exemptions in the ATC master system, where they are maintained.  Review and approve or disapprove exemptions by doing the following:

 

  1. In the ATC master system, start transaction ATC. Choose ATC Administration > Quality Governance > Exemption Browser.
  2. Select the exemption requests that have been assigned to you.
  3. In the list of exemption requests, double-click an exemption to open the details provided by the requestor, including the ATC finding that is to be exempted, the scope of the exemption, and explanation provided by the requestor.
  4. Enter your assessment of the requested exemption. Then choose from the following actions:
    – Approve the request (grant the exemption, so that the ATC does not report findings covered by the exemption)
    – Reject the request (the developer must correct the problem in order to clear the ATC finding)
    – Return to applicant – send the exemption request back to the requestor, for example for additional information.

 

If you have set up your system to replicate exemptions automatically to satellite development system, then your work is done. If not, then you can replicate exemptions to the satellite systems so that they are visible there. One way to distribute exemptions is to choose ATC Administration > Configure ATC, and then choose Transfer Data. Enter the RFC destination of each satellite system, and be sure to switch Push or Pull Data to PUSH in the options screen.  The admin should distribute exemptions regularly in any case.

 

Where are the statistics?

 

The ATC results display start with the list of findings. Turn the statistics display on by clicking Statistics View in the tool bar. The statistics display might look like this (for some temporary objects):

/wp-content/uploads/2012/10/atc_q_11_148110.png

You can download statistics by selecting Print Preview (from the Print button options). Print Preview displays a list from which you can download.

 

How can I see the changes in findings after a re-check?

 

A cool new feature of the ATC results display is the delta display, which shows you what has changed after you have re-checked one or more findings in the ATC Browser in the developer transactions (SE80, SE24, SE38…).

/wp-content/uploads/2012/10/atc_q_12_148111.png

Cleared findings are shown green, unchanged findings are yellow, new findings are red (remember, a re-check applies the relevant check to the entire object, not just the individual findings).

/wp-content/uploads/2012/10/atc_q_13_148112.png

 

How about navigating back and forth in the results?

 

Have you done a lot of sorting and filtering in the results? Want to go back to earlier result?

A cool new feature of the ATC is that you don’t have to redo the sorts and selects. Just open the stack navigator with Display Navigation Window.

/wp-content/uploads/2012/10/atc_q_14_148113.png

And choose the view that you want.

/wp-content/uploads/2012/10/atc_q_15_148114.png

To report this post you need to login first.

37 Comments

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

  1. Christian Dr. Drumm

    Hi Christopher,

     

    thanks for the nice blog!

     

    I have got one additional question. Is there a simple way to schedule check runs in
    the central system e.g. daily and distribute the results automatically? I could
    schedule the 2 independent jobs, one to start the check run and one to
    distribute the results. However, this seems a little fragile to me.

     

     

    Best,

    Christian

    (0) 
    1. Boris Gebhardt

      Hi Christian,

       

      You can schedule the ATC check run with a postprocessing step to replicate the results to provided RFC connections:

      (Transaction atc ->Schedule runs -> create a run series ->Mark the run series ->button “Schedule” -> in the selection screen “Postprocessing:  Distribute the results to .. (RFC connection of target) – Menu: Program -> Execute in background…)

       

      Regards

      Boris

      (0) 
  2. Sergio Ferrari

    Hi Christopher,

    thanks for the useful blog series about ATC.

    I’m wondering about the best practice to manage a human approve confirmation to objects under review. It would be great to have a kind of worklist to support the process of manual review the quality manager performs periodically on the result of an inspection run.

    Sergio

    (0) 
    1. Boris Gebhardt

      Hi Sergio,

       

      I am not sure if I got the point but if you refer the ATC mass check results (in the quality box) and how the quality manager shall work with the results then I may add some hints:

       

      – first specify/agree on ONE check variant (+ adjust priorities of check messages) including the checks which are relevant for your company

      – Define a quality gate criteria (e.g. no priority 1 and 2 findings for your defined check variant) and comunicate this criteria to development

      – define an exemption process for false positives so that developer can achieve zero priority 1 and 2 findings

      – Review findings from the central ATC runs which do not obey to the quality gate criteria.

       

      Regards

      Boris

      (0) 
      1. Sergio Ferrari

        Thanks Christopher.

        Your interesting tips are related to the follow up of inspection results that is the scope of CI and ATC, I know. I was looking for a way to add to the “Findings” counters an Review state set manually by the reviewer (e.g. he/she check personally the quality of the code and set her/his rating to the object as an action that is not yet linked to the approval status for the Change Request.

        Probably something to much specific.

        (0) 
  3. Gadde Shrinivas

    Hi Christopher,

     

    Wonderful blog. We are trying to create a new configuration in Master system with following options:

     

    Object Selection: By Query

    Package: ZXYZ (Custom package that exists in Satellite systems)

     

    Under “Schedule Run Series” for this configuration we have selected the option to “Set to Active Result” and “Distribute Result to” to satellite system trusted RFC destination.

     

    Now, when this run is completed we don’t see any errors being recorded however if I schedule the same within Satellite system and push results to Master system then we do see the errors getting recorded.

     

    Are we supposed to configure and run this in individual Satellite systems instead of Master system? How would the Master System know on which Satellite system to run this “Run Series”? I am a little confused from your “How do I start a central run?” section content and not sure if I am following it correctly.

     

    Thanks!

    (0) 
    1. Boris Gebhardt

      Hi Shrinivas,

       

      The normal ATC setup is:

      In the DEV system(s) = Satelite Systems developers use ATC during development (e.g. by running ATC from se80) and when they release a transport.(Q gate 1)

       

      In the follow up Q/Test system (to which the transports from DEV are transported) = Master system we recommend to schedule a periodic ATC mass check run (e.g. for all your Z*, y* packages) in order to find regressions and to check the consolidated code before it is released to production.(Q gate 2)

      The ATC  results are replicated from Q system to the defined satelite systems (DEV) so that the devlopes can diretcly acceess the ATC mass check results in DEV systems and don’t have to logon to the Q system to check the results.

       

      Best regards

      Boris

      (0) 
  4. Paul Gronerad

    Hi Christopher,

    thanks for this helpful blog.

     

     

    We are about to introduce ATC and want to establish a Q-Gate-1.

     

    As we have a lot of legacy code, the developer should be able to apply for an Exemption for “All Checks” of an Object. Is this possible? In the dynpro 0111 of programm SATC_CI_EXEMPTION_REQUEST there are only the two possibilities “This Check” and “This Check Message”

     

     

    Furthermore we would like to block only errors with priority 1 during release of a transport request. On ATC-Settings one can only chose “block on any error (prio 1 and 2)”.

     

    Thank you in advance.

     

    Werner

    (0) 
    1. Boris Gebhardt

      Hello Werner,

       

      No, for the check dimension of exemptions you can only hide all check messages of one check but you cannot hide all checks. For the object dimension you can create exemptions on package level to e.g. switch of certain checks for a complete legacy package.

       

      But I am not sure if I understood the use case.

      For the ATC mass check runs (Q gate 2) you can just exclude the legacy objects from the object set.

      For the transport check (Q gate 1) I would assume that a program which has been changed and therefore is part of the transport object list shall be checked even if it is a legacy object.

       

      Concerning the blocking of transports: Yes, you can only choose “any error” or “Priority 1 or 2 errors”.  Whether this is sufficient/good enough depends on your check variant (and your custom check message priorities).
      But anyway,  this is a good hint from your side and I will check if we should be more flexible in this area.

       

      Another view on this topic is the priority of the Q-gates.
      If Q gate 2 is your main Q gate since this (final) gate checks all consolidated custom code and therefore finds side effects of code changes which are not found when checking only a transport ( consider a change in the signature of a function module which may influence programs which haven’t been changed/transported for decades) then you may decide to use  a weaker Q gate 1 ( inform on error not block).
      Additionally, for emergency scenarios you may want to release a transport even if there are ATC errors.

       

      Best regards

      Boris

      (0) 
  5. Steve-Wesley Emmert

    Hello Christopher and many thanks for that blog post!

     

    By now, I am a little bit confused about the master – slave configuration. Is it necessary that the master system contains the code from the development system(s)?

     

    I am thinking about following scenario:

     

    The Solution Manager is defined as Master and maintains the global check variant, and schedules regular checks on multiple development systems. The results of those checks can be seen on the Solution Manager (as a global reporting of Code Quality) and maintain exemptions, emails etc. The SolMan itself does not have the code of that multiple dev systems.

     

    Cheers

    s.w.e.

    (0) 
    1. Klaus Ziegler

      Hello S.W.E.

       

      the ATC-master system is the system that hosts the exemptions repository. The ATC satellite systems are the systems that consume the exemption repository.

       

      Best practice is to have one master system per transport landscape. That means ideally the master system is one of the development, test or quality boxes along a transport route. Sucha setup will ensure that all systems contain a similar / identical source code repository. One reason behind this is that findings as well as exemptions contain weak references to the code repository only. For example the navigation into the code requires that the development object exists in the system.

       

      Furthermore the Solution Manager system and development boxes are typically on different SAP_BASIS releases or SPs. As effect the ATC/Code Inspector features differ. Even subtle differences in documentation can lead to a significant loss in usability.

       

      To my impression moving the ATC master system to the solution manager will result into a loss on usability for the development scenario. To my opinion the box of the Solution Manager is no candidate for the ATC master system.

       

      Which benefits do you expect from moving the master system to the box of the solution manager?

       

      Best Regards

        Klaus

      (0) 
      1. Steve-Wesley Emmert

        Hello Klaus,

         

        Thanks for your answer!

         

        By using SolMan, I would expect the benefit, that we have a central place for measuring code quality for all those different “Projects” and therefor being able to compare these and identify company-wide weaknesses or strengths (within the ABAP code) 😉 and eventually being able to identify some spots where these Projects could learn from each other (more easily than today, at least, as this may be a good base to start talking).  

         

        Of course, in that scenario, I would not expect to jump into code while being in Solman.

         

        Cheers

        s.w.e.

        (0) 
        1. Klaus Ziegler

          Hello S.W.E.

           

          to be perfectely honest I have only a rough understanding of the SOLMan addon for ATC.  So my interpretation of possibilites in SOLMan is a kind of lucky guessing.

           

          To my guts feeling a measurement of code quality based ATC findings only is limited to statistic evaluation of bare numbers. An in-deep analysis most likely would need full access to source code and further metrics. Therefore I expect that the availability of statistical relevant information should satisfy such an use case. As consequence a copy or an aggregation of findings/results should do.

           

          An to other hand the development process would suffer by moving the ATC master system to the SOLMAN box.

           

          If I have to balance out things, I still would recommend to keep the master system within the transport landscape of the development box. For SOLMAN I would establish a data collection.

           

          Best Regards

            Klaus

          (0) 
      2. Steve-Wesley Emmert

        Hello again,

         

        in a scenario, where the Master is on QAL:

         

        DEV -> QAL -> PRD

         

        we would loose all ATC Settings and data, when the QAL gets frshly build out of the PRD, right? Except one would do some DB export/import stuff…

        (0) 
        1. Klaus Ziegler

          Bonjour à nouveau,

           

          if your QAL box gets refreshed regularly it might not be the best place to play the role of the master system.

           

          For a landscape like

          DEV -> QAL (reset regularly) -> PRD

           

          I would choose the following setup

          DEV – developer check runs,  transport check runs, master system

          QAL – mass runs that get replicated to DEV

           

          Au revoir

            Klaus

          (0) 
  6. Sergio Ferrari

    Hi Christopher,

       could you suggest how to cleanup expired results? Report SATC_AC_REORG_REPOSITORY seems fine for the goal but I’m still not able to find official documentation about it.

      thank you

    Sergio

    (0) 
    1. Klaus Ziegler

      Hallo Sergio,

       

      expired results shall get deleted more or less automatically. There shall be no need to make use this report but you may schedule the report additionally to force “garbage collection” of expired results.

       

      Best Regards

        Klaus

      (0) 
  7. Peter Inotai

    Hi Chistopher,

     

    Thanks a lot for these series. I found it extremely useful.

     

    However I have a couple of questions:

    1. How to control that how long results are stored? In the header data I found the expiration date. Is there a report/background job, which deletes old results? Or it should be always deleted manually from SE80?
    2. If I have a massive check with lots of objects, then recheck doesn’t work anymore, since I got this message “Do not select more than 500 object keys”. Is there possibility to compare two runs and provide somehow a delta from these runs?

     

    Thanks in advance,

    Peter

    (0) 
    1. Klaus Ziegler

      Hello Peter,

       

      Results have an expiration date and an implicitly triggered garbage collection will delete them after the expiration date has been exceed. As Sergio mentioned on 1st April there is also a report SATC_AC_REORG_REPOSITORY which can be used to force garbage collection. In most cases the use of this report shall not be necessary however.

       

      Check runs started from SExx tools expire after 10 days. Check runs started from transaction ATC offer a customizable expiry, default is 120 days.

      ATC offers for mass runs /history series a “first found” information. The “first found” field can be useful to distinguish new findings from fury ones. A full delta is not available however.

       

      Best Regards

        Klaus

      (0) 
      1. Peter Inotai

        Hi Klaus,

         

        Thanks a lot for your quick reply!

         

        Somehow I totally overlooked the info about report SATC_AC_REORG_REPOSITORY. Thanks for the hint.

         

        Now I kept my eyes open and managed to find the info also about the 120 days and the “First found” column

        Filter based on first found could help to generate some kind of delta. I have to play around with it a little bit.

         

        Best regards,

        Peter

        (0) 
  8. Timo John

    Hello everyone,

    Thanks Klaus Ziegler and Boris Gebhardt for all the explanations.

    I’d also like to share some questions on ATC Setup

     

    1. Where to setup the Master System?

    As already asked by S.W. E. Mar 13, 2014 11:31 AM I had the same Idea to use ONE central system as master system for our the Dev lines ( ERP, CRM, SCM )

    Advantage would be to see every exemption in one single point and approve from there.

    No Issues with system Refreshes.
    Disadvantage: Problems with different patchlevels; no forward-navigation into the code

     

    => leave the MASTER in the Line

     

    2. OK when we have a Setup like this:

     

    EPR:     DEV -> QA ( Master ) -> PRD

    CRM:     DEV -> QA ( Master ) -> PRD

    SCM:     DEV -> QA ( Master ) -> PRD

     

    We have 3 Masters to check exemptions.

    What I do not see is the advantage with the source code navigation:

    I would like to implement a Q-gate before transport release on the DEV system. Such that I will never see dirty code on QA level. So if I receive exemptions there ( I already work like that ) I ALSO do not have source code navigation, due to the fact that the diry object is not yet transported.

     

    Going back the loop, at the moment I do not see any advantage of a real master system.

    Also not if I think about that landscape:

     

    EPR:     DEV -> QA ( Master ) -> PRD     (hotfix)

                 DEV2 ->QA2            ->              (projek)

     

    In this setting I also have to do the exemptions on the DEV and DEV2 directly If I’d like to have source code navigation.

     

    So, which way to go?

    Thanks for your Input

    (0) 
  9. Klaus Ziegler

    Good evening Mr. John,

     

    the exemption browser offers direct access to the repository of the master system, also within the satellite systems. In newer versions of the ATC the exemption browser offers the option to launch a check run on the object(s) of the exemption with the system variant in the local system. In other words you may check the dirty object in the development box based on exemption requests.

     

    Is this option already available in your system and might it solve your requirement?

     

    Best Regards

    Klaus

    (0) 
  10. Peter Inotai

    Not sure if it’s the correct place to ask. Sorry, if not.

    In the ATC result detail I got next to Display object “Invalid Setup: connection <> is not available”.

    ATC.JPG

    What does it mean? Or this is for the scenario, when there is remote systems?

    Thanks in advance,

    Peter

    PS: It’s in a BASIS 7.02 with SP 15 system.

    (0) 
    1. Klaus Ziegler

      Hello Peter,

       

      this blog is getting a malenki bit out of size, I have copied and answered your question into a separate thread. Hope this is fine with you.

       

      Regards

        Klaus

      (0) 
  11. Ravi Rajpal

    Hello Klaus,

     

    Thank you for sharing this useful information.

     

    I have activated ATC on the DEV system. Considering the history of our system, I would like to make sure that ATC checks only the delta change (change done as part of the current project/rfc).

     

    I am not sure if this is possible with ATC, like to have a initial run and prepare the exemptions so that from the next run, it should only check the exemptions in the delta code.

     

    Would request your expert comments on this.

     

    Thanks,

    RR

    (0) 
    1. Peter Inotai

      Check earlier comment “Klaus Ziegler Apr 4, 2014 4:59 PM (in response to Peter Inotai) “:

      ATC offers for mass runs /history series a “first found” information. The “first found” field can be useful to distinguish new findings from fury ones. A full delta is not available however.

      Peter

      (0) 
  12. Patrick OLeary

    BNSF Railways requests guidance from SAP as to the optimum System to use as an ATC ABAP Test Cockpit MASTER SYSTEM (either to use a DEV or a QAS system)? We think the optimum is to use a DEV system as the Master System, but would greatly appreciate SAP’s advice.  We do refresh QAS twice a year. Also, what is the significance of registering your namespace? Many thanks!  Patrick O’Leary

    (0) 
    1. Peter Inotai

      >Also, what is the significance of registering your namespace?

      It makes sense when you work with for example add-ons and namespace like /MY_NAMESPACE1/ and /MY_NAMESPACE2/. Then you can controll them better.

      If you only have z-development it’s not necessary.

      Peter

      (0) 
  13. Matias Villagarcia

    Do you know if there are plans to implement soon exemptions at a finding level?

    I know they are only available in the Vulnerability Analysis.

    Thank you.

    (0) 
      1. Matias Villagarcia

        Hi Olga,

         

        What i mean is, if for example i have several READ TABLEs without BINARY SEARCH, but i need to exempt only one of them as far as i know this is not possible, since the exemption only applies at message or check message level.

        At least thats what i see on the SAP we are using.

        Any advice?

        Thank you.

        (0) 

Leave a Reply