如何使用VBA从SAP GUI窗口读取所有数据

时间:2017-11-07 11:15:32

标签: vba sap-gui sapscript

我正在尝试自动化T-Code-VA03。 我在采购订单编号文本框中输入采购订单编号,然后按F8

Screen 1

这会提示包含多行标签的窗口。

Screen 2

我的要求是,我想选择最新日期的那个。我试着为它录制脚本并在代码下面。

session.findById("wnd[0]/usr/txtRV45S-BSTNK").text = "123456789"
session.findById("wnd[0]/usr/txtRV45S-BSTNK").setFocus
session.findById("wnd[0]/usr/txtRV45S-BSTNK").caretPosition = 8
session.findById("wnd[0]").sendVKey 8
session.findById("wnd[1]/usr/lbl[49,6]").setFocus
session.findById("wnd[1]/usr/lbl[49,6]").caretPosition = 0

我可以看到有标签带索引。如何迭代整个窗口并将焦点放在最新日期行?

2 个答案:

答案 0 :(得分:2)

使用VB脚本,您可以尝试以下方法:

var startDate = _luisResult.Entity.First().resolution.values.First().start;
var endDate = _luisResult.Entity.First().resolution.values.First().end;

此致 ScriptMan

答案 1 :(得分:1)

如果你真的需要做一些事情,比如在窗口中迭代并把焦点放在最新日期的行上,不要用VBA做,因为你可能会遇到很多问题。

说完上面的那个,尝试使用sendkeys https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-sendkeys-method-excel并发送 TAB 。然后在表单中搜索“Item”代码。在此之后,发送标签8次以转到PO Date。在列表上写下日期。再次发送TAB 11次到下一个日期。把它写在列表上。所以,直到没有更多日期。

无论如何,正如我所提到的,这是一个很好的解决方案。最好的方法是向DB Admin请求对DB或自定义视图的只读访问权限。有了它,您可以制作一个强大的解决方案,它可以读取最新的日期。