Estimados,
Me encontrado con un error que al parecer es algo usual al momento de usar la DI-API con C#, es el error en mención que al generarse no permite conexión con la BD. Para solucionarlo deben ir a la ruta que el mismo error les menciona y eliminar la carpeta SM_OBS_DLL para que ella vuelva y se cree automáticamente.
Por ejemplo, en mi casa el mensaje de error era el siguiente.
“OBserverGeneric::GetNewLibraryFromServer: LoadLibrary for observer failed\nSystem error 2,\nObserver file name: C:\Users\jfranco\AppData\Local\Temp\SM_OBS_DLL\920140\OBServerDLL_920140.dll\n”
Lo que hice fue habilitar en opciones de carpeta “Mostrar archivos y carpeta ocultas”.
Luego ir a la carpeta AppData/Local/Temp y eliminar SM_OBS_DLL, con esto el error no aparecerá y permitirá conexión a la BD.
OJO. Para poder visualizar el error deben capturar el GetLastErrorDescription() y mostrarlo de alguna forma para ver la descripción del error.
ocompany = new SAPbobsCOM.Company();
try
{
ocompany.Server = "IP SERVIDOR";
ocompany.LicenseServer = "IP SERVIDOR";
ocompany.CompanyDB = "NOMBRE DE BD";
ocompany.UserName = "Usuario SAP";
ocompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_HANADB; //Según sea su tipo de BD, HANA o SQL Server.
ocompany.Password = "Contraseña Usuario SAP";
ocompany.UseTrusted = true;
ocompany.DbUserName = "SYSTEM";
ocompany.DbPassword = "CONTRASEÑA SYSTEM";
int ret = ocompany.Connect();
string errMsg = ocompany.GetLastErrorDescription(); //Método que retornar la descripción del error
int ErrNo = ocompany.GetLastErrorCode();
if (ErrNo != 0) //Si la conexión fue exitosa, el método GetLastErrorCode() retorna 0.
{
MessageBox.Show(errMsg); //Mostrar el error en un caja de mensaje.
}
else
{
MessageBox.Show("Conexión establecida");
}
}catch(Exception errMsg){
}