On the first sight a contradiction: Normally, developer would never display millions of rows on SAP UI. This blog shows how this contradiction can be resolved with help of the new HANA capabilities.
This blogs describes mainly the evolution and architectural variations of the well-known ABAP List Viewer (ALV) over the past 20 years towards mass-data enabling in SAP HANA. In particular the new architectural pattern (Integrated Data Access) is explained based on some coding examples.
In this blog we want to outline the advances of the new HANA functionality regarding visualization of large datasets on SAP UIs often used in practice. Target audience is primarily consultants, architects, ABAP developer at customer, or ABAP developer for the SAP partner ecosystem. The highlighted advances are available with ABAP AS 7.40 upwards.
To explain the advances, it is a good idea to look back into the history over the past 20 years and divide the timeline in multiple phases of milestones. This will give us a good overview about the journey of SAP UI List processing and makes the evolution visible over the timeline. This blog is organized in three parts:
A) Overview of the feature timeline,
B) Detailed Description of the HANA specific advancements regarding List Viewing
Phase 1: native ABAP reports
Initially displaying of large data sets were primarily done with help of ABAP reports with ABAP native techniques like WRITE commands. As a result an interactive list of data entities is shown. All reports are lacking of usability standards. Limited generic Functions like search, filtering etc. are available but not to the extent, the end user expects. Other cons include limited capability of handling huge datasets.
Phase 2: ABAP List Viewer (SAP ALV)
List Processing, Visualization and Interaction are standardized. A configurable reusable was created: SAP ALV for SAPGUI. First advances are clear: standardization of user experience and flexibility in Interaction. Also the handling of mass data processing was improved in comparison to phase 1.
It is clear visible, that the first ALV technique was based on ABAP report technique explained in Phase 1. There is a function module available for displaying the ALV in fullscreen-mode.
Phase 3: ABAP List Viewer Grid (SAP ALV Grid)
SAPGUI Grid Controls came up in the course of the enjoy initiative for SAP UIs. SAP ALV Grid was one of them. Fullscreen is optional. In addition to that, the ALV became editable. SAP ALV Grid is still limited regarding mass data. In this pase, the ALV procided an editable mode.
Phase 3: ABAP List Viewer with OO-Encapsulation
The ALV is re-architected. the function module based approach becomes obsolete. Instead, a object-oriented interface is provided. All functionality can be accessed via object references, even the columns, toolbas entries or buttons. This approach still assumes the handover of a data table to be displayed.
Phase 4: List GUIBB (Generic User Interface Building Block) in SAP Netweaver Floorplanmanager
Displaying of List in SAP Netweaver Business Client. Generic functions like printing, sorting, filtering not available. This approach is also limited regarding the aspect of mass data. Technical speaking FPM_LIST_UIBB is the involved configurable WebDynpro component to be used for the LIST GUIBB. Data provisioning is done in a feeder class.
Phase 5: Freestyle UIBB ALV for the Floorplanmanager
There is an option to embed an UIBB in the Floorplanmanager Configuration, which contains the Webdynpro Component SALV_WD_TABLE. So basic ALV functionality is available. Because this is a freestyle UIBB, no feeder class is involved like in other GUIBBs. So Interaction Handling cannot be done via eventloop in the feederclass. Instead in the feederclass, data provisioning is done in the methods of the WebDynpro components directly.
Phase 6: LIST ATS GUIBB (ATS – ABAP Table Services) in SAP Netweaver Floorplanmanager
Here, generic functions like filtering, aggregation, sorting, personalization, scrolling, grouping, etc. are available. Also this List UIBB provides inplace editing for limited mass data sets. Basically we have here the well-known features of the ABAP ALV available.
FPM_LIST_UIBB_ATS is the WebDynpro component to be used as a UIBB in the Floorplan manager configuration. The LIST ATS GUIBB can be configured and data sets can be provided in the associated feederclass. This approach is preferred rather than the freestyle UIBB ALV approach mentioned in phase 5
Phase 7: ABAP List Viewer with integrated data access in SAPGUI
On ABAP AS 7.40 with a SAP HANA Database underneath there is a new ABAP class available (CL_SALV_GUI_TABLE_IDA) which enables List Processing on the Server without any significant Memory Footprint on the application server. So, all data remains on the database server and no data has to be copied into the application server. While scrolling only the displayed data is fetched into the application server. With this approach, we can display 2 billion records without any delay in time and without any footprint on the application server. Even better: This approach allows aggregation/calculation, grouping, filtering on the whole dataset. In comparison to approach mentioned in phase 5, normally a subset of the data is copied from database into applicationserver, prepared in the applicationsserver and handed over to ALV for further displaying/processing. In case of editing, the developer (application) has to care about the CRUD updates back to the database.
The advantage of this approach is, that all data remain in HANA DB: It is basically a copy-free approach, so no data is transferred from SAP HANA DB to the ABAP application server.
The UI experience is very interactive. Very smooth and fast scrolling to the data entry in question.
The architecture pattern ‘Integrated Data Access’ also provides ALV calculation possibilities as standard functions. This calculation does not happen on the ABAP application server, but rather on the HANA DB (intrinsic calculation function of the HANA Copmuting Platform). So the computing is pushed down to the database level, is ultra-fast and is based on all data entries selected in the ranges tables.
Very elegantly integrated is the editable mode: you can edit data entities in-place ranging over the whole dataset
Unfortunately some basic functionality like e.g. individual programmable coloring of fields/cells is still missing in comparison to the previous version. One can be very optimistic, that this will be added soon to the new ALV IDA approach.
Please be aware, that it is possible to handover an authority object to the ALV. So the the respective subset of data is being displayed. Also the aggregation is based on such subsets.
Phase 8: List Processing via SAPUI5 and SAP Fiori
This is a HTML5 control/pattern based approach with odata access. From Architecture point-of-view there is a strict decoupling frontend-backend in place. Basically same concepts (Integrated Data Access) as in previous phase. Of course the rendering is adapted to the SAPUI5 user experience.
The ALV as a reusable software component enters the field of BigData. Displaying of 2,4*10^9 data entities can be done without footprint in the ABAP application server. It is possible to restrict the dataset on HANA DB level. All calculation, grouping, filtering happens on HANA DB level and can be done on the fly. This opens up news possibilities, because the whole dataset is taken into consideration for calculations. The application developer does not have to take care about handling/paging of BigData of his own. The architectural approach encapsulates the mass-data handling in a very elegant way. So this approach is also very advantageous regarding simplicity and robustness.