TSV_TNEW_PAGE_ALLOC_FAILED

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

TSV_TNEW_PAGE_ALLOC_FAILED

Beitrag von abapz (ForumUser / 17 / 6 / 3 ) »
Hallo Zusammen,

ich muss eine ziemlich große interne Tabelle erstellen ( 200 Spalten, ~ 60000 Zeilen oder mehr) im batch erstellen.

Code: Alles auswählen.

do row_count times.  "row_count z.B. 60000
 append initial line to itab.
enddo.
Später greife ich hier mit Feldsymbolen zu, das spielt aber jetzt keine Rolle.

Ich bekomme den Fehler TSV_TNEW_PAGE_ALLOC_FAILED (über sm37, mit st22 verifiziert).

Über den Report RSPARAM:

ztta/roll_extension_non_dia auf 4026531840 (Doppelt so hoch wie der Defaultwert).
abap_heap_area_nondia 20000000.

in sm04 steigt der "speicherverbrauch" auf ca 4000.000 (Einheit nicht ersichtlich), anschließend kommt es zur Exception.

-----------

hat irgendwer eine idee?

Danke!

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: TSV_TNEW_PAGE_ALLOC_FAILED

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
abapz hat geschrieben:Hallo Zusammen,

ich muss eine ziemlich große interne Tabelle erstellen ( 200 Spalten, ~ 60000 Zeilen oder mehr) im batch erstellen.

Code: Alles auswählen.

do row_count times.  "row_count z.B. 60000
 append initial line to itab.
enddo.
Später greife ich hier mit Feldsymbolen zu, das spielt aber jetzt keine Rolle.

Ich bekomme den Fehler TSV_TNEW_PAGE_ALLOC_FAILED (über sm37, mit st22 verifiziert).

Über den Report RSPARAM:

ztta/roll_extension_non_dia auf 4026531840 (Doppelt so hoch wie der Defaultwert).
abap_heap_area_nondia 20000000.

in sm04 steigt der "speicherverbrauch" auf ca 4000.000 (Einheit nicht ersichtlich), anschließend kommt es zur Exception.

-----------

hat irgendwer eine idee?

Danke!
Warum erstellt man eine LEERE interne Tabelle mit ca. 60.000 Zeilen?

Basis kontaktieren....

Googlen .... SCN.... OSS Notes...

Re: TSV_TNEW_PAGE_ALLOC_FAILED

Beitrag von abapz (ForumUser / 17 / 6 / 3 ) »
wenn man vorher weiß, wieviele zeilen eine tabelle haben wird, so kann man diese zeilen "in einem rutsch" appenden, und anschließend mit pointern bzw "feldsymbolen" über die tabelle gehen und die daten hinzufügen. es ist durchaus so, dass es schneller ist, als mitten in einem loop eine wa zu befüllen und am schluss jeder loop-runde die wa zu appenden, und das system mittendrin merkt, dass es mehr speicher braucht.

P.S.: ich lasse mich gerne eines besseren belehren, falls dem in abap nicht so ist.

Re: TSV_TNEW_PAGE_ALLOC_FAILED

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
abapz hat geschrieben:wenn man vorher weiß, wieviele zeilen eine tabelle haben wird, so kann man diese zeilen "in einem rutsch" appenden, und anschließend mit pointern bzw "feldsymbolen" über die tabelle gehen und die daten hinzufügen. es ist durchaus so, dass es schneller ist, als mitten in einem loop eine wa zu befüllen und am schluss jeder loop-runde die wa zu appenden, und das system mittendrin merkt, dass es mehr speicher braucht.

P.S.: ich lasse mich gerne eines besseren belehren, falls dem in abap nicht so ist.
Warum sollte ich Dich belehren. Du hast mich doch gerade aufgeklaert, dass man es so macht, wie Du es machst und auch schneller ist. :?

Wundere mich jetzt nur ein bisschen ueber das "wenn man vorher weiß, wieviele zeilen eine tabelle haben wird" und das " ~ 60000 Zeilen oder mehr"

Also ich weiss eigentlich immer vorher, wie gross eine interne Tabelle wird.... naja, auch nur so "mehr oder weniger"... aber wenn das schon reicht um eine LEERE interne Tabelle zu erstellen und das Programm dadurch schneller werden soll....

Ich dachte jetzt, man koennte evtl. mit DATA ... INITIAL SIZE' etwas rumprobieren


FYI: Ich habe und werde niemals so vorgehen und so einen leere interne Tabelle erstellen.

Re: TSV_TNEW_PAGE_ALLOC_FAILED

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Variante 1)
Man verarbeitet Daten "Blockweise" (z.B. PACKAGES SIZE Zusatz beim Select-Befehl) und gibt dann die Ressourcen wieder frei.

Variante 2)
Man nutzt einen eigenen(!) Applikationsserver bei dem man die Speicherbegrenzung ausschaltet. Auf der Produktivmaschine auf die die User zugreifen würde ich das nicht empfehlen.

