Skip to Content
Technical Articles
Author's profile photo Joachim Rees

The ABAP-Report – it’s still relevant, right?

I have been thinking more about creating new ABAP-code, lately.

For years, the ABAP-Report hast been my default-solution for that.
(Like the blog is my default in SAP-Community – with some questions in the end!).

My template shows how this reports are usually build up:

A selection screen.

get_data( )
Example: select SalesOrders, that have no follow-up-document and ZZ_myfield is initial.

process_data( )
The reason that report exists, the core of the task at hand. Example: send an e-mail to the creator of those SalesOrder.

display_data( )

This is “optional”, a side-product. It has close to no cost, but quite some benefit: It gives the option to ‘peak’ at the data, before actually doing something.
That way, you’ll catch if your selection hits thousands of orders, when you expected just a few (check your sel-screen!).
It also might turn out that “looking at the data” is a use case for itself. In our examaple, SaesOrder-creators might look up via their username and sort things out themselves -> no need for even sending an e-mail.

So, what can I do with this report?

– Start via SE38/SA38
– Assign one (or more!) Transaction to it, start it that way.
– Plan it as batchjob in SM36

I deem this kind or report still relevant.

(in case release plays a role for answers here: just assume I’m on the latest S/4HANA!)
– Given this features, could I do it differently/better?
– e.g. could I do it via (only) a global class? (Can classes have selection screens? Can they be run as a batchjob?)
– is there a benefit in moving all thats possible to global class and only keeping Selscreen and start-of-selection in the report?
– (how) could I make this more “cloud-ready”?


Edit: PS: This seems to be a nice resource, on “how to create a modern report” :

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Dominik Ritter
      Dominik Ritter


      I ask myself the same questions - what is right and the path we should follow.

      We are still some time away from S/4HANA but all the new ABAP programming models which are there let me think that you refer to the "Classic ABAP Programming Model".

      Please have a look here:

      Considering the "ABAP RESTful Programming Model" the concept is quite different (but I had no time or system to check that in detail - not even high level).



      Author's profile photo GED HURST

      Call me old-fashioned, but I still perceive reality as a procedural series of events, and it seems to me that the good old ABAP program mirrors that reality pretty well.

      Author's profile photo Matthew Billingham
      Matthew Billingham

      You are old fashioned.

      Well, you did ask to be called that. 😉

      Author's profile photo GED HURST

      Go on Matthew, how do YOU perceive reality 😉

      Author's profile photo Michael Biber
      Michael Biber

      In my opinion that depends. I am in favor of letting things been done automatically as soon as the trigger occurs. You need BAdIs, events and such for this.

      I had a request lately that someone should get an email reminder if some item is unprocessed for 2 hours. The first draft of a colleague was to write a report which is then scheduled every 2 hours. But want about the edge cases? You’ll need to add a lot of code to get those right. Why not plan a job at item creation which starts in 2 hours. If the item is still unprocessed, send a mail. Or maybe start a workflow? in both cases the amount of business logic is way lower.

      Author's profile photo Felipe Silva
      Felipe Silva

      If you are using 1909 (Assuming latest S4) I think you should go for the ABAP Restfull programming model, as said, as much as you can when dealing with user interface.

      Nowadays I only do ABAP reports for job schedulling. And we are not even on the latest 1909.

      The OO/CDS/UI5 trio is just able of so much more.  And it is out for quite some time now, and there are inumerous advantage to it. Users love it, SAP Gui is like having to go to bank for transfering money…”Why you don’t have anp app for it yet!” Not going to debate it, but if you ask me is like having a Ferrari factory to build Ford model Ts.

      But it is IT. Not sure you can afford to lag behind for too much, and I had fun learning it. Scary, sure, but it is fun too.

      Author's profile photo Joachim Rees
      Joachim Rees
      Blog Post Author

      Hey Felipe Silva , (and also Dominik Ritter )

      thanks for your Feeback!

      > you should go for the ABAP Restfull programming model, as said, as much as you can

      > Nowadays I only do ABAP reports for job schedulling.

      I was kind of targeting this two aspects: If I want something capable of job scheduling ("Plan it as batchjob in SM36"), could I do that with ABAP Restfull programming model, or do I have to stick with the “Classic ABAP Programming Model” for this case?!

      (Or should I maybe do both, like doing "ABAP Restfull programming" + a classic ABAP-Report wrapped around, only for job scheduling ?! )

      But I get the key takeway: As a modern-day ABAPer, I really should look into and learn the ABAP Restfull programming model!


      Author's profile photo Michelle Crapo
      Michelle Crapo

      As always - interesting blog.

      If I have to do something fast, easy, and it will make the users happy - my go to is always an ALV grid.  So easy to do.  You can call me old-fashioned too.  😉  That is usually a "nice to have" while doing a "real" project so I don't have a lot of time.

      If I have the time - because I'm slowly learning the "right" way to do things.  I use ABAP restful.  I want to keep learning.

      So my question - is there a right way to do things?  Or is it another tool in your tool belt?  Use one or the other just so everything works out in the end.   What is the advantage of not using an ALV grid?  Yes, I know there is one in CDS.   But does it really matter?

      As I stated above I have a preference but that's because I'm learning and the more I can do with CDS, the better.  Throw in some FIORI elements - and it becomes a newer way to do the report.