Programm wird langsam nach einiger Zeit

Benutzeroberflächen in SAP®-Systemen.
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Programm wird langsam nach einiger Zeit

Beitrag von nickname8 (Specialist / 134 / 17 / 19 ) »
Hallo Kollegen,
wir haben in der Produktion eine Z-TC die mit der Zeit langsam wird. Startet man die neu, ist sie schnell wie gewünscht.
Der erste Verdacht ist natürlich, dass interne Tabellen voll laufen und somit Lesezugriffe sich auf die Performance auswirkt. Daher habe ich einen Logger geschrieben der immer mal wieder den aktuellen Speicherverbrauch loggt. Da ist keine Auffälligkeit zu erkennen.
Es wird jedoch viel mit Screens gearbeitet (Call Screen, Leave Screen, ...). Der Dynpro-Stack läuft aber auch nicht voll, sonst gäbe es ja eine Exception.
Hat jemand noch eine Idee woran es liegen könnte, dass die TCs langsam werden?

Ich freue mich über jegliches Feedback! :)

LG

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


Re: Programm wird langsam nach einiger Zeit

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Wie und über welche Daten ermittelst du den aktuellen Speicherverbrauch?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Programm wird langsam nach einiger Zeit

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Ganz blöde Frage: Was ist "eine TC"? Ein Transaction Code? Ein Table Control? Was ist es, das da bei euch langsam wird?

Interne Tabellen kann man auch anders checken. Du könntest das Programm einfach mal debuggen, wenn es langsam geworden ist. Dann schaust Du Dir im Debugger an, wieviele Einträge eure internen Tabellen jeweils haben (einfach die am Anfang mit DATA definierten internen Tabellen durchgehen und schauen, ob da Ausreißer mit unrealistisch hoher Zeilenzahl dabei sind). Oder Du gehst mal eine Zeitlang mit F5 und F6 durch und schaust, ob Du Befehle oder Codeblöcke (Unterroutinen) finden kannst, bei denen der Zeitverlust auftritt. Möglicherweise ist die Zahl der Einträge ja auch im Rahmen (dessen, was programmtechnisch benötigt wird), aber die Programmierung ist schlampig old-fashioned, alles mit Standardtabellen und sequentieller Suche? Dann wäre die richtige Lösung relativ offensichtlich.

Bei "LEAVE SCREEN." aufpassen: Damit beendet man nicht einen CALL SCREEN! Wenn ihr also abwechselnd CALL SCREEN und LEAVE SCREEN macht, dann wird der entsprechende Stapel immer größer, logisch. Um nach einem CALL SCREEN wieder ordnungsgemäß hinter den CALL SCREEN zurückzukehren und den Stackeintrag wieder abzubauen, muss es

Code: Alles auswählen.

LEAVE TO SCREEN '0'.
lauten.

Re: Programm wird langsam nach einiger Zeit

Beitrag von nickname8 (Specialist / 134 / 17 / 19 ) »
Hallo,
danke schonmal für die Antworten!

