2017-10-20 30 views
1

Je souhaite envoyer des données d'Excel via un connecteur RFC à SAP. Pour le module de fonction RFC, je dois remplir une table en tant que paramètre d'entrée. Comparable au module de fonction RFC STFC_DEEP_TABLE. Malheureusement, mon code VBA arrête à la déclaration avec l'erreur:Module de fonction VBA vers SAP // RFC avec table en entrée Paramètre

“Object variable or With block variable not set”.

Voir ci-dessous.

S'il vous plaît, quelqu'un peut-il m'aider? Qu'est-ce qui ne va pas?

Sub RFC_DEEP_TABLE() 
Dim sapConn As Object 
Set sapConn = CreateObject("SAP.Functions") 

If sapConn.Connection.Logon(0, False) <> True Then 
    MsgBox "Cannot Log on to SAP" 
End If 

Dim objRfcFunc As Object 
Set objRfcFunc = sapConn.Add("STFC_DEEP_TABLE") 

With objRfcFunc 
    .Exports.Item("IMPORT_TAB").value("STR") = "X" 'Objectvariable oder With-Blockvariable nicht festgelegt 
End With 

If objRfcFunc.Call = False Then 
    MsgBox objRfcFunc.Exception 
End If 

End Sub 

Répondre

0

Je ne peux pas tester, mais à la lecture sur VBA/SAP Net Connector, il semble que vous, similaire à la syntaxe .Net Connector for C#, doivent ajouter une ligne à une table d'importation avant définir des valeurs de champ.

Sub RFC_DEEP_TABLE() 
    Dim sapConn As Object 
    Set sapConn = CreateObject("SAP.Functions") 

    If sapConn.Connection.Logon(0, False) <> True Then 
    MsgBox "Cannot Log on to SAP" 
    End If 

    Dim objRfcFunc As Object 
    Set objRfcFunc = sapConn.Add("STFC_DEEP_TABLE") 

    Set import_tab = objRfcFunc.Tables("IMPORT_TAB") 
    import_tab.freetable 
    import_tab.appendrow 
    import_tab.cell("STR", 1) = "X" 

    If objRfcFunc.Call = False Then 
    MsgBox objRfcFunc.Exception 
    End If 

End Sub 

Je ne suis pas complètement sûr de la ligne affectant la valeur, les paramètres de la méthode cell devraient être raison, mais je ne ai trouvé quelques messages de blog et forum légèrement contradictoires et je ne suis pas absolument sûr l'ordre des paramètres est correct.

+0

Salut Dirk, Merci pour votre réponse. Malheureusement, cela ne fonctionne pas. La même erreur apparaît à la ligne "Set import_tab = objRfcFun.Tables (" IMPORT_TAB ")". Cordialement – user3213199

+0

oui, il semble que ce soit un problème avec la fonction que vous voulez appeler. J'ai vu la même erreur ici, mais d'autres fonctions RFC, par exemple RFC_READ_TABLE, fonctionnent. Le débogage a montré que le code ne parvient même pas à créer l'objet objRfcFunc. Ma conjecture est la structure profonde utilisée dans le module de fonction n'est pas pris en charge dans la bibliothèque RFC classique. Il se peut que ce soit un bogue, mais j'ai testé deux versions différentes de SAP GUI et les deux avaient le même problème, donc ça pourrait être par conception. –