首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel VBA从SAP NetWeaver中提取数据

Excel VBA从SAP NetWeaver中提取数据
EN

Stack Overflow用户
提问于 2016-01-31 20:00:47
回答 1查看 4.4K关注 0票数 0

如何使用VBA宏将数据从NetWeaver中提取到Excel中?

我有一个SAP系统中的数据,可以通过SAP在几个不同的事务中访问。我需要每天提取这些数据,然后将其格式化为Excel电子表格和报表。手动提取此数据非常耗时,而且容易出错。

我没有开发人员或系统支持。我必须能够作为一个没有特权的用户来做这件事。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-31 20:00:47

这是抄袭我在这里的答案:https://stackoverflow.com/a/19456656/2250183

这都取决于您对SAP系统的访问方式。导出数据和/或宏可以调用的RFC直接获取数据或让SAP创建文件的ABAP程序可能是最好的。

然而,通常情况下,寻找这类答案的人正在寻找一种不需要IT部门花费数月时间定制SAP系统的即时解决方案。

在这种情况下,您可能希望使用SAP脚本。SAP脚本允许您以与自动化Excel相同的方式自动化Windows SAP。实际上,您可以直接从Excel宏调用SAP。阅读更多关于它的这里。SAP有一个宏记录工具,就像Excel一样。它将宏记录在VBScript中,与Excel几乎相同,通常可以直接复制和粘贴到Excel宏中。

示例代码

下面是一个基于我可以访问的SAP系统的简单示例。

代码语言:javascript
复制
Public Sub SimpleSAPExport()
  Set SapGuiAuto  = GetObject("SAPGUI") 'Get the SAP GUI Scripting object
  Set SAPApp = SapGuiAuto.GetScriptingEngine 'Get the currently running SAP GUI 
  Set SAPCon = SAPApp.Children(0) 'Get the first system that is currently connected
  Set session = SAPCon.Children(0) 'Get the first session (window) on that connection

  'Start the transaction to view a table
  session.StartTransaction "SE16"

  'Select table T001
  session.findById("wnd[0]/usr/ctxtDATABROWSE-TABLENAME").Text = "T001"
  session.findById("wnd[0]/tbar[1]/btn[7]").Press

  'Set our selection criteria
  session.findById("wnd[0]/usr/txtMAX_SEL").text = "2"
  session.findById("wnd[0]/tbar[1]/btn[8]").press

  'Click the export to file button
  session.findById("wnd[0]/tbar[1]/btn[45]").press

  'Choose the export format
  session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").select
  session.findById("wnd[1]/tbar[0]/btn[0]").press

  'Choose the export filename
  session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = "test.txt"
  session.findById("wnd[1]/usr/ctxtDY_PATH").text = "C:\Temp\"

  'Export the file
  session.findById("wnd[1]/tbar[0]/btn[0]").press
End Sub

脚本记录

要帮助查找元素(如wnd[1]/tbar[0]/btn[0])的名称,可以使用脚本记录。单击按钮,它可能看起来有点像这样:

然后找到脚本录制和回放菜单项。

在此范围内,More按钮允许您查看/更改将VB脚本记录到的文件。输出格式有点混乱,它记录诸如选择文本、单击文本字段内等内容。

编辑:早期和后期装订

如果将所提供的脚本直接复制到VBA宏中,则应该可以工作。它使用后期绑定,行Set SapGuiAuto = GetObject("SAPGUI")定义SapGuiAuto对象。

但是,如果希望使用早期绑定,以便VBA编辑器能够显示正在使用的对象的属性和方法,则需要在SAP安装文件夹中添加对sapfewse.ocx的引用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35118767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档