Problem mit COMMIT / ROLLBACK

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
38 Beiträge • Seite 1 von 3 (current) Nächste
38 Beiträge Seite 1 von 3 (current) Nächste

Problem mit COMMIT / ROLLBACK

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Moin,

wir spielen hier gerade am BAL herum und haben "nebenher" eine zusätzliche Clustertabelle fürs BAL. Unser Problem ist: Ich muss nun unabhängig vom Programmlauf Daten in diese Clustertabelle schreiben. Also zum Beispiel lange bevor ich entscheide, ob ein COMMIT WORK oder ein ROLLBACK gemacht werden soll. Ich brauche quasi einen COMMIT WORK ausschließlich für diese Clustertabelle. Mein erster Ansatz war, einen Funktionsbaustein mit STARTING NEW TASK zu feuern, aber der löst leider einen COMMIT WORK in Ursprungsprozess aus (genau das will ich ja verhindern). Ohne diesen COMMIT wäre das genau das, was ich will: Ich starte einen neuen "Prozess", dem ich die Daten übergebe und der schreibt die weg und macht den COMMIT nur für diese Daten. Leider macht der implizite COMMIT mir das alles kaputt, weil dann halbgare Daten in Tabellen geschrieben werden.

Wie kriege ich das hin, dass ich einen COMMIT nur für die Daten erhalte, die in meine Clustertabelle geschrieben werden sollen?


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Re: Problem mit COMMIT / ROLLBACK

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Mein erster Ansatz wäre, wenn möglich die Operationen auf der Clustertabelle zu sammeln und erst hinter dem Commit WORK oder ROLLBACK WORK tatsächlich auszuführen.

Ein zweiter Ansatz wäre, "Open SQL - Secondary Database Connections". Man kann nämlich auf die SAP-DB auch eine zweite Connection öffnen. Allerdings habe ich das selbst noch nicht gemacht und kann nix zum Aufwand sagen.
Service Connections to the SAP Standard Database

In addition to the secondary database connections stored in database table DBCON, service connections to the SAP standard database can also be used. The name of this connection is R/3*name, which consist of the prefix R/3* and a user-defined name. A service connection automatically uses all the settings of the standard database connection.
Notes
◾Service connections R/3*name can never connect to databases other than SAP standard databases. The freely definable name is not associated with the entries in the database table DBCON and is used only to identify a service connection. Hence, specifying a database connection from the database table DBCON for name does not mean that this database connection is used.
◾Service connections for the SAP standard database are useful for performing operations in a database LUW, which does not depend on the LUW standard connection. It should be noted that the current isolation level is responsible for determining whether a read from a database LUW can access data modified in a different database LUW, before this data is committed using a database commit.
◾Service connections to the SAP standard database can also be used for calling an AMDP procedure implementation, if this method has an input parameter with the predefined name connection.

Re: Problem mit COMMIT / ROLLBACK

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Dele hat geschrieben:Mein erster Ansatz wäre, wenn möglich die Operationen auf der Clustertabelle zu sammeln und erst hinter dem Commit WORK oder ROLLBACK WORK tatsächlich auszuführen.
Und bei einem Dump ist alles weg ;)

Das mit der Db-Connection sehe ich mir mal an. Danke.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Problem mit COMMIT / ROLLBACK

Beitrag von black_adept (Top Expert / 4090 / 127 / 940 ) »
Könnte man dafür evtl. das ABAP Daemon Framework verwenden?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Problem mit COMMIT / ROLLBACK

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
black_adept hat geschrieben:Könnte man dafür evtl. das ABAP Daemon Framework verwenden?
7.52, wir arbeiten derzeit auf einem 7.51 :-(


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Problem mit COMMIT / ROLLBACK

Beitrag von black_adept (Top Expert / 4090 / 127 / 940 ) »
Dann evtl APC? Die gibt es doch schon länger
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Problem mit COMMIT / ROLLBACK

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
black_adept hat geschrieben:Dann evtl APC? Die gibt es doch schon länger
Ich frag mal doof: Wie kommst du auf APC? Welche Idee hast du konkret dazu?

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Problem mit COMMIT / ROLLBACK

Beitrag von deejey (Specialist / 422 / 129 / 45 ) »
Das konnte sogar meine geliebte AS400 in den 80ern, zwar lief die Tabelle unter DB-Journal wegen Nachvollziehbarkeit, aber man konnte im Programm explizit die COMMIT-Steuerung für Tabellen unterbinden, das geht bestimmt auch unter Oracle, nur kommt man nicht ran?

Re: Problem mit COMMIT / ROLLBACK

Beitrag von black_adept (Top Expert / 4090 / 127 / 940 ) »
ralf.wenzel hat geschrieben:Ich frag mal doof: Wie kommst du auf APC? Welche Idee hast du konkret dazu?
Ralf
Bei Programmstart einen Channel öffnen und eine Backgroundtask starten welche auf dem Channel lauscht. Dann statt direkter Fortschreibung in die Tabellen die fortzuschreibende Information in den Channel werfen und der Backgroundtask holt sich die Daten und schreibt sie mit Commit work weg. Damit sollte die Fortschreibung von deinem Prozess entkoppelt sein. So zumindest die Idee.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Problem mit COMMIT / ROLLBACK

Beitrag von a-dead-trousers (Top Expert / 4396 / 223 / 1182 ) »
ralf.wenzel hat geschrieben:Mein erster Ansatz war, einen Funktionsbaustein mit STARTING NEW TASK zu feuern, aber der löst leider einen COMMIT WORK in Ursprungsprozess aus.
Hast du es schon mal mit SUBMIT versucht? Das sollte keinen impliziten COMMIT auslösen, aber trotzdem eine neue LUW beginnen.
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: Problem mit COMMIT / ROLLBACK

Beitrag von black_adept (Top Expert / 4090 / 127 / 940 ) »
https://help.sap.com/doc/abapdocu_751_index_htm/7.51/de-DE/abapsubmit.htm hat geschrieben:SUBMIT beendet unabhängig vom Zusatz AND RETURN nicht die aktuelle Datenbank-LUW. Ein Datenbank-Commit oder Datenbank-Rollback im aufgerufenen Programm wirkt genauso wie im aktuellen Programm.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
a-dead-trousers

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Problem mit COMMIT / ROLLBACK

Beitrag von a-dead-trousers (Top Expert / 4396 / 223 / 1182 ) »
black_adept hat geschrieben:
https://help.sap.com/doc/abapdocu_751_index_htm/7.51/de-DE/abapsubmit.htm hat geschrieben:SUBMIT beendet unabhängig vom Zusatz AND RETURN nicht die aktuelle Datenbank-LUW. Ein Datenbank-Commit oder Datenbank-Rollback im aufgerufenen Programm wirkt genauso wie im aktuellen Programm.
MIST... mir wird grad übel :mrgreen:
Sch....
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: Problem mit COMMIT / ROLLBACK

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Passiert.... ;)


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Problem mit COMMIT / ROLLBACK

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Und wie wäre es mit TRANSFER to dataset. Ist zumindest eine relative simple Methode.

Re: Problem mit COMMIT / ROLLBACK

Beitrag von ewx (Top Expert / 4848 / 312 / 642 ) »
Was hindert dich denn daran, den { Commit | Rollback } auszuführen und danach die Daten in deine (ich frag lieber nicht, warum du eine) Clustertabelle (nimmst...) zu schreiben?

Alternativ hätte ich eine sehr überdimensionierte Idee:
Starte vor Verarbeitung einen Batch job, der mittels AMC auf einem Kanal horcht, ob es Protokolldaten zum Schreiben gibt.
Anstelle des Protokolls schiebst du nun eine AMC-Nachricht an den "Protokollzuhörer", der im Hintergrund läuft. Bin mir nicht 100%ig sicher, ob das klappt, wüsste aber nichts, was dagegen spricht.

Vergleichbare Themen

6
Antw.
6375
Views
Commit und Rollback, auch bei RFC und BAPI
von m.schwertle » 21.11.2007 08:23 • Verfasst in ABAP® für Anfänger
7
Antw.
3974
Views
Sperrobjekte: Freigeben von Sperren bei Commit/Rollback ?
von MNordlicht » 09.12.2005 13:25 • Verfasst in ABAP® Core
11
Antw.
7732
Views
commit work problem bei Verbucherbausteine
von dimes » 12.06.2008 14:37 • Verfasst in ABAP® Core
1
Antw.
1883
Views
Rollback bei BAPIs
von Troilus » 19.02.2008 13:53 • Verfasst in ABAP® für Anfänger
2
Antw.
1880
Views
BAPI_ACC_DOCUMENT_POST und Rollback
von Frank Meyer » 21.08.2009 15:59 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

Trennen Strasse und Hausnummer
vor 46 Minuten von DeathAndPain 14 / 10738
Dialog-Container mit Toolbar/Status
vor 57 Minuten von DeathAndPain gelöst 24 / 3871
User Exit EXIT_RQCPRM10_001
vor 20 Stunden von a-dead-trousers 2 / 343
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1393

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

Trennen Strasse und Hausnummer
vor 46 Minuten von DeathAndPain 14 / 10738
Dialog-Container mit Toolbar/Status
vor 57 Minuten von DeathAndPain gelöst 24 / 3871
User Exit EXIT_RQCPRM10_001
vor 20 Stunden von a-dead-trousers 2 / 343
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1393

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2925
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9518