Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Karol-K
Advisor
Advisor

it is time to end the summer break and add again some value to the community 😉

The Customer Problem

In the meantime some customers are using the parallel data source execution (Design Studio 1.5: View on Parallel Data Source Execution) and are facing a question on how to logoff the user and release the sessions.

Of course user logoff means, it is not possible to navigate any more in the application, but for many scenarios where you want to have quick access to the data and then stay on the "static" display - the logoff is acceptable.

The Idea

Technically, the application in the browser is holding the session as long one of those 2 events will occur.

* session timeout on server side (eg. BIP is 30 minutes)

* user actively ends up the browser session (eg. closing the browser)

The solution will address the second part - in quite simple way - using a timer and logging off the user when the timer gets to 0. I know this procedure from some online banking implementations. it means, the user has the information that the session gets expired in some time and gets extended when user refresh the counter or makes some navigation on the app.

The Solution

We have already in the scn repository a component "TIMEOUT", created by martin.pankraz. The component has the ability to count down and triggers event on timeout.

I have used the component and made 2 extensions on it:

* implemented a visualization (counter eg 00:10) in seconds (must be activated in properties)

* added a function "logoff()"

- the first change is just to show the timer and inform the user that the session will end up in some time

- the second change is not dependent on the first one, so having the TIMEOUT component in the app you can use only the "timeout()" function.

How Does It Work?

The logoff is using only the "unload()" function from the browser - this function will be triggered explicitly, and this causes an event to design studio which is sending special request to the server logging off current session.

Important: if the user disconnects the network - the logoff will not work!

in addition, the ajax function which is responsible for sending more requests to the server will be overwritten to show a popup with custom text to the user. If the text is empty (you can change in properties) then the popup will be not shown. This is required to avoid any more communication from the app to the server as any try to connect the server will ed up in exception.

In short, the user can make all actions in the app - as long the action does not require server communication. One working action is fe. changing the pages of a pagebook, so for dashboarding you still have some freedom in looking at the data.

Here is the first scenario - logoff triggered by timer

behind the "Start" button, the time will be "restarted".

TIMEOUT_1.startTimer();

The user can always trigger it explicitly.

You can also to place the code in some events (like onResultSetChanged() event) to trigger it also in other actions - if you want.

Here is the second scenario - logoff and change of pagebook.

What is the Effect?

You can see the effect in BW system, you go to SM04 and then see the sessions of your user. When logoff is executed, the session is deleted. It means, you can see it in 2 places:

* the Design Studio session in the Java stack will be closed

* the corresponding RFC connections in ABAP (SM04) are closed.

What is NOT intended to happen?

This logoff is not logging of the frontend side - BIP session or NetWeaver session. It is targetting only release of the resources on the server (APS; NW Java) and the source systems (BW, HANA, Universe). Especially BW, as there the session are statefull and occupy memory.


Summary

At the end, how does it look at the server? Of course the user will be logged off - and this is a standard procedure - the server will close the session, close all sessions on any backend systems - like BW or HANA.


I think some of you can make a use of this component and reduce the memory load on the servers. At least for many dashboard scenarios.

Help / API Specification

Go directly to the help site and find the component: Component List - SCN Design Studio Community

Download & Use

This component is available on the community package

More information on the SCN community package in blog  SCN Design Studio SDK Development Community

Example as BIAPP:

org-scn-design-studio-community/applications · GitHub

Any thoughts?

feel free to add as usual...

Enhancements Ideas?

if you have good ideas (to those who would like to contribute but cannot code...) - place an "issue" with tag "enhancement" under Issues · org-scn-design-studio-community/sdkpackage · GitHub

5 Comments