如何使用Scripting Tracker解决SAP系统中复杂元素捕获——By.福建组
评论
收藏

如何使用Scripting Tracker解决SAP系统中复杂元素捕获——By.福建组

经验分享
三丰
2023-08-31 20:06·浏览量:2432
三丰
发布于 2023-08-29 10:50更新于 2023-08-31 20:062432浏览

问题背景:

在实际操作sap自动化中,我们经常涉及元素捕获操作,对于正常元素内容处理,rpa基本能够满足操作。

但在一些特殊情况下:

(1)驱动SAP GUI中的一些布局,改变数据的展现形式;

(2)碰到行数不固定,节点可以逐级展开的sap 界面等;

模板布局内容会不断增加或减少,同级内容同样如此,这些元素内容将不好定位处理。因此推荐一款比较好用脚本工具SAP Scripting Tracker,该工具比原生的sap script更加可视化易用。通过结合该工具实现业务流程自动化。


工具介绍:

SAP Scripting Tracker该工具能记录在 SAP 系统中的操作,并根据所选择的编程语言 (支持 PowerShell, VB.Net ,C#, Python JShell for Java 等多种语言)以脚本的方式进行回放,从而提升效率。SAP 曾经提供过基于 COM 技术的 SAP GUI Scripting,但因为微软从 Windows 7 之后停止了代理(agent, 也称向导)的发布。所以 SAP Scripting Tracker 就成为 SAP GUI Scripting 的一个很好的替代品。

下载链接:https://tracker.stschnell.de/

工具中比较常用到模块有Analyzer、recorder

Analyzer界面:可以清晰捕获到sap的树形结构和对应的元素id等属性

recorder界面:支持录制脚本,支持vb、python、java、powerShell等多种脚本语言的导出


实际场景:

下载数据时需要选择相应的布局格式,而其它用户添加格式后也会出现在“选择布局”中(原来在第3行,现在可能变成第4行),因此需要通过“格式”列或“布局表述”列的值进行定位唯一值。

节点可以逐级展开的sap 界面,需要去判断层级内容位置。


具体代码:

import win32com.client

# 获取sap对象
SapGuiAuto = win32com.client.GetObject('SAPGUI')
application = SapGuiAuto.GetScriptingEngine
connection = application.Children(0)
session = connection.Children(0)

# 登录sap账号
# session.findById("wnd[0]/usr/txtRSYST-BNAME").text = "SXXXXX1"
# session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "1XXXXXm"
# session.findById("wnd[0]").sendVKey(0)

# 填写事务码
# session.findById("wnd[0]/tbar[0]/okcd").text = "ZSD003"
# session.findById("wnd[0]").sendVKey(0)

# 填写查询条件
# session.findById("wnd[0]/usr/ctxtRS_KUNZ1-LOW").Text = "3XXXX6"
# session.findById("wnd[0]/usr/txtRS_NMBR-LOW").Text = "0XXXX7"
# session.findById("wnd[0]/tbar[1]/btn[8]").press()

# 点击选择布局
session.findById("wnd[0]/tbar[1]/btn[33]").press()
e = session.findById("wnd[1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell")
for i in range(e.rowCount):
    # 判断格式文本是否属于对账格式,符合则点击
    if e.getCellValue(i, 'TEXT').strip() == '对账格式':
        e.setCurrentCell(i, 'TEXT')
        e.clickCurrentCell()
        break


启动Scripting Tracker后点击 按钮,程序节点信息会载入面板,选择相应节点会有对应值,id即是相应元素对象。


录制操作:在操作元素之前选择编程语言(此处选择python),点击录制按钮,操作sap的过程会被录制下来。


如何确定 getCellValue(i, 'TEXT') 中要填写哪个属性,可以参考影刀编辑器捕获元素。


前置环节:

需要开启sap自动化配置,参考步骤:https://www.yingdao.com/yddoc/language/zh-cn/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/sap%20%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/sap%20%E8%87%AA%E5%8A%A8%E5%8C%96%E9%85%8D%E7%BD%AE.html?




收藏
全部评论1
最新
发布评论
评论