UPDATE auf ANLC extremes Performanceproblem

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

UPDATE auf ANLC extremes Performanceproblem

Beitrag von crush23 (ForumUser / 15 / 0 / 0 ) »
Hallo!

Ich habe ein Problem mit dem Datenbank-Update auf der Tabelle ANLC.
Eine Notlösung dafür habe ich gefunden, das Thema würde ich aber gern aufklären.

Ausgangssituation:

UPDATE anlc SET:
KANSW = wa-kansw,
kaufw = wa-kaufw,
answl = wa-answl,
aufwv = wa-aufwv
WHERE bukrs = '1700'
and anln1 = wa-anln1
and anln2 = wa-anln2
and afabe = '20'
and gjahr = '2006'.

(wa wird aus einer internen tabelle mit ca. 500 Datensätzen geloopt und ist auch gefüllt, update im loop, datenformate sind auch okay)
Ein Datensatz zu Updaten, 4 Felder - normalerweise eine Sache von Millisekunden. Das System braucht mehrere Minuten, um dieses Update durchzuführen - absolut abnormal.
Im Debug ist mir dann aufgefallen, dass jedes Feld einzeln abgearbeitet wird.
D.h., dass der Debug-Pfeil zuerst bei
UPDATE anlc SET:
KANSW = wa-kansw,
stehen bleibt (dauert ca. eine Minute), dann springt er weiter in die nächste Zeile auf "kaufw = wa-kaufw," (wieder ne Minute) und so geht das dann weiter.

Ich habe dann vier Updates geschrieben, in denen ich jeweils nur ein Feld update.
UPDATE anlc SET:
KANSW = wa-kansw,
WHERE bukrs = '1700'
and anln1 = wa-anln1
and anln2 = wa-anln2
and afabe = '20'
and gjahr = '2006'.
- das selbe dann für die anderen drei felder -
Das funktioniert hervorragend, dauert keine Sekunde, sy-subrc = 0 und sy-dbcnt = 1 - alles so, wie es sein soll. Aber ich finds etwas abnormal, dass das einfach nicht mit 4 Werten in einem Update gleichzeitig geht.

Kann mir da jemand sagen, woran es liegen könnte?
(SAP R/3 Enterprise 4.6c)

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


Re: UPDATE auf ANLC extremes Performanceproblem

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
crush23 hat geschrieben:Im Debug ist mir dann aufgefallen, dass jedes Feld einzeln abgearbeitet wird.
das hast du dem System ja auch gesagt: "SET:"... 8)
Nimm mal den Doppelpunkt weg, dann ist es auch nur ein update!
Ob's dadurch schneller geht, weiss ich nicht, auf jedenfalls ist es dann so richtiger...

Beitrag von crush23 (ForumUser / 15 / 0 / 0 ) »
@ewx:

UPDATE ANLC SET:
anlc~knafa = wa_neu-knafa,
anlc~kansw = wa_neu-kansw,
anlc~kaufw = wa_neu-kaufw,
anlc~aufwv = wa_neu-aufwv
WHERE anlc~bukrs = wa_neu-bukrs
AND anlc~anln1 = wa_neu-anln1
AND anlc~anln2 = wa_neu-anln2
AND anlc~afabe = '20'
AND anlc~gjahr = '2006'.

"mit ohne" Doppelpunkt funktioniert es bei der Version mit den 4 Werten nicht, ist ja klar... bei den einzelnen hab ich sowieso keine Probleme, ob mit oder ohne Doppelpunkt...

Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
mit ohne" Doppelpunkt funktioniert es bei der Version mit den 4 Werten nicht, ist ja klar...
Wie lautet denn der Fehler?

Wenn Du den Doppelpunkt wegnimmst, musst Du natürlich auch die Kommas entfernen.

Beitrag von crush23 (ForumUser / 15 / 0 / 0 ) »
Hmm...
man gut, dass das Programm immer so lange gelaufen ist und ich nie nen Commit Work gemacht hab.

