首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Excel调用SAP RFC

从Excel调用SAP RFC
EN

Stack Overflow用户
提问于 2021-11-17 14:42:38
回答 1查看 84关注 0票数 0

我已经下载了SAPGUIforWindows7.70(带有64位连接器的最新版本),并创建了一个名为Z_GF_STOCK的RFC函数,其中包含一个材料字符串导入参数(ARTICULO)和一个labst导出参数(STOCK)。我需要通过以下代码在Excel和VBA中使用此RFC:

代码语言:javascript
复制
Dim retcd        As Boolean
Dim SilentLogon  As Boolean
Set logonControl = CreateObject("SAP.LogonControl.1")
Set objBAPIControl = CreateObject("SAP.Functions")
Set R3Connection = logonControl.NewConnection
R3Connection.Client = "100"
R3Connection.ApplicationServer = "192.168.XXX.XXX"
R3Connection.Language = "XX"
R3Connection.User = "XXXXX"
R3Connection.Password = "XXXXX"
R3Connection.System = "XXX"
R3Connection.SystemNumber = "XX"
R3Connection.UseSAPLogonIni = False
retcd = R3Connection.Logon(0, True)
objBAPIControl.Connection = R3Connection
Set objgetaddress = objBAPIControl.Add("Z_GF_STOCK")
objgetaddress.exports("ARTICULO") = "XXXXXX"

returnFunc = objgetaddress.Call

If returnFunc = True Then
    ActiveCell.Value = objgetaddress.imports("STOCK")
    objBAPIControl.Connection.Logoff
    R3Connection.Logoff
Else
    MsgBox "Error call Z_GF_STOCK! "
End If

objBAPIControl.Connection.Logoff
R3Connection.Logoff
R3Connection.Logoff

returnFunc变量始终为false,并且从不提高行来获取该值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-18 13:13:34

我使用此代码调用FMs

代码语言:javascript
复制
Sub DontCallMe_GaGA()
    Set R3 = CreateObject("SAP.Functions")
    Set myConnction = R3.Connection
    myConnction.ApplicationServer = "SYSTEM"
    myConnction.SystemNumber = 54
    myConnction.Client = "001"
    myConnction.user = "USER"
    myConnction.Password = "PASSWORD"
    
    If myConnction.Logon(0, True) <> True Then
      MsgBox "Logon failed"
      Exit Sub
    End If
    
    Dim callFunctionModule As Object
        
    Set callFunctionModule = R3.Add("TH_USER_LIST")
    callFunctionModule.Call

    If callFunctionModule.Exception <> "" Then
        MsgBox callFunctionModule.Exception
    End If

    If callFunctionModule.Call = True Then
        Dim result As Object
        Set result = callFunctionModule.tables("USRLIST")
        Dim aSheet As Worksheet
        Dim sheetCol As New Collection
        sheetCol.Add ActiveWorkbook.Sheets(1)
        For Each aSheet In sheetCol
            Dim i As Integer
            i = 1
            For Each user In result.Rows
                aSheet.Cells(i, 1) = user(2)
                aSheet.Cells(i, 2) = user(3)
                aSheet.Cells(i, 3) = user(5)
                aSheet.Cells(i, 4) = user(16)
                i = i + 1
            Next
        Next
    Else
        MsgBox " Call Failed! error: "
    End If
    myConnction.logoff
End Sub

它与SAP Gui 7.70和Office 365配合使用,效果非常出色。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70006441

复制
相关文章

相似问题

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