Hi,
I am running an ABAP program, and I get the following short dump:
Time limit exceeded. The program has exceeded the maximum permitted runtime and has therefore been terminated. After a certain time, the program terminates to free the work processfor other users who are waiting. This is to stop work processes being blocked for too long by
- Endless loops (DO, WHILE, ...),
- Database acceses with large result sets,
- Database accesses without an apporpriate index (full table scan)
- database accesses producing an excessively large result set,
The maximum runtime of a program is set by the profile parameter "rdisp/max_wprun_time". The current setting is 10000 seconds. After this, the system gives the program a second chance. During the first half (>= 10000 seconds), a call that is blocking the work process (such as a long-running SQLstatement) can occur. While the statement is being processed, the database layer will not allow it to be interrupted. However, to stop the program terminating immediately after the statement has been successfully processed, the system gives it another 10000 seconds. Hence the maximum runtime of a program is at least twice the value of the system profile parameter "rdisp/max_wprun_time".
Last error logged in SAP kernel
Component............ "NI (network interface)"
Place................ "SAP-Dispatcher ok1a11cs_P06_00 on host ok1a11e0"
Version.............. 34
Error code........... "-6"
Error text........... "connection to partner broken"
Description.......... "NiPRead"
System call.......... "recv"
Module............... "niuxi.c"
Line................. 1186
Long-running programs should be started as background jobs. If this is not possible, you can increase the value of the system profile parameter "rdisp/max_wprun_time".
Program cannot be started as a background job. We have now identified two options to solve the problem:
- Increase the value of the system profile parameter "rdisp/max_wprun_time"
- Improve the performance of the following SELECT statement in the program:
SELECT ps_psp_pnr ebeln ebelp zekkn sakto FROM ekkn
INTO CORRESPONDING FIELDS OF TABLE i_ekkn
FOR ALL ENTRIES IN p_lt_proj
WHERE ps_psp_pnr = p_lt_proj-pspnr
AND ps_psp_pnr > 0.
In EKKN we have 200 000 entries.
Is there any other options we could try?
Regards,
Jarmo