REPORT ZPWDCHK NO STANDARD PAGE HEADING. ******************************************************** * This program has to be used after running program #70. * Using USR40 it finds the users having "week" passwords * and resets their usr02-ltime to force them to change * password during the next logon. Then they will have * to choose a better password, because USR40 is already * maintained. The program with 250.000 words and 1500 * users runs for about 5 hours. ******************************************************** TABLES: USR02, *USR02, USR40. DATA: PT(3), i type i. DATA: BEGIN OF DATA_TAB OCCURS 5000, LINE(8), END OF DATA_TAB. DATA: BEGIN OF USER OCCURS 250, BNAME LIKE USR02-BNAME, BCODE LIKE USR02-BCODE, CODVN LIKE USR02-CODVN, END OF USER. DATA: BEGIN OF WEEK_USER OCCURS 100, BNAME LIKE USR02-BNAME, END OF WEEK_USER. * Get the dictionary SELECT * FROM USR40. DATA_TAB = USR40. APPEND DATA_TAB. ENDSELECT. * Get the users SELECT * FROM USR02. MOVE-CORRESPONDING USR02 TO USER. APPEND USER. ENDSELECT. *The trick (only 3.1D and bellow) SY-REPID = 'SAPMS01J'. *End of the trick * Find the week passwords LOOP AT DATA_TAB. LOOP AT USER. PT = DATA_TAB. IF USER-BNAME NS PT. *USR02-BCODE = USER-BCODE. * Works up to 3.1D CALL 'XXPASS' ID 'CODE' FIELD DATA_TAB ID 'CODX' FIELD *USR02-BCODE ID 'NAME' FIELD USER-BNAME ID 'VERS' FIELD USER-CODVN. * For higher versions use this: * PERFORM CHECK_PASS(SAPMS01J) USING * VARIATION_TAB * *USR02-BCODE * USER-BNAME * USER-CODVN. IF USER-BCODE = *USR02-BCODE. i = i + 1. WEEK_USER-BNAME = USER-BNAME. APPEND WEEK_USER. EXIT. ENDIF. ENDIF. ENDLOOP. ENDLOOP. * Reset the week users ltime LOOP AT WEEK_USER. SELECT SINGLE * FROM USR02 WHERE BNAME = WEEK_USER-BNAME. CLEAR USR02-LTIME. UPDATE USR02. ENDLOOP. write: / i, 'user had week password'.