大家好,提前感谢。
我正在尝试使用来自 vb 的 RFC 调用 SAP BAPI,但在获取调用结果时遇到了一些问题。BAPI“BAPI_GL_ACC_EXISTENCECHECK”(来自总帐帐户模块)有两个参数,COMPANYCODE 和 GLACCT,以及一个 RETURN 参数。我编写了这段代码来进行调用,并且建立 SAP 连接没有问题(我使用 SAP Logon Control OLE/COM 对象来完成这项工作),并且我尝试进行 RFC 调用。
同样在这种情况下,我可以毫无问题地进行调用(似乎,不确定......),因为 RFC 调用返回 true 并且没有异常。
但是,通过objReturn对象/参数查看,它有一个值“错误 0”。
尝试用谷歌和SAP论坛搜索,但我还没有找到真正解决我的问题的方法,所以在这里我想问大家是否有解决这个问题的想法(也许我只是打错了电话!! !我是SAP集成的新手......)。
顺便说一句,最后说明:在 SAP 方面进行了很多 RFC_NO_AUTHORIZATION 之后,他们给了我一个 SAP_ALL / S_RFC 授权(有点,不是 SAP 专家)并且错误 RFC_NO_AUTHORIZATION 消失了,但没有返回错误 0
Dim sapConn As Object
Dim objRfcFunc As Object
Dim SAPMandante As String
Dim SAPUtente As String
Dim SAPPassword As String
Dim SAPLingua As String
Dim SAPApplicationServer As String
Dim SAPNumeroSistema As Variant
Dim SAPIDSistema As String
Dim SAPRouter As String
Dim FlagInsertLogin As Integer
Dim FlagLogin As Variant
On Error GoTo ErrorHandler
Set sapConn = CreateObject("SAP.Functions") 'Create ActiveX object
'Silent Logon
SAPMandante = "xxx"
SAPUtente = "yyyy"
SAPPassword = "zzzzzz"
SAPLingua = "IT"
SAPApplicationServer = "www.xxx.com"
SAPNumeroSistema = x
SAPIDSistema = "zzz"
SAPRouter = ""
FlagLogin = SilentLogin(sapConn, SAPMandante, SAPUtente, SAPPassword, SAPLingua, SAPApplicationServer, SAPNumeroSistema, SAPIDSistema, SAPRouter) 'IT WORKS, NO PROBLEM HERE
If FlagLogin = False Then
'Explicit Logon
If sapConn.Connection.logon(0, False) <> True Then
MsgBox "Cannot Log on to SAP", 16, "Query Interrupted"
sapConn.Connection.logoff
Set sapConn = Nothing
InsertCash = False
Exit Sub
End If
End If
'BAPI RFC Call
Set objRfcFunc = sapConn.Add("BAPI_GL_ACC_EXISTENCECHECK")
objRfcFunc.exports("COMPANYCODE") = "C100"
objRfcFunc.exports("GLACCT") = "0000000001" 'Inexistent
Rem *** BAPI CALL ***
If objRfcFunc.Call = False Then
ErrorMsg = objRfcFunc.Exception 'Message collection
MsgBox ErrorMsg, 16, "Errore"
sapConn.Connection.logoff
Exit Sub
else
Dim objReturn As Object
Set objReturn = objRfcFunc.imports("RETURN")
End If