Eine TC ist in meinem Sprachgebrauch eine Transaktion. :)
black_adept hat geschrieben:
19.05.2020 11:01
Wie und über welche Daten ermittelst du den aktuellen Speicherverbrauch?
Ich ermittle alle Globalen Variablen des Programms und lese den Speicherverbrauch mit cl_abap_memory_utilities=>get_memory_size_of_object aus.
Wie gesagt, in der Größe (Speicherbelegung) der Variablen gibt es keine großen Änderungen die so einen Performanceeinbruch rechtfertigen würde.
DeathAndPain hat geschrieben:
19.05.2020 12:07
Interne Tabellen kann man auch anders checken. Du könntest das Programm einfach mal debuggen, wenn es langsam geworden ist. Dann schaust Du Dir im Debugger an, wieviele Einträge eure internen Tabellen jeweils haben (einfach die am Anfang mit DATA definierten internen Tabellen durchgehen und schauen, ob da Ausreißer mit unrealistisch hoher Zeilenzahl dabei sind). Oder Du gehst mal eine Zeitlang mit F5 und F6 durch und schaust, ob Du Befehle oder Codeblöcke (Unterroutinen) finden kannst, bei denen der Zeitverlust auftritt. Möglicherweise ist die Zahl der Einträge ja auch im Rahmen (dessen, was programmtechnisch benötigt wird), aber die Programmierung ist schlampig old-fashioned, alles mit Standardtabellen und sequentieller Suche? Dann wäre die richtige Lösung relativ offensichtlich.
Das ist leider nicht möglich, weil ich nicht an den Rechner drankomme und im Testsystem ein entsprechendes Beispiel zu konstruieren nicht möglich ist.
DeathAndPain hat geschrieben:
19.05.2020 12:07
Bei "LEAVE SCREEN." aufpassen: Damit beendet man nicht einen CALL SCREEN! Wenn ihr also abwechselnd CALL SCREEN und LEAVE SCREEN macht, dann wird der entsprechende Stapel immer größer, logisch. Um nach einem CALL SCREEN wieder ordnungsgemäß hinter den CALL SCREEN zurückzukehren und den Stackeintrag wieder abzubauen, muss es

Code: Alles auswählen.

LEAVE TO SCREEN '0'.
lauten.
Danke nochmal für den Hinweis. Ist auch so implementiert, war nur von mir falsch ausgedrückt.

Re: Programm wird langsam nach einiger Zeit

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Ich ermittle alle Globalen Variablen des Programms und lese den Speicherverbrauch mit cl_abap_memory_utilities=>get_memory_size_of_object aus.
Nachher ist es keine globale interne Tabelle, sondern eine, die in irgendeiner Unterroutine mit dem Befehl STATICS deklariert wurde... 😁
Das ist leider nicht möglich, weil ich nicht an den Rechner drankomme und im Testsystem ein entsprechendes Beispiel zu konstruieren nicht möglich ist.
Tja, das ist dann wohl ein Fall von "Wasch mich, aber mach mich nicht nass": Du sollst das Problem lösen, aber man will Dir dazu keine Debug-ohne-Replace-Rechte einräumen. Aus meiner Sicht muss da von Deiner Seite die Reaktion kommen, dass Du das Problem nicht beseitigen kannst, wenn man Dir nicht die Möglichkeit einräumt, es auf geeignete Weise zu analysieren.

Re: Programm wird langsam nach einiger Zeit

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Noch ein paar Fragen:
Läuft die Transaktion im Hintergrund oder ist es eine Dialoganwendung?
Werden "nur" Dynpros verwendet oder auch GUI-Controls?
Werden Befehle wie SUBMIT oder CALL FUNCTION ... DESTINATION 'NONE' darin verwendet?
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: Programm wird langsam nach einiger Zeit

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Misst du auch CL_ABAP_MEMORY_UTILITIES=>GET_TOTAL_USED_SIZE?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

3
Antw.
9989
Views
Zeit/Datum je Werk in tatsächliche Zeit umrechnen!
von hsiebert » 27.08.2007 11:23 • Verfasst in ABAP® für Anfänger
1
Antw.
1515
Views
PDF-Druck über ADS-Bausteine sehr langsam
von MartinZapf » 07.12.2015 14:25 • Verfasst in ABAP® für Anfänger
2
Antw.
1418
Views
Join über mehrere Tabellen sehr langsam
von deejey » 21.08.2019 03:36 • Verfasst in SAP - Allgemeines
9
Antw.
3656
Views
zeit messung
von kostonstyle » 18.09.2008 11:13 • Verfasst in ABAP® für Anfänger
4
Antw.
5446
Views
Zeit vergleichen
von Sebastian Hodapp » 17.11.2004 15:44 • Verfasst in Java & SAP®

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 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 3 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 3 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