Problem mit COMMIT / ROLLBACK


Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Moderatoren: Jan, Steff

Problem mit COMMIT / ROLLBACK

Beitragvon ralf.wenzel » 30.11.2018, 15:37

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
ralf.wenzel
Top Expert
 
Beiträge: 3306
Registriert: 18.09.2004, 13:03
Wohnort: Hamburg
Dank erhalten: 201 mal
Ich bin: Freiberufler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Problem mit COMMIT / ROLLBACK

Beitragvon Dele » 30.11.2018, 16:13

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.
Dele
Specialist
 
Beiträge: 307
Registriert: 06.05.2005, 11:07
Dank erhalten: 47 mal

Re: Problem mit COMMIT / ROLLBACK

Beitragvon ralf.wenzel » 30.11.2018, 16:18

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
ralf.wenzel
Top Expert
 
Beiträge: 3306
Registriert: 18.09.2004, 13:03
Wohnort: Hamburg
Dank erhalten: 201 mal
Ich bin: Freiberufler/in

Re: Problem mit COMMIT / ROLLBACK

Beitragvon black_adept » 30.11.2018, 17:15

Könnte man dafür evtl. das ABAP Daemon Framework verwenden?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 3139
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 534 mal
Ich bin: Freiberufler/in

Re: Problem mit COMMIT / ROLLBACK

Beitragvon ralf.wenzel » 30.11.2018, 17:50

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
ralf.wenzel
Top Expert
 
Beiträge: 3306
Registriert: 18.09.2004, 13:03
Wohnort: Hamburg
Dank erhalten: 201 mal
Ich bin: Freiberufler/in

Re: Problem mit COMMIT / ROLLBACK

Beitragvon black_adept » 30.11.2018, 20:15

Dann evtl APC? Die gibt es doch schon länger
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 3139
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 534 mal
Ich bin: Freiberufler/in

Re: Problem mit COMMIT / ROLLBACK

Beitragvon ralf.wenzel » 01.12.2018, 01:53

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
ralf.wenzel
Top Expert
 
Beiträge: 3306
Registriert: 18.09.2004, 13:03
Wohnort: Hamburg
Dank erhalten: 201 mal
Ich bin: Freiberufler/in

Re: Problem mit COMMIT / ROLLBACK

Beitragvon deejey » 01.12.2018, 05:11

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?
deejey
Specialist
 
Beiträge: 150
Registriert: 31.07.2016, 11:20
Dank erhalten: 10 mal
Ich bin: Entwickler/in

Re: Problem mit COMMIT / ROLLBACK

Beitragvon black_adept » 01.12.2018, 17:48

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
black_adept
Top Expert
 
Beiträge: 3139
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 534 mal
Ich bin: Freiberufler/in

Re: Problem mit COMMIT / ROLLBACK

Beitragvon a-dead-trousers » 02.12.2018, 09:04

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.07
Basis: 7.40
a-dead-trousers
Top Expert
 
Beiträge: 3107
Registriert: 07.02.2011, 13:40
Dank erhalten: 767 mal
Ich bin: Entwickler/in

Re: Problem mit COMMIT / ROLLBACK

Beitragvon black_adept » 02.12.2018, 19:50

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.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Für diese Nachricht hat black_adept einen Dank bekommen :
a-dead-trousers
black_adept
Top Expert
 
Beiträge: 3139
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 534 mal
Ich bin: Freiberufler/in

Re: Problem mit COMMIT / ROLLBACK

Beitragvon a-dead-trousers » 03.12.2018, 07:50

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.07
Basis: 7.40
a-dead-trousers
Top Expert
 
Beiträge: 3107
Registriert: 07.02.2011, 13:40
Dank erhalten: 767 mal
Ich bin: Entwickler/in

Re: Problem mit COMMIT / ROLLBACK

Beitragvon ralf.wenzel » 03.12.2018, 07:55

Passiert.... ;)


Ralf
ralf.wenzel
Top Expert
 
Beiträge: 3306
Registriert: 18.09.2004, 13:03
Wohnort: Hamburg
Dank erhalten: 201 mal
Ich bin: Freiberufler/in

Re: Problem mit COMMIT / ROLLBACK

Beitragvon Dele » 03.12.2018, 12:01

Und wie wäre es mit TRANSFER to dataset. Ist zumindest eine relative simple Methode.
Dele
Specialist
 
Beiträge: 307
Registriert: 06.05.2005, 11:07
Dank erhalten: 47 mal

Re: Problem mit COMMIT / ROLLBACK

Beitragvon ewx » 03.12.2018, 12:32

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.
ewx
Top Expert
 
Beiträge: 3839
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 322 mal

Nächste

Zurück zu ABAP® Core

  Aktuelle Beiträge   
Umrechnung Stück in KG
vor 2 Stunden von Nordlicht 0 Antw.
gelöst Sel.Screen in Subscreen - VA06
vor 16 Stunden von bapimueller 2 Antw.
gelöst Prüfen Konfiguration Kundenauftrag gene Type
vor 22 Stunden von mfromg 0 Antw.
Auswertung Orders erhalt per Mail oder FAX oder beides
vor 16 Stunden von ewx 2 Antw.
SAP und Gamification
Gestern von ewx 1 Antw.

  Ähnliche Beiträge beta
Sperrobjekte: Freigeben von Sperren bei Commit/Rollback ?
12.12.2005, 11:10 von MNordlicht 7 Antw.
commit work problem bei Verbucherbausteine
16.06.2008, 08:30 von dimes 11 Antw.
BAPI_ACC_DOCUMENT_POST und Rollback
24.08.2009, 10:19 von Frank Meyer 2 Antw.
Joberstellung ohne COMMIT
20.06.2007, 13:50 von Thomas R. 4 Antw.
Nachrichtenfindung und COMMIT WORK
21.01.2008, 13:25 von schmitzandreas 0 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: Google Adsense [Bot]