Commit und Rollback, auch bei RFC und BAPI

Getting started ... Alles für einen gelungenen Start.
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Commit und Rollback, auch bei RFC und BAPI

Beitrag von m.schwertle (ForumUser / 94 / 0 / 0 ) »
Hallo liebe Commnuity,

da ich gerade an einem Tool für die Benutzerverwaltung arbeite, ist es hier sehr wichtig, auf korrekte Umsetzung zu achten. Deshalb würde ich gerne mit

Code: Alles auswählen.

COMMIT WORK

*** und

ROLLBACK WORK
arbeiten, um bei Fehlern nur zum Teil korrekte Änderungen rückgängig zu machen.

Ich arbeite bisher (in vereinfachter Form dargestellt) wie folgt:

Code: Alles auswählen.

*** Anweisungen zum Ändern von Datenbanktabellen, z.B.
MODIFY zmytable FROM it_mytable.

*** Änderungen auswerten und ggf. ausführen
IF sy-subrc EQ 0.
  COMMIT WORK.
ELSE.
  ROLLBACK WORK.
ENDIF.
In wiefern liege ich denn damit richtig? Denn ich habe das Gefühl, dass die Änderungen auch bei Fehlern und Rollback in der Datenbank verbleiben.

Meine Folgefrage schliesst sich dem an: Ich arbeite zum Teil per RFC, um das Tool mehrmandantenfähig zu machen. Ausserdem verwende ich die Standard-BAPIs, um Benutzerstammdaten und Rollendaten zu ändern.

Ich bin hier der Meinung, dass ich in diesem Fall nicht einfach auf die Standardanweisungen COMMIT und ROLLBACK zugreifen kann, sondern die Anweisungen

Code: Alles auswählen.

BAPI_TRANSACTION_COMMIT

*** und

_ROLLBACK
verwenden muss. Von wo aus rufe ich die denn auf? Vom Hauptprogramm? Oder dort, wo die Änderungen gemacht werden? Wer hat hiermit Erfahrungen gemacht oder kann mich auf eine gute Seite verweisen?

Vielen Dank, liebe Grüsse,
Martin

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


Beitrag von olli-x (Specialist / 166 / 0 / 1 ) »
Hallo,

schau mal hier rein
http://www.minet.uni-jena.de/dbis/lehre ... /arend.pdf

Meines Erachtens steht da (fast) alles drin...

Viele Grüße,
Oliver

Beitrag von m.schwertle (ForumUser / 94 / 0 / 0 ) »
Klasse-- ganz vielen lieben Dank!!!

Beitrag von m.schwertle (ForumUser / 94 / 0 / 0 ) »
Gelten die Anwendungsregeln von COMMIT und ROLLBACK denn auch für MODIFY (was ja im Grunde je nach Vorhandensein eines entsprechenden Eintrags einen UPDATE bzw. INSERT durchführt)? Oder gilt es wirklich nur für die explziten Open-SQL Anweisungen UPDATE und INSERT?

Danke, Gruss,
Martin

Beitrag von m.schwertle (ForumUser / 94 / 0 / 0 ) »
Na dann versuche ich mir die Frage doch einfach mal selber zu beantworten (schade, dass sich keiner gefunden hat, wo dies doch das "für Anfänger"-Forum ist).

Auch wenn in der (ausserordentlich hilfreichen! - das sei an dieser Stelle nochmal gesagt) Dokumentation, deren Link olli-x freundlicherweise zur Verfügung gestellt hat, keine Aussage getroffen wird, ob die COMMIT und ROLLBACK Vorgänge sich auch auf MODIFY beziehen, gehe ich von folgendem aus:

MODIFY gesellt sich in die Reihe der OpenSQL Anweisungen. Und da sich COMMIT und ROLLBACK (wahrscheinlich) auch auf die OpenSQL Anweisungen beziehen, denke ich, dass deshalb implizit auch MODIFY mit den gängigen Methoden behandelt werden kann.

Any other opinions?

Beitrag von olli-x (Specialist / 166 / 0 / 1 ) »
Hallo Martin,

m.E. gilt das auch für Modify.

Probier es doch einfach mal aus:
Mach mit Modify eine Änderung, setz direkt einen Rollback ab und guck dir das Ergebnis an.

Viele Grüße,
Oliver

Beitrag von m.schwertle (ForumUser / 94 / 0 / 0 ) »
Jau danke, scheint zu klappen. Jetzt aber mal Back-to-Topic:

Wie gesagt, ich versuche, eine Benutzerverwaltung mandanten- und sogar systemübergreifend zu gestalten. Ich habe der PDF-Datei entnommen, dass sich hierfür besonders der tRFC (transaktionaler RFC) eignet, da er "verschiedene Funktionsbausteine für die Remote-Verarbeitung zu einer logischen Einheit (SAP-LUW) zusammenfassen" kann (siehe Seite 43).

Da das Programm schon sehr fortgeschritten ist, möchte ich an dieser Stelle nicht einfach drauf losarbeiten und jede Menge Änderungen machen, bevor ich mich nicht doch erstmal hier ein wenig absicher...

Folgenderweise würde ich vorgehen (der Einfachheit halber beschränke ich mich jetzt auf Teile des Programms):

Hauptprogramm

Code: Alles auswählen.

PROGRAMM zchangeuser.

*** Typ- und Datendeklaration

*** Heraussuchen eines Benutzers (vereinfacht)
user = 'TESTUSER'.

*** RFC-Baustein aufrufen
CALL FUNCTION 'zrfcchangeuser'
  IN BACKGROUND TASK " als tRFC aufrufen
  DESTINATION 'remote'
  EXPORTING
    user = user

*** Wenn alles okay, dann DB-Commit
COMMIT WORK.
RFC-Baustein im System 'remote'

Code: Alles auswählen.

FUNCTION zrfcchangeuser.

*** Typ- und Datendeklaration

*** SAP-BAPI für Benutzeränderung aufrufen
CALL FUNCTION 'BAPI_USER_CHANGE'
  EXPORTING
    username = user
    address = myaddress
    addressx = myaddressx
    logondata = mylogondata
    logondatax = mylogondatax
    defaults = mydefaults
    defaultsx = mydefaultsx
  TABLES
    return = myreturn
    parameter = myparameter.

*** Wenn Fehler, dann DB-Rollback
IF sy-subrc NE 4.
  ROLLBACK WORK.
ENDIF.
Folgende Fragen ergeben sich jetzt für mich:
· Ist diese Vorgehensweise logisch und korrekt?
· Kann damit sichergestellt werden, dass die Änderungen entweder vollständig korrekt oder gar nicht vollzogen wird ("atomarer Prozess")?
· Ist die Rollback-Anweisung richtig? An anderer Stelle in der PDF wurde darauf hingewiesen, dass (allerdings bei Verbuchungsbündelung) keine explizite Rollback-Anweisung erfolgen sollte. Ist dies auf in meinem Fall problematisch?

Wahrscheinlich fallen mir noch weitere Fragen ein. Ich werde sie posten wenn ich Ihnen begegne.

Ich freue mich auf Antworten und Gedankenanstösse,
Gruss, Martin

Seite 1 von 1

Vergleichbare Themen

37
Antw.
8381
Views
Problem mit COMMIT / ROLLBACK
von ralf.wenzel » 30.11.2018 15:37 • Verfasst in ABAP® Core
7
Antw.
3973
Views
Sperrobjekte: Freigeben von Sperren bei Commit/Rollback ?
von MNordlicht » 09.12.2005 13:25 • Verfasst in ABAP® Core
5
Antw.
1967
Views
COMMIT WORK bei 2 BAPI
von autohandel7 » 11.11.2020 11:16 • Verfasst in ABAP® für Anfänger
7
Antw.
6227
Views
BAPI speichert ohne COMMIT
von said1980 » 28.02.2006 14:51 • Verfasst in ABAP® für Anfänger
1
Antw.
1883
Views
Rollback bei BAPIs
von Troilus » 19.02.2008 13:53 • 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

Dialog-Container mit Toolbar/Status
vor 17 Stunden von black_adept gelöst 23 / 3832
User Exit EXIT_RQCPRM10_001
vor 18 Stunden von a-dead-trousers 2 / 324
Trennen Strasse und Hausnummer
Gestern von payten 13 / 10693
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1377

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

Dialog-Container mit Toolbar/Status
vor 17 Stunden von black_adept gelöst 23 / 3832
User Exit EXIT_RQCPRM10_001
vor 18 Stunden von a-dead-trousers 2 / 324
Trennen Strasse und Hausnummer
Gestern von payten 13 / 10693
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1377

Unbeantwortete Forenbeiträge

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