使用脚本从gridview读取数据的最有效方法

2020-08-20 03:23发布

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

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


你好,

我一直在努力从SAP的gridview中读取数据,特别是当数据来自我们为其设置了多个参数的表时。 一切都通过vbscript完成。 我的问题是:

  1. 遍历gridview数据集的最有效方法是什么? 我遇到的所有教程都显示了一个单元一个单元地循环。 有没有一种方法可以一次复制整个数据集到数组?
  2. 如何填充多个选择字段,例如图片中的一个? 在图片下面的代码中,我将向您展示我一次执行一个值。 例如,如何使用存储在数组或文件中的数据填充数据?

如果不是IsObject(application),则
    设置SapGuiAuto = GetObject(" SAPGUI")
    设置应用程序= SapGuiAuto.GetScriptingEngine
 万一
 如果不是IsObject(connection)然后
    设置连接= application.Children(0)
 万一
 如果不是IsObject(session)然后
    设置会话= connection.Children(0)
 万一
 如果IsObject(WScript)然后
    WScript.ConnectObject会话,"打开"
    WScript.ConnectObject应用程序,"打开"
 万一

 session.findById(" wnd [0]/tbar [0]/okcd")。text =" se16n"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/usr/ctxtGD-TAB")。text ="/img/opt/vim_1head"
 session.findById(" wnd [0]/usr/txtGD-MAX_LINES")。text =""
 session.findById(" wnd [0]/tbar [1]/btn [18]")。按
 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/btnPUSH [4,1]")。setFocus
 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/btnPUSH [4,1]")。按

 '-这是我开始填充多重选择字段的地方。 我想从数组中复制数据吗? 怎么做?

 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,0]")。text =" 1477880"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,1]")。text =" 1477699"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,2]")。text =" 1477879"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,3]")。text =" 1477785"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,4]")。text =" 1477779"

 '-每隔5行,我需要按F7键以允许进一步添加

 session.findById(" wnd [1]")。sendVKey 7
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,5]")。text =" 1477711"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,6]")。text =" 1477797"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,7]")。text =" 1477881"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,4]")。text =" 1477882"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,5]")。text =" 1477883"
 session.findById(" wnd [1]")。sendVKey 7
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,3]")。text =" 1477784"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,4]")。text =" 1477785"
 session.findById(" wnd [1]")。sendVKey 0
 session.findById(" wnd [1]")。sendVKey 8
 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/chkGS_SELFIELDS-MARK [5,1]")。selected = true
 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/chkGS_SELFIELDS-MARK [5,1]")。setFocus


 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/chkGS_SELFIELDS-MARK [5,10]")。selected = true
 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/chkGS_SELFIELDS-MARK [5,10]")。setFocus


 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/chkGS_SELFIELDS-MARK [5,13]")。selected = true
 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/chkGS_SELFIELDS-MARK [5,13]")。setFocus
 session.findById(" wnd [0]")。sendVKey 8

 设置GridView = session.findById(" wnd [0]/usr/cntlRESULT_LIST/shellcont/shell")
 GridView.selectAll

 '-我将以json格式写下结果
 myFile =" C:\ Users \ Jakub.Konstantynowic \ Documents \ vim_1head.json"

 设置fso = CreateObject(" Scripting.FileSystemObject")
 设置文件= fso.CreateTextFile(myFile,True,True)

 file.WriteLine" ["

 '-为了阅读gridview,我使用了两个循环:一个用于行,一个用于列。 有更好的方法吗?

 对于i = 0到GridView.RowCount-1
    
     eachCellValue =" {"&vbCrLf

     对于j = 0到GridView.ColumnCount-1
         如果j 
 

任何帮助将不胜感激。 在此先感谢大家,并致以最诚挚的问候。 保持健康。

sap.jpg (79.0 kB)

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

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


你好,

我一直在努力从SAP的gridview中读取数据,特别是当数据来自我们为其设置了多个参数的表时。 一切都通过vbscript完成。 我的问题是:

  1. 遍历gridview数据集的最有效方法是什么? 我遇到的所有教程都显示了一个单元一个单元地循环。 有没有一种方法可以一次复制整个数据集到数组?
  2. 如何填充多个选择字段,例如图片中的一个? 在图片下面的代码中,我将向您展示我一次执行一个值。 例如,如何使用存储在数组或文件中的数据填充数据?

