有一段时间以来,我一直在寻找一种不用动手就能用BW系统的数据自动更新Excel文件的方法,而不必使用广播或任何其他额外的服务器。
在阅读了大量来自不同来源的帖子和论坛,以及一系列的尝试和错误之后,我有了一种既可靠又实用的技术Office和BEX的分析。
我想我应该分享我使用的过程,这样任何和我有同样困难的人都可以从一个地方得到一个潜在的解决方案。
这对我来说是可行的,但当然可能不适用于你,这取决于你的设置,因此里程数可能会有所不同。
欢迎反馈/修复/更正。
本主题第2部分在此处提供:通过VBA/VBscript自动更新Excel文件(BEX&AO)中的BW数据–第2部分
本主题第3部分在此处提供:通过VBA分析Office变量和过滤器
本主题第4部分在此处提供:Office分析Excel VBA–经验教训
本指南涵盖:
我们为什么要这样做?基本设置用VBscript和VBA调用和刷新BEX文件中的数据用VBscript和VBA调用和刷新Office文件分析中的数据高级选项2017年1月9日:使用改进的AO刷新选项进行更新
我们为什么要这样做?
我们有许多excel文件,我们希望定期更新,而不需要用户加载文件、登录/连接BW然后刷新。
有些是通过BEX访问的,有些是通过Office 2.3分析访问的。
许多论坛帖子和博客可能会说使用广播或网络报道,但这并不是我们现阶段要花时间做的事情。
相反,我们可以在Windows(和Excel)中使用简单、可靠和高效的脚本来完成。额外的好处是这种方法不需要额外的系统或服务器。
基本设置
我们正在运行以下程序:
在HANA上运行BW7.4Excel 2010(在2013年也可以正常工作)Office 2.3分析SAP GUI 7.40 10级修补程序,包括BEX
使用VBscript和VBA调用和刷新BEX文件中的数据
虽然标题听起来很吓人,但一旦您掌握了基本知识,它就非常简单了。
我们将使用VBscript运行和控制Excel,然后调用Excel文件中的VBA宏来刷新数据。
设置对不熟悉VBscript的人来说,它基本上只是一个扩展名为.vbs的文本文件?看起来是这样的:
每个部分前面的注释(以撇号开头的行)解释了它将要做什么。
基本上用你自己的细节替换大写部分。
VBscript执行以下操作:
1。启动Excel2加载并初始化BEX Analyzer加载项三。连接BW系统4加载包含现有BEX查询的Excel文件5运行"刷新数据"宏,实际刷新数据6保存Excel文件(相同的名称和位置)7关闭Excel并在其自身完成后进行清理
要完成工作,大数据技术,我们需要向要定期刷新的文件中添加一个非常小的宏。
向Excel文件中添加一个宏
打开启用宏的.xlsm Excel文件并转到VBA部分(开发人员>Visual Basic)。
如果没有可用的"开发人员"选项卡,通过"文件>选项>自定义"功能区部分启用它。勾选右侧通常未勾选的"开发人员"部分。
进入VBA窗口后,在左侧窗口中展开您的文件,并将以下部分添加到其中一个模块。
理想情况下添加您自己的模块,以便您可以导出和重用其他文件中的代码。
这是一段非常简单的代码。它所做的只是调用BEX analyzer函数SAPBEXrefresh,该函数将刷新该文件中的任何数据源。
请记住,您已经在VBscript中建立了与BW服务器的连接,因此所有这些宏都需要执行它来刷新数据。
有些人可能会问,为什么这个简单的命令不也在VBscript中,毕竟不是只是叫另一个程序?
答案是我无法让它在VBscript中可靠地工作,与其在上面花费更多的时间,不如在已经加载宏的文件中添加一个额外的小宏,这是最有意义的。
测试它
现在您已经准备好VBscript,并设置了Excel文件宏,现在你需要做的就是测试它。
在你的机器上打开一个命令提示符,只需输入它的名称就可以运行.vbs文件。
如果你有你的.vbsc:\temp中的文件\我的测试.vbs,找到c:\temp并键入mytest.
Windows将知道如何处理它。
您应该看到Excel打开,加载项选项卡出现,文件加载,刷新自身然后一切将再次关闭。
使用VBscript和VBA调用并刷新Office(AO)分析文件中的数据
基本原理与上述BEX指令相同,但在连接到BW时有所不同。
我们将使用VBscript运行和控制Excel,然后调用Excel文件中的VBA宏来刷新数据
那么,AO VBscript的内容是什么样的呢?看起来是这样的:
每个部分前面的注释(以撇号开头的行)解释了它要做什么。
基本上用你自己的文件名替换大写的部分。
VBscript执行以下操作: