Skip to Content

Getting Started with the ABAP Test Cockpit for QMs and Admins

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 ( 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.
  6. Now configure your development systems. Log on to one of the development systems. Start transaction ATC and configure the system as shown.
  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.



  • 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:
  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:
  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.



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:


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


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.


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.



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):


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…).


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).



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.


And choose the view that you want.


You must be Logged on to comment or reply to a post.
  • 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.





    • 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...)




  • 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.


    • 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.




      • 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.

  • 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.



    • 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


  • 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.



    • 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


  • 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.




    • 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


      • 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.




        • 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


      • 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...

        • 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


  • 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


  • 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,


    • 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


      • 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,


  • 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

  • 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


  • 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".


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

    Thanks in advance,


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

  • 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.




    • 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."


  • 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

    • >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.


      • Thanks Peter for the clarification.  I was having problems trying to fit that into the picture, also because the help in the program SATC_AC_INIT_NAMESPACE_REG without punctuation makes it hard to understand whether namespace is needed or not.

      • Hi.

        SATC_AC_INIT_NAMESPACE_REG is a PG that exists only in ERP systems with SAP_BASIS 7.02 (= Ehp5) or higher.

        How can I add / MY_NAMESPACE1 / and analyze with ATC on an ERP system with SAP_BASIS 700?


        • How can I add / MY_NAMESPACE1 / and analyze with ATC on an ERP system with SAP_BASIS 700?

          You can still define an object set in transaction SCI (eg including all packages from your namespace) and define a new run in ATC based on that object set. That should also work.

  • 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.

      • 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.

    • Hi Matthew,

      yes, you can see ATC (incl. CVA) check results in ChaRM, ATC is integrated into ChaRM, locally, in the same system. See also the corresponding answer in the Remote Analysis in ATC - FAQ.

      The integration of ATC remote checks in ChaRM is not supported yet, but will be delivered soon.

      Best Regards,



  • Hello Olga,

    In order to distribute results from ATC Central System via option Schedule Runs->In post processing screen->Distribute results->, we found that the option is enabled only for Local check and not central ATC check system.

    Can you please clarify how to distribute result from ATC central system to local system.

    Also we don't find Replicate option in ATC Manage Results, after having role SAP_SATC_ADMIN.






    • Hello Siji,

      if you use central ATC system with remote ATC scenario this is not yet possible.

      For compatibility reasons, ATC results can not be transferred from the central ATC system to connected systems. Therefore, the replication function does not currently exist in the central ATC system.



  • Hello Olga,

    Thank you for your response.

    Do we have any option through which we can see the results in satellite system after ATC check run in Master system. Can we achieve this?




  • Hello Olga,

    Thanks for your reply. I would like to know in which scenarios can we distribute results as mentioned in this blog -

    "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."

    This talks about receiving the results in the satellite systems from the central system, Can you please clarify this point.



    • Hi Siji,

      as written above: within central ATC quality checking with ATC central system and satelite systems, but not within the remote ATC scenario. See SAP help documentation about ATC for more details.



  • Hi.

    SATC_AC_INIT_NAMESPACE_REG is a PG that exists only in ERP systems with SAP_BASIS 7.02 (= Ehp5) or higher.

    How can I add / MY_NAMESPACE1 / and analyze with Remote ATC(NW7.52) on an ERP system with SAP_BASIS 700?


    • Hi Hiroshi,

      in older systems (< SAP NetWeaver 7.02 SP12) you cannot register namespaces. But besides Y* and Z* it is also possible to check the namespaces which are defined with the role Producer.



      • Hi Olga.

        I have confirmed that the target / Name_Space / is registered with'P'in SE03 on my system.

        However, it was not included in the ATC analysis results.....

        Can this be resolved without registering the incident on the SAP Support Portal?



          • Hi Olga.

            I found the cause!.
            The phenomenon was because there was a difference between the development machine and the production machine.

            The development license was not applied to the production SE03, but it was applied to the development SE03....


            Best regards,