关于excel:SAP RFC调用从vb的RETURN参数中返回”错误0″

SAP RFC call returns “Error 0” in RETURN parameter from vb

大家好,谢谢。

我正在尝试使用vb中的RFC调用SAP BAPI,但在获取调用结果时遇到了一些问题。
BAPI " BAPI_GL_ACC_EXISTENCECHECK "(来自"总帐帐户"模块)具有两个参数,
COMPANYCODE和GLACCT,以及RETURN参数。
我编写了这段代码来进行调用,而建立SAP连接没有问题(我使用SAP Logon Control OLE / COM对象来完成此工作),并且尝试进行RFC调用。
同样在这种情况下,我进行调用没有问题(似乎不确定),因为RFC调用返回true且没有异常。
但是,查看objReturn对象/参数时,它的值为" Error 0 "。
我期待一个复杂的结构,例如SAP中的BAPIRETURN对象,或者如果该帐户不存在,则类似的结构。

试图在Google和SAP论坛中进行搜索,但我还没有找到解决我问题的真正方法,所以在这里我要问大家是否有解决此问题的想法(也许我只是想我打错电话了!!!我是SAP集成的新手...)。

BTW,最后说明:在SAP方面进行了许多RFC_NO_AUTHORIZATION之后,他们给了我SAP_ALL / S_RFC授权(不是SAP专家),并且错误RFC_NO_AUTHORIZATION消失了,但错误0 return

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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

问题已解决,请看一下这个线程...

http://sap.ittoolbox.com/groups/technical-functional/sap-dev/sap-rfc-call-returns-error-in-return-parameter-from-vb-before-the-rfc-call -4894968#M4902486


您需要输入

1
2
Dim objReturn As Object
Set objReturn = objRfcFunc.imports("RETURN")

objRfcFunc.Call

之前

即您必须先声明要从函数中导入的内容,然后才能调用它。我通常将其放在.exports()行旁边。