【发布时间】:2012-08-07 15:31:59
【问题描述】:
大家好,提前致谢。
我正在尝试使用来自 vb 的 RFC 调用 SAP BAPI,但在获取调用结果时遇到了一些问题。
BAPI“BAPI_GL_ACC_EXISTENCECHECK”(来自总帐帐户模块)有两个参数,
COMPANYCODE 和 GLACCT,以及一个 RETURN 参数。
我编写了这段代码来进行调用,并且建立 SAP 连接没有问题(我使用 SAP 登录控制 OLE/COM 对象来完成这项工作),并且我尝试进行 RFC 调用。
同样在这种情况下,我毫无问题地拨打电话(似乎,不确定......),因为 RFC 调用返回 true 并且没有异常。
但是,通过 objReturn 对象/参数查看,其中有一个值“错误 0”。
如果帐户不存在,我期待一个复杂的结构,如 SAP 中的 BAPIRETURN 对象或类似的东西。
试图用谷歌和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
【问题讨论】: