首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以表为输入参数的VBA到SAP // RFC功能模块

以表为输入参数的VBA到SAP // RFC功能模块
EN

Stack Overflow用户
提问于 2017-10-20 16:52:36
回答 2查看 3.1K关注 0票数 2

我想通过RFC-连接器从Excel向SAP发送数据。

对于RFC函数模块,我必须填充一个表作为输入参数。可与RFC功能模块STFC_DEEP_TABLE媲美。

我的VBA代码在with语句处停止,错误如下:

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

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2017-10-21 19:05:17

我无法测试这一点,但是从VBA/上读到,看起来就像.Net连接器的C#语法一样,在设置字段值之前,必须向导入表中添加一行。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2019-07-23 09:12:21

我也遇到了同样的问题,无法实例化BAPI。SAP人员修改了BAPI,我可以访问它而不修改代码。

顺便说一句:参数顺序是:

代码语言:javascript
复制
 import_tab.cell(line#, fieldname) = "X"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46853799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档