基于Python驱动的SAP流程自动化(二)-下载安装SAP Scripting Tracker脚本录制工具,编写Python连接SAP

目录

录制脚本代码

Python连接SAP GUI


录制脚本代码

Scripting Tracker SAP脚本录制工具是 SAP ® GUI 脚本开发工具的替代品,和SAP自带的脚本录制功能一样,都是记录操作脚本,Scripting Tracker可以转换成c#,java,Python等脚本代码

Scripting Tracker 下载地址:https://tracker.stschnell.de/

下载解压安装包后打开Scripting Tracker ,直接点击刷新就能自动检测到SAP,(前提是要打开SAP GUI 界面,点击刷新的时候才能连接成功,打开几个窗口,刷新的时候就能检测导几个)

连接上之后,点击开始录制,Scripting Tracker就会把你的每一步操作都i记录下来,同时翻译成对应的脚本语言,是直接可以用的,如果没反应点击结束录制,多试几次就行

Python连接SAP GUI

Python要连接SAP,需要Python安装win32com组件,有了它,就可以通过Python来连接本地的win32程序并通过捕获相应句柄来控制对应的窗口

官方下载地址:pywin32 224

#-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,"S4 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)

    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 = "user" #SAP登陆用户名
    session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "pass"  #SAP登陆密码
    session.findById("wnd[0]").sendVKey(0)
    
    #打开自开发的一个扫雷游戏tcode,直接插入录制的脚本
    session.findById("wnd[0]").resizeWorkingPane(155, 34, 0)
    session.findById("wnd[0]/tbar[0]/okcd").text = "ZSL"
    session.findById("wnd[0]").sendVKey(0)
    session.findById("wnd[0]/usr/btnHIGH").press()
    session.findById("wnd[0]/usr/btnSTART").press()
    #>Insert your SAP GUI Scripting code here<

#-Main------------------------------------------------------------------
if __name__ == "__main__":
    Main()

#-End-------------------------------------------------------------------

运行代码查看效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gong JX

多谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值