SAP GUI脚本选择活动行

2020-08-20 13:59发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我正在尝试使用Excel自动执行一些SAP操作。

我从SAP录制了一些脚本,但效果很好,在定位正确的RowID之后,我在选择CS02中的活动行时只有一个问题。

记录结果:

session.findById(" wnd [0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT")。getAbsoluteRow(39).selected = true

但是我不知道带有AbsoluteRow数字的行,因为我不知道该数字。

有什么主意如何选择整行以便可以将其删除?

谢谢。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我正在尝试使用Excel自动执行一些SAP操作。

我从SAP录制了一些脚本,但效果很好,在定位正确的RowID之后,我在选择CS02中的活动行时只有一个问题。

记录结果:

session.findById(" wnd [0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT")。getAbsoluteRow(39).selected = true

但是我不知道带有AbsoluteRow数字的行,因为我不知道该数字。

有什么主意如何选择整行以便可以将其删除?

谢谢。

付费偷看设置
发送
6条回答
大道至简
1楼 · 2020-08-20 14:40.采纳回答

丹尼尔,你好


我尝试过,但是我没有用:(

但是,与此同时,我尝试了其他一些可能的策略,并最终使它按我的意愿工作。

 objSess.FindById(" wnd [0]/mbar/menu [1]/menu [10]")。选择
             objSess.FindById(" wnd [1]/usr/subPOS_SETP:SAPLCSDI:0710/txtRC29P-SELPO")。Text = 
             objSess.FindById(" wnd [1]/tbar [0]/btn [0]")。press
             numrRow = objSess.FindById(" wnd [0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT")。VerticalScrollbar.Position
             objSess.FindById(" wnd [0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT")。VerticalScrollbar.Position = numrRow + 1
             objSess.FindById(" wnd [0]")。sendVKey 9
             objSess.FindById(" wnd [0]/tbar [1]/btn [14]")。press
             objSess.FindById(" wnd [0]")。sendVKey 0
             objSess.FindById(" wnd [1]/usr/btnSPOP-OPTION1")。press 

前3行位于我要查找的行上。

然后获取"垂直"滚动条位置。

在该值上加1(即,向下滚动一行,使要选择的行位于可见窗口的外面

然后按F9键选择行(由于某些原因,选定的行是可见窗口之外,顶部可见行上方的行)

然后3行删除我想要的所选行。

问题已通过此解决方案解决。

感谢所有尝试提供帮助的人。

土豆飞人
2楼-- · 2020-08-20 14:49

很高兴您能够按照自己的方式工作。 尽管如此,我还是在CS02中测试了Stefans的建议

对于i = 0到会话。FindById(" wnd [0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT")。VisibleRowCount-1
   如果session.FindById(" wnd [0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-POSNR [0,"&CStr(i)&"]")。text = test然后
     session.FindById(" wnd [0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT")。GetAbsoluteRow(i).Selected = True
   万一
 下一个

可正常使用。 如果您在可见行中找不到它并且必须向下翻页,那么只会有其他逻辑。

显然用您选择的单元格替换txtRC29P-POSNR。

渐行渐远_HoldOn
3楼-- · 2020-08-20 14:57

你好Wim,

欢迎使用SAP社区。

我不确定我是否正确理解了您的问题。 我将遍历表控件以通过其描述获取正确的条目并选择它。

对于i = 0到session.findById(" wnd [0]/usr/tblSAPMBIBSTC537")。VisibleRowCount-1
   如果session.findById(" wnd [0]/usr/tblSAPMBIBSTC537/txtLOOP410-TEXT [0,"&CStr(i)&"]")。Text =" Familie"然后
     session.findById(" wnd [0]/usr/tblSAPMBIBSTC537")。getAbsoluteRow(i).selected = true
   万一
 下一个
 

让我们知道您的结果。

干杯
Stefan

当学会了学习
4楼-- · 2020-08-20 14:36

我认为Stefan为您的问题陈述提供了可靠的解决方案。

在您的脚本中,您有tblSAPLCSDITCMAT。 Stefan提供了一个引用tblSAPMBIBSTC537的代码段

根据要执行的测试,您将像Stefan一样进行循环,并且一旦找到满足测试条件的行,就可以选择绝对行i。

您只需要将测试映射到Stefan的模式即可。

compass1988
5楼-- · 2020-08-20 14:47

您好Stefan,


谢谢您的帮助,但这不是我想要的。

CS02是物料清单。

我使用脚本来选择正确的"位置"。 代码,然后我要选择整行。

您可以通过单击其前面的灰色正方形来手动突出显示(选择)整行。 我想这样做,以便删除行。

还有其他想法吗?

谢谢

Wim

悻福寶寶
6楼-- · 2020-08-20 14:42

您好Stefan

我搜索了很长时间,如何在CS02中选择一个项目。
" getAbsoluteRow()。selected = true"和" VisibleRowCount"的问题是它无法正常工作,我不得不在错误恢复时使用 下一个'。 现在,使用菜单" edit \ Position"后,我可以找到行号。

您可以在字段RC29P-ENTAC上找到位置,例如选择pos。 305

session.findById(" wnd [0]/tbar [0]/okcd")。text ="/img/ncs02"
session.findById(" wnd [0]")。sendVKey 0
session。 findById(" wnd [0]/usr/ctxtRC29N-MATNR")。text ="材料编号"
session.findById(" wnd [0]/usr/ctxtRC29N-WERKS")。text ="工厂"
session.findById(" wnd [0]/usr/ctxtRC29N-STLAN")。text =" 1"
session.findById(" wnd [0]/tbar [1]/btn [5]")。press
session.findById(" wnd [0]/mbar/menu [1]/menu [11]")。select
session.findById(" wnd [1]/usr/subPOS_SETP:SAPLCSDI:0710/txtRC29P -SELPO")。text =" 0305"
session.findById(" wnd [1]/tbar [0]/btn [0]")。press
Pos_nb =(session.findById(" wnd [0 ]/usr/txtRC29P-ENTAC")。text)
session.findById(" wnd [0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT")。getAbsoluteRow(Pos_nb-1).selected = 是

最诚挚的问候

Jean-Luc

一周热门 更多>