Вызов SAP RFC возвращает ошибку 0 в параметре RETURN из vb

Всем привет и заранее спасибо.

Я пытаюсь вызвать 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

person mrg1968    schedule 07.08.2012    source источник


Ответы (2)


Вам нужно поставить

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

ДО objRfcFunc.Call

то есть вы должны указать, что вы импортируете из функции, прежде чем вызывать ее. Я обычно помещаю его рядом с .exports() строками.

person Smigs    schedule 09.08.2012
comment
Спасибо, Смигс. На самом деле я не могу войти в SAP - я полагаю, это проблема с сервером SAP. Я проверю ваше предложение, как только смогу его протестировать ... - person mrg1968; 13.08.2012
comment
Привет еще раз. Пытался установить объект RETURN перед вызовом RFC, но ничего не изменилось, я снова получаю «Ошибка 0» в объекте. objRfcFunc.Exports("COMPANYCODE") = "C100" objRfcFunc.Exports("GLACCT") = "0000000001" 'Inesistente Dim objReturn As Object Set objReturn = objRfcFunc.Imports("RETURN") - person mrg1968; 15.08.2012
comment
Это может быть полезно: теперь я получаю сообщение «Ошибка 0» в момент назначения объекта перед вызовом RFC! Ошибка в коде Set objReturn = objRfcFunc.Imports("RETURN"), но это действительно странно, потому что BAPI_GL_ACC_EXISTENCECHECK действительно возвращает объект RETURN типа BAPIRETURN, я проверил в документации SAP! - person mrg1968; 15.08.2012

Проблема решена, посмотрите эту ветку ...

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

person mrg1968    schedule 24.08.2012