All business users expect to see their current status of their Business in well-organized metrics and KPI’s to make clear and consistent decision in reliable time. So all users expect to view their dashboards with real-time data with minimal loading time, irrespective of type of device (Mobile, iPad or Laptop or projecting in a board meeting). Despite of DS 1.5 release for improving performance, in this blog I want to address how to design SAP Design Studio Application (containing Pagebook or Tablets) to improve performance of Application by reducing load time of information as standard.
In most of SAP Design studio Applications we will design with Pagebook with each page having one Dashboard. And I want to address how to improve load performance in Initial load of first Dashboard and how to improve performance after initial load when they move from one dashboard to other or when they are changing Time period or by changing the master data selection in Dashboard.
Improving Initial Load of Dashboard:
Always Prompt Variables need to be assigned at Variable Initialization with Default values.
Data sources that are needed for the first page need to be loaded with load on script false and for rest of the queries load on script need to be kept true (these queries need to be initialized through script based on Dashboard Selection in Dropdown or Listbox based on requirement).
Improving Performance after Initial Load:
When loading data sources, based on selection of Dashboard in Dropdown, it’s better to check whether Data source is Initialized or not. If initialized no need of loading or otherwise data source need to be loaded. So here we have to use if logic to check whether data source is loaded or not.
Where to Give Prompt Variable Values?
As there will analysis of data based on time period, suppose if we have Year, from Month or To Month, it’s better to have Variable Assigning script in last dropdown selection or its better to have a go button after all dropdown selection, and then in Go button selection events we to write script to assign datasource’s to Prompt Variables.
When changing time period in Dashboard, Prompt Variables script need to be assigned with Values in sequence, without any other script In middle, and these Prompt Variables are merged as Variable Container. But this will impact performance as all datasources having same Prompt variables will be reloaded with new Prompt Values. But there will be change in this concept as there will be possibility to have unmerged Prompt Variables in next version DS 1.5, to Improve Performance.
Keeping Local Filters:
Sometimes based on Requirement it’s better to have Local filter in query instead of using Variable Prompt based on Requirement. Like Drill down from one Portlet to other, by filtering Datasource.
For KPI Summary Display:
For Summary Dashboard or Highlevel dashboard where we show only KPI Values, as shown below, we have to write script to get that value in Change Event of Datasource, from where we are getting Data.
Reusability of Datasource:
Reusability of Datasource, if we have requirement to use Different measures and common dimension for assigning to different Charts. We can use one datasource and we can select measure based on Chart requirement.
Reusability of Datasource (Bex Queries):
Using one Datasource, we can assign other datasource by assigning Datasource with Connection names and Datasource type.
Use of Global Script in Technical Components:
Using global Script Technical Component we can avoid writing script in Different places by calling Global script where ever needed based on Requirement. Suppose based on Dropdown Text selection we need to append Text with some CSS Class to show.
Use of Base64 Image compression and Sprite Images:
It’s better to use Base64 Code in CSS for big images like Logos or Background Image, instead of calling image from BOE server. For Small Icons we have to use Sprite Image.
(Note: In SAP Design Studio 1.5 Release, there will be parallel processing of Datasources to improve performance and there will be unmerging of Prompt Variables in Variable Container.)