New in-depth technical article with sample application on Web Dynpro Java table paging available now!
In this WebLog I want to announce my new article/sample combination on “Web Dynpro Java Table Paging Unleashed: Optimizing Heavy Table Performance”. Download this new material to boost heavy table performance with minimized memory consumption in your own Web Dynpro Java business applications:
- In-depth technical article: Web Dynpro Java Table Paging Unleashed: Optimizing Heavy Table Performance – Article
- Software Component Archive: Web Dynpro Java Table Paging Unleashed: Optimizing Heavy Table Performance – zipped SCA Archive (with Web Dynpro DCs to test and run the Web Dynpro table paging sample appliation)
- SAP NetWeaver CE 7.11 EhP1: EHP1 for SAP NetWeaver Composition Environment 7.1 – Preview Version
The given solution was first presented at SAP TechEd ’08, lecture COMP204 on “Best Practices for Optimizing Web Dynpro Java Application Performance“:
- read presentation on “Best Practices for Optimizing Web Dynpro Java Application Performance”
- watch full COMP 204 session video with your Virtual SAP TechEd Content Subscription
Enjoy Web Dynpro Java,
Bertram Ganz, Senior Product Specialist, NW Core UI&AM F OPS, SAP AG
Web Dynpro Java business applications often have to display “heavy” tables with thousands of table records on the user interface. Such a scenario requires an advanced context-to-model binding technique on Web Dynpro frontend side and a “paging” business logic on backend side to optimize performance.
Based on a new Web Dynpro Java table paging sample application developed with SAP NetWeaver CE 7.11 EhP1 you learn how to minimize context memory consumption on server side and how to optimize table interaction performance (rapid initial table display, rapid table paging/scrolling on client side) by implementing the special ICMIObservableList-API of the common model interface (CMI) with an own extension of the existing CMIAbstractObservableList base class.
Although this sample is based on a JavaBean “fake” model (creating some dummy data on server side without backend access) you can easily apply the proposed paging technique for an EJB, Adaptive RFC or Adaptive RFC model used to connect to the business logic. Your business logic must fulfill two requirements: first it must be possible to retrieve the total number of table records initially and second to retrieve table records pagewise (from record n to record n + pageSize) later on (“paging-enabled” services).
This sample application additionally demonstrates some new Web Dynpro Java functions in SAP NetWeaver CE 7.10 like permanent messages, showing custom scroll tip texts in the vertical table scrollbar and closing the application window programmatically with a new exit plug parameter. To better illustrate the streamlined Web Dynpro Java component model and to adhere to proven component-design principles the sample application is separated to a visual table component and a faceless business logic component stored in different Web Dynpro development component.
Many thanks to Frank Weigel, SAP development architect and Karsten Geiseler, SAP senior development consultant, for their valuable feedback and their helpful suggestions which are implied in the described table paging solution.
The described table paging solution is also applicable in SAP NetWeaver 04 and 7.0 because the two underlying common model interfaces (CMIAbstractObservableListand ICMIObservableList) were already available there. Nevertheless the Web Dynpro sample application provided for this article requires SAP NetWeaver CE 7.11 EhP1 to run.
Architecture diagram of the Web Dynpro Java table paging sample
Web Dynpro table paging sample application shown in component modeler
Showing stacked performance infos with keyboard shortcut CTRL+ALT+Shift+I
This article also unveils an undocumented keyboard shortcut to display “stacked” performance information for ALL roundtrips of the currently running client session. Just press keyboard shortcut CTRL+ALT+Shift+I to open a browser popup window with automatically measured performance information (backend, J2EE, browser, network).