Skip to Content
Author's profile photo Andreas Gautsch

ABAP Continuous Integration with Eclipse

Short read

As an add-on for ABAP in Eclipse the plugin ABAP Continuous Integration contains some features for a Continuous Integration environment. The plugin can be downloaded from the Eclipse Marketplace.

After installing the plugin there is only one configuration setting to be done in the Eclipse preferences (section ABAP CI) to get the plugin up and running:

In the first textbox (ABAP Development Project) the display name of your ABAP development system has to be inserted. The display name can be found in the Eclipse Package Explorer and has the form <system>_<client>_<user>_<language>, e.g. A4H_001_developer_en.

After completing these steps each time when you modify a development object all ABAP packages added to the new view “ABAP Continous Integration” are automatically executed. Thus you get immediate feedback whether your last code changes are correct or not.

Long read

With the integration of ABAP into Eclipse a state of the art development environment is available for developing in ABAP. One thing I am still missing is a tooling for a Continous Integration (CI) environment.

Unit tests can be performed with one additional button click. But taking into consideration that one of the main characteristics of a CI system should be full automation this is often one click too much.

Do you really continuously check if all your unit tests are still green?

A daily check of all ABAP unittests can be done for example with Jenkins. But often its really valuable to get an immediate feedback when a code change is breaking a core functionality of the system.

Therefore I started to create an Eclipse plugin which beside some other features runs automatically all ABAP unit tests each time one development object is changed.

The installation of the plugin is quite straightforward. In Eclipse->Help->Eclipse Marketplace you can find the plugin under ABAP Continuous Integration – well actually a Beta-Version, so feel free to comment bugs or ideas.

If you want to see some more details, the actual source code is available on github: abapCI.

 

After installing the plugin there is only one configuration setting to be done in the Eclipse preferences (section ABAP CI) to get the plugin up and running:

In the first textbox (ABAP Development Project) the display of your ABAP Development system has to be inserted. The display name can be found in the Eclipse Package Explorer and has the form <system>_<client>_<user>_<language>, e.g. A4H_001_developer_en.

The other configuration parameters which can be set actually in the Eclipse preferences page are not mandatory for the core functionality. The check box “Run ABAP Unit tests when file saved” is recommended as this activates the core functionality of the plugin.

After the successful installation of the plugin an additional icon in the menu bar can be found. Clicking this icon an additional view – ABAP Continuous Integration – is opened.

On the first start the view of the plugin will be empty. By clicking into the empty area of the view with the right mouse button a context menu is opened with four options.The third menu entry is “Add new package” which can be used to add ABAP packages to a test run performed after each change of a development object.

The actual state of the unit tests of each package is shown in the column Unit test.

A failed test is indicated with NOK in the column Unit test and optionally with a change of the Eclipse color theme.

There are already some other features realised, in beta mode:

  • Remote build execution for Jenkins jobs
  • Change of the color theme when a test run is broken
  • Cyclic test runs also in case no development objects are changed

But for the beginning I leave you with the core functionality – hoping that you get some benefit out of it.

