【发布时间】:2019-08-02 17:42:12
【问题描述】:
我正在尝试使用脚本自动提取 SAP 数据。我面临的问题是 SAP 中的记录脚本在我运行时无法正常工作,当我使用 findById("id") 方法时,它会出现无法找到,但是选项卡在那里。
想法是在选项卡之间移动(使用session.findById("id").Select)以提取该面板中的信息。使用 po 的列表,循环并提取信息,很简单。
但是,这些标签不是随机找到的。有时它有效,有时它找不到。所有 PO(如果我手动执行)都有包含数据的选项卡,但在脚本中它不起作用。
例如:
红色框是我要选择的选项卡 录制脚本的输出(只是在选项卡之间移动):
If Not IsObject(application) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
Set connection = application.Children(0)
End If
If Not IsObject(session) Then
Set session = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject application, "on"
End If
session.findById("wnd[0]").resizeWorkingPane 183,24,false
session.findById("wnd[0]/usr/subSUB0:SAPLMEGUI:0015/subSUB3:SAPLMEVIEWS:1100/subSUB2:SAPLMEVIEWS:1200/subSUB1:SAPLMEGUI:1301/subSUB2:SAPLMEGUI:1303/tabsITEM_DETAIL/tabpTABIDT13").select
' Extract info
session.findById("wnd[0]/usr/subSUB0:SAPLMEGUI:0019/subSUB3:SAPLMEVIEWS:1100/subSUB2:SAPLMEVIEWS:1200/subSUB1:SAPLMEGUI:1301/subSUB2:SAPLMEGUI:1303/tabsITEM_DETAIL/tabpTABIDT15").select
' Extract info
session.findById("wnd[0]/usr/subSUB0:SAPLMEGUI:0015/subSUB3:SAPLMEVIEWS:1100/subSUB2:SAPLMEVIEWS:1200/subSUB1:SAPLMEGUI:1301/subSUB2:SAPLMEGUI:1303/tabsITEM_DETAIL/tabpTABIDT18").select
' Extract info
我的理论,选项卡被隐藏并且找不到它,我必须使用箭头移动,但是当我在录制脚本时使用箭头时,它根本不会添加它们到代码。
对不起我的英语,并提前感谢您的时间。
【问题讨论】:
-
我没有测试,但是如果你得到了 GuiTabStrip 对象,我猜它的所有 GuiTab 对象的列表都包含在 Children 属性中(这么说,我阅读了帮助文件 SAPGUIScripting.chm随 SAP GUI 安装提供)
标签: automation vbscript sap-gui