FM ENQUE_DELETE を使用してみましたが、一部のテーブル エントリのロックを削除するために期待される結果が得られません。
さまざまな種類のロックがあり、それらのテーブル エントリをロックしたプログラムがロック タイプ 'E' を使用していることに気付きました。
ロック タイプを 'S' (共有) に設定して、最初のプログラムがテーブル エントリを「ロック」できるようにできますが、2 番目のプログラムが実行されると、テーブル ロックを削除できますか?
FM ENQUE_DELETE を使用してみましたが、一部のテーブル エントリのロックを削除するために期待される結果が得られません。
さまざまな種類のロックがあり、それらのテーブル エントリをロックしたプログラムがロック タイプ 'E' を使用していることに気付きました。
ロック タイプを 'S' (共有) に設定して、最初のプログラムがテーブル エントリを「ロック」できるようにできますが、2 番目のプログラムが実行されると、テーブル ロックを削除できますか?
Ok。調査を進めるべきだった。
私はこれのための方法を見つけました。FM の ENQUE_REPORT/READ/DELETE でのデバッグを通じて、外部ロックを取得して削除する方法を見つけ、現在のユーザーが外部ロックをロックしたユーザーであるとプログラムに想定させました。=]
特定のテーブル ロック エントリを手動で明示的に削除する必要はありません。常に生成された FM のみを使用し、enqueue_...
dbdequeue_...
レコードをロック/ロック解除してください!
これにより、以前に作成されたロック エントリが削除されます。
使用しているテーブルについては、SE11 でロック オブジェクトを確認してください。
参照 : http://www.sapnuts.com/courses/core-abap/open-sql/using-lock-objects.html