表计数复制到Excel

2020-08-13 13:28发布

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

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


0

我正在尝试从表中获取表计数以及每个表中可用的列。 我需要使用表格名称,计数,字段名称在Excel工作表中获取此信息。 我已经生成了VBA脚本。 我没有太多访问SAP GUI的权限。 我运行 SE16 来获取表计数。 下面是生成的脚本。

很难一一进入表格并进行计数。 我们正在使用S4hana。

我正在寻找将表名作为文件传递给SAP GUI并将结果输出为包含"表名","计数"和"字段名"的文件的方法。

以下代码进行登录,运行 SE16 ,进入表 QPRS ,按Enter,然后按Ctrl + F7键以显示表的条目数, 并对接下来的表 TQ43 TQ43T TQ45 TQ45T 进行相同操作。

  IfNot IsObject(application)ThenSet SapGuiAuto = GetObject(" SAPGUI")Set application = SapGuiAuto.GetScriptingEngine
 EndIfIfNot IsObject(connection)ThenSet连接= application.Children(0)EndIfIfNot IsObject(session)ThenSet session = connection.Children(0)EndIfIf IsObject(WScript)Then
     WScript.ConnectObject会话,"开启"
     WScript.ConnectObject应用程序,在" EndIf"上

 session.findById(" wnd [0]")。maximize
 session.findById(" wnd [0]/usr/txtRSYST-MANDT")。text =" 900"
 session.findById(" wnd [0]/usr/txtRSYST-BNAME")。text =" 12345"
 session.findById(" wnd [0]/usr/pwdRSYST-BCODE")。text =" *****"
 session.findById(" wnd [0]/usr/pwdRSYST-BCODE")。setFocus
 session.findById(" wnd [0]/usr/pwdRSYST-BCODE")。caretPosition = 12
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/tbar [0]/okcd")。text ="/img/nse16"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/usr/ctxtDATABROWSE-TABLENAME")。text =" QPRS"
 session.findById(" wnd [0]/usr/ctxtDATABROWSE-TABLENAME")。caretPosition = 4
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/tbar [1]/btn [31]")。按
 session.findById(" wnd [1]/tbar [0]/btn [0]")。按
 session.findById(" wnd [0]/tbar [0]/okcd")。text ="/img/nse16"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/usr/ctxtDATABROWSE-TABLENAME")。text =" TQ43"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/tbar [1]/btn [31]")。按
 session.findById(" wnd [1]/tbar [0]/btn [0]")。按 

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

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


0

我正在尝试从表中获取表计数以及每个表中可用的列。 我需要使用表格名称,计数,字段名称在Excel工作表中获取此信息。 我已经生成了VBA脚本。 我没有太多访问SAP GUI的权限。 我运行 SE16 来获取表计数。 下面是生成的脚本。

很难一一进入表格并进行计数。 我们正在使用S4hana。

我正在寻找将表名作为文件传递给SAP GUI并将结果输出为包含"表名","计数"和"字段名"的文件的方法。

以下代码进行登录,运行 SE16 ,进入表 QPRS ,按Enter,然后按Ctrl + F7键以显示表的条目数, 并对接下来的表 TQ43 TQ43T TQ45 TQ45T 进行相同操作。

  IfNot IsObject(application)ThenSet SapGuiAuto = GetObject(" SAPGUI")Set application = SapGuiAuto.GetScriptingEngine
 EndIfIfNot IsObject(connection)ThenSet连接= application.Children(0)EndIfIfNot IsObject(session)ThenSet session = connection.Children(0)EndIfIf IsObject(WScript)Then
     WScript.ConnectObject会话,"开启"
     WScript.ConnectObject应用程序,在" EndIf"上

 session.findById(" wnd [0]")。maximize
 session.findById(" wnd [0]/usr/txtRSYST-MANDT")。text =" 900"
 session.findById(" wnd [0]/usr/txtRSYST-BNAME")。text =" 12345"
 session.findById(" wnd [0]/usr/pwdRSYST-BCODE")。text =" *****"
 session.findById(" wnd [0]/usr/pwdRSYST-BCODE")。setFocus
 session.findById(" wnd [0]/usr/pwdRSYST-BCODE")。caretPosition = 12
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/tbar [0]/okcd")。text ="/img/nse16"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/usr/ctxtDATABROWSE-TABLENAME")。text =" QPRS"
 session.findById(" wnd [0]/usr/ctxtDATABROWSE-TABLENAME")。caretPosition = 4
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/tbar [1]/btn [31]")。按
 session.findById(" wnd [1]/tbar [0]/btn [0]")。按
 session.findById(" wnd [0]/tbar [0]/okcd")。text ="/img/nse16"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/usr/ctxtDATABROWSE-TABLENAME")。text =" TQ43"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/tbar [1]/btn [31]")。按
 session.findById(" wnd [1]/tbar [0]/btn [0]")。按 