Hab die Kommata entfernt und auch den Doppelpunkt... Wäre sonst sehr kritisch gewesen... :P

UPDATE ANLC SET:
anlc~knafa = wa_neu-knafa,

anlc~kansw = wa_neu-kansw,
anlc~kaufw = wa_neu-kaufw,
anlc~aufwv = wa_neu-aufwv
WHERE anlc~bukrs = wa_neu-bukrs
AND anlc~anln1 = wa_neu-anln1
AND anlc~anln2 = wa_neu-anln2
AND anlc~afabe = '20'
AND anlc~gjahr = '2006'.

Das Fett gedruckte... deshalb hat es so lange gedauert... das Statement sorgt dafür, dass jeder Datensatz in der ANLC knafa = 0 bekommt (wa_neu-knafa = 0 vorher)... Damit hätte ich schön was zerschossen...
Zwar nur Test, aber Stress hätte es garantiert gegeben.
Die Admins hier hätte ich nur mit Unmengen von sehr Rumhaltigem Kuchen beruhigen können :)

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Dein Doppelpunkt ist schuld, nicht das fett gedruckte.
Mit dem doppelpunkt führst du folgende Befehle aus:

Code: Alles auswählen.

UPDATE ANLC SET anlc~knafa = wa_neu-knafa.

Code: Alles auswählen.

UPDATE ANLC SET anlc~kansw = wa_neu-kansw.

Code: Alles auswählen.

UPDATE ANLC SET anlc~kaufw = wa_neu-kaufw.

Code: Alles auswählen.

UPDATE ANLC SET anlc~aufwv = wa_neu-aufwv 
WHERE anlc~bukrs = wa_neu-bukrs 
AND anlc~anln1 = wa_neu-anln1 
AND anlc~anln2 = wa_neu-anln2 
AND anlc~afabe = '20' 
AND anlc~gjahr = '2006'.
Ich hoffe, du hast den Doppelpunkt nun entfernt. Ich bin aus deinem Posting nicht so ganz schlau geworden...

Beitrag von crush23 (ForumUser / 15 / 0 / 0 ) »
genau das hab ich damit gemeint...
deshalb hat das auch so lange gedauert :) ich hätte die tabelle richtig zerschossen sonst... zum glück hab ich das programm immer debugt und nie zu ende laufen lassen, sonst hätte das testsystem erstmal schön neu gebastelt werden müssen

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Eine dringende Empfehlung für "harte Updates".
(von jemandem der das oft macht)

Die betroffenen Tabellen vorher sichern !

Das geht in der Regel schnell und rettet evtl. den Allerwertesten...

Gruss
Daniel

Seite 1 von 1

Vergleichbare Themen

4
Antw.
4421
Views
Performanceproblem im Zusammenhang mit ALV-Tree
von Gast » 02.03.2005 13:10 • Verfasst in Dialogprogrammierung
5
Antw.
2568
Views
Performanceproblem mit SELECT SINGLE
von Andreas G » 10.05.2006 15:01 • Verfasst in ABAP® Core
0
Antw.
1211
Views
Native SQL an SQL-Server, sehr spezielles Performanceproblem
von lukey » 17.02.2010 21:27 • Verfasst in ABAP® Core
9
Antw.
9505
Views
DBTab Update from Table oder in Loop mit "Update Set" Oder ?
von RIG » 09.03.2018 11:27 • Verfasst in ABAP® Core
4
Antw.
3992
Views
Basis Update
von commolus » 18.06.2013 09:13 • Verfasst in Sonstige Module

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Regex in where
vor 5 Stunden von edwin 7 / 163
Daten an Tabelle binden
vor 19 Stunden von Bright4.5 3 / 1487

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

Regex in where
vor 5 Stunden von edwin 7 / 163
Daten an Tabelle binden
vor 19 Stunden von Bright4.5 3 / 1487

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822