You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改SAP GUI脚本以实现多标签页同时交互?

SAP GUI脚本切换标签页及多标签操作解决方案

问题原因

你录制的脚本默认调用第一个SAP会话(对应代码里的connection.Children(0)),所以即便在第二个红色标签页录制,运行时还是会定位到第一个绿色标签页。(示意图显示SAP GUI界面有两个标签页,左侧为绿色标签页,右侧为红色标签页)

具体修改方案

1. 单独操作第二个红色标签页

找到代码中获取会话的片段:

If Not IsObject(session) Then
   Set session    = connection.Children(0)
End If

把索引0改成1(SAP会话集合从0开始计数,第二个标签页对应索引1),修改后:

If Not IsObject(session) Then
   Set session    = connection.Children(1)
End If

这样脚本就会定位到第二个红色标签页执行操作。

2. 同时操作多个标签页

如果需要同时操控绿色和红色两个标签页,要为每个标签页创建独立的会话对象,分别调用操作:

' 初始化SAP应用和连接(保留原代码这部分)
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

' 分别获取两个标签页的会话对象
Set session_green = connection.Children(0) ' 绿色标签页
Set session_red = connection.Children(1) ' 红色标签页

' 操作绿色标签页
session_green.findById("wnd[0]").maximize
session_green.findById("wnd[0]/tbar[0]/okcd").text = "va02"
session_green.findById("wnd[0]").sendVKey 0

' 操作红色标签页
session_red.findById("wnd[0]").maximize
session_red.findById("wnd[0]/tbar[0]/okcd").text = "va03"
session_red.findById("wnd[0]").sendVKey 0

3. 更可靠的定位方式(避免索引变化出错)

如果标签页的顺序可能变动,建议通过标签页的标题(会话的Description属性)精准定位,不用依赖索引:

Dim i As Integer
Dim target_session As Object

' 遍历所有会话,匹配目标标签页标题
For i = 0 To connection.Children.Count - 1
    Set target_session = connection.Children(i)
    ' 把下面的文字替换成你红色标签页的实际标题
    If target_session.Description = "销售订单显示" Then
        Set session = target_session
        Exit For
    End If
Next

注意事项

  • 确保SAP GUI已开启脚本功能:通过事务码RZ11查看参数sapgui/user_scripting,设置为TRUE
  • 多会话操作时,避免同时对同一SAP数据进行冲突操作

内容的提问来源于stack exchange,提问作者Brandalize

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:40:57