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.
InformationsquelleAutor user1186098 | 2015-05-30