Ayuda SAP

Error de conexión DI-API a SAP B1

Hola

Estoy atascado en el primer escalón, quiero conectar a B1 con DI-API y he visto un montón de sitios con el mismo código, pero yo no consigo hacerlo funcionar, estoy usando esto:

    Public Function ConectarSBO() As String
        Dim lRetCode, ErrorCode As Long
        Dim ErrorMessage As String = ""

        oCompany = New SAPbobsCOM.Company()
        oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_HANADB
        oCompany.language = SAPbobsCOM.BoSuppLangs.ln_Spanish
        oCompany.DbUserName = "SYSTEM" 'UsuarioHANA
        oCompany.DbPassword = "xxxxxxxxxx" 'PasswordHANA
        oCompany.Server = "miservidor:30015"
        oCompany.LicenseServer = "miservidor:40000"
        oCompany.SLDServer = "miservidor:40000"
        oCompany.CompanyDB = "SBO_BBDD"
        oCompany.UserName = "manager"
        oCompany.Password = "1234"
        oCompany.UseTrusted = False


        lRetCode = oCompany.Connect()


        If lRetCode <> 0 Then
            oCompany.GetLastError(ErrorCode, ErrorMessage)
            ConectarSBO = "Desconectado"
            MsgBox(ErrorMessage + ErrorCode.ToString + oCompany.GetLastErrorDescription)
        Else
            ConectarSBO = "Conectado"
            MsgBox("OK")
        End If

    End Function

