【问题标题】:VBA to SAP // RFC function module with table as Input ParameterVBA to SAP // 以表格为输入参数的 RFC 功能模块
【发布时间】:2017-10-20 16:52:36
【问题描述】:

我想通过 RFC 连接器将 Excel 中的数据发送到 SAP。

对于 RFC 功能模块,我必须填写一个表格作为输入参数。堪比RFC功能模块STFC_DEEP_TABLE

我的 VBA 代码在 with 语句处停止并出现错误:

“对象变量或未设置块变量”。

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

【问题讨论】:

    标签: excel vba sap


    【解决方案1】:

    我无法对此进行测试,但通过阅读 VBA/SAP Net Connector,看起来您类似于 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方法的参数应该是对的,但我只发现了一些稍微矛盾的博客和论坛帖子,我不确定顺序的参数是正确的。

    【讨论】:

    • 嗨,Dirk,谢谢您的回答。不幸的是,这不起作用。同样的错误出现在“Set import_tab = objRfcFun.Tables("IMPORT_TAB")”行。最好的问候
    • 是的,看来这是您要调用的函数的问题。我在这里看到了同样的错误,但其他 RFC 函数,例如 RFC_READ_TABLE,确实有效。调试显示代码甚至无法创建对象 objRfcFunc。我的猜测是经典 RFC 库不支持功能模块中使用的深层结构。这可能只是一个错误,但我已经测试了两个不同的 SAP GUI 版本并且都有相同的问题,所以这可能是设计使然。
    【解决方案2】:

    我遇到了同样的问题,我无法实例化 BAPI。 SAP 人员更改了 BAPI,我可以在不更改代码的情况下访问它。
    顺便提一句: 参数顺序为:

     import_tab.cell(line#, fieldname) = "X"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2019-03-21
      • 2011-04-06
      • 2019-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多