如何在SAP表中获取正确的行数?

2020-08-16 19:37发布

         点击此处--->   EasySAP.com群内免费提供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

         点击此处--->   EasySAP.com群内免费提供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

付费偷看设置
发送
4条回答
木偶小白
1楼-- · 2020-08-16 20:06

我一直在尝试使用我所拥有的代码。 我发现在最后一个可见项目不为空的情况下循环滚动的解决方法,然后继续循环滚动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

错误恢复下一个
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 posNo = 0 。 br> visiblerow_check = visiblerow-1
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 findById(" wnd [0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT \ 01 /ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG").verticalScrollbar.position = 0
msgbox(posNo)
msgbox(textCheck)

compass1988
2楼-- · 2020-08-16 20:03

我知道这是 已有六年历史的线程,但最接近该问题的答案是(tblID).VerticalScrollbar.Maximum +1。

由于表的索引以0开头,因此VerticalScrollbar.Maximum属性将始终返回表中的总行数减去1。假设表有10行,.VerticalScrollbar.Maximum将返回9行,因此加1。

干杯。

(晚6年了吗?)

葫芦娃快救爷爷
3楼-- · 2020-08-16 19:52

在上方扩展我的答案:

在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年。

SAP德到
4楼-- · 2020-08-16 20:07

Hi Script Man,

在SAP中,字段是固定的,因此我无法对其进行真正的排序,或者至少不知道如何进行排序(我对编码非常陌生)。 另外,确定空行cout或非空行cout有什么区别。 据我所知,SAP仍然必须遍历每一行以查看其是否为空。 逐行检查的过程确实很慢。 太糟糕了,没有可见行计数或行计数命令仅适用于包含数据的行

BR,

Gedis

一周热门 更多>