批量重置SAP用户的初始密码

系统设定初始密码的有效期是3天,项目组担心用户不能及时重置密码导致密码过期,要求重置所有项目参与人员的初始密码。

简单点说,就是帮用户重置初始密码,用初始密码登录系统,系统弹出输入新密码的密码框,输入新密码,然后退出系统。

直接上代码 下面的代码是VBA代码,测试代码前请打开SAP GUI,不然程序会报找不到SAP GUI的程序,找不到程序的入口。

 

Sub change_password()
For i = 3 To Range("A65535").End(xlUp).Row
  Set SapGui = GetObject("SAPGUI") '请双击打开SAP GUI,代码这里会在内存中找SAPGUI的程序。
  Set Applic = SapGui.GetScriptingEngine
    Set SAPConn = Applic.OpenConnection("QAS System") ' QAS System是SAP系统的描述信息,不是SID,你本机的SAPGUI的系统描述是什么这里就一摸一样的写。Set session = SAPConn.Children(0)

    session.findById("wnd[0]").maximize
    session.findById("wnd[0]/usr/txtRSYST-MANDT").Text = Sheet1.Range("B" & i).Value
    session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = Sheet1.Range("C" & i).Value
    session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = Sheet1.Range("D" & i).Value
    session.findById("wnd[0]/usr/pwdRSYST-BCODE").caretPosition = 9
    session.findById("wnd[0]").sendVKey 0
    session.findById("wnd[1]/usr/pwdRSYST-NCODE").Text = Sheet1.Range("E" & i).Value
    session.findById("wnd[1]/usr/pwdRSYST-NCOD2").Text = Sheet1.Range("E" & i).Value
    session.findById("wnd[1]/usr/pwdRSYST-NCOD2").SetFocus
    session.findById("wnd[1]/usr/pwdRSYST-NCOD2").caretPosition = 9
    session.findById("wnd[1]").sendVKey 0
    session.findById("wnd[0]/tbar[0]/okcd").Text = "/nex"
    session.findById("wnd[0]").sendVKey 0
    Sheet1.Range("F" & i).Value = "done"
Next
End Sub
Set SAPConn = Applic.OpenConnection("QAS System")
这里的QAS System 就是打开SAP GUI后,SAP GUI里出现的 SAP系统的描述,不是SID,找了很多资料不支持SID。
下图D列就是随机初始密码,E列就是需要重置的密码。

 

posted @ 2022-08-26 13:51  ken-yu  阅读(686)  评论(0编辑  收藏  举报