BAPI_TRANSACTION_COMMIT in aufgerufener Transaktion ersetzen

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

BAPI_TRANSACTION_COMMIT in aufgerufener Transaktion ersetzen

Beitrag von gs3rr4 (ForumUser / 61 / 23 / 0 ) »
Hallo!

Ich muss eine Transaktion aufrufen. In dieser Transaktion wird ein BAPI verwendet (BAPI_MATERIAL_SAVEDATA). Direkt danach wird ein BAPI_TRANSACTION_COMMIT ausgeführt.

Mein Problem ist, dass nach einem COMMIT WORK (was innerhalb von BAPI_TRANSACTION_COMMIT ausgeführt wird) die aufgerufene Transaktion beendet wird und der Benutzer in die ursprüngliche Transaktion zurückgeworfen wird.

Ich habe es in anderen Fällen geschafft, dies zu umgehen, indem ich den Funktionsbaustein DB_COMMIT verwendet habe. Doch jetzt funktioniert das nicht mehr.

Ich habe in SM12 nachgeschaut. Dort sind einige Tabellen gesperrt. Wenn ich den Code mit dem ursprünglichen BAPI_TRANSACTION_COMMIT ausführe, sehe ich, dass die Sperren ebenfalls gelöst werden.

Was ich dann ausprobiert habe, ist DEQUEUE_ALL. Die Sperren sind auf diese Weise weg, aber jetzt funktioniert das aufgerufene BAPI nicht. Das Material wird nicht so hinzugefügt, wie es geschieht, wenn BAPI_TRANSACTION_COMMIT verwendet wird.

Ich werde noch verrückt. Irgendwelche Ideen? =/

Code: Alles auswählen.

  call function 'BAPI_MATERIAL_SAVEDATA'
    exporting
      headdata     = lv_mathead
    tables
      extensionin  = lt_extensionin
      extensioninx = lt_extensioninx.
  if sy-subrc ne 0.
    message id sy-msgid type sy-msgty number sy-msgno
          with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    call function 'BAPI_TRANSACTION_ROLLBACK'.

  else.
*      call function 'BAPI_TRANSACTION_COMMIT'.

    call function 'DB_COMMIT'.
    wait up to 3 seconds.

    call function 'DEQUEUE_ALL'.

  endif.

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


Re: BAPI_TRANSACTION_COMMIT in aufgerufener Transaktion ersetzen

Beitrag von black_adept (Top Expert / 4102 / 128 / 945 ) »
Benutzt du "CALL TRANSACTION USING t_bdcdata OPTIONS FROM ctu_params"?

Wenn ja, dann bitte im ctu_params das Feld RACOMMIT auf "X" setzen.
RACOMMIT = "COMMIT WORK ist kein Ende bei CALL TRANSACTION USING..."

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
gs3rr4

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: BAPI_TRANSACTION_COMMIT in aufgerufener Transaktion ersetzen

Beitrag von gs3rr4 (ForumUser / 61 / 23 / 0 ) »
Vielen Dank, du hast mir sehr geholfen :)

Seite 1 von 1

Vergleichbare Themen

0
Antw.
9569
Views
CALL TRANSACTION und COMMIT WORK
von edwin » 09.06.2007 13:58 • Verfasst in Tips + Tricks & FAQs
5
Antw.
2065
Views
COMMIT WORK bei 2 BAPI
von autohandel7 » 11.11.2020 11:16 • Verfasst in ABAP® für Anfänger
7
Antw.
6294
Views
BAPI speichert ohne COMMIT
von said1980 » 28.02.2006 14:51 • Verfasst in ABAP® für Anfänger
6
Antw.
6441
Views
Commit und Rollback, auch bei RFC und BAPI
von m.schwertle » 21.11.2007 08:23 • Verfasst in ABAP® für Anfänger
2
Antw.
1730
Views
Call Transaction: Wie wurde Transaktion verlassen?
von toto » 03.04.2008 15:15 • Verfasst in ABAP® Core

Über diesen Beitrag



Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

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.