Assigned Tags

      19 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Fabian Lupa
      Fabian Lupa

      Really interesting! One question: How does this compare to the existing ATC integration in Eclipse? Like my usual workflow is:

      1. Change code
      2. Save, Ctrl+S
      3. Activate, Ctrl(+Shift)+F3
      4. Run ATC checks, Ctrl+Shift+F2
      5. Look through the ATC Problems tab

      And of course ATC checks on transport release. Job based daily checks on packages and even workflow integration also exists I think?

      I assume the Jenkins usage is nice if you already use it for non-sap-development and therefore cannot only rely on a central ATC system.

      Author's profile photo Andreas Gautsch
      Andreas Gautsch
      Blog Post Author

      Hi Fabian!

      Currently the plugin does not include ATC checks but I was already thinking about them as a next feature. Lets see if I find the time or even somebody else likes to do it.

      Regarding the workflow in ABAP in Eclipse. My first target was to automate the functionality Run Unit tests, like:

      1. Change Unit tests
      2. Run As -> ABAP Unit test (Ctrl + Shift + F10)
      3. Change implementation
      4. Run As -> ABAP Unit test(Ctrl + Shift + F10)
      5. ...

      Where step 2 and 4 is automatically performed each time a development object is saved (I did not yet find a possibilty to listen on the Activate event itself).

      Well in the case you need some details about the fail reason of the unit test, especially which unit test failed the only possibility is still the Abap Unit Runner view.

      But the  plugin maybe saves you some time and effort when after a code change the tests turn as expected green thus you need not to manually rerun them in the Abap Unit Runner.

      And I absolutely agree with you too in the point of the jenkins usage.

       

      Author's profile photo Johannes Konings
      Johannes Konings

      Hi Andreas Gautsch ,

      the plugin is a good help to makes the development process with ABAP Unit more efficient.

      Is there also a possibilty to use the plugin with more then one ABAP Development Project?

       

      best regards

      Johannes

      Author's profile photo Andreas Gautsch
      Andreas Gautsch
      Blog Post Author

      Hi Johannes!

      Currently its working only for one development project.  I was thinking already to extend it to support DEV and QAS environment which would go into your suggested direction.

      But before extending the plugin to multiple systems there is  some other stuff pending like cleaning up the datamodel what I definitely plan to do.

      Thinking more forward. How would you suggest it to work. Should the central Unit test and ATC state only visualize the state of the current project or the state of all configured development projects together?

      Author's profile photo Johannes Konings
      Johannes Konings

      Hi Andreas Gautsch ,

      great to hear that there are already plans for the future.

      I often switch between different development projects. For that it would be a big improvement, when the AUnit state of the current project would be visualized.

      Thanks and regards

      Johannes

      Author's profile photo Andreas Gautsch
      Andreas Gautsch
      Blog Post Author

      Hi!

      Finally the switch between different development projects should work.

       

      Cheers, Andreas

      Author's profile photo Johannes Konings
      Johannes Konings

      Thanks for the upgrade. I haven't tested it properly yet, but it seems to work 🙂

      It helps very much if you have to switch often the development projects.

      Author's profile photo Christian Guenter
      Christian Guenter

      Hi Andi,

      great work! Just saw that there's a option to run ATC checks after unit tests. Is this already working? Just tried it and didn't get any results.

      If I start ATC manually I get results. Or am I doing something wrong?

      Best regards,

      Christian

      Author's profile photo Andreas Gautsch
      Andreas Gautsch
      Blog Post Author

      Hi Christian!

      The option ATC check is already working. In the current version there are only ATC errors analyzed (ATC warnings will follow).

      Currently the ATC checks are only performed when the Unittest-State changes from FAIL to OK. So for example if you start eclipse and the tests turn OK the ATC checks are performed.

      In this first draft I sticked to this approach because as far as I know with every ATC test run an database entry written and I do not want to flood the system.

      The timepoint "unittest change from FAIL to OK" was selected with the intention to support an TDD mode - at the beginning of the refactor phase the ATC checks are executed.

      Well thats all for the beginning, ideas welcome.

       

      Author's profile photo Ankit Saxena
      Ankit Saxena

      Hello @Andreas Gautsch,

      I installed the plugin, but I am getting few errors such as -

      1. Problems occurred when invoking code from plug-in: "org.eclipse.ui.workbench".
      2. Could not restore current theme: com.abapCi.custom.STANDARD_THEME
      3. Unhandled event loop exception

      Any idea what I may be missing ???

      Thanks,

      Ankit

       

      Author's profile photo Andreas Gautsch
      Andreas Gautsch
      Blog Post Author

      Hi Ankit!

      Could you please post the stacktrace of the error you get and the version of your Eclipse installation, then I will take a deeper look into the your errors.

      Thanks, Andreas

      Author's profile photo Harish R
      Harish R

      Hi Andreas,

      I installed the plugin and tried it. It really works well I must say. Once I activate my class, the unit tests are run immediately and I get feedback.

      Can I place a feature request? Is it possible to run this only for the class I have open at present? The reasons are

      1. When I am working on a class, if any unit tests are broken, it would be of that class only. The units of other classes will not call the class I am modifying anyway. This would make the result very focused and execution would be faster.

      2. In a project, there would be more than 1 class developed by more than 1 developer in a package. I get NOK even when the unit test written by some one else fails in another class.

      Author's profile photo Andreas Gautsch
      Andreas Gautsch
      Blog Post Author

      Hi Harish!

      You are adressing a point which is indeed one of the next features which should be implemented.

      I have two possible implementations in mind. The one is two run the tests only for the class which is activated or to work with a functionality "local supressions".

      For the pure unit tests the running of only the adapted classes would be perfect but if there are also functional tests (implemented as unit tests) this would not be sufficient.

      I think if I have (or somebody else has) the time for it, both approaches would be worth. I definitely planning this two features within the next I want to add.

      In the meantime you could possibly use the feature "Run ATC for each activated object" if you have "Unit test fails" activated as part of your check variant. The feature can be activated in the Preferences (ABAP CI -> 5. Automatic ATC runs -> Run ATC for each ...

      Greetings, Andreas

       

      Author's profile photo Andreas Gautsch
      Andreas Gautsch
      Blog Post Author

      Hi Harish!

      In the latest version of the ABAP CI plugin there is now an option “Run Unit tests for the activated ABAP objects only” (the second one in the ABAP CI preference section).

      This should hopefully exactly fit your requirement.

      Greetings, Andreas

      Author's profile photo Judith Mueller
      Judith Mueller

      Hi Andreas,

      I am currently exploring the continuous integration plugin for abap in eclipse. I have the problem that the ATC check is not working, the ATC state is always 'offline'. The configuration looks as follows:

      CI%20configurations

      CI configurations

      Sometimes I get an error message that this widget is disposed, so I am confused.
      Is the automatic ATC run working? And what do I need to do to get it running?

       

      Greetings, Judith

      Author's profile photo Andreas Gautsch
      Andreas Gautsch
      Blog Post Author

      Hi Judith!

      The configuration looks good, lets try some things / questions?

      Is the Variant "DEFAULT" the correct one?

      Does the checks work if you run them with the context menu (right mouse button) when the mouse is over the Package name "ZIM_PI" in  the Continous Integration view?

      Does the ATC check works when you run it with the menu entry?

      Which version of Eclipse / Netweaver do you have?

      Greetings, Andreas

       

       

      Author's profile photo Judith Mueller
      Judith Mueller

      Hi Andreas,

      thank you for your reply.

      To answer your questions:

      I have tried other variants, but neither of them is working within the CI Plugin. When I run them manually everything is working fine.

      The check also does not work when I run it from the context menu in the CI view. The ATC state is always shown as 'OFFL'.

      The only thing that is working, is when I right click on the package and do 'Run as ABAP Test Cockpit', then I get the messages/errors in the Problems-view I expected.

      I have Eclipse version 2019-03 (4.11.0) and Netweaver 7.4.

      Than you for your help!

      Greetings, Judith

      Author's profile photo Yellappa Madigonde
      Yellappa Madigonde

      I am using Eclipse 2023-03 and getting below error message while installing the plugin. I have followed the solution provided in the link https://github.com/andau/abapCI/issues/27 however, it didn't work. Could you please suggest.

       

      Author's profile photo Kevin Pistol
      Kevin Pistol

      I have the exact same problem. Is there any solution yet?