An folgendem Beispielprogramm soll gezeigt werden, wie Sie mit Sperrobjekten Einträge einer Tabelle sperren bzw. entsperren können.
REPORT demo_transaction_enqueue MESSAGE-ID sabapdocu.
TABLES sflight.
DATA text(8) TYPE c.
DATA ok_code TYPE sy-ucomm.
CALL SCREEN 100.
MODULE init OUTPUT.
SET PF-STATUS 'BASIC'.
sflight-carrid = 'LH'. sflight-connid = '400'.
ENDMODULE.
MODULE exit INPUT.
LEAVE PROGRAM.
ENDMODULE.
MODULE enqueue
INPUT.
CASE ok_code.
WHEN 'ENQUEUE'.
CALL FUNCTION 'ENQUEUE_EDEMOFLHT'
EXPORTING
mode_sflight
= 'X'
carrid
= sflight-carrid
connid
= sflight-connid
fldate
= sflight-fldate
EXCEPTIONS
foreign_lock
= 1
system_failure
= 2
OTHERS
= 3.
CASE sy-subrc.
WHEN 0.
MESSAGE i888 WITH
'Enqueue successful'(001).
WHEN 1.
text =
sy-msgv1.
MESSAGE e888 WITH
'Record already'(002)
'locked
by'(003) text.
CALL TRANSACTION
'SM12'.
WHEN 2 OR 3.
MESSAGE e888 WITH
'Error in enqueue!'(004).
ENDCASE.
WHEN 'DEQUEUE'.
CALL FUNCTION 'DEQUEUE_EDEMOFLHT'
EXPORTING
mode_sflight
= 'X'
carrid
= sflight-carrid
connid
= sflight-connid
fldate
= sflight-fldate
EXCEPTIONS
OTHERS
= 1.
CASE sy-subrc.
WHEN 0.
MESSAGE i888 WITH
'Dequeue successful'(005).
WHEN 1.
MESSAGE e888 WITH
'Error in dequeue!'(006).
ENDCASE.
WHEN 'SM12'.
CALL TRANSACTION 'SM12'.
ENDCASE.
ENDMODULE.
MODULE select INPUT.
CASE ok_code.
WHEN 'SELECT'.
SELECT * FROM sflight WHERE carrid =
sflight-carrid
AND
connid = sflight-connid
AND
fldate = sflight-fldate.
ENDSELECT.
MESSAGE i888 WITH 'SY-SUBRC:'
sy-subrc.
ENDCASE.
ENDMODULE.
Die statische Folgedynpronummer von Dynpro 100 ist 100 und sein Layout ist nach Übernahme von Komponenten der Struktur SFLIGHT dem ABAP Dictionary wie folgt:
Die Bildschirmablauflogik ist:
PROCESS BEFORE OUTPUT.
MODULE init.
PROCESS AFTER INPUT.
MODULE exit AT EXIT-COMMAND.
CHAIN.
FIELD: sflight-carrid, sflight-connid,
sflight-fldate.
MODULE enqueue.
ENDCHAIN.
MODULE select.
Mit den Funktionscodes ENQUEUE und DEQUEUE des GUI-Status können die angegebenen Felder der Tabelle SFLIGHT gesperrt und entsperrt werden. Hierzu wird das speziell dafür erzeugte Sperrobjekt EDEMOFLHT über die entsprechenden Funktionsbausteinen ENQUEUE_EDEMOFLHT und DEQUEUE_EDEMOFLHT verwendet.
Weiterhin erlaubt der Funktionscode SELECT einen Zugriff auf die angegebenen Felder und der Funktionscode SM12 ruft die Transaktion SM12 zum Auflisten der Sperreinträge in der zentralen Sperrtabelle.
Nach dem erfolgreichen Sperren durch einen Benutzer kann kein anderer Benutzer die gleichen Datensätze nochmals sperren. Nichtsdestotrotz kann jeder Benutzer auf die gesperrten Datensätze mit SELECT zugreifen, falls das Programm nicht vorher die Sperren mit ENQUEUE_EDEMOFLHT überprüft.