Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA从SAP中提取数据的通用方法_Excel_Vba_Netweaver - Fatal编程技术网

Excel VBA从SAP中提取数据的通用方法

Excel VBA从SAP中提取数据的通用方法,excel,vba,netweaver,Excel,Vba,Netweaver,有人知道如何使用VBA从SAP Netweaver提取数据吗 我有许多每日报告需要将数据从SAP导出到Excel并将其格式化为报告。我已经编写了执行格式化的VBA宏。我必须手动提取数据并单独运行每个报表宏。如果我的宏可以直接进入SAP,为report#1获取数据,格式化数据,为report#2获取数据,等等,那么就可以节省很多时间 我使用SAP NetWeaver(730版,7300.1.3.1079版)。这些报告只是Excel数据透视表和图表。这一切都取决于您对SAP系统的访问方式。导出数据的

有人知道如何使用VBA从SAP Netweaver提取数据吗

我有许多每日报告需要将数据从SAP导出到Excel并将其格式化为报告。我已经编写了执行格式化的VBA宏。我必须手动提取数据并单独运行每个报表宏。如果我的宏可以直接进入SAP,为report#1获取数据,格式化数据,为report#2获取数据,等等,那么就可以节省很多时间


我使用SAP NetWeaver(730版,7300.1.3.1079版)。这些报告只是Excel数据透视表和图表。

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

但是,通常情况下,寻求此类答案的人都在寻找一种即时解决方案,该解决方案不需要IT部门花费数月时间定制SAP系统

在这种情况下,您可能需要使用SAP GUI脚本。SAP GUI脚本允许您以与自动化Excel大致相同的方式自动化Windows SAP GUI。事实上,您可以直接从Excel宏调用SAP GUI。多读一读。SAP GUI有一个宏记录工具,与Excel非常相似。它在VBScript中记录宏,VBScript与Excel VBA几乎相同,通常可以直接复制并粘贴到Excel宏中

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

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 GUI安装文件夹中添加对
sapfewse.ocx
的引用。

您不指定从中导出数据的产品(SAP是一家提供数以百万计产品的公司——你在说哪一种?)。您没有指定格式设置所基于的报表或报表技术。如果没有更多信息,很难回答此问题。我认为这可能会对SAP连接或整篇文章有所帮助。谢谢!今天我将对脚本录制进行一些尝试。对于我正在尝试的内容,这听起来是最好的选择(尤其是因为与我合作的SAP DB由客户所有,他们的IT部门不会代表我做任何事情)。您提供的指向SAP GUI脚本页面的链接有很多关于编写脚本的信息,但我找不到有关如何使用VBA调用SAP GUI的任何信息。我假设我不能逐字复制/粘贴脚本。是否应该启用特定的参考库?是否需要声明SapGuiAuto之类的变量?您应该能够复制e脚本逐字逐句。脚本正在使用后期绑定。我将编辑答案,并提供有关早期和后期绑定的详细信息。我发现并修复了代码中的一个打字错误,该错误会阻止脚本运行。有趣的是,没有人对此发表评论:)这是另一个很好的页面,显示了如何启用脚本录制和播放菜单项。