当前位置:   article > 正文

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

scripting tracker如何使用

目录

录制脚本代码

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

  1. #-Begin-----------------------------------------------------------------
  2. #-Includes--------------------------------------------------------------
  3. import sys, win32com.client
  4. import win32api,win32gui,win32con,win32ui,time,os,subprocess
  5. #-Sub Main--------------------------------------------------------------
  6. def Main():
  7. sap_app = r"C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe" #您的saplogon程序本地完整路径
  8. subprocess.Popen(sap_app)
  9. time.sleep(1)
  10. flt=0
  11. while flt==0:
  12. try:
  13. hwnd = win32gui.FindWindow(None,"SAP Logon 740")
  14. flt=win32gui.FindWindowEx(hwnd,None,"Edit", None) #capture handle of filter
  15. except:
  16. time.sleep(0.5)
  17. win32gui.SendMessage(flt,win32con.WM_SETTEXT,None,"S4 DEV")
  18. win32gui.SendMessage(flt,win32con.WM_KEYDOWN,win32con.VK_RIGHT,0)
  19. win32gui.SendMessage(flt,win32con.WM_KEYUP,win32con.VK_RIGHT,0)
  20. time.sleep(0.1)
  21. dlg = win32gui.FindWindowEx(hwnd,None,"Button", None) #登陆(0)
  22. win32gui.SendMessage(dlg,win32con.WM_LBUTTONDOWN,0)
  23. win32gui.SendMessage(dlg,win32con.WM_LBUTTONUP,0)
  24. SapGuiAuto = win32com.client.GetObject("SAPGUI")
  25. if not type(SapGuiAuto) == win32com.client.CDispatch:
  26. return
  27. application = SapGuiAuto.GetScriptingEngine
  28. if not type(application) == win32com.client.CDispatch:
  29. SapGuiAuto = None
  30. return
  31. connection = application.Children(0)
  32. if not type(connection) == win32com.client.CDispatch:
  33. application = None
  34. SapGuiAuto = None
  35. return
  36. time.sleep(2)
  37. flag=0
  38. while flag==0:
  39. try:
  40. session = connection.Children(0)
  41. flag=1
  42. except:
  43. time.sleep(0.5)
  44. if not type(session) == win32com.client.CDispatch:
  45. connection = None
  46. application = None
  47. SapGuiAuto = None
  48. return
  49. session.findById("wnd[0]/usr/txtRSYST-BNAME").text = "user" #SAP登陆用户名
  50. session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "pass" #SAP登陆密码
  51. session.findById("wnd[0]").sendVKey(0)
  52. #打开自开发的一个扫雷游戏tcode,直接插入录制的脚本
  53. session.findById("wnd[0]").resizeWorkingPane(155, 34, 0)
  54. session.findById("wnd[0]/tbar[0]/okcd").text = "ZSL"
  55. session.findById("wnd[0]").sendVKey(0)
  56. session.findById("wnd[0]/usr/btnHIGH").press()
  57. session.findById("wnd[0]/usr/btnSTART").press()
  58. #>Insert your SAP GUI Scripting code here<
  59. #-Main------------------------------------------------------------------
  60. if __name__ == "__main__":
  61. Main()
  62. #-End-------------------------------------------------------------------

运行代码查看效果。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/651288
推荐阅读
相关标签
  

闽ICP备14008679号