如果不是IsObject(application),则
    设置SapGuiAuto = GetObject(" SAPGUI")
    设置应用程序= SapGuiAuto.GetScriptingEngine
 万一
 如果不是IsObject(connection)然后
    设置连接= application.Children(0)
 万一
 如果不是IsObject(session)然后
    设置会话= connection.Children(0)
 万一
 如果IsObject(WScript)然后
    WScript.ConnectObject会话,"打开"
    WScript.ConnectObject应用程序,"打开"
 万一

 session.findById(" wnd [0]/tbar [0]/okcd")。text =" se16n"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/usr/ctxtGD-TAB")。text ="/img/opt/vim_1head"
 session.findById(" wnd [0]/usr/txtGD-MAX_LINES")。text =""
 session.findById(" wnd [0]/tbar [1]/btn [18]")。按
 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/btnPUSH [4,1]")。setFocus
 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/btnPUSH [4,1]")。按

 '-这是我开始填充多重选择字段的地方。 我想从数组中复制数据吗? 怎么做?

 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,0]")。text =" 1477880"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,1]")。text =" 1477699"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,2]")。text =" 1477879"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,3]")。text =" 1477785"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,4]")。text =" 1477779"

 '-每隔5行,我需要按F7键以允许进一步添加

 session.findById(" wnd [1]")。sendVKey 7
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,5]")。text =" 1477711"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,6]")。text =" 1477797"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,7]")。text =" 1477881"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,4]")。text =" 1477882"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,5]")。text =" 1477883"
 session.findById(" wnd [1]")。sendVKey 7
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,3]")。text =" 1477784"
 session.findById(" wnd [1]/usr/tblSAPLSE16NMULTI_TC/ctxtGS_MULTI_SELECT-LOW [1,4]")。text =" 1477785"
 session.findById(" wnd [1]")。sendVKey 0
 session.findById(" wnd [1]")。sendVKey 8
 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/chkGS_SELFIELDS-MARK [5,1]")。selected = true
 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/chkGS_SELFIELDS-MARK [5,1]")。setFocus


 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/chkGS_SELFIELDS-MARK [5,10]")。selected = true
 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/chkGS_SELFIELDS-MARK [5,10]")。setFocus


 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/chkGS_SELFIELDS-MARK [5,13]")。selected = true
 session.findById(" wnd [0]/usr/tblSAPLSE16NSELFIELDS_TC/chkGS_SELFIELDS-MARK [5,13]")。setFocus
 session.findById(" wnd [0]")。sendVKey 8

 设置GridView = session.findById(" wnd [0]/usr/cntlRESULT_LIST/shellcont/shell")
 GridView.selectAll

 '-我将以json格式写下结果
 myFile =" C:\ Users \ Jakub.Konstantynowic \ Documents \ vim_1head.json"

 设置fso = CreateObject(" Scripting.FileSystemObject")
 设置文件= fso.CreateTextFile(myFile,True,True)

 file.WriteLine" ["

 '-为了阅读gridview,我使用了两个循环:一个用于行,一个用于列。 有更好的方法吗?

 对于i = 0到GridView.RowCount-1
    
     eachCellValue =" {"&vbCrLf

     对于j = 0到GridView.ColumnCount-1
         如果j 
 

任何帮助将不胜感激。 在此先感谢大家,并致以最诚挚的问候。 保持健康。

sap.jpg (79.0 kB)
付费偷看设置
发送
1条回答
ZJXianG
1楼-- · 2020-08-20 04:12

您好 Jakub Konstantynowicz

对您的问题:

  1. 复制整个数据表是不可能的,因为只有可见记录的数据可用,并且还有更多。 出于性能原因,如有必要,将重新加载不可见的数据。
  2. 您可以使用剪贴板或文件上传,例如我描述的此处

最诚挚的问候
Stefan

一周热门 更多>