Technical Articles
downward compatible ABAP source code
Dear community, some time ago I transferred ABAP source code from one development system to another development system via copy & paste into a report. When trying to activate the report there were many errors. What happened?
Well, my source system was a SAP NetWeaver 7.50. I had made extensive use of newer possibilities such as inline declarations (already 7 years old!). The target system was a SAP NetWeaver 7.31, if I remember correctly. Accordingly, possibilities such as inline declarations were not available.
In my case, that wasn’t too bad 🙂 The source code section was not very long and quickly adapted. In addition, the ABAP Development Tools help a little with Quick Fix to adapt the source code really fast (did I mentioned that before: I like Quick Fix – highly recommended!).
But how does it work if you want to develop generally compatible software for a SAP NetWeaver release? Right off the bat, I couldn’t find any statistics which SAP NetWeaver release most customers use. Is that already 7.40 and you can ignore 7.31 and lower even if there is support until 2027? Is that even the year in which support is really discontinued?
In addition, I didn’t find a list with which SAP NetWeaver release an ABAP statement or an addition to an ABAP statement was added.
Both information about commonly used SAP NetWeaver release and introduced statements at which release would be really helpful.
To make things a little more complicated: We don’t even want to talk about the actual business processes, their application logic and data model. They are also dependent on a certain support package.
Can someone help here with experiences? What could be a good practice?
Best regards, thanks for reading and please stay healthy
Michael
P.S.: Check our new “Virtual Wishing Well for Blogging“.
P.S.S.: Not tired of reading blogs? Don’t miss this one by Lars Hvam.
I'm not aware of any list which mentions the availability of an ABAP command/option per NW/ABAP platform release.
(You can always search for it manually in the documentation of the corresponding release. e.g. https://help.sap.com/doc/abapdocu_740_index_htm/7.40/en-US/index.htm)
Basically, NW 7.4 SP08 should be sufficient for new ABAP syntax:
ABAP Language News for Release 7.40
ABAP Language News for Release 7.40, SP05
ABAP Language News for Release 7.40, SP08
For syntax, perhaps something like https://syntax.abaplint.org / https://syntax.abaplint.org/#/expression/Source each part is annotated with the valid release, and can easily be navigated, including “where-used” lists?
And then automatically downport the syntax, using standalone logic, perhaps https://rules.abaplint.org/downport/ can help?
It works on web, in vscode or run via most(all?) CI tools.
Eg. for abapGit development, the syntax is run towards 702 syntax, configured in https://github.com/abapGit/abapGit/blob/master/abaplint.json#L16
Hi! I can't find downport functionality in playground.abaplint.org
try going to the tab "abaplint.json" and change the version to "v702", the configuration defaults to high versions where the syntax is valid
Amazing.
Maybe you can use the ABAP Remote Syntax-Check https://blogs.sap.com/2014/11/28/remote-syntax-check-for-abap-developers/
You don't have to transport the objects to the lower releases to do the syntax check.
With my company (check my profile), we develop for 7.31 as companies are still out there using it and it is supported by SAP. It does get challenging if we want to offer functionality for later releases (like CDS view support) as our transports must import into 7.31 and 7.52 systems.
The way we deal with this at the moment is that the lead development system is a 7.31 system. We keep it patched. Our 7.31 system though is an ERP system, and some of our clients want our products on BW systems. So we transport through to a 7.52 Basis system. If we've used any ERP components, or Basis components that are now obsolete, we'll get errors that we have to address.
Soon, our lead development system will be a 7.52 system. We'll carry on developing as though for a 7.31 system, but this time the 7.31 will be a Basis system, and we'll also get errors if we use new syntax!
How do we provide support for 7.4+ features? Clever dynamic programming and careful program design. However, we never generate any code at runtime.