Zur Info:
Wenn man die SAP-Hilfe genauer durchliest wird man feststellen, dass eine plötzliche hohe Speicheranforderung auch zu einem TSV_TNEW_PAGE_ALLOC_FAILED führen kann, obwohl die voreingestellte Höchstgrenze noch nicht erreicht ist.

Außerdem baut das Coding

Code: Alles auswählen.

do row_count times.  "row_count z.B. 60000
 append initial line to itab.
enddo.
die Tabelle genauso "schrittweise" und nicht in einem Rutsch auf.
Vielleicht ist es ja mit DATA ... INITIAL SIZE wirklich "besser", aber das hab ich noch nie verwendet, weil sich mir der Sinn (leider) einfach nicht erschließt. Dieses Vorgehen dürfte im ABAP-Kernel dann schon eher ein entsprechend schnelles (einmaliges) MALLOC (C-Befehl) auslösen.

Sofern diese Vorgehensweise wirklich Performancevorteile bringt, sollte man aber aus genau diesen Gründen auch darauf achten, dass man die Anzahl und Größe der Felder in der Tabelle dann so klein wie möglich hält. Also keinen Datenmüll in Form von "leeren" oder ungenutzt Feldern produziert.

lg ADT

P.S.:
Unit605 hat geschrieben:FYI: Ich habe und werde niemals so vorgehen und so einen leere interne Tabelle erstellen.
AMEN!
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: TSV_TNEW_PAGE_ALLOC_FAILED

Beitrag von abapz (ForumUser / 17 / 6 / 3 ) »
vielen dank für die antworten.
Wenn man die SAP-Hilfe genauer durchliest wird man feststellen, dass eine plötzliche hohe Speicheranforderung auch zu einem TSV_TNEW_PAGE_ALLOC_FAILED führen kann, obwohl die voreingestellte Höchstgrenze noch nicht erreicht ist.
ich habs umprogrammiert (ohne 60000 mal append initial line) - dennoch kommt es zu demselben fehler (nachdem der hintergrundjob ca 3 stunden lief...).

ich bräuchte in der tat "malloc" oder wie z.b. in java bei arraylisten "initial capacity" - einen befehl, der einmalig einen großen speicherbereich reserviert.

Re: TSV_TNEW_PAGE_ALLOC_FAILED

Beitrag von JHM (Top Expert / 1188 / 1 / 195 ) »
abapz hat geschrieben:ich bräuchte in der tat "malloc" oder wie z.b. in java bei arraylisten "initial capacity" - einen befehl, der einmalig einen großen speicherbereich reserviert.
ABAP kennt da den OCCURS N Zusatz bei der DATA-Definition der ITAB. Ist aber eigentlich obsolet.

Vielleicht beschreibst du mal, was dein Programm genau macht. Dann könnte man auch gezielt Tipps geben.
60.000 Lines in einer ITAB sind jetzt ja eigentlich nix besonderes, da sollte der Speicher an sich nicht knapp werden.
Gruß Hendrik

Re: TSV_TNEW_PAGE_ALLOC_FAILED

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
JHM hat geschrieben:
abapz hat geschrieben:ich bräuchte in der tat "malloc" oder wie z.b. in java bei arraylisten "initial capacity" - einen befehl, der einmalig einen großen speicherbereich reserviert.
ABAP kennt da den OCCURS N Zusatz bei der DATA-Definition der ITAB. Ist aber eigentlich obsolet.

Vielleicht beschreibst du mal, was dein Programm genau macht. Dann könnte man auch gezielt Tipps geben.
60.000 Lines in einer ITAB sind jetzt ja eigentlich nix besonderes, da sollte der Speicher an sich nicht knapp werden.

Ausgehend von der bisherigen Vorgehensweise zur Erstellung von internen Tabellen, kann ich mir gut vorstellen, dass dieses dann auch noch zigmal hin- und herkopiert werden.

Interne Tabelle mit "nur" 60.000 Zeilen, aber dann 3 Stunden Laufzeit im Background. Auch hier vermute ich, dass da wesentlich mehr abläuft, als nur 60.000 Zeilen in einer internen Tabelle zu erstellen.

Fraglich auch, ob es ueberhaupt zum Speicherueberlauf wegen dieser Tabelle kommt?!??! ... und nicht vielleicht wegen etwas ganz anderem.

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2320
Views
index.html Fehlermeldung Failed to load resource: net::ERR_F
von AliR » 12.08.2015 16:07 • Verfasst in Web-Dynpro, BSP + BHTML
9
Antw.
5995
Views
REUSE_ALV_GRID_DISPLAY new page erzeugen + top-of-page
von DieSteffi » 26.05.2004 12:22 • Verfasst in ABAP® Core
4
Antw.
2089
Views
TOP-OF-PAGE
von Gast » 11.10.2004 19:51 • Verfasst in ABAP® Core
4
Antw.
2018
Views
TOP-OF-PAGE
von Fischer » 09.12.2004 14:12 • Verfasst in ABAP® Core
0
Antw.
797
Views
Smartforms First, Next, Last-Page
von mari » 10.09.2007 14:29 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140