In the last weeks I blogged twice about disruptions in SAP standard software – now I turn the tables and will tell what I did to prevent disruptions that have been caused by ourselves. I want to discuss what we, as ABAP developers, can do to prevent disruption. Why is that important? At the one hand we benefit from evolution of SAP NetWeaver and SAP Business Suite, on the other hand we have to take care that our solutions can smoothly survive any SP and Ehp upgrade. Every ABAP developer knows some guideline – for example to avoid modifications but is it the best we can do? I don’t think so. As one of the leading software architects of a huge ABAP solution I feel responsible to establish this quality standard because we want to benefit from new SAP releases in many ways – think of our HANA and Mobile strategy for example. And so I will blog about my activities in this area.
But before going into detail let me explain how the story went on.
As you might know software updates have been really painful for me in the last time. Since some months I’ve been into discussion with SAP and in many constructive talks we found solutions. I am glad that SAP listened carefully and understood the problem. These are really good news!
Although we found solutions for existing problems I am thinking about the future: we want to benefit from new SAP solutions and technology and will keep a high Ehp level. How can we manage the risk of SAP software updates?
The reason is that we have to evolve our IT solutions for many reasons:
SAP Business Suite and SAP NetWeaver platform constantly evolves and we benefit in various aspects: from performance optimization, new technology (think of HANA, Mobile, new UIs), new development tools, improved processes and much more. If you want to benefit from this evolution then you have start to think about the risks and how manage the risk of disruption.
In my opinion there are many things SAP can do to prevent disruptions as consequence of a constant evolution:
The message is simple: there are many ways to manage consequences of changes – and only if this can’t be done a disruption will occur. But this means also that we as developers of customer and partner solution are also responsible to prevent disruptions: we have to learn how to make our software adaptive to change and to prevent disruption and this is what I will talk about in the rest of this blog.
The reason is very simple: Implicit Enhancements have nearly all bad properties of modifications. They change the SAP code instead of using defined interfaces like BAdIs. They are code injection in SAP standard code and can cause trouble:
These are the same problems you have with modifications when checking conflicts – you only have to use transaction SPAU_ENH instead of SPAU. I looked at a lot of implicit enhancements within last time and learned the following:
So as leading architect I am glad that we introduced the same governance process for implicit enhancements like for modifications. And I am also glad that we have been able to remove all implicit enhancements on one of our development systems within a week.
I am also glad that we introduced package checks in ABAP development of solution. We use them to guarantee installability of software components, to structure our solution and reduce the risk of side-effects after changes in a complex development landscape.
Another reason is that we want code against the same package interfaces like SAP Business Suite does to ensure that we only use public interface and avoid using private implementation details of packages of SAP software.
I made a good experience with package SAI and its subpackages: the web service runtime of AS ABAP was evolved in many SPs but the elements exposed in package interfaces remained stable. I can tell you many other examples where usage of ABAP package interfaces prevent you from damage of non-compatible changes.
To summarize: we want to benefit from the evolution of SAP NetWeaver and SAP Business Suite because this is essential for our IT strategy. Therefore we invest to harden our solution. I think SAP should encourage others to do the same perhaps in Guidelines for Best built Apps: http://scn.sap.com/community/best-built-applications
Of course we use additional best practices like automated testing but it would be interesting what you as software developer can do make your custom solution as stable and robust as possible. In my opinion this is the most important quality criteria for any customer or partner solution and far more important than naming conventions for local variables for example. Of course many people love those discussions (“Is prefix lt_ for internal table ok or l_tab_? What about l_tas_ for sorted tables? What about l_tas_s_ for sorted tables with secondary index?”). In my opinion those discussions are a waste of time. For me it is far more important to emphasize that our solutions that are ready for the future is much more important.
How do you achieve this goal? What are your best practices?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
5 | |
5 | |
3 | |
3 | |
2 | |
2 | |
2 | |
2 | |
1 | |
1 |