ABAP for HANA Fitness Contest at DSAG Technology Days Mannheim – a Personal View
DSAG is the German SAP User Group (like ASUG in the United States) and organized Technology Days ( “Technologietage”) on the 26th of May in Mannheim. It was a perfect opportunity to learn about SAP Technology strategy and get in contact with many experts from SAP as well as peers. Moreover for me it was a pleasure to meet fellow SAP Mentors like Matthias Steiner, Gregor Wolf and Phil Loewen as well as many others like Markus Theilen and Steffen Pietsch who do an amazing job at the DSAG working groups. There have been some really important announcements to make more products ready for HANA including SAP NetWeaver Composition Environment for example.
I enjoyed the talks of amazing SAP experts like Bjoern Goerke (his part at the keynote is really inspiring) and Volker Stiehl but my personal highlight was the “ABAP for HANA Fitness Contests” offered by SAP to members of the working group SAP NetWeaver Development of DSAG. In the evening we did some well prepared exercises on the following topics:
- working with ABAP in Eclipse
- doing performance analysis as well as optimization
- creation of HANA artifacts and calling them from ABAP
- creation of SAP HANA procedures and calling them from ABAP
- performing fuzzy search in HANA and calling them from ABAP
- working with decision tables in SAP HANA
- segmentation of business data using the Predictive Analysis Library (PAL)
We have been assigned to groups and people who had no experience with HANA and ABAP in Eclipse just started with exercises for beginners while others tried more difficult ones. I really appreciate this: SAP people sent people from the ABAP on HANA to team to DSAG so that ABAP developers could get hands-on experience with HANA and ABAP for HANA and ask questions to experts. Usually you have this chance only at events like SAP TechEd.
Now everybody who took part at the event can solve the more complex exercises on an NW 7.4 system on HANA system in the cloud later on. The first exercises dealt with performance aspects in HANA as well as speed optimization that are the first thing an ABAP developer should learn. The reason is simple: this is usually the first task to do. But learning more advanced features is the next necessary step in my opinion.
The ABAP on HANA team of Thorsten Schneider at SAP is doing a really amazing work:
- They work together with customers in Customer Engagement Initiatives
- They are in contact with DSAG user groups and explained their work in working groups, offered talks at public events of the user groups and offer trainings – and didn’t forget basic people’s needs like beer at the evening event 😉
- The team publishes content on SCN and offers a possibility that developers get experience with an NW 7.4 system on HANA.
DSAG shot some pictures of the event and I’ll reuse one in my blog:
You’ll find more pictures at the following adress: http://dsag-special.de/galerie-techtage2013/fitness_contest/index.html
After the ABAP for HANA Fitness Contest in Mannheim there have been interesting discussions among the participants. There have been really interesting topics: “How can we convince our management that HANA is important for our business? What skills do we need in the future? Will developers accept the change to an Eclipse environment? Do we have to change our programming style?”
I think these are good questions and every one will deserve an own blog. Nevertheless I try to discuss two of them in the rest of this blog:
- How will ABAP on HANA applications look like? Do we need to learn more than performance optimization?
- Do we have to change our programming style?
Is Performance Everything that Matters?
In my opinion ABAP for HANA developers will remove existing pain points at first and so increase the speed of a report or a transaction that is too slow and perhaps not usable. Especially when dealing with mass data you will have immediate benefit. With Google-like search helps users will be able to find data immediately which will improve working processes and will help to improve data quality.
So HANA can improve your business processes. But performance is not an end to itself but a means to an end because it is an enabler for decision management. The reason is simple: every business activity is based on (hopefully well-informed) decisions and HANA will help you making better decisions in faster time.
Above mentioned search helps are a first step. Let me give some examples – decisions are based on facts and HANA makes it possible to
- integrate data sources from non-SAP systems,
- calculate cross joins from different systems – think of CRM and ERP and
- to make data better accessible using full text and fuzzy search.
So HANA helps you to make data better accessible. Another aspect is that data doesn’t speak for itself, you have to evaluate it by using
- calculations (think of summations and aggregations) in Open SQL or as HANA Calculation Views,
- more complex calculations in SQL Script procedures (perhaps as part of Calculation Views).
Data is a very valuable asset and we can use it in a smarter way for following use cases:
- anomaly detection –think of fraud detection in insurance for example-
- simulation and last but not least prediction.
So let me summarize: HANA is an enabler for a better decision management in human and automated tasks: We can support users by giving them all information they need, we can include data from different sources in “data mashups” and perform quick visualizations for example. HANA can help in CRM call center processes to enable the user to get all information about a customer using all company data stored in HANA within shortest time. This will not only improve service quality in CRM processes but also improve up, down and cross selling for example.
But we can also use it to improve automated processes – think of SAP Operational Intelligence for example. Another interesting use cases is simulation of business rules: Usually they are very complex and “What If” scenarios can’t be calculated in reasonable time resp. with reasonable effort.
HANA is an enabler for all those use cases and as an ABAP on HANA developer you will create applications with unique characteristics. And therefore you should learn above mentioned more advanced features of HANA starting with powerful search helps, fast navigation in huge data sets. Later we will build “data mashups”, and offer visualization and put business logic on top of it. Above mentioned exercises will give you a good starting point.
Data Centric Coding
Do we have to change the way we code? My answer is “yes and no”. I explained in one of my last blogs that ABAP will change in an evolutionary way: http://scn.sap.com/community/abap-for-hana/blog/2012/10/01/first-experience-with-abap-on-hana-evolution-or-revolution. This means you will still use Open SQL for example.
But in my opinion ABAP developers should rethink whether all of their programming habits are really good. The analysis of custom developed reports with bad runtime performance showed me the following following: With only some simple changes many programs became faster on “anyDB” and easier to understand. So HANA optimization had many positive side effects. The reason is very simple. From my experience ABAP developers often have some peculiar programming styles:
- They try to avoid joins, aggregations and try to do as much as they can in memory instead of pushing it down to the database. As a result the code is often difficult to understand because it is much too complex and has a bad performance. The reasons is that many calculations on mass data have been put into transparent tables and perhaps even in transparent tables containing intermediate or aggregated results. This was a feasible solution in the past in many cases but I don’t recommend it as general programming pattern even on “anyDB”.
- Sometimes ABAP programmers think that it is necessary to hide every SELECT behind methods and functions modules. Of course there is nothing wrong with modularization and using BAPIs but you should consider the following as well: mass operations don’t perform well when you apply SINGLE operations on the database and reports with complex data flows through many modularization units are error prone and hard to maintain and often have performance problems.
- In the area of agile methods there is a saying: “Put four clever people in a room and present two similar problems – and then they will create a framework”. Please understand me right, there is nothing wrong with frameworks, but a framework is not the solution to every problem because abstraction has its costs and sometimes it doesn’t pay off: the generic solution isn’t extensible or makes other requirements (think of archiving or BI much more complex) harder to fulfill. And this is why as architect I appreciate the power of frameworks but also know their risks – and bad designed framework can be nightmare because of missing flexibility and maintenance costs.
Of course this is a complex topic and I will discuss it follow-up blogs, but my message is simple: If want to create high speed applications on HANA then you should start to try more data centric code.
My summary is very simple: HANA can make your business more agile but not only of its speed alone – it can make your data accessible and is an enabler for smarter decisions which will make your business processes more effective and more agile. For ABAP on HANA developers this rule holds as well: the way we create applications will be more “agile” and we will benefit from the experiences of many agile developers in the world. Fortunately we don’t have to reinvent the wheel and can benefit from many best practices. And will focus more on business applications and business value instead of creating frameworks.
But I think this is quite natural: HANA and ABAP for HANA has some new and really unique capabilities and old-school ABAPers like me need some time to learn and get familiar with them. I am glad that there SAP offers so much possibilities for us developers to do so.