nhờ trợ gúp về code tự động đăng nhập sap trên VBA

Liên hệ QC

ngocthieugia

Thành viên mới
Tham gia
30/9/08
Bài viết
12
Được thích
3
Chào cả nhà.
hiện tại mình đang tìm hiểu về tự động đăng nhâp sap
bài toán:

dùng excel để liên kết với phần mềm SAP GUI Scripting tự động dowlad dữ liệu theo thời gian chỉ định
mình đang mắc về tự động đăng nhập
1. trường hợp máy khác đang dùng sẽ phải click máy đó để máy mình đăng nhập
2.trường hợp thay đổi ngôn ngữ, máy cũng hỏi 1 thông báo
3. trường hợp máy khác nhập sai pass máy cũng hỏi 1 thông báo

=> nhờ nhà mình trợ giúp để giải bài toán trên

thanks!
 
Quan tâm đến cái này....
Lót dép ngồi hóng vậy
 
Chào cả nhà.
hiện tại mình đang tìm hiểu về tự động đăng nhâp sap
bài toán:

dùng excel để liên kết với phần mềm SAP GUI Scripting tự động dowlad dữ liệu theo thời gian chỉ định
mình đang mắc về tự động đăng nhập
1. trường hợp máy khác đang dùng sẽ phải click máy đó để máy mình đăng nhập
2.trường hợp thay đổi ngôn ngữ, máy cũng hỏi 1 thông báo
3. trường hợp máy khác nhập sai pass máy cũng hỏi 1 thông báo

=> nhờ nhà mình trợ giúp để giải bài toán trên

Cảm ơn!

Sub SAP_OpenSessionFromLogon()

Dim SapGui

Dim Applic

Dim connection

Dim session

Dim WSHShell

Application.DisplayAlerts = False

Shell "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe", vbNormalFocus

Set WSHShell = CreateObject("WScript.Shell")

Do Until WSHShell.AppActivate("SAP Logon ")

Application.Wait Now + TimeValue("0:00:30")

Loop

Set WSHShell = Nothing

Set SapGui = GetObject("SAPGUI")

Set Applic = SapGui.GetScriptingEngine

Set connection = Applic.OpenConnection("FIH [LHWLBG]", True)

Set session = connection.Children(0)

session.findById("wnd[0]").maximize

session.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "802"

session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "VNHANPC01"

session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "Plan@123"
session.findById("wnd[0]/usr/pwdRSYST-BCODE").SetFocus
session.findById("wnd[0]/usr/pwdRSYST-BCODE").caretPosition = 8
session.findById("wnd[0]").sendVKey 0

session.findById("wnd[1]/usr/radMULTI_LOGON_OPT2").Select
session.findById("wnd[1]/usr/radMULTI_LOGON_OPT2").SetFocus
session.findById("wnd[1]/tbar[0]/btn[0]").press
 
Sub SAP_OpenSessionFromLogon()

Dim SapGui

Dim Applic

Dim connection

Dim session

Dim WSHShell

Application.DisplayAlerts = False

Shell "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe", vbNormalFocus

Set WSHShell = CreateObject("WScript.Shell")

Do Until WSHShell.AppActivate("SAP Logon ")

Application.Wait Now + TimeValue("0:00:30")

Loop

Set WSHShell = Nothing

Set SapGui = GetObject("SAPGUI")

Set Applic = SapGui.GetScriptingEngine

Set connection = Applic.OpenConnection("FIH [LHWLBG]", True)

Set session = connection.Children(0)

session.findById("wnd[0]").maximize

session.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "802"

session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "VNHANPC01"

session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "Plan@123"
session.findById("wnd[0]/usr/pwdRSYST-BCODE").SetFocus
session.findById("wnd[0]/usr/pwdRSYST-BCODE").caretPosition = 8
session.findById("wnd[0]").sendVKey 0

session.findById("wnd[1]/usr/radMULTI_LOGON_OPT2").Select
session.findById("wnd[1]/usr/radMULTI_LOGON_OPT2").SetFocus
bạn cho mình hỏi. mình cần phải thay đổi những gì để phù hợp với mấy của mình ạ. thank bạnCapture2.PNG
 
bạn cho mình hỏi. mình cần phải thay đổi những gì để phù hợp với mấy của mình ạ. thank bạnView attachment 288512
Sub Logon_Sap()
On Error Resume Next
Dim Appl As Object
Dim Connection As Object
Dim session As Object
Dim WshShell As Object
Dim SapGui As Object

'Of course change for your file directory
Shell "C:\Program Files\SAP\FrontEnd\SAPgui\Saplogon.exe", 4
Set WshShell = CreateObject("WScript.Shell")

Do Until WshShell.AppActivate("SAP Logon ")
Application.Wait Now + TimeValue("0:00:01")
Loop

Set WshShell = Nothing

Set SapGui = GetObject("SAPGUI")
Set Appl = SapGui.GetScriptingEngine
Set Connection = Appl.Openconnection("PRD", _
True)
Set session = Connection.Children(0)

'if You need to pass username and password
session.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "800"
session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "user1"
session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "123456"
session.findById("wnd[0]/usr/txtRSYST-LANGU").Text = "EN"

If session.Children.Count > 1 Then

answer = MsgBox("You've got opened SAP already," & _
"please leave and try again", vbOKOnly, "Opened SAP")

session.findById("wnd[1]/usr/radMULTI_LOGON_OPT3").Select
session.findById("wnd[1]/usr/radMULTI_LOGON_OPT3").SetFocus
session.findById("wnd[1]/tbar[0]/btn[0]").press

Exit Sub

End If

session.findById("wnd[0]/usr/pwdRSYST-BCODE").SetFocus
session.findById("wnd[0]/usr/pwdRSYST-BCODE").caretPosition = 13
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]/usr/radMULTI_LOGON_OPT2").Select
session.findById("wnd[1]/usr/radMULTI_LOGON_OPT2").SetFocus
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.createSession
session.createSession
session.createSession
session.createSession
session.findById("wnd[1]").Close
End Sub

Đây là code mà tôi đăng nhập SAP mỗi ngày. Bạn tham khảo thử. Mấy chỗ tôi tô đậm là phải chú ý, điền đúng mới hoạt động. Win 7 có đường dẫn khác, Win 10 có đường dẫn khác.
Cách lấy đường dẫn :
1680746257632.png
 
hi bạn. bạn có thể giúp mình thêm chút là những phần mình tô vàng là gì không ạ, mình chưa hiểu lắmCapture3.PNG
 
hi bạn. bạn có thể giúp mình thêm chút là những phần mình tô vàng là gì không ạ, mình chưa hiểu lắmView attachment 288516
SAP có nhiều dạng 100, 200, 300, 400, 500, 600, 700, 800, hoặc code của bạn ở trên là 802 tức là họ đăng nhập con 802
của bên công ty mình là 800
còn PRD là kết nối đặt tên như hình bên dưới, mình đăng nhập PRD thì chọn PRD

Shell "C:\Program Files\SAP\FrontEnd\SAPgui\Saplogon.exe", 4
"C:\Program Files\SAP\FrontEnd\SAPgui\Saplogon.exe"
cái này là đường dẫn của máy mình
còn số 4 ý nghĩa là:
Trong đoạn mã này, tham số thứ hai của hàm Shell là 4, nó đại diện cho cách thức mà cửa sổ ứng dụng sẽ được hiển thị khi ứng dụng được khởi động.

Cụ thể, giá trị 4 ở đây có nghĩa là cửa sổ ứng dụng sẽ được hiển thị dưới dạng "ActiveX control" (bằng cách sử dụng Windows API). Nếu không truyền tham số này, mặc định cửa sổ ứng dụng SAP Logon sẽ hiển thị dưới dạng "normal window" và người dùng có thể thấy các thanh công cụ, thanh tiêu đề và các nút tùy chọn thông thường.


1680748419630.png
 
  • Thích
Reactions: KJT
Web KT
Back
Top Bottom