付费偷看设置
发送
2条回答
CJones
1楼-- · 2020-08-13 14:02

我有一个包含一组实用程序的电子表格,这些实用程序组合在一起以利用利用excel VBA的录制脚本。 下面的
是该模板中的脚本模块。 重构到您的环境中,我留给您练习,但这适用于任意大的表列表。

子脚本(会话为SAPFEWSELib.Guisession)
 '-Gene Vars --------------------------------------------------------------  --------------------
     Dim nRow作为整数
     昏暗的MsgCol作为整数
     变暗inp作为变体
     Dim pop As SAPFEWSELib.GuiModalWindow

     nRow = 1
 '*********************脚本特定变量****************************  ***********
     将ztableName变暗为整数
     将ztableCount变暗为整数
    
     ztableName = 1
     ztableCount = 2
 '/********************脚本特定变量****************************  ***********
     '开始处理数据
     'session.FindById(" wnd [0]")。图示
     session.FindById(" wnd [0]")。最大化
     '从工作表中获取数据表

     设置inp =工作表(" SAP GUI脚本")。ListObjects("输入")
     "对于脚本反馈,始终假定最后一栏是免费的
     MsgCol = inp.ListColumns.Count
     在错误转到To ErrorHandler
 '********************输入您的SAPGui脚本标题************************  ***
 '运行一次用于初始化翻译的代码,如果没有退出和进入,则减少点击
 '脚本必需
 '*****************************************************  ***********************************
     session.StartTransaction(" SE16N")

 '********************结束您的SAPGui脚本头************************  *****
 '**********************开始正式脚本循环***********************  ********
     对于nRow = 1到inp.Range.Rows.Count-1
        
         如果inp.DataBodyRange(nRow,MsgCol)<>""然后
            
             '跳过已采取反馈措施的条目。
         其他:
             滚动到活动记录。
             inp.ListRows.Item(nRow).Range.Select

 '********************在这里输入您的SAPGui脚本************************  ***
     '使用形式" inp.DataBodyRange(nRow,'列号/变量')"输入和输出
    
             session.FindById(" wnd [0]/usr/ctxtGD-TAB")。text = inp.DataBodyRange(nRow,ztableName)
             session.FindById(" wnd [0]/tbar [1]/btn [7]")。按
             如果不是session.FindById(" wnd [1]",False)那么什么都没有
                 设置pop = session.FindById(" wnd [1]")
                 inp.DataBodyRange(nRow,ztableCount)= pop.PopupDialogText
                 pop.FindById(" tbar [0]/btn [0]")。按
                 设置流行=什么都没有
             其他:
             '没有弹出窗口,没有表返回消息在这里进行特殊处理。
            
             万一
 '********************在此处结束您的SAPGui脚本************************  *****
 '保存SAP返回的该行数据的消息
         如果inp.DataBodyRange(nRow,MsgCol)=""然后
             inp.DataBodyRange(nRow,MsgCol)="完成"&session.FindById(" wnd [0]/sbar")。text
         万一
     '检查电子表格中的下一行以获取数据
         万一
     下一个


 '********************输入您的SAPGui脚本页脚************************  ***
 '运行一次代码,用于退出转换,减少点击并解决最终退出问题
 '脚本所需的条件
 '*****************************************************  ***********************************

 '********************结束您的SAPGui脚本页脚************************  ***


 退出子
 ErrorHandler:
 如果Err.Number =" -2147417856",则
     Application.Wait Now + TimeValue(" 0:00:01")
     恢复
 其他:
     inp.DataBodyRange(nRow,MsgCol)="意外错误-脚本已终止"
 万一
 session.FindById(" wnd [0]/tbar [0]/okcd")。text ="/img/n"
 session.FindById(" wnd [0]")。sendVKey 0


 结束子


 

如果需要更多建议,请大声疾呼。

绿领巾童鞋
2楼-- · 2020-08-13 13:44

谢谢 您访问SAP社区以获得问题的答案。 我在这里 帮助您充分利用它。

首先,我建议您 熟悉 https://community.sap.com/resources/questions-and-answers (如果 您还没有这样做),因为 它提供了准备问题的技巧,这些问题会引起我们的回应 成员。
另请确保您使用的是所有适当的标签,以便正确的专家 可以找到您的问题。 总体而言,您提供的详细信息越多, 成员将能够为您提供帮助。 如果您愿意,可以修改 您可以选择"操作",然后选择"编辑"(尽管有人回答了) 您的问题,您将失去编辑问题的能力-但如果那样 ,您可以在评论中留下更多详细信息。)

最后,如果您希望与 读者,请考虑在您的个人资料中添加图片。 这是你的做法 它: https://www.youtube.com/watch?v=F5JdUbyjfMA&list=PLpQebylHrdh5s3gwyDh6 >。 通过使用 的照片,鼓励读者做出回应。

最好,
Lena(SAP社区主持人)