みなさん、こんにちは。よろしくお願いします。
vbからRFCを使用してSAPBAPIを呼び出そうとしていますが、呼び出しの結果を取得するのに問題があります。BAPI "BAPI_GL_ACC_EXISTENCECHECK"(総勘定元帳モジュールから)には、COMPANYCODEとGLACCTの2つのパラメーターと、RETURNパラメーターがあります。このコードを記述して呼び出しを行い、SAP接続を確立するのに問題はありませんでした(SAP Logon Control OLE / COMオブジェクトを使用してジョブを実行します)。RFC呼び出しを試みました。
また、この場合、RFC呼び出しがtrueを返し、例外がないため、問題なく呼び出しを行います(それについてはよくわかりません...)。
ただし、objReturnオブジェクト/パラメータを調べると、値「エラー0」が含まれています。
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