Para poder usar la DI API en SAP Business One y extraer o modificar la información de una base de datos SAP B1 desde nuestro programa, vamos a necesitar una conexión desde nuestro proyecto a la sociedad que deseemos.
Veamos los siguientes pasos para realizarlo:
Crear un nuevo proyecto en Visual Studio
Seleccionar el tipo de proyecto
Aquí hacemos click en “Aplicación de Windows Forms” como podemos ver en la imagen y asignaremos el nombre “DI_API_1_CONEXIONBD”.
Crear la estructura
Una vez tenemos nuestro proyecto creado, elaboraremos la estructura, la cual será similar a la siguiente:
Si te has fijado, se ha cambiado el nombre por defecto del formulario inicial, de “Form1” a “ConnectionForm”, desde el “Explorador de soluciones” con el botón derecho del ratón:
Agregar botón al formulario
Con el proyecto creado, agregaremos un botón a nuestro formulario “ConnectionForm.cs” de forma que su aspecto será:
Asignar referencia
Para poder usar la DI API deberemos agregar la referencia correspondiente a nuestro proyecto. Esto lo haremos desde el explorador de soluciones con botón derecho sobre “References” y pulsando en “Agregar referencia”. Seleccionaremos la referencia desde la pestaña “COM” de la DI API correspondiente a la versión con la que trabajamos:
Añadir la cláusula
Una vez agregada la referencia, agregaremos una cláusula “Using” a nuestro código asociado al formulario “ConnectionForm.cs” de forma que podamos usar todas las clases contenidas en la librería sin necesidad de escribir continuamente el namespace al que pertenecen “SAPbobsCOM”:
Crear un método privado
Para realizar la conexión crearemos un método privado que llamaremos “connectToSapB1DIAPI”. Este método devolverá un valor booleano que indicará si la conexión se ha realizado con éxito o no (true o false respectivamente). Además se definen dos parámetros de salida que devolverán el posible código de error procedente de SAP B1 (valor entero), así como el posible mensaje de error asociado a dicho código (cadena de caracteres).
En este método se instancia un objeto de la clase “Company” (clase principal de la DI API) que será usado desde nuestro programa para realizar cualquier operación relativa a la base de datos, desde realizar la conexión inicial, hasta crear pedidos, albaranes, facturas o modificar datos maestros de algún artículo, cliente, etc.
Una vez que hemos creado nuestro método para realizar la conexión a la sociedad, haremos la llamada apropiada cuando se pulse en el botón creado en nuestro formulario. Para esto haremos doble click sobre nuestro botón y escribiremos el siguiente código:
Con esto ya tendríamos nuestra primera aplicación que usa DI API, únicamente faltaría ejecutarla y comprobar que funciona correctamente.
11 comentarios en «Cómo se conecta una sociedad SAP Business One a través de DI API»
Buenas Juan!
Respecto a tu consulta, lo que podemos decirte es que SAP en la documentación utiliza el usuario “sa” en las conexiones por DI API. Si te interesa saber más sobre por qué SAP lo hace de esta manera, te recomendamos consultarlo en el foro oficial de SAP.
Esperamos haberte ayudado. Muchas gracias y te mandamos un saludo!
Excelente, muy útil. Consulta: El DBUsername que dobo usar, necesariamente tiene que ser un sysadmin para que pueda tener conexión con la base SBO_COMMON? Porque de otra forma como dbowner, datareader o datawriter me da error. El tema es que si es un sysadmin es como si fuera un user SA y no es buena practica. Cualquier comentario seria de mucha ayuda.
Mil gracias al creador de este blog porque la
información me cae como anillo al dedo, estoy haciendo una
investigación sobre el tema y me contribuye demasiado.
Buenas Jesús,
Comentarte que SAP tiene soporte para conexiones mediante API en el lenguaje .net. Desde Itop te recomendamos que hagas nuestro Curso de Fundamentos de Programación para que tengas una idea más clara del funcionamiento de estas APIs. Te dejamos más información en este enlace: https://www.itop.academy/cursos/erp-sap-business-one/fundamentos-programacion-sap-business-one.html
Un saludo!
Buenas Juan,
Muchas gracias por tus observaciones. Lo tendremos en cuenta para próximas veces.
Un saludo! 🙂
Excelente guia. Solo 2 observaciones:
– Para VS2019 y sap 9.2 pl 08 falta agregar la definicion de oCompany.SLDServer = “SERVER:40000″ y ajustar oCompany.LicenseServer =”SERVER:30000”
– Si pudieras colocar el código “Copiable” mejor.
Gracias
Hola, me he encontrado con este artículo cuando estaba haciendo averiguaciones sobre las opciones que tendría para acceder para consultar/actualiar datos SAP B1 mediante una API, ya que en nuestro caso tenemos desarrollo interno para nuestro erp principal, (utilizamos una herramenta de desarrollo llamada Genexus que puede generar aplicaciones java, .net, etc) .
Podemos acceder a sistemas externos mediante diversos mecanismos, acceso sql directo a bases de datos, mediante WebServices o mediante otros medios, como integrar directamente módulos .net o Java, según el entorno en que ejecute.
En el caso de la integración con .net , mi sistema tiene una función llamada “.Net Assembly Import” , para enlazar con webservices tiene WDSL Import (esto último si que lo he utilizado para otras conexiones, como al SII de hacienda)
No tenemos aquí muchos conocimientos de .net, casi ninguno, y poco de las opciones de conexión a los api de SAP. Con lo que he comentado, ¿Crees que es posible encontrar un camino para lograr un acceso a las funciones api de SAP B1? ¿Puedes recomendarme algo en este sentido?
Un saludo, y gracias por adelantado.
Buenos días Ismael,
Nos alegramos de que te haya resultado muy útil. Si necesitas más ayuda o consejos sobre cómo hacer otros procesos en SAP Business One, siempre puedes echarle un ojo a nuestra sección del blog: https://www.itop.academy/blog/category/erp-sap-bussiness-one.html
Gracias y un saludo!
Buenos días Ricardo,
¿Tienes instalado SAP, la DI API y el DI Server?
Un saludo!
Muchas gracias, la información me parece super útil ya que necesitamos hacer una interface para que conecte SBO a otro soft.
slds.
en las referencias de COM no se encuentra DI API