‎2010 Sep 17 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
‎2010 Sep 17 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.
‎2010 Sep 17 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.
‎2010 Sep 17 1:23 PM
Maybe with
TRY.
...
CATCH SYSTEM-EXCEPTIONS.
ENDTRY.Use F1 to get more details.
and as an edit: what he said.
‎2010 Sep 18 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
‎2016 Jul 01 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