2017-10-20 192 views
1

我想通過RFC連接器將數據從Excel發送到SAP。對於RFC功能模塊,我必須填寫一個表作爲輸入參數。與RFC功能模塊STFC_DEEP_TABLE相似。 不幸的是,我的VBA代碼將停止在有錯誤的有聲明:VBA to SAP // RFC功能模塊,表格爲輸入參數

「Object variable or With block variable not set」.

見下文。

請問,有人可以幫助我嗎?哪裏不對?

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 

回答

0

我不能對此進行測試,但是從VBA/SAP網絡接口讀了,它看起來像你,類似於C#中的.Net連接器的語法,有一個行之前添加到輸入表設置字段值。

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 

我不能完全肯定行指定值時,cell方法的參數應該是正確的,但我只發現一對夫婦略有矛盾的博客和論壇帖子的,我沒有絕對的把握參數的順序是正確的。

+0

嗨德克, 謝謝你的回答。 不幸的是,這是行不通的。同樣的錯誤出現在「Set import_tab = objRfcFun.Tables(」IMPORT_TAB「)」行。 致以問候 – user3213199

+0

是的,這似乎是你想要調用的函數的一個問題。我在這裏看到了同樣的錯誤,但是其他的RFC函數,例如RFC_READ_TABLE,也可以工作。調試表明,代碼甚至無法創建objRfcFunc對象。我的猜測是在傳統的RFC庫中不支持功能模塊中使用的深層結構。這可能只是一個bug,但我已經測試了兩個不同的SAP GUI版本,兩者都有相同的問題,所以可能是設計。 –