Conexión a SBO usando DI API y C#

Estimados,

Estoy adentrándome más al mundo del desarrollo en SBO con la idea de poder proponer a la compañía donde laboró soluciones a casos puntuales, hoy he estado muy inquieto con todo el mundo SAP y logrado conectarme a través de la libreria SAPbobsCOM desde C#, realmente es muy sencillo. Lo que quiero aclarar ahora es más temas de formalismos, y saber si yo puedo realizar modificaciones a la información contenida en mi BD desde un aplicación desarrollada en C# sin romper ninguna regla por parte de SAP que es la de modificar la información de la BD desde una aplicación externa a ellos, o si requiero algún tipo de licenciamiento adicional para poder hacer esto.

Aquí dejo la configuración por si alguien la requiere, solo es cuestión de crear un proyecto en su Visual Studio versión 2012 (Esto si fue un requisito indispensable, porque no me funciona con una mas reciente, ni una más antigua, solo esa y en Windows 10) y luego de crearla solo deben agregar al proyecto una Referencia a SAPbobsCOM e implementar el siguiente código.

La única vía que se conoce apta para realizar este tipo e procesos de (ADD,UPDATE,DELETE) son vía SDK, para ello debes conocer perfectamente como funciona cada objeto y como manipularlos.

saludos

1 me gusta

Puedes pasar el texto como texto y no como captura por favor? :pray:

Me gustaría recalcar lo que menciona el compañero Julian, lo más importante a tener en cuenta cuando haces un desarrollo externo que se comunicará con SAP es NO manipular directamente la información de la BD, sino todas las operaciones realizarlas a través del DI API.

Podrías detallar un poco más lo que requieres realizar? Si son transferencias, o documentos de venta, órdenes de fabricación, etc…? Para poder brindarte un apoyo más enfocado a tu necesidad.

Saludos cordiales.

1 me gusta

Estimado, claro que sí, ,aquí comparto el código para la conexión.

Copio el código dentro del metodo Load del formulario, pero recuerden que pueden implementarlo donde deseen. Ya está probado y funciona perfecto.

private void Form1_Load(object sender, EventArgs e)
        {
            SAPbobsCOM.Company ocompany = new SAPbobsCOM.Company();
            try
            {
                ocompany.Server = "IPServidor:30015";
                ocompany.LicenseServer = "IPServidor:40000";
                ocompany.CompanyDB = "Nombre de BD";
                ocompany.UserName = "Usuario SAP";
                ocompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_HANADB;
                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();
                int ErrNo = ocompany.GetLastErrorCode();
                if (ErrNo != 0)
                {
                    MessageBox.Show(errMsg);
                }
                else
                {
                   // MessageBox.Show("Conexión establecida");
                }

                

            }catch(Exception errMsg){
            }
        }

Estimado @l.villarreal, gracias por la aclaración y era una de mis dudas, si al yo utilizar el DI-API no incurría en ningún tipo de violación o infracción de acceso a los datos que pudiera SAP tomar acción frente algún tema de garantía, pero creo que es claro que si utilizo de forma correcta la DI-API es estoy cumpliendo con las buenas practicas de realizar modificación y/o creación de datos en la BD de SAP. Por otro lado, respondo a tu pregunta del requerimiento a realizar. Básicamente @l.villarreal son varios, pero con este avance logrado de la conexión a través de C# y la librería SAPbobsCOM tengo ya una herramienta para proponer soluciones a varios requerimientos internos que tenemos.

Efectivamente Juan, mientras todas las operaciones las realices mediante DI API no tendrás ningún problema.

Te recomendaría que crearas una función o método para realizar la conexión, y que llamaras a esa función en las partes del código que necesites.

Por ejemplo:

private void Form_Load(object sender, EventArgs e)
{
    EstablecerConexion();
}

Debido a que si necesitas conectarte al objeto Company varias veces en la ejecución de tu programa y no tienes un método para esto, deberás repetir código innecesariamente, sólo es una sugerencia.

Saludos cordiales.

2 Me gusta

Estimado @l.villarreal, si muchas gracias por la aclaración, ya las buenas practicas regirán el orden del código. Ya quedo aclarada mi duda sobre el uso de la DI-API.

1 me gusta

No olvides marcar una respuesta para que el tema quede cerrado. Un saludo desde Monterrey!