点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我一直在努力使订单中的行数正确。 有时我可以放入1到50个物品。 我只能得到包括所有行的行数,并且只有在屏幕上可以看到的可见行数。
是否有任何方法可以识别其中包含数据的许多行? 以下是参考文献
TotalRow = session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT \ 01/ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG">。
VisibleRow = session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT \ 01/ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG 可见。
BR,
Gedis
我一直在尝试使用我所拥有的代码。 我发现在最后一个可见项目不为空的情况下循环滚动的解决方法,然后继续循环滚动1行,直到保持计数为空为止。 有点慢,但是可以完成工作。 我想知道是否有没有更简单的方法无需遍历项目。
这是我使用的代码(是否有格式来引用代码?)
如果不是IsObject(应用程序),则
设置SapGuiAuto = GetObject(" SAPGUISERVER")
设置应用程序= SapGuiAuto.GetScriptingEngine
如果,如果不是IsObject(连接),则结束,
设置 连接= application.Children(0)
如果不是IsObject(session),则结束
设置会话= connection.Children(0)
如果,如果是IsObject(WScript),则结束。 br> WScript.ConnectObject会话,在"上"
WScript.ConnectObject应用程序,在"上"
结束If
session.findById(" wnd [0]")。maximize
错误恢复下一个 posNo = 0 。 br> visiblerow_check = visiblerow-1
findById(" wnd [0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT \ 01 /ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG").verticalScrollbar.position = 0
dim itemInput
itemInput = 24
Dim TotScrol,TotScrolInt,RowScroll,Iterations,TotalRow,VisibleRow,runCount
TotalRow = session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT \ 01/ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG")。rowCount
VisibleRow = session.findById/VIEW_SCR_T/EENTA/SYB/DYTA/DYTA/DYTA/SYB/SYB/SYB SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG")。visiblerowCount
'TotScrol = Totalrow/VisibleRow(旧滚动计数。问题totarow显示整行,而可见行显示全部可见行,包括空。无法仅计数) 项目)
TotScrol =(ItemInput(i)/VisibleRow)+0.0001
TotScrolInt = Int(TotScrol)'使滚动数为整数(无小数)
RowScroll = VisibleRow
Iterations = VisibleRow
Dim leftOver'-上次滚动后有多少行
leftOver = itemInput-(TotScrolInt)* VisibleRow
'MsgBo x(leftOver)
'MsgBox(TotalRow)
'MsgBox(VisibleRow)
'MsgBox(TotScrol)
'MsgBox(TotScrolint)
dim计数器,posNo,textCheck
Counter = 0
textCheck = session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT \ 01/ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATV_B-AP-TX_A_ERF "&visiblerow_check&"]")。text
msgbox(textcheck)
msgbox(visiblerow)
If textCheck <>""然后
执行
session.findById(" wnd [0] /usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\01/ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG").verticalScrollbar.position = visiblerow
textCheck_VIEW_VIEWd_PsT_Ts_VIEW [VIEWD] \ 01/ssubSUBSCREEN_BO DY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG/txtVBAP-POSNR [0,"&visiblerow_check&"]")。text
Counter = Counter + 1
msgbox(textCheck)
visibleRow = visibleRow + visibleRow
msgbox(visiblerow)
msgbox(计数器)
循环直到textCheck =""
End If
VisibleRow = session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT \ 01/ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG")。visiblerowCount
posNo = Counter * VisibleRow
msgbox(Counter)
msgbox(visiblerow)
执行
session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT \ 01/ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG
position.Checkical滚动。 = session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT \ 01/ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG/txtVBAP-POSNR [0,Count]。 r =计数器+ 1
posNo = posNo + 1
直到textCheck =""
posNo = posNo-1
msgbox(posNo)
msgbox(textCheck)
我知道这是 已有六年历史的线程,但最接近该问题的答案是(tblID).VerticalScrollbar.Maximum +1。
由于表的索引以0开头,因此VerticalScrollbar.Maximum属性将始终返回表中的总行数减去1。假设表有10行,.VerticalScrollbar.Maximum将返回9行,因此加1。 >
干杯。
(晚6年了吗?)
在上方扩展我的答案:
在SAPGUI表控件对象内获取包含数据的总行的最快方法是使用.VerticalScrollbar.Maximum +1。
该+1是因为SAPGUI表控件行的索引以0开头,如果从数组变量中循环,则不必+1。
VisibleRowcount返回屏幕上可见的总行,即使表上没有数据。 假设该表仅包含5行数据,但可见行总数为11,您将获得11。
RowCount返回表的总可见行和隐藏行,无论它是否有数据。 该值始终是具有数据的总行+可见的总行-1。 如果SAPGUI表对象具有11条可见行,其中5条包含数据,则将获得15条。
因此,将所有这些属性放在一起:
VerticalScrollbar.Maximum =行数-VisibleRowcount
另一个是Rows.Count,它将返回与VisibleRowcout相似的值。
希望此信息对那里的某人有用,即使已经晚了6年。
Hi Script Man,
在SAP中,字段是固定的,因此我无法对其进行真正的排序,或者至少不知道如何进行排序(我对编码非常陌生)。 另外,确定空行cout或非空行cout有什么区别。 据我所知,SAP仍然必须遍历每一行以查看其是否为空。 逐行检查的过程确实很慢。 太糟糕了,没有可见行计数或行计数命令仅适用于包含数据的行
BR,
Gedis
一周热门 更多>