Application Development Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
larshp
Active Contributor
As developers, we invest in building applications every day. Personally I want to do that investment wisely, and make sure the applications can be used on both very new and very old platforms.

Many ABAP applications contain simple configuration tables, which only target a few users, and update frequency is very low, this will be the first open source multitarget ABAP application 🎉


https://github.com/open-abap/open-table-maintenance




 

Why not reuse existing table maintenance functionality?


In a classic ABAP system a table maintenance dialog can be generated, however it is not Steampunk compatible, as it uses classic dynpro screens.

If running ABAP Environment – Release 2108 or later, it is possible to generate a SAP Fiori table maintenance, but this cannot be used on lower releases.

Also, both approaches generate vast amounts of artifacts and code, at time of writing the open source code is 360 lines of ABAP. And for my scenario I just need something simple, which can be evolved and extended over time.

 

What is a multi target ABAP application?


If carefully developing the ABAP code, it can be compatible with almost every installation that allows custom ABAP code.

Steampunk compatibility can be ensured by abaplint, by checking the language syntax and the allowed objects.

And for this project I've chosen to write it in v740sp05 syntax.

Both restrictions can be configured and validated on every push to GitHub(Continuous Integration?)


As a final touch, the code is automatically downported to provide a 702 compatible version, this build is saved as a artifact on the actions run.

The open-table-maintenance code can also be developed and maintained locally in vscode via a multi-step setup,


 

Consumption


As is, there is just a single class, which can easily be copied into a larger project. But I suggest setting up automatic renaming and mirroring of the code into your project, in order to have automatic suggestions to upgrade to the latest version.

This will reduce the blast radius when updating, and note, you can choose to update at any time.

The code can be imported into a Steampunk or 702+ system using abapGit.

 

End-to-End Testing


As always, the unit tests can be run on GitHub actions. Professional applications also require proper end-to-end testing, so I've setup a Playwright test script which starts the application, changes values, saves, and checks that the result is as expected.

Note that this can run locally or on GitHub actions, so there is no risk for messing up the DEV system.

 

Summary



  • Write the ABAP application locally in vscode

  • Ensure 740 compatibility via static analysis

  • Ensure Steampunk compatibility via static analysis

  • Automatically provide a 702 compatible version

  • Run unit tests on GitHub actions

  • Run end-to-end tests on GitHub actions


Welcome to 2022 🤠
6 Comments