sap 查询数据 未分离版本

import sys, win32com.client
import win32api, win32gui, win32con, win32ui, time, os, subprocess



def main():
    sap_app = r"C:\Users\Public\SapGui\saplogon.exe"  # 您的saplogon程序本地完整路径
    subprocess.Popen(sap_app)

    flt = 0
    while flt == 0:
        try:
            hwnd = win32gui.FindWindow(None, "SAP Logon 740")
            flt = win32gui.FindWindowEx(hwnd, None, "Edit", None)
        except:
            time.sleep(0.5)
    win32gui.SendMessage(flt, win32con.WM_SETTEXT, None, 'prd')
    win32gui.SendMessage(flt, win32con.WM_KEYDOWN, win32con.VK_RIGHT, 0)
    win32gui.SendMessage(flt, win32con.WM_KEYUP, win32con.VK_RIGHT, 0)
    time.sleep(3)
    # 登录GUI界面
    dlg = win32gui.FindWindowEx(hwnd, None, "Button", None)
    win32gui.SendMessage(dlg, win32con.WM_LBUTTONDOWN, 0)
    win32gui.SendMessage(dlg, win32con.WM_LBUTTONUP, 0)
    SapGuiAuto = win32com.client.GetObject("SAPGUI")

    # print(SapGuiAuto)
    # print(type(SapGuiAuto))

    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)
    print('type session',type(session))
    if not type(session) == win32com.client.CDispatch:
        connection = None
        application = None
        SapGuiAuto = None
        return

    session.findById("wnd[0]").maximize()
    session.findById("wnd[0]/usr/txtRSYST-BNAME").text = "CMDMC"
    session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "buyer123"
    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()
    session.findById("wnd[1]/usr/txtGS_OUT-ID").text = "H7106878"
    session.findById("wnd[1]/usr/pwdGS_OUT-PW").text = "Foxconn12+"
    session.findById("wnd[1]/usr/pwdGS_OUT-PW").setFocus()
    session.findById("wnd[1]/usr/pwdGS_OUT-PW").caretPosition = 10
    session.findById("wnd[1]/usr/btnLOGIN").press()

    # 输入T-code
    session.findById("wnd[0]/tbar[0]/okcd").text = "ZMM001"
    
    # 输入查询参数
    session.findById("wnd[0]").sendVKey(0)
    session.findById("wnd[0]/usr/chkP_MSD2").selected = -1
    session.findById("wnd[0]/usr/ctxtP_WERKS-LOW").text = "EPDV"
    session.findById("wnd[0]/usr/ctxtP_BERID").text = "EPDV-H"
    session.findById("wnd[0]/usr/ctxtP_DATE").text = "01/25/2021"
    session.findById("wnd[0]/usr/ctxtP_VENDOR-LOW").text = "VCN0025587"
    session.findById("wnd[0]/usr/txtP_WEEK").text = "30"
    
    # 执行查询过程,导出查询结果
    
    # session.findById("wnd[0]/usr/ctxtP_VENDOR-LOW").setFocus()
    # session.findById("wnd[0]/usr/ctxtP_VENDOR-LOW").caretPosition = 10
    #
    # session.findById("wnd[0]/tbar[1]/btn[8]").press()
    # session.findById("wnd[0]/mbar/menu[0]/menu[1]/menu[2]").select()
    # session.findById("wnd[1]/usr/sub:SAPLSPO5:0101/radSPOPLI-SELFLAG[1,0]").select()
    # session.findById("wnd[1]/usr/sub:SAPLSPO5:0101/radSPOPLI-SELFLAG[1,0]").setFocus()
    # session.findById("wnd[1]/tbar[0]/btn[0]").press()
    # session.findById("wnd[1]/usr/ctxtRLGRAP-FILENAME").text = r"C:\Users\H7113492\Documents\SAP\SAP GUI\vnc_epdv1.xls"
    # session.findById("wnd[1]/usr/ctxtRLGRAP-FILENAME").caretPosition = 52
    # session.findById("wnd[1]/tbar[0]/btn[0]").press()
    # session.findById("wnd[0]/tbar[0]/btn[3]").press()


    time.sleep(3)
    # 关闭login
    session.findById("wnd[0]/usr/chkP_MSD2").selected = -1
    session.findById("wnd[0]").close()
    session.findById("wnd[1]/usr/btnSPOP-OPTION1").press()


if __name__ == "__main__":
    start = time.time()
    for i in range(5):
        main()
    end = time.time()
    print('Cost {} seconds'.format((end - start)))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值