簡體   English   中英

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登錄控制OLE / COM對象來完成此工作),並且嘗試進行RFC調用。
同樣在這種情況下,我進行調用沒有問題(似乎不確定),因為RFC調用返回true且沒有異常。
但是,查看objReturn對象/參數時,它的值為“錯誤0”。 我期待的是一個復雜的結構,例如SAP中的BAPIRETURN對象,或者如果該帳戶不存在,則類似的結構。

試圖在Google和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

你需要放

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

objRfcFunc.Call之前

也就是說,您必須先聲明要從函數中導入的內容,然后才能調用它。 我通常將其放在.exports()行旁邊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM