REPORT ZTEST.
TYPES:
BEGIN OF TYP_USR02,
BNAME TYPE USR02-BNAME,
END OF TYP_USR02.
DATA:
TD_RETURN TYPE STANDARD TABLE OF BAPIRET2,
TH_RETURN TYPE BAPIRET2.
DATA:
TD_USR02 TYPE STANDARD TABLE OF TYP_USR02,
TH_USR02 TYPE TYP_USR02.
DATA:
CNS_PASS TYPE BAPIPWD VALUE '123456'.
*PARAMETERS L_NAME TYPE BAPIBNAME.
*PARAMETERS L_PASS TYPE BAPIPWD.
*改变此状态,写程序时候注意应用以下权限检查,除了自己,
*其他有锁定用户权限的才可以运行这个程序:-)
*AUTHORITY-CHECK OBJECT 'S_USER_GRP'
* ID 'CLASS' FIELD USR02-CLASS
* ID 'ACTVT' FIELD '05'.
SELECT BNAME
FROM USR02
INTO TABLE TD_USR02
WHERE UFLAG = 128
AND BNAME LIKE 'xxx%'.
CHECK TD_USR02 IS NOT INITIAL.
* 直接更新数据库表里锁的用户状态字段
UPDATE USR02
SET UFLAG = 0 "正常状态
WHERE UFLAG = 128."密码输入多次失败
* 或者调用BAPI解锁
CALL FUNCTION 'BAPI_USER_UNLOCK'
EXPORTING
username = th_usr02-bname
TABLES
return = td_return.
* 修改用户密码
LOOP AT TD_USR02 INTO TH_USR02.
CALL FUNCTION 'BAPI_USER_CHANGE'
EXPORTING
USERNAME = TH_USR02-BNAME "用户名
PASSWORD = CNS_PASS "密码
PASSWORDX = 'X' "只修改密码标记
TABLES
RETURN = TD_RETURN.
ENDLOOP.
LOOP AT td_return INTO th_return WHERE type = 'E' OR type = 'A'.
ENDLOOP.
IF sy-subrc = 0.
endif.