09-17-2010 12:51 PM
Hi,
In my programme, some times I end up with handling of lots of data in internal table. And this results in a dump.
Category ABAP Server Resource Shortage
Runtime Errors TSV_TNEW_PAGE_ALLOC_FAILED
Short text
No more memory available to extend an internal table.
I read few threads where they suggested to increase the internal memory of ths system. This is beyond my scope!
Is there anyway I can catch this exception and stop the programme from executing further?
Thanks in advance!
Cheers
Kiran
09-17-2010 1:21 PM
Reduce the amount of data you're handling...look at package size addition to select...search the forum, you're not the first person who's tried to process multi-million record tables in a single pass.
09-17-2010 6:48 PM
you're not the first person who's tried to process multi-million record tables in a single pass.
That was funny
@OP - Check where the problem is getting triggered, reduce tha amount of data. As Dave said use package size. If its triggering from any standard function modules check for the OSS Notes.
09-17-2010 1:23 PM
Maybe with
TRY.
...
CATCH SYSTEM-EXCEPTIONS.
ENDTRY.
Use F1 to get more details.
and as an edit: what he said.
09-18-2010 5:29 PM
Hello Kiran,
TSV_TNEW_PAGE_ALLOC_FAILED is a not catchable error. It happens if a program exceeds the system boundaries, typically ~2 GB. Requesting so much memory is a strong indication for a flaw in the archtecture.
Anyway these kind of errors require a change in the program or in the arguments given to them. In newer releases you may try S_MEMORY_INSPECTOR to analyse the endless need of memory. In older releases watch out for hughe internal tables in the ST22 dump.
Regards
Klaus
07-01-2016 12:47 PM
Hello Kiran,
I guess that won't help you personally anymore, but maybe someone else is looking for that. At least I was.
I think you can't keep the system from creating a shortdump, but your program can handle it if you write a wrapper for it like this:
CALL FUNCTION 'ZFM_MMA_MEM_TEST' DESTINATION 'NONE'
EXCEPTIONS
system_failure = 1
communication_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE 'An unknown error occurred.' TYPE 'E'.
ENDIF.
That way, the storage consumption throws a system_failure exception and your wrapping program can handle it properly.
Regards,
Matthias