Haga lo que haga y use el usuario que use siempre obtengo error de conexión ("Error during SBO user authentication -132)

El usuario de HANA (SYSTEM en el ejemplo) es correcto, tengo varios y con ellos puedo conectar con el Hana Studio, el usuario de la BBDD (manager) también existe y puedo conectar con el cliente de B1 sin problemas a la BBDD elegida.

He probado sin SLD Server (he visto algunos ejemplos donde no lo usan), mismo resultado.

¿Alguna idea?

Yo tengo una conexión también pero es por medio de SQL Server, espero te sirva, te la comparto.

Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Connect()
        Connect2()
        'cmbDBType.SelectedIndex = 3
    End Sub
Private Sub Connect()
        oCompany = New SAPbobsCOM.Company
        Cursor = System.Windows.Forms.Cursors.WaitCursor

        oCompany.Server = "MiServidor"
        oCompany.CompanyDB = "MiBaseDatos"
        oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2012
        oCompany.UserName = "manager"
        oCompany.Password = "xxxx"


        'Create a list of companies...
        Try
            oRecordSet = oCompany.GetCompanyList ' get the company list
        Catch ex As Exception
            MsgBox(ex.Message)
            Exit Sub
        End Try

        oCompany.GetLastError(lErrCode, sErrMsg)

        If lErrCode <> 0 Then
            MsgBox(sErrMsg)
        Else

        End If


        If oCompany.Connected Then ' if already connected
            Me.Text = Me.Text & ": Connected"
        End If
        CreateLinesTable()

        'Try to connect
        lRetCode = oCompany.Connect()

        If lRetCode <> 0 Then ' if the connection failed
            oCompany.GetLastError(lErrCode, sErrMsg)
            MsgBox("Connection Failed - " & sErrMsg, MsgBoxStyle.Exclamation, "Default Connection Failed")
        End If
        If oCompany.Connected Then ' if connected
            Me.Text = Me.Text & " - Connected to " & oCompany.CompanyDB
            'grpConn.Enabled = False
            grpOrder.Enabled = True
            LoadGui() ' Load data for UI elements like combo boxes
        End If

        Cursor = System.Windows.Forms.Cursors.Default 'Change mouse cursor
    End Sub

    '***** Conexión para base de datos Auxiliar
    Sub Connect2()
        conn.ConnectionString = "Data Source=MiServidor;Initial Catalog=BaseSecundaria;Persist Security Info=True;User ID=sa;Password=xxxxx"

        Try
            conn.Open()
            ' Insert code to process data.
        Catch ex As Exception
            MsgBox(ex.Message)
            'Finally
            '   conn.Close()
        End Try

        Cursor = System.Windows.Forms.Cursors.Default 'Change mouse cursor


    End Sub

Como puedes ver la primer conexión es a la base de datos productiva y la segunda a otra base de datos alojada en el mismo servidor.

Aquí algo sobre tu error que espero pueda ayudarte y que son especificas para Hana:
h_tps://support.boyum-it.com/hc/en-us/articles/360021618114-Connection-Error-132-Error-during-SBO-user-authentication-SBO-9-3-or-Higher-Only-

1 me gusta

Por cierto no veo tu tema de #presentaciones debes pasar por el tema por favor.

1 me gusta

Hecho, se me había pasado presentarme, lo siento.

Por otro lado el ejemplo de SQL no es aplicable a HANA, en teoría es muy similar pero cambian algunas cosas y los problemas de conexión de ese enlace ya los había leído pero por más que he repasado no encuentro por ningún lado el problema.

Los servidores van contra la IP y puerto correcto, los usuarios los he repasado y de hecho los uso constantemente tanto para conexiones ODBC como para entrar en el cliente de B1 y son correctos, la BBDD existe (he probado con varias por si acaso) pero me sigue saliendo el dichoso error 132. La verdad es que ya no sé dónde mirar.

Estoy usando DI API V10 y VS2019 pero no creo que sea muy relevante. Tampoco he podido probar los ejemplos básicos del SDK porque vienen todos para diferentes servidores pero ninguno que haya visto para HANA.

Será una tontería pero estoy venga a darle vueltas y no veo nada, son cuatro líneas de código…

Voy instalar Hana para apoyarte y a mi me servirá de practica ya que nunca he instalado hana, aun que yo veo el código muy similar. Te recuerdo no olvides presentarte.

Espera que creo que he dado con ello (al menos ya no me da error).

oCompany.Server = "miservidor:30015"

lo he cambiado por

oCompany.Server = "NDB@miservidor:30013"

Y ahora al menos conecta, voy a ver si puedo obtener lista de BBDDs y demás para verificar que realmente está conectado correctamente.

Al entrar a SAP el nombre del servidor es NDB@… pero en ninguna parte he leído que eso haya que ponerlo, he cambiado hasta el puerto (aunque en ODBC uso la IP con el 30015 y funciona bien). Ahora informo de si va ok.

1 me gusta

Confirmado, funciona, muuuuuchas gracias por la ayuda!

Es curioso pero voy muchos ejemplos por ahí (incluso en el SDK de SAP) que luego no son aplicables porque la sintaxis es incorrecta, tengo otro hilo abierto sobre cómo actualizar una licencia de un usuario por DI-API y ya he conseguido que funcione una vez que he conectado con al BBDD, pero cambiando algunos procedimientos.

Da la sensación de que el SDK (al menos la documentación) es de una versión muy antigua y no está actualizado, o igual me han instalado uno viejo, vete a saber.

Muchas gracias de nuevo :clap:

2 Me gusta

Presenta tu solución, respecto al SDK puedes instalar el que viene con la versión que estas usando, esta dentro de la carpeta packages


Una vez instalado también se instala la ayuda.

Ese es el que he instalado, pero como te digo los ejemplos no son compatibles con HANA (hay que modificar la mayoría) y luego la sintaxis tampoco es compatible con DI-API V10, pero bueno, es un punto de partida.

El ejemplo sencillo es el problema que he tenido, en todos los sitios pone que para conectar a Hana hay que poner servidor:puerto (en el SDK no hay ningún ejemplo para esta BBDD así que no se puede comprobar), sin embargo yo con eso no he podido conectar, en mi caso ha sido NDB@servidor:puerto, cosa que no he visto documentada por ningún lado.

1 me gusta