python使用SAP GUI操作SAP的幾個坑

1) 首先必須設定SAP中設置可以使用SAP GUI Script.

詳細參見以下文章:

    https://blog.csdn.net/weixin_44447687/article/details/106216776

簡單來說就是 SAP ==>RZ11==>sapgui/user_scripting==>需要設定爲true

       需要設定爲  啓用腳本==>下面的兩個警告勾勾去掉(否則會出現不需要的彈窗)

2) 需要安裝pywin32

   pip install pywin32
  參照
  https://blog.csdn.net/tq501501/article/details/119425042

3) 錄製Script

4) Python基本代碼如下

  

#-Begin-----------------------------------------------------------------
#-Includes--------------------------------------------------------------
import sys, win32com.client
import win32api,win32gui,win32con,win32ui,time,os,subprocess
#-Sub Main--------------------------------------------------------------
def Main():

    sap_app = r"C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe" #您的saplogon程序本地完整路徑
    subprocess.Popen(sap_app)
    time.sleep(1)
    flt=0
    while flt==0:
        try:
            hwnd = win32gui.FindWindow(None,"SAP Logon 740")
            flt=win32gui.FindWindowEx(hwnd,None,"Edit", None)  #capture handle of filter
        except:
            time.sleep(0.5)
    win32gui.SendMessage(flt,win32con.WM_SETTEXT,None,"DEV")
    win32gui.SendMessage(flt,win32con.WM_KEYDOWN,win32con.VK_RIGHT,0)
    win32gui.SendMessage(flt,win32con.WM_KEYUP,win32con.VK_RIGHT,0)
    time.sleep(0.1)
    dlg = win32gui.FindWindowEx(hwnd,None,"Button", None) #登陸(0)
    win32gui.SendMessage(dlg,win32con.WM_LBUTTONDOWN,0)
    win32gui.SendMessage(dlg,win32con.WM_LBUTTONUP,0)
     
    SapGuiAuto = win32com.client.GetObject("SAPGUI")
    if not type(SapGuiAuto) == win32com.client.CDispatch:
        return
    application = SapGuiAuto.GetScriptingEngine
    if not type(application) == win32com.client.CDispatch:
        SapGuiAuto = None
        return
    connection = application.Children(0)
    if not type(connection) == win32com.client.CDispatch:
        application = None
        SapGuiAuto = None
        return
    time.sleep(2)

    session = connection.Children(0)
   
    if not type(session) == win32com.client.CDispatch:
        connection = None
        application = None
        SapGuiAuto = None
        return
    print("OK")

    session.findById("wnd[0]/usr/txtRSYST-BNAME").text = "XXXXXX" #此次放入您的SAP登陸用戶名
    session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "xxxxxx"  #此次放入您的SAP登陸密碼
    session.findById("wnd[0]").sendVKey(0)
    """下面演示了使用mm03查看物料1000000000000的狀態後再退回sap首頁的過程"""
    session.findById("wnd[0]/tbar[0]/okcd").text = "mm03"
    session.findById("wnd[0]").sendVKey(0)
    session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").text = "180100069380"
    session.findById("wnd[0]").sendVKey(0)
    #session.findById("wnd[0]/tbar[0]/okcd").text = "/n"
    #session.findById("wnd[0]").sendVKey(0)
    #session.findById("wnd[0]/tbar[0]/btn[3]").press()
    #session.findById("wnd[0]/tbar[0]/btn[3]").press()
    #>Insert your SAP GUI Scripting code here<
#-Main------------------------------------------------------------------
if __name__ == "__main__":
  Main()
#-End-------------------------------------------------------------------
參考資料
https://blog.csdn.net/tq501501/article/details/119425042 安裝
https://blog.csdn.net/zhichuan0307/article/details/107205883 設定
https://www.cnblogs.com/new-june/p/NewJune.html python代碼
https://blog.csdn.net/weixin_44447687/article/details/106216776 設定

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章