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

SAP GUI Scripting需求:查找组件ID并修改数量及脚本优化指导

SAP GUI脚本修改:遍历表格查找目标组件并修改数值

在SAP GUI事务中存在多行多列的表格,需要实现遍历第1列所有行查找目标组件ID,并修改对应行第3列数值的功能。由于不同物料的表格行数不固定,录制生成的静态脚本无法满足需求,以下是针对提供的脚本的修改方案:

现有录制脚本

session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,0]").text = "2.400"
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,0]").setFocus
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-MENGE[4,0]").caretPosition = 3
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/btn[11]").press

修改后的动态遍历脚本

Dim objTable As Object
Dim targetComponentID As String
Dim newQuantity As String
Dim rowCount As Integer
Dim i As Integer

' 定义目标组件ID和要修改的数值
targetComponentID = "你的目标组件ID" ' 替换为实际要查找的组件ID
newQuantity = "2.400" ' 替换为实际要设置的数值

' 获取表格对象,简化后续调用
Set objTable = session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT")

' 获取表格总行数
rowCount = objTable.RowCount

' 遍历所有行
For i = 0 To rowCount - 1
    ' 获取当前行第1列的组件ID(根据实际字段调整,这里假设第1列是RC29P-IDNRK)
    Dim currentID As String
    currentID = objTable.GetCell(i, "RC29P-IDNRK").Text
    
    ' 匹配目标组件ID
    If currentID = targetComponentID Then
        ' 修改当前行第3列的数值(这里对应字段是RC29P-MENGE,即数量字段)
        objTable.GetCell(i, "RC29P-MENGE").Text = newQuantity
        
        ' 设置焦点并确认修改
        objTable.GetCell(i, "RC29P-MENGE").SetFocus
        objTable.GetCell(i, "RC29P-MENGE").CaretPosition = Len(newQuantity)
        session.findById("wnd[0]").sendVKey 0
        
        ' 找到目标后退出循环,避免重复处理
        Exit For
    End If
Next i

' 保存修改
session.findById("wnd[0]/tbar[0]/btn[11]").press

关键说明

  • 表格对象复用:先获取表格对象,避免重复编写冗长的控件路径,提升可读性和维护性
  • 动态行数处理:通过RowCount属性获取表格实际行数,实现自适应遍历
  • 列字段确认:需根据实际SAP事务中的字段调整第1列(RC29P-IDNRK)和第3列(RC29P-MENGE)的字段名,可通过SAP GUI Scripting Tracker工具查看控件的字段标识
  • 修改确认:sendVKey 0等同于按下回车键确认单元格修改,确保数值生效
  • 提前退出循环:找到目标行并修改后立即退出循环,提升执行效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:45:44