SAP Dashboards Loading Progress Bar

Some dashboards have a lot going on and maybe a simple loading spinner doesn’t cut it. One solution would be to use a loading bar. If you have several queries, you could count the number of them that have returned data to update the overall progress. Or, if you know roughly the speed to update the dashboard, you can just ballpark the loading progress using the SAP Dashboards / Xcelsius history component. Want to know more?


Start by creating the basic components that you see listed in this example’s object browser:

– Push button to start/stop the loading simulation
– Rectangle for loading message background
– Text box for the loading title
– Horizontal Progress Bar (with ticks turned off, and all text hidden) – I used a light blue for the color
– Finally, a smaller text box below the progress bar to display dynamic messages

Click on this image to see the working example

To start and stop the loading simulation, I use a push button to toggle on/off. The push button moves the value from cell C4 to cell B4. Refer to the formula displayed below.

The text for the push button is found in cell E4, and uses a similar formula to deliver the correct message. If the loading is ACTIVE (or equal to 1) then display “Stop” else “Start.”

The history component moves the value from cell C6 to B6. The formula for cell C6 [=IF(B4>0, B6+1, 0)] means that as long as the loading is active, it increments the current value in cell B6. If the loading isn’t active, the history component continues to push a 0 to cell B6. I currently have the history component set to update on a 0.3 second interval.

The progress bar uses cell B6 as the data and cell E6 as the max value. E6 is a hard-coded value and could be changed to represent the approximate load time of your dashboard. Remember, this represents about 33 seconds because the history component is changing every 0.3 seconds.

Finally, I have created a reference table off to the right that has some dynamic loading messages that are triggered at specific intervals. To read those messages, cell C8 matches the current loading increment from cell B4 against that table on the right (cells G6:G15 …extra room to grow). The match doesn’t have a zero at the end, so it finds the closest match and not an exact match. Then the Offset formula looks at cell H5 and references down the number of rows returned by the Match. Since I don’t have any messages starting at zero, it starts with an error. While there are a number of ways to handle this (and many more efficiently), I put an ISERROR test around the match to take care of this. This also helps catch any other unforeseen problems because I would rather have no message than an error displayed.

Give it a try yourself (with our without the Monty Python and the Holy Grail references) with this source file!