インフリー技術情報発信ブログ

ERP(SAP)導入コンサルティング、ABAP開発、ホームページ制作、WEBシステム構築などを手掛ける、株式会社インフリーです。

排他処理について

 

 

今回は、SAPの排他処理(データベースロック)についてです。

 

○排他処理とは・・・・

あるデータベーステーブル上の情報を更新するときに、他のプログラムで更新できないようにする処理のことを指します。

 

なんとなくイメージがわかない場合は、Excelファイルを想像してください。

 

・・・ひとつのExcelファイルを何人かで、同時に開こうとする場合、1人目はいつも通り開けます。

2人目が開こうとすると・・・・読み取り専用でしか開けません。

3人目が開いても、読み取り専用でしか開けません。

 

これは、1人目の人が開いたときに、排他処理が行われているために、2人目、3人目には、変更できないようになっているのです。

 

このような排他処理には、一般的に、物理ロックと論理ロックの2種類が存在します。ABAPでは、基本的に論理ロックが用いられます。

 

論理ロックとは、文字通り論理的にロックすることです。

つまり・・・・・・・・・・・・・

 

『この「テーブル」のこの「条件」でロックしています』という情報を

メモリ上に保持することで、排他を実現しています。

 

各プログラムは、テーブルを更新しようとする毎に、この情報を参照して、他のプログラムにロックされていないかどうかを判断します。

 

ABAPでの排他処理を行うには・・・・

登録された『ロックオブジェクト』の汎用モジュールを、コールして実施します。

 

『ロックオブジェクト』は、基本的にテーブル毎に登録されます。

また、『ロックオブジェクト』を登録することで、2種類の汎用モジュールが自動生成されます

 

1.         ロックをかける汎用モジュール(ENQUEUE_~)

2.         ロックを解除する汎用モジュール(DEQUEUE~)

 

次回は、ロックオブジェクトの汎用モジュールについて、記載予定です。

インフリー技術情報発信ブログ © 2013 Frontier Theme