欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python完成SAP客戶端的打開和系統(tǒng)登陸功能

 更新時間:2022年05月31日 11:10:41   作者:NewJune  
這篇文章主要介紹了使用Python完成SAP客戶端的打開和系統(tǒng)登陸,涉及到SAP的打開和登錄過程,本文重點介紹如何通過Python完成SAP應(yīng)用程序的打開并進(jìn)入特定的”用戶指定系統(tǒng)“,需要的朋友可以參考下

最近小爬一直思忖著如何將以前寫的一些半自動化程序轉(zhuǎn)為全自動化,這其中就涉及到SAP的打開和登錄過程。我們都知道,SAP原生的“腳本錄制和回放”功能是在用戶進(jìn)入到某一個SAP”用戶指定系統(tǒng)“后才可以啟用:

也就是說,從這里開始,您可以通過腳本錄制,生成用戶名、密碼的輸入和SAP登錄過程的完整代碼;

那么我們的重點就轉(zhuǎn)到了,如何通過Python完成SAP應(yīng)用程序的打開并進(jìn)入特定的”用戶指定系統(tǒng)“,比如下圖中紅圈所示系統(tǒng):

  PS:由于SAP啟動后選擇不同的視圖,界面會略有不同,下面演示的方法是在”瀏覽器視圖“、”工作區(qū)視圖“以及“樹視圖”下演示的,其他啟動視圖下無效,所以如果您希望下面提到的方法在您電腦上生效,請務(wù)必確保您登陸后視圖屬于上面提到的視圖中的一種。慶幸的是,SAP客戶端會記錄您的用戶習(xí)慣,一旦您完成默認(rèn)瀏覽視圖的設(shè)定,下次程序啟動時,程序會默認(rèn)使用此視圖。

程序需要首先完成SAP 應(yīng)用程序的自動啟動,python中的方法有很多種,我用到的方法如下:

 sap_app = r"C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe" #您的saplogon程序本地完整路徑
    subprocess.Popen(sap_app)

然后是用python完成激活SAP“指定用戶系統(tǒng)”,這里需要您的python安裝win32com等組件,附上官方下載地址:pywin32 224

有了它,我們可以輕易通過python來連接本地的win32程序并通過捕獲相應(yīng)句柄來控制對應(yīng)的窗口。當(dāng)然,我們還要借助MicrosoftSpy++來捕獲各個窗口的句柄、ID、類、文本等關(guān)鍵信息,用以簡化我們的編程過程。

大體思考過程如下:

比如我現(xiàn)在要進(jìn)入“R3生產(chǎn)系統(tǒng)”,SAP程序打開后,會默認(rèn)高亮基于排名規(guī)則的第一位的系統(tǒng),而我們的目標(biāo)系統(tǒng)“位于第二位,(您可以通過修改排序手段、配合”名稱字段“的修改,讓您希望的系統(tǒng)默認(rèn)排在第一位,不過小爬沒有這樣做),小爬嘗試去捕獲”R3生產(chǎn)系統(tǒng)“這個元素的句柄,然后完成雙擊操作,可惜通過win32gui.FindWindow、win32gui.FindWindowEx等都未能定位到它,如果您這樣做成功了,也歡迎您留言告知。

我們不妨試試一個更簡單直接的方法,對照上圖,先捕獲到③過濾器的句柄,使用sendmessage方法輸入過濾條件(要登陸的系統(tǒng)名稱),激活該條件,此時我們的目標(biāo)系統(tǒng)②就會自然處于第一位且被”高亮“,然后我們捕獲左上角①(登陸)的句柄,單擊它進(jìn)入到系統(tǒng)登陸界面,后續(xù)的登陸代碼通過原生的SAP腳本錄制方法得到,您也可以使用”Tracker“工具來快速錄制出python下可用的SAP自動化代碼(小爬之前的文章中簡要介紹過該工具);

PS:

程序中要考慮SAP的啟動、系統(tǒng)雙擊打開等都需要一定的時間消耗,所以要添加延遲來解決,而延遲時間的長短可以通過while True的循環(huán)配合Try except方法來靈活調(diào)整,整個過程用python實現(xiàn)是這樣的:

#-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,"R3生產(chǎn)系統(tǒng)")
    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)
    flag=0
    while flag==0:
        try:
            session = connection.Children(0)
            flag=1
        except:
            time.sleep(0.5)
    if not type(session) == win32com.client.CDispatch:
        connection = None
        application = None
        SapGuiAuto = None
        return
    session.findById("wnd[0]/usr/txtRSYST-BNAME").text = "username" #此次放入您的SAP登陸用戶名
    session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "password"  #此次放入您的SAP登陸密碼
    session.findById("wnd[0]").sendVKey(0)
    """下面演示了使用mm03查看物料1000000000000的狀態(tài)后再退回sap首頁的過程"""
    session.findById("wnd[0]/tbar[0]/okcd").text = "mm03"
    session.findById("wnd[0]").sendVKey(0)
    session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").text = "1000000000000"
    session.findById("wnd[0]").sendVKey(0)
    session.findById("wnd[1]").sendVKey(0)
    session.findById("wnd[0]/tbar[0]/okcd").text = "/n"
    session.findById("wnd[0]").sendVKey(0)
    #>Insert your SAP GUI Scripting code here<
#-Main------------------------------------------------------------------
if __name__ == "__main__":
  Main()
#-End-------------------------------------------------------------------

到此這篇關(guān)于使用Python完成SAP客戶端的打開和系統(tǒng)登陸的文章就介紹到這了,更多相關(guān)Python SAP登陸內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python入門教程(三十三)Python的字符串格式化

    Python入門教程(三十三)Python的字符串格式化

    這篇文章主要介紹了Python入門教程(三十三)Python的字符串格式化,為了確保字符串按預(yù)期顯示,我們可以使用 format()方法對結(jié)果進(jìn)行格式化,需要的朋友可以參考下
    2023-05-05
  • python基礎(chǔ)教程之實現(xiàn)石頭剪刀布游戲示例

    python基礎(chǔ)教程之實現(xiàn)石頭剪刀布游戲示例

    使用PYTHON設(shè)計一個"石頭,剪子,布"游戲,有時又叫"Rochambeau",下面是實現(xiàn)方法,需要的朋友可以參考下
    2014-02-02
  • PyQt5每天必學(xué)之彈出消息框

    PyQt5每天必學(xué)之彈出消息框

    這篇文章主要為大家詳細(xì)介紹了PyQt5每天必學(xué)之彈出消息框,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 利用django+wechat-python-sdk 創(chuàng)建微信服務(wù)器接入的方法

    利用django+wechat-python-sdk 創(chuàng)建微信服務(wù)器接入的方法

    今天小編就為大家分享一篇利用django+wechat-python-sdk 創(chuàng)建微信服務(wù)器接入的方法,具有很好的參考價值,希望對大家有所幫助。一起跟小編過來看看吧
    2019-02-02
  • python庫matplotlib繪制坐標(biāo)圖

    python庫matplotlib繪制坐標(biāo)圖

    這篇文章主要為大家介紹了python庫matplotlib繪制坐標(biāo)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Django2.2配置xadmin的實現(xiàn)

    Django2.2配置xadmin的實現(xiàn)

    這篇文章主要介紹了Django2.2配置xadmin的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 在Python文件中指定Python解釋器的方法

    在Python文件中指定Python解釋器的方法

    今天小編就為大家分享一篇在Python文件中指定Python解釋器的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 詳解Python中dbm模塊和shelve模塊的使用

    詳解Python中dbm模塊和shelve模塊的使用

    這篇文章主要為大家詳細(xì)介紹了Python中dbm模塊和shelve模塊的具體用法,文中的示例代碼簡潔易懂,對我們深入學(xué)習(xí)Python有一定的幫助,需要的可以參考下
    2023-10-10
  • PyTorch的SoftMax交叉熵?fù)p失和梯度用法

    PyTorch的SoftMax交叉熵?fù)p失和梯度用法

    今天小編就為大家分享一篇PyTorch的SoftMax交叉熵?fù)p失和梯度用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python BeautifulSoup庫的安裝與使用

    python BeautifulSoup庫的安裝與使用

    這篇文章主要介紹了python BeautifulSoup庫的安裝與使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12

最新評論