SAPユーザーをプログラムからロック・解除する場合、BAPI_USER_LOCKとBAPI_USER_UNLOCKが使われます。用途は退職・休職などのライフサイクル管理や、承認された一時停止です。ロック解除は本人確認と承認を要する運用操作として扱います。
呼び出しの基本
USERNAMEに対象ユーザーIDを指定します。結果はSY-SUBRCだけでなく、BAPIのRETURNメッセージを確認します。利用可能なインターフェースは対象システムのSE37で確認してください。
DATA lt_return TYPE TABLE OF bapiret2.
CALL FUNCTION 'BAPI_USER_LOCK'
EXPORTING username = lv_username
TABLES return = lt_return.
LOOP AT lt_return INTO DATA(ls_return).
IF ls_return-type = 'E' OR ls_return-type = 'A'.
" エラーを記録し、後続処理を中止
ENDIF.
ENDLOOP.
ロック解除は同じ考え方でBAPI_USER_UNLOCKを呼びます。成功と判断する前にRETURNとSU01の状態を確認し、必要なコミット処理は対象システムのBAPI仕様に従って検証します。
運用上の確認
- 依頼者・承認者・対象ユーザー・理由・実行日時を記録する。
- 管理者や技術ユーザーを一括処理で誤ってロックしないよう除外条件を設ける。
- 現在のロック状態、接続中セッション、他の認証管理との連携を確認する。
- 解除時は原因(誤入力、管理者ロック等)を区別し、必要な場合はパスワードや認証方式も確認する。
権限不足やユーザー不存在時のエラーもテストします。広範囲の一括ロックは業務停止につながるため、テスト環境で対象一覧と件数を先に確認します。