SAP BO. SAP Business One. Usando el DI API para un caso especial Parte II

     Antes que nada perdón por la tardanza, pero entre el trabajo y cosas personales no me habían liberado mucho tiempo pero seguimos, mucha gente me había estado presionando para que continuara. Y aquí estoy, lo prometido es deuda. 

     Y para comenzar estamos aquí para hacer un ejercicio de replicación de un SAP BO a otro mediante el DI API. En el post pasado después de tirar muchas letras, vimos como hacer las conexiones a nuestros SAP BO, tanto al origen y al destino mediante una función que nos devuelve como resultado un objeto del tipo SBOCompany. 
     ¿Y ahora que demonios vamos hacer? se preguntaran ustedes, bueno vamos al siguiente 
paso uno tambien sencillo, primero vamos a generar una función que nos permita conectarnos a nuestro SQL. Y si me vuelven a preguntar ¿por que? ya que la forma mas sencilla de saber que tengo en la empresa origen que no tengo en la empresa destino es mediante una consulta que aplica la diferencia de teoría de conjuntos (no se me asusten por eso vamos poco a poco), en pocas palabras, vamos a obtener que tenemos de un lado que no tengamos del otro. 

     Y aquí les dejo dicha función. 

     public SqlConnection ConnectionSystemSQL(int BD)
        {
            string ConnectionString;

            ConnectionString = "Data Source=" +  ParamConexion.GetInstance().GetInfo(XMLConstantes.SenderSAPServer)+ ";";
            ConnectionString += "User ID=" +  ParamConexion.GetInstance().GetInfo(XMLConstantes.SenderSAPDBUserName)+ ";";
            ConnectionString += "Password=" + ParamConexion.GetInstance().GetInfo(XMLConstantes.SenderSAPDBPassword)+ ";";
            ConnectionString += "Initial Catalog=" + ParamConexion.GetInstance().GetInfo(BD);
            SqlConnection con;
            con = new SqlConnection();
            try
            {
                con.ConnectionString = ConnectionString;
                con.Open();
                return con;
            }
            catch //(Exception Ex*/)
            {
                // Cerrar la conexion
                if (con != null)
                    con.Dispose();
                throw;
            }
        }

     Ahora bien la sección de código ParamConexion.GetInstance().GetInfo(XMLConstantes.SenderSAPServer) ustedes la pueden cambiar por un valor constante, en este ejemplo lo tengo así ya que tomo los valores de un XML. Y como la función anterior esta nos regresa un objeto tipo SQLConnection. 

     Ahora bien, ya nos conectamos a SAP BO y a SQL. Y ahora vamos ha hablar un poco de mi lógica. Una manera que se me ocurrió, cuando tuve la necesidad de replicar artículos, era buscar el articulo, crear uno nuevo y después pasarle campo por campo. Una tarea bastante tediosa. Mas sin embargo en la documentación de SAP BO, ahí un método llamado "GetByKey", este método en pocas palabras se encarga de obtener un objeto en base a una llave, por ejemplo en el caso de artículos su KEY es el código de articulo, osease el campo ItemCode de la tabla OITM. 

      Ahora bien veamos el metodo. 

    public SAPbobsCOM.Items GetByItem(SAPbobsCOM.Company SboCompany, string Key)
    {
SAPbobsCOM.Items Item;
bool Search;

Item = (SAPbobsCOM.Items)SboCompany.GetBusinessObject(BoObjectTypes.oItems);
Search = Item.GetByKey(Key);
if (Search)
return Item;
return null; 
    }

     Lo que vieron acá arriba es un método que nos va a regresar un Item, lo primero que hace es declarar un Item del DI API y una bandera del tipo bool, después hacemos una referencia ya al Item que acabamos de crear, y a continuación usamos el GetByKey, y la bandera bool que creamos es por que el método nos regresa cierto o falso. Si todo va bien eta función nos regresa un objeto Item con toda la información relevante a este. 

     Para no sobrecargarlos de información vamos a dejar este post hasta aquí y antes de terminar, quiero agradecerles a todos mis lectores tanto sus opiniones y preguntas, si tienen dudas les recomiendo que lo hagan por correo ya que estoy mas atento a este y lo tengo en mi área de pendientes. Les comento esto ya que he tenido mucha actividad gracias a sus preguntas y si quieren participar con algún tema adelante este es su espacio. 

     

0 comentarios:

Related Posts with Thumbnails