cancel
Showing results for 
Search instead for 
Did you mean: 

Custom timeout page in SICF

TudorRiscutia
Active Participant
0 Kudos

Hello experts,

My current requirement is to implement a customer-specific error page for timeouts.

The SICF allows two possibilities, either to redirect to another URL or to create an explicit page:

The requirement here is to create an explicit error page, but only for the timeouts. The SICF treats both the short dumps and the timeouts as application errors.

I've tried to different possibilities:

     1. I've redirected the error to another URL, where I've tested the system tags (like <%=MESSAGE%>) and, in case of timeouts, redirected to another page (something with a message "You're application was idle for too long.." and a big "Refresh" button), or for regular errors, redirected to the standard error page from SAP.

     This solution seems to work fine, but I didn't found a way to also enabled the F5 functionality (Refresh), as it will reload the current, timeout, page.

     2. On the other hand, if I create an explicit page directly in the SICF, I found that it is not possible to insert JavaScript functionality, so you cannot really switch between pages... even though it works with HTML+CSS. The explicit page would be a much better solution, as it also enables F5.

     I tried a work-around by creating an iFrame with the same size as the screen, and inside this iFrame, embed the solution from the first point (1.). The problem here is, for my version of IE, I have to press "Enable content" otherwise it will treat the iFrame as a security breach. Also, I cannot set the system domain as a trusted site, because afterwards I will have to do the same for every users.

If somebody has another idea, please feel free to share it!

Accepted Solutions (1)

Accepted Solutions (1)

TudorRiscutia
Active Participant
0 Kudos

I eventually found a solution for this problem. I've written a blog post about this:

Please feel free to provide any feedback or related questions.

Answers (2)

Answers (2)

vivek_priyadarshi2
Participant
0 Kudos

Hi Tudor,

I am new to BSP application. can you explain how you managed to get the system tags in the redirected url. I have created a simple bsp page and assigned it to the SICF node. During debug I am not getting any system tag in my case.



:

     1. I've redirected the error to another URL, where I've tested the system tags (like <%=MESSAGE%>) and, in case of timeouts, redirected to another page (something with a message "You're application was idle for too long.." and a big "Refresh" button), or for regular errors, redirected to the standard error page from SAP.

     This solution seems to work fine, but I didn't found a way to also enabled the F5 functionality (Refresh), as it will reload the current, timeout, page.

 

Regards,

Vivek

TudorRiscutia
Active Participant
0 Kudos

Hi Vivek,

     The redirect to BSP application was my first attempt to achieve this functionality. Unfortunately, the F5 refresh doesn't work. And even if you manage to catch the event somehow using JS, you still have no guarantee that it will work in all browsers...

     Please check my solution above, using the inserted code in CL_WDR_CLIENT_ABSTRACT_HTTP.

     As for getting the tags in BSP, you need to add them as a query to the redirect URL.

https://..../<complete_path_to>/<your_bsp_application>/<your_bsp_page>.htm?message=<%=MESSAGE%>
, where "message" is declared in the attributes tab of the BSP page.

Best regards,

Tudor

NagaPrakashT
Contributor
0 Kudos

Dear Tudor,

         I think you can use TimedTrigger UI Element and Window Exit Plug to call Time out page.

Please look at this link.

http://scn.sap.com/thread/127416

http://scn.sap.com/message/14275799#14275799

Thanks,

Naga

ramakrishnappa
Active Contributor
0 Kudos

Hi Tudor,

I suggest you to go ahead with option 1


  1. I've redirected the error to another URL, where I've tested the system tags (like <%=MESSAGE%>) and, in case of timeouts, redirected to another page (something with a message "You're application was idle for too long.." and a big "Refresh" button), or for regular errors, redirected to the standard error page from SAP.

But for the functionality of REFRESH(F5)


  This solution seems to work fine, but I didn't found a way to also enabled the F5 functionality (Refresh), as it will reload the current, timeout, page.

Let us say, you have redirected the user to page ".... idle for too long" & has a button REFRESH

Now, On action of REFRESH button we need to call the original application

You can proceed as below

  • Create an EXIT plug in window of TIMEOUT application with parameter URL  of type string
  • Go to event handler method of button REFRESH and fire exit plug and redirect to original application's url

Please refer the below link for redirecting to an URL. Exit plugs in Webdynpro ABAP

Some other option

  • Get the application session time out into lv_value as below

     lv_name = 'rdisp/plugin_auto_logout'.
     CALL 'C_SAPGPARAM' ID 'NAME'  FIELD lv_name
          
ID 'VALUE' FIELD lv_value.

For more details - refer the link: SessionTime out in WDA   

  • Use timed trigger and set the delay with the lv_value
  • On action of timed trigger, you can generate the custom page and show
  • On refresh, you can refresh the application as suggested before

Hope this helps you.

Regards,

Rama

TudorRiscutia
Active Participant
0 Kudos

Hello Ramakrishnappa,

Thank you for your answer!

The only problem is that I don't want to use this "timeout page" feature just in my own application, I want to use it for all web applications in SAP. This means, for both the standard and the Y*/Z*... and of course, I don't want to enhance all WD apps in my system.

The "Refresh" button is implemented in HTML with a simple "history.go(-1)" action, which seams to work both in IE and NWBC. And by the way, my redirect, timeout and standard error pages are implemented inside a BSP application.

I guess the optimum solution would be to do all the logic directly in the SICF, but I have no idea why SAP wouldn't allow JavaScript in the explicit html page.

Thank you!

Tudor