Всем привет и заранее спасибо.
Я пытаюсь вызвать SAP BAPI, используя RFC из vb, но у меня возникла проблема с получением результата вызова. BAPI «BAPI_GL_ACC_EXISTENCECHECK» (из модуля «Счет Главной книги») имеет два параметра, COMPANYCODE и GLACCT, и параметр RETURN. Я написал этот фрагмент кода для выполнения вызова, и у меня не было проблем с установкой соединения SAP (для выполнения этой работы я использую объект SAP Logon Control OLE / COM), и я попытался выполнить вызов RFC.
Также в этом случае я совершаю вызов без проблем (кажется, не уверен в этом ...), потому что вызов RFC возвращает истину, а не исключение.
Однако при просмотре объекта objReturn / параметр, в нем есть значение «Ошибка 0». Я ожидал сложной структуры, такой как объект BAPIRETURN в SAP или что-то подобное, если учетная запись не существует.
Пытался выполнить поиск на форумах Google и SAP, но я не нашел реального решения своей проблемы, поэтому здесь я должен спросить вас всех, есть ли у вас идея решить эту проблему (возможно, я только ошибаюсь! ! Я новичок в интеграции с SAP ...).
Кстати, заключительные примечания: после большого количества RFC_NO_AUTHORIZATION на стороне SAP они дали мне авторизацию 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