如何通过查询表查找和执行给定查询。 可见行出现问题。

2020-09-15 08:28发布

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

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




大家好! 我最近开始使用SAP Easy Access,并且正在尝试开发一个类似于Excel VBA中的宏的代码以自动执行特定查询。 我的问题是在查询表中找到所需的查询。 我尝试了 getRow 方法, getAbsoluteRow 。 后者没有用,因为在搜索之前我必须知道所需的查询索引,并且在添加新查询时该索引始终会更改。 而且我还有一个问题,就是只使行的索引可见。 例如,如何浏览整个表以查询所需的查询并返回其名称或索引?下面是我使用 scritp记录创建的代码。 但是,它没有用,因为所需的查询索引始终会更改(以粗体显示)

这是我的第二篇文章,因为我相信上一篇文章并不清楚。 我尝试了各种方法来从已解决的问题中获取信息,但是我尝试的所有方法均无效。

感谢您的支持!

Session.findById(" wnd [0]")。maximize

Session.findById(" wnd [0]/tbar [0]/okcd")。Text ="/img/npaah"

Session.findById(" wnd [0]")。sendVKey 0

Session.findById(" wnd [0]/tbar [1]/btn [6]")。按

Session.findById(" wnd [1]/usr/cmbDYNP4300-DD_WORKSPACE")。SetFocus

Session.findById(" wnd [1]/usr/cmbDYNP4300-DD_WORKSPACE")。Key =" 1"

Session.findById(" wnd [1]/usr/cmbDYNP4300-DD_USERGROUP")。SetFocus

Session.findById(" wnd [1]/usr/cmbDYNP4300-DD_USERGROUP")。Key =" 102"

Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES")。verticalScrollbar.Position = 2835

Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES")。getAbsoluteRow(2837).Selected = True

Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES/txtDYNP4300_TC_QUERIES-NAME [0,2]")。SetFocus

Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES/txtDYNP4300_TC_QUERIES-NAME [0,2]")。caretPosition = 0

Session.findById(" wnd [1]/tbar [0]/btn [0]")。按

Session.findById(" wnd [0]/shellcont [0]/shell")。pressToolbarButton" GET_DATA"

Session.findById(" wnd [0]/shellcont [0]/shell")。pressToolbarContextButton"&MB_EXPORT"

Session.findById(" wnd [0]/shellcont [0]/shell")。selectContextMenuItem"&XXL"

Session.findById(" wnd [1]/usr/ctxtDY_PATH")。Text =" P:\ Desktop \ Test"

Session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。Text =" test.XLSX"

Session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。caretPosition = 13

Session.findById(" wnd [1]/tbar [0]/btn [11]")。按

(63.9 kB)

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

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




大家好! 我最近开始使用SAP Easy Access,并且正在尝试开发一个类似于Excel VBA中的宏的代码以自动执行特定查询。 我的问题是在查询表中找到所需的查询。 我尝试了 getRow 方法, getAbsoluteRow 。 后者没有用,因为在搜索之前我必须知道所需的查询索引,并且在添加新查询时该索引始终会更改。 而且我还有一个问题,就是只使行的索引可见。 例如,如何浏览整个表以查询所需的查询并返回其名称或索引?下面是我使用 scritp记录创建的代码。 但是,它没有用,因为所需的查询索引始终会更改(以粗体显示)

这是我的第二篇文章,因为我相信上一篇文章并不清楚。 我尝试了各种方法来从已解决的问题中获取信息,但是我尝试的所有方法均无效。

感谢您的支持!

Session.findById(" wnd [0]")。maximize

Session.findById(" wnd [0]/tbar [0]/okcd")。Text ="/img/npaah"

Session.findById(" wnd [0]")。sendVKey 0

Session.findById(" wnd [0]/tbar [1]/btn [6]")。按

Session.findById(" wnd [1]/usr/cmbDYNP4300-DD_WORKSPACE")。SetFocus

Session.findById(" wnd [1]/usr/cmbDYNP4300-DD_WORKSPACE")。Key =" 1"

Session.findById(" wnd [1]/usr/cmbDYNP4300-DD_USERGROUP")。SetFocus

Session.findById(" wnd [1]/usr/cmbDYNP4300-DD_USERGROUP")。Key =" 102"

Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES")。verticalScrollbar.Position = 2835

Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES")。getAbsoluteRow(2837).Selected = True

Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES/txtDYNP4300_TC_QUERIES-NAME [0,2]")。SetFocus

Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES/txtDYNP4300_TC_QUERIES-NAME [0,2]")。caretPosition = 0

Session.findById(" wnd [1]/tbar [0]/btn [0]")。按

Session.findById(" wnd [0]/shellcont [0]/shell")。pressToolbarButton" GET_DATA"

Session.findById(" wnd [0]/shellcont [0]/shell")。pressToolbarContextButton"&MB_EXPORT"

Session.findById(" wnd [0]/shellcont [0]/shell")。selectContextMenuItem"&XXL"

Session.findById(" wnd [1]/usr/ctxtDY_PATH")。Text =" P:\ Desktop \ Test"

Session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。Text =" test.XLSX"

Session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。caretPosition = 13

Session.findById(" wnd [1]/tbar [0]/btn [11]")。按

(63.9 kB)
付费偷看设置
发送
4条回答
shere_lin
1楼 · 2020-09-15 09:07.采纳回答

第二次尝试:

。  。  。
 'Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES")。verticalScrollbar.Position = 2835
 'Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES")。getAbsoluteRow(2837).Selected = True
 'Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES/txtDYNP4300_TC_QUERIES-NAME [0,2]")。SetFocus
 'Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES/txtDYNP4300_TC_QUERIES-NAME [0,2]")。caretPosition = 0

 myQuery =" UDI-RT-FUNC01"
 myPosition = 2837

 j = 0
 k = 0
 做
   设置tTableID = Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES")
   VisibleRows = tTableID.VisibleRowCount
   TotalRows = tTableID.RowCount

   如果j = 0则
      tTableID.VerticalScrollbar.Position = myPosition
      k = myPosition
      '出于任何原因,必须在命令tTableID.VerticalScrollbar.Position之后在此处重置对象tTableID。
      设置tTableID = Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES")
   万一

   对于i = 0到VisibleRows-1
     关于错误继续
     myVariable = tTableID.GetCell(i,0).text
     如果Err.Number <> 0然后退出
     出错时转到0
     如果trim(myVariable)= myQuery然后退出
   下一个
   如果Err.Number <> 0或trim(myVariable)= myQuery然后退出
   tTableID.VerticalScrollbar.Position = tTableID.VerticalScrollbar.Position + VisibleRows
   j = j + 1
   k = k +可见行
 循环

 如果trim(myVariable)= myQuery然后
   tTableID.getabsoluterow(k + i).selected = true
   Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES/txtDYNP4300_TC_QUERIES-NAME [0,"&cstr(i)&"]")。SetFocus
   '不必要
   'Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES/txtDYNP4300_TC_QUERIES-NAME [0,2]")。caretPosition = 0
   Session.findById(" wnd [1]/tbar [0]/btn [0]")。press
   Session.findById(" wnd [0]/shellcont [0]/shell")。pressToolbarButton" GET_DATA"
   Session.findById(" wnd [0]/shellcont [0]/shell")。pressToolbarContextButton"&MB_EXPORT"
   Session.findById(" wnd [0]/shellcont [0]/shell")。selectContextMenuItem"&XXL"
   Session.findById(" wnd [1]/usr/ctxtDY_PATH")。Text =" P:\ Desktop \ Test"
   Session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。Text =" test.XLSX"
   '不必要
   'Session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。caretPosition = 13
   Session.findById(" wnd [1]/tbar [0]/btn [11]")。press
 其他
   msgbox"找不到查询。",vbInformation," Information"
 万一

 

此致

ScriptMan

三十六小时_GS
2楼-- · 2020-09-15 08:53

我测试并评估了您的代码,它完美地解决了我的问题。 感谢您为帮助我解决这个问题所花费的时间和精力。 谢谢!

小灯塔
3楼-- · 2020-09-15 08:47

你好让卡洛,

不幸的是,我不使用查询,但是您可以尝试以下操作。

例如:

。  。  。
 'Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES")。verticalScrollbar.Position = 2835
 'Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES")。getAbsoluteRow(2837).Selected = True
 'Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES/txtDYNP4300_TC_QUERIES-NAME [0,2]")。SetFocus
 'Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES/txtDYNP4300_TC_QUERIES-NAME [0,2]")。caretPosition = 0

 myQuery =" UDI-RT-FUNC01"
 myPosition = 2837
 j = 0

 做
   设置tTableID = Session.findById(" wnd [1]/usr/tblSAPLAQ_INT_FUNCTIONSTCH_OPEN_QUERIES")
   如果j = 0,则tTableID.VerticalScrollbar.Position = myPosition
   VisibleRows = tTableID.VisibleRowCount
   对于i = 0到VisibleRows-1
     关于错误继续
     myVariable = tTableID.GetCell(i,0).text
     如果Err.Number <> 0然后退出
     出错时转到0
     如果myVariable = myQuery,则退出
   下一个
   如果Err.Number <> 0或myVariable = myQuery,然后退出
   tTableID.VerticalScrollbar.Position = tTableID.VerticalScrollbar.Position + VisibleRows
   j = j + 1
 循环

 如果myVariable = myQuery,则
    Session.findById(" wnd [1]/tbar [0]/btn [0]")。press
    Session.findById(" wnd [0]/shellcont [0]/shell")。pressToolbarButton" GET_DATA"
    Session.findById(" wnd [0]/shellcont [0]/shell")。pressToolbarContextButton"&MB_EXPORT"
    Session.findById(" wnd [0]/shellcont [0]/shell")。selectContextMenuItem"&XXL"
    Session.findById(" wnd [1]/usr/ctxtDY_PATH")。Text =" P:\ Desktop \ Test"
    Session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。Text =" test.XLSX"
    Session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。caretPosition = 13
    Session.findById(" wnd [1]/tbar [0]/btn [11]")。press
 其他
    msgbox"找不到查询。",vbInformation," Information"
 万一

  
 

仅当出现新查询时,此注意事项才有效。 如果还可以删除现有查询,则还必须向后进行搜索。 就像我说的,所有这些仅仅是纯理论。 不幸的是,我无法对其进行测试。

此致

ScriptMan

SC_Yao
4楼-- · 2020-09-15 09:07

感谢您的帮助和关注!

我尝试使用此方法,但对我不起作用。 我进行了一些代码更改以解决此问题,但我从未找到该查询。 我总是返回找不到查询。

一周热门 更多>