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.
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-
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.
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.
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.