VBA API pour SAP BO Analyse pour Excel
Je n'ai pas trouvé beaucoup de articels encore sur stackoverflow, donc je vais expliquer un peu plus en donnant des informations de fond.
Je suis en utilisant le SAP BO Analyse pour Excel add-in à travers lequel je suis récupération des données dans Excel à partir de SAP BW.
L'add-in d'Analyse est livré avec une interface graphique à travers lequel vous pouvez de saisir des variables dans la requête (soi-disant invites).
Il possède en plus un VBA API de sorte que vous pouvez définir les variables à travers VBA.
Mon gros problème est que la détermination des variables par VBA ne semble fonctionner lorsque j'ai mis au moins 1 invite par le biais de l'interface graphique :S
Ci-dessous mon code VBA. Il est inspiré sur 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
Le Dims lResul, lResult & lResultt return 0, mais quand je remplir manuellement une valeur dans l'interface graphique d'invite de commandes et exécutez de nouveau la macro VBA, il fonctionne (retourne 1)... il remplit les autres valeurs. Très étrange.
A quelqu'un a rencontré le même questions et de connaître le moyen de sortir?
Merci beaucoup à l'avance
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
- N'est pas tous les Excel-Add dans créé par un logiciel commercial paquets sont livrés avec une documentation, de la façon de l'utiliser et quelles sont ses limites sont (spécialement que vous utilisez SAP)?
- Après l'exécution de l'interface graphique manuellement une fois, ne le VBA toujours travailler jusqu'à ce que vous quittez Excel? Si oui, peut-être une partie de l'add-in (bibliothèque,etc) n'est pas chargé en appelant
addin.Connect = True
- J'ai trouvé une solution dans l'intervalle, pas vraiment une belle. - Je enregistrer des invites dans le classeur & actualiser avec ces instructions. Après cela, je me permet de modifier les invites. Partage juste au cas où quelqu'un rencontre le même problème...
- Je vous recommandons d'augmenter un ticket d'incident à ce sujet avec SAP, ils peuvent la considérer et de les corriger ou de le prendre comme une demande d'amélioration pour une future version.
Vous devez vous connecter pour publier un commentaire.
Peut-être trop tard pour répondre...
J'ai lu un article intitulé "les Meilleures Pratiques pour VBA dans SAP BI Analyse pour MS Excel". (Je n'ai pas de lien car je ne sais pas si c'est autorisé ou pas).
En gros, il dit que nous devrions nous rafraîchir avant d'utiliser SAPSetVariable.
J'ai ajouté le code suivant avant SAPSetVariable, et il a travaillé pour moi.