Mit Hilfe von SAP Sperrobjekten, können mehrfache gleichzeitige Bearbeitung von Tabelleneinträgen vermieden werden, die ggf. zu fehlerhaften Datensätzen oder Verarbeitungsfehler in ABAP Programmen führen können. Sperrobjekte können mit der Namenskonvention EZ oder EY im Data Dictionary (SE11) angelegt werden.
Mit dem Standard SAP Sperrobjekt „E_TABLE“ kann eine Sperrabfrage realisiert werden. Die Sperrobjekte werden in ABAP Programmen per Funktionsbaustein aufgerufen.
Die ENQUEUE_E_TABLE Funktion führt dazu das eine Tabellensperre in der SM12 erzeugt wird. Der Funktion muss die Tabelle sowie der entsprechende Sperrmodus übermittelt werden. Die DEQUEUE_E_TABLE führt zur Aufhebung der Tabellensperre. Die Idee ist es Tabellenveränderungslogiken wie MODIFY, UPDATE, DELETE durch eine solche Tabellensperre zu umklammern bzw. zu schützen.
Nach Programmaufruf ist der Sperreintrag in der Transaktion SM12 erzeugt.
Wenn ein anderer Anwender nun ebenfalls Datensätze aus dieser Tabelle bearbeiten will, soll dieser eine Meldung erhalten das die Tabelle bereits in Bearbeitung ist. Dies geschieht nicht automatisch und muss über den sy-subrc Rückgabeparameter der ENQUEUE Funktionsabfrage abgeprüft werden.
Hier am Beispiel eines anderen Programmes, das ebenfalls die Tabelle bearbeitet. Die ENQUEUE Funktion wird feststellen das bereits eine Sperre auf der Tabelle vorliegt. (sy-subrc ungleich 0). Hier sollte dann dem Anwender eine Nachricht angezeigt werden und die Programmverarbeitung abgebrochen bzw. nicht durchführbar gemacht werden, sodass es nicht zu Inkonsistenzen, fehlerhaften Datensätzen, redundanten Datensätze oder möglichen Laufzeitfehlern kommen kann.
Hier die Fehlermeldung im Rahmen der Programmausführung.