Why timeout page is always displayed although there is NO TIMEOUT AT ALL
In my blog Timeout page and WebUI freezing issue – Another cause, the behavior that a time out page is displayed in UI, although there is no time out at all but instead some exception occurred in ABAP backend. From my point of view this time out page is misleading. In that blog I share one of my example how to find the root cause which causes the ABAP exception in an efficient way.
In this document I will explain to you why the time out page is designed to be rendered after some backend exception occurs.
First I need to find a scenario which will trigger an ABAP backend exception. Fortunately I have already one at hand ( I should not say fortunately since this scenario is responsible by my team and I need to fix it anyway):
After I click F4 on field Base Category, a popup window is expected to appear.
However due to a bug in my code, there is one runtime error in ABAP backend:
And then I see error in UI.
After I click any place in UI, I see the time out page below.
How to find the logic why this time out page is chosen and rendered by UI Framework
In the beginning I am not clear where to set breakpoint to debug as this timeout page rendering is implemented via UI framework.
So I plan to have a try with HTTP Professional.
I click “Record” button in toolbar to enable trace mode, and reproduce my operation in UI. Immediately I observed there is HTTP 500 error recorded. The log tells me that it tries to get a popup window but failed with result HTTP/1.1 500 Internal Server Error.
Right after the 500 error, there is a HTTP 302 redirection and the redirected target is CRM_UI_FRAME/logon_error.htm.
Click “Content” tab, it also shows error detail including ABAP callstack.
Now we can start trouble shooting in ABAP side. Quickly I notice the text in timeout page is stored in variable
application->gv_logon_error_message. Again use Where Used function in ABAP workbench and set breakpoint in hit, then reproduce the scenario one again.
Break-point is triggered as expected. Here due to 500 error, the popup name could not be got, so a session restart is planned as documented in comment 53.
I just do not understand why my UI framework colleague choose the OTR text TIMEOUT1. IMHO a text like “Some error happened, restart your session” is perhaps better.