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

VBA操作SAP GUI:如何获取选中物料分类的行坐标

动态获取SAP物料特性坐标并赋值的解决方案

核心思路

放弃依赖固定坐标MWERT[x,y],改为通过特性的名称/内部代码定位目标行,这种方式不受物料特性数量、排序变化的影响,稳定性更强。

实现步骤(VBA示例)

  1. 获取特性表格的控件对象
Dim objTable As GuiTableControl
Set objTable = session.findById("wnd[0]/usr/subSUBSCR_BEWERT:SAPLCTMS:5000/tabsTABSTRIP_CHAR/tabpTAB1/ssubTABSTRIP_CHAR_GR:SAPLCTMS:5100/tblSAPLCTMSCHARS_S")
  1. 遍历表格行,匹配目标特性
    根据实际需求选择以下两种匹配方式之一:
  • 按特性描述匹配(比如屏幕显示的"运输条件"):
Dim iRow As Integer
For iRow = 0 To objTable.RowCount - 1
    ' 检查当前行的特性描述(字段名需根据实际屏幕确认,示例为RCTMS-MAKTX)
    If objTable.GetCell(iRow, "RCTMS-MAKTX").Text = "运输条件" Then
        ' 给对应行的特性值字段赋值
        objTable.GetCell(iRow, "RCTMS-MWERT").Text = col3
        Exit For ' 找到目标后退出循环
    End If
Next iRow
  • 按特性内部代码匹配(更可靠,比如你的运输条件特性代码是ZTRANS_COND):
Dim iRow As Integer
For iRow = 0 To objTable.RowCount - 1
    ' 检查当前行的特性内部代码(字段名需根据实际屏幕确认,示例为RCTMS-ATNAM)
    If objTable.GetCell(iRow, "RCTMS-ATNAM").Text = "ZTRANS_COND" Then
        objTable.GetCell(iRow, "RCTMS-MWERT").Text = col3
        Exit For
    End If
Next iRow

关键说明

  • 确认字段名:可以用SAP GUI Scripting Tracker工具查看表格中各列的技术字段名,确保RCTMS-MAKTX/RCTMS-ATNAM/RCTMS-MWERT与你的操作屏幕一致。
  • 为何不用坐标:物料的特性数量、排序会因物料类型、配置不同发生变化,固定坐标会导致脚本频繁失效,而通过特性标识定位是通用适配方案。
  • 你之前尝试的GuiFocus.ID和getFocusedNodeKey()无效,是因为表格控件的聚焦信息无法直接映射到行坐标,且依赖手动聚焦,不适合自动化脚本场景。

内容的提问来源于stack exchange,提问作者Łukasz Lukas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:35:22