SAPで伝票やマスタの変更を行おうとすると、「ユーザ○○は伝票××を処理中です」といったエラーが出ることがある。
十中八九は、他人がその伝票やマスタを変更モードで表示中のため、自分は触れないという状態だ。(あるいは複数画面で自分自身が掴んでいる、という場合も多いが)
しかし、ごく稀にロックエントリが残留してしまい、誰もオブジェクトを掴んでいないはずなのにロックエラーが出てしまうことがある。
今回はそうした時のエラー対処について解説する。
※実行の際は必ず技術者と相談してください。
SAPでロックエントリを解除する方法
オブジェクトロックを解除したい – ロックエントリ(Tr:SM12)
オブジェクトがロックされているとき、Tr:SM12画面からロックエントリを確認できる。
ロックしているユーザを指定して「一覧」ボタンを押すことで、いま現在ユーザがロックしている対象オブジェクトが表示される。
メニューバーの【ロックエントリ >全削除】を押して、対象のロックを解除できる。
・注意点
個別にロックエントリの行を選んでゴミ箱アイコンのボタンから削除することも出来るが、あまりこれは実施しない方が良い。
例えば購買発注を触っている場合は、テーブルEKKOとEKPOのロックエントリが生じている。
片方だけエントリ削除すると何らかの不整合が発生する場合もある。
また、ロックエントリの削除は、必ずロックしているユーザーがログアウトしていることを確認してから実施しよう。ユーザが操作中の状態でもロックエントリは解除できてしまうが、これもデータ不整合の原因になりかねないため。
関連して、ユーザを強制ログオフさせる方法についても次にご紹介する。
ユーザ強制ログオフの方法 – ユーザ一覧(Tr:SM04)
ユーザ一覧(Tr:SM04)の画面を起動すると、現在ログオンしているユーザが一覧で表示される。
ユーザIDの横にチェックボックスがあるので、強制ログオフさせる対象のユーザを選択する。
メニューバーの【ユーザ >ログオフ】を選択すると、選択したユーザを強制的にログオフさせることができる。
本来使用すべきでないユーザが使用していたり、ログオフさせてでもそのオブジェクトを自分が更新しないといけないとき、ユーザ締め出しをする必要があるなどの場合は、この機能を使って強制ログオフさせられる。
実行中プロセスを中止させたい – プロセス一覧(Tr:SM50)
ユーザが使用中のプロセスを解除するのはプロセス一覧(Tr:SM50)からでも可能。
プロセス一覧画面では、現在アプリケーション上で走っているプロセスが表示される。
たとえば発注伝票を参照しているのであれば、発注参照のレポートプログラムIDと使用中ユーザが表示される。
プロセスのチェックボックスを選択し、メニューバーの【処理 >中止(コアダンプ出力)】でプロセスを中止させることが出来る。
中止させられた側のユーザの画面では、セッション強制終了を伝えるメッセージが表示される。
・特定ユーザのプロセスを強制終了させたい
・画面が処理中で反応が無いので、強制終了させたい
・アドオンPGMが無限ループしてしまっているので強制終了させたい
ただしこれらは技術者による十分な観察を前提とする。よく確認してから実施しよう。
より詳しく学びたい方へ(参考書、専門書のご紹介)
・ファーストステップABAP入門 (Espresso Tutorials)
ABAPを勉強したい人向けの入門書。めずらしく日本語で書かれており、図表付きで初学者の導入にはかなり良いカンジの参考書となっている。
・ABAP to the Future (3rd edition updated and expanded)
次世代のSAP動向を勉強したいのであれば、ABAP to the Future (3rd edition updated and expanded)もおススメできる。
これも英語だが、2025年問題(現2027年問題)以降のSAP業界を技術者として生きていくのであれば、押さえておくべき重要知識が詰まっている。