"-Begin-----------------------------------------------------------------
"-
"- Program to set password of standard users SAP* and DDIC from client
"- 000 to minisap or initial, alternative copy it from client 001.
"-
"- Hint: Use program RSUSR003 to check the existing standard users.
"-
"- Hint: Try successfully with SAP NetWeaver AS ABAP 7.31
"-
"-----------------------------------------------------------------------
  Program zSetPwd.

    "-Constants---------------------------------------------------------

      "-minisap---------------------------------------------------------
        Constants c_passcode(20) Type x Value
          '402BB8222D165B6574648E5369E502EEA3434386'.
        Constants c_pwdstate Type i Value 0.
        Constants c_pwdhash(255) Type c Value
          '{x-issha, 1024}ihgnqKY51fbSTX+IDJ7Hfo6p0QghC06kiH3c8rTmDts='.

      "-initial---------------------------------------------------------
      "  Constants c_passcode(20) Type x Value
      "    'C9C3594FF543373E26468F0AA99CF90DC4FA68D6'.
      "  Constants c_pwdstate Type i Value 1.
      "  Constants c_pwdhash(255) Type c Value
      "    '{x-issha, 1024}s3ekCy8cvdGVeAeXbw8tnSdkQES4QMVEockNeuwk/rk='.

    "-Variables---------------------------------------------------------
      Data lv_USR02_000 Type USR02.
      Data lv_USR02_001 Type USR02.

    "-Set user SAP* in client 000 the password to minisap---------------
      Select Single * From USR02 Client Specified
        Into lv_USR02_000 Where BNAME = 'SAP*' And MANDT = '000'.

      If sy-subrc = 0.

        lv_USR02_000-PASSCODE = c_passcode.
        lv_USR02_000-PWDSTATE = c_pwdstate.
        lv_USR02_000-PWDSALTEDHASH = c_pwdhash.
        Update USR02 Client Specified From lv_USR02_000.

        "Select Single * From USR02 Client Specified
        "  Into lv_USR02_001 Where BNAME = 'SAP*' And MANDT = '001'.
        "If sy-subrc = 0.
        "  lv_USR02_000-PASSCODE = lv_USR02_001-PASSCODE.
        "  lv_USR02_000-PWDSTATE = lv_USR02_001-PWDSTATE.
        "  lv_USR02_000-PWDSALTEDHASH = lv_USR_001-PWDSALTEDHASH.
        "  Update USR02 Client Specified From lv_USR02_000.
        "EndIf.

      EndIf.

    "-Set user DDIC in client 000 the password to minisap---------------
      Select Single * From USR02 Client Specified
        Into lv_USR02_000 Where BNAME = 'DDIC' And MANDT = '000'.

      If sy-subrc = 0.

        lv_USR02_000-PASSCODE = c_passcode.
        lv_USR02_000-PWDSTATE = c_pwdstate.
        lv_USR02_000-PWDSALTEDHASH = c_pwdhash.
        Update USR02 Client Specified From lv_USR02_000.

        "Select Single * From USR02 Client Specified
        "  Into lv_USR02_001 Where BNAME = 'DDIC' And MANDT = '001'.
        "If sy-subrc = 0.
        "  lv_USR02_000-PASSCODE = lv_USR02_001-PASSCODE.
        "  lv_USR02_000-PWDSTATE = lv_USR02_001-PWDSTATE.
        "  lv_USR02_000-PWDSALTEDHASH = lv_USR_001-PWDSALTEDHASH.
        "  Update USR02 Client Specified From lv_USR02_000.
        "EndIf.

      EndIf.

"-End-------------------------------------------------------------------