【发布时间】:2015-08-13 12:14:57
【问题描述】:
我还没有在 stackoverflow 上找到很多关于此的文章,所以我将通过提供必要的背景信息来详细说明。
我正在使用 SAP BO Analysis for Excel 加载项,通过它我从 SAP BW 中检索 Excel 中的数据。
Analysis 插件附带一个 GUI,您可以通过它在查询中输入变量(所谓的提示)。
它还具有 VBA API,因此您可以通过 VBA 设置变量。
我的大问题是只有当我通过 GUI 设置了至少 1 个提示时,通过 VBA 设置变量似乎才有效:S
以下是我的完整 VBA 代码。它的灵感来自 http://precisionstudio.net/uploads/3/0/5/0/3050843/sap_instructorhandbook.pdf 和 http://scn.sap.com/community/businessobjects-analysis-ms-office/blog/2011/06/26/can-you-use-vba-with-businessobjects-analysis-find-out-here
Dims lResul、lResult 和 lResultt 返回 0,但是当我在 GUI 提示符中手动填写一个值并重新运行 VBA 宏时,它可以工作(返回 1)...填写其他值。很奇怪。
有人遇到过同样的问题并知道出路吗?
在此先感谢
Private Sub EnableAnalysisOffice()
Dim addin As COMAddIn
For Each addin In Application.COMAddIns
If addin.progID = "SBOP.AdvancedAnalysis.Addin.1" Then
If addin.Connect = False Then addin.Connect = True
End If
Next
End Sub
Private Sub Workbook_Open()
Call EnableAnalysisOffice
Call MyGetData
End Sub
Public Sub MyGetData()
Dim Iret As Long
Dim lResul As Long
Dim lResult As Long
Dim lResultt As Long
Iret = Application.Run("SAPLogon", "DS_1", "200", "myUser", "myPassword")
MsgBox (Iret)
Call Application.Run("SAPSetRefreshBehaviour", "Off")
Call Application.Run("SAPExecuteCommand", "PauseVariableSubmit", "On")
'Select data based on WBS
'lResul = Application.Run("SAPSetVariable", "0S_WBSE", Worksheets("Prompt Values").Range("A2").Value, "INPUT_STRING", "DS_1")
'MsgBox (lResul)
'Select data based on Employees
lResult = Application.Run("SAPSetVariable", "YEMPLSEL", Worksheets("Prompt Values").Range("A5").Value, "INPUT_STRING", "DS_1")
MsgBox (lResult)
'Document Date
lResultt = Application.Run("SAPSetVariable", "YDOCUMENT_DATE", ">=01\-01\-2015", "INPUT_STRING", "DS_1")
MsgBox (lResultt)
Call Application.Run("SAPExecuteCommand", "PauseVariableSubmit", "Off")
Call Application.Run("SAPSetRefreshBehaviour", "On")
'Call Application.Run("SAPExecuteCommand", "Refresh")
End Sub
【问题讨论】:
-
不是每个由商业软件包创建的 Excel-Add in 都附带说明如何使用它以及它的限制是什么(特别是您使用的是 SAP)的文档吗?
-
手动运行一次 GUI 后,在退出 Excel 之前,VBA 是否始终工作?如果是这样,可能加载项的某些部分(库等)不会通过调用
addin.Connect = True加载 -
我在此期间找到了一个解决方案,并不是一个很好的解决方案。我将当前提示保存在工作簿中并使用这些提示进行刷新。之后,我允许我修改提示。只是分享以防有人遇到同样的问题...
-
我建议向 SAP 提出有关此问题的票证/事件,他们可以考虑并修复它或将其作为未来版本的增强请求。
标签: vba api business-objects