BOPF – The must use framework for transactional applications
For me the most impressive session of the day was given by Oliver Jaegle, Martin Fischer and Sascha Hack. In three 8 minute sprints Oliver and Sascha created a complete task management application using the BOPF framework (BOPF SCN Sitemap). The application included features like a Web Dynpro UI, locking and transaction handling, validations as well as some actions for tasks. The demo showed how powerful the BOPF framework and the tooling around it already is. When creating a new transactional application, using BOPF is IMHO definitely the way to go.
An interesting feature of the BOPF I always missed is the BOL & GenIL connector. I definitely have to give this a try. If it enables the integration of BOPF objects into SAP CRM and the consumption of BOPF object in the CRM WebUI it would be a significant simplification for the creation of custom BOL objects. Furthermore, the connectors to SAPUI5, Gateway and Floor Plan Manager would allow all these different technologies to work on a central business object model created using BOPF.
Core Data Services (CDS)
The core data service introduced with NW 7.40 (cf. New Data Modeling Features in SAP NW ABAP 7.4 SP5 and ABAP News for 7.40, SP08 – ABAP Core Data Services (CDS)) are basically a family of domain specific languages to define database artefacts. All these features are available for any database. At sitFRA Uwe Fetzer showed in his session some of the features of the DDL part of CDS to define database views including some advanced features like associations. While he was severely slowed down by the slow network connection his example nicely demonstrated the power of the DDL.
One interesting feature of the DDL is, that it simply generates “standard” DDIC elements. These is a quite important feature as it enables the consumption of views defined via the DDL without the need to learn any additional ABAP language features. IMHO this will largely simplify the adoption of the DDL in the development departments of customers.
Furthermore, the possibility to add additional semantic information to the data model (e.g. association information or annotations) as well as the exploitation of these information in tools (e.g. when browsing the data model) creates a very powerful framework for data modelling.
Christ Swanepoel showed in his session what in the future might be possible using CDS. He demonstrated a prototype that enabled the unit testing of views create using the DDL. This feature would be a large step in order to enable the testability of SAP applications. However, the key point Chris made was, that once the customers come into the picture, everything gets unstable. This was demonstrated very effectively by Jens Weilerand Jasmin Gruschke
DSL in ABAP
Another topic that really impressed me was the ABAP DSL Workbench. Peter Langner show a tool he created to enable the creation of domain specific languages. While creating DSLs is quite a common topic in dynamic languages like Ruby or Closure I was really impressed by the fact that something like this was possible in ABAP. Peter also showed some real use cases to which he had applied his tool. The most impressive one was the parsing of the output of a legacy AS400 program (IBM System i – Wikipedia) into a table format that could then be used for data migration (see picture below, sorry for the bad quality). While there are certainly a bunch of tools that could be used to solve thisparticular task it nevertheless shows the possibilities offered by the the ABAP DSL Workbench.
Unfortunately, the tool is currently not freely available. However, Peter is looking for further use cases for the ABAP DSL Workbench.
Last but not least Tobias Trapp provided nice food for thought is his session “Don’t try to be smart – be smart.” The key message was just because it is possible to use generic constructs like e.g. RTTI or cluster databases it is not always a good idea to do so. Instead one should aim for readable and maintainable code. While this might seem obvious the packed room showed that this is a very important thing to always keep in mind.
Besides the session there were, as always, interesting discussions, good food as well as the opportunity to meet lots of nice people. So see you all at #sitHH, #sitMUC and #sitNL.