Objektorientierter Transaktionsmodus
report DEMO_TRANSACTION_SERVICE.
class CL_OS_SYSTEM definition load.
data TM type ref to IF_OS_TRANSACTION_MANAGER.
data T type ref to IF_OS_TRANSACTION.
data WA_SPFLI type SPFLI.
data: CONNECTION type ref to CL_SPFLI_PERSISTENT,
AGENT type ref to CA_SPFLI_PERSISTENT.
data: EXC type ref to CX_ROOT,
TEXT type STRING.
class TH definition.
public section.
methods HANDLE
class TH implementation.
method HANDLE.
if status =
data H type ref to TH.
load-of-program.
CL_OS_SYSTEM=>INIT_AND_SET_MODES( I_EXTERNAL_COMMIT = OSCON_FALSE
I_UPDATE_MODE = OSCON_DMODE_DEFAULT ).
start-of-selection.
TM = CL_OS_SYSTEM=>GET_TRANSACTION_MANAGER( ).
T = TM->CREATE_TRANSACTION( ).
create object H.
set handler H->HANDLE for T.
WA_SPFLI-CARRID = 'LH'.
WA_SPFLI-CONNID = '123'.
AGENT = CA_SPFLI_PERSISTENT=>AGENT.
try.
T->START( ).
CONNECTION = AGENT->GET_PERSISTENT( I_CARRID = WA_SPFLI-CARRID
I_CONNID = WA_SPFLI-CONNID ).
WA_SPFLI-DEPTIME = CONNECTION->GET_DEPTIME( ).
WA_SPFLI-ARRTIME = CONNECTION->GET_ARRTIME( ).
WA_SPFLI-DEPTIME = WA_SPFLI-DEPTIME + 3600.
WA_SPFLI-ARRTIME = WA_SPFLI-ARRTIME + 3600.
CONNECTION->SET_DEPTIME( WA_SPFLI-DEPTIME ).
CONNECTION->SET_ARRTIME( WA_SPFLI-ARRTIME ).
T->END( ).
catch CX_ROOT into EXC.
TEXT = EXC->GET_TEXT( ).
message TEXT type 'I'.
endtry.
In diesem Beispiel wird eine Transaktion im objektorientierten Modus durchgeführt. Hierfür wird im Programmkonstruktor der Parameter I_EXTERNAL_COMMIT der Systemdienstmethode INIT_AND_SET_MODES auf OSCON_FALSE gesetzt. Nach der Erzeugung eines Transaktionsmanagers und einer Transaktion (dies ist gleichzeitig die Top-Level-Transaktion) wird diese mit START gestartet und mit END beendet. Während der Transaktion werden die Attribute DEPTIME und ARRTIME eines persistenten Objkets der Klasse CL_SPFLI_PERSISTENT geändert. Der Aufruf der Methode END löst implizit ein COMMIT WORK aus und schreibt die Änderung im asynchronen Verbuchungsmodus auf der Datenbank fest. Die Methode HANDLE der lokalen Klasse TH reagiert auf das Ende der Transaktion und wertet deren Status aus.