[ABAP] DB-Tabelle sperren (lock / unlock)

* Lock für Table SCARR setzen
* Siehe auch Transaktion SM12
CALL FUNCTION 'ENQUEUE_E_TABLE'
  EXPORTING
    mode_rstable   = 'E'
    tabname        = 'SCARR'
  EXCEPTIONS
    foreign_lock   = 1
    system_failure = 2
    OTHERS         = 3.

IF sy-subrc = 0.
* Wenn Lock gesetzt, dann
*  UPDATE scarr FROM TABLE ...
  IF sy-subrc = 0.
    WRITE: / 'Update ok.'.
  ELSE.
    WRITE: / 'Fehler beim Update.'.
  ENDIF.

* Lock für Table SCARR aufheben
  CALL FUNCTION 'DEQUEUE_E_TABLE'
    EXPORTING
      mode_rstable = 'E'
      tabname      = 'SCARR'.
ELSE.
  WRITE: / 'Lock konnte nicht gesetzt werden.'.
ENDIF.