Importar ordenes de compra desde excel via DI API

Bueno, continuando con la programacion en vba, hoy quiero mostrarles como se puede importar un documento (en este caso orden de compra) a SAP usando una hoja de excel y unas pocas lineas de codigo.

Para ver los pasos previos (necesarios para que funcione el codigo), deben mirar el primer post;

Programar una macro para importar desde excel usando la DI API

Vamos a comenzar abriendo MS Excel y a llenar los datos como se muestra en esta imagen (los titulos los pueden colocar a su gusto). El boton no es necesario que lo agreguen aun.

instantánea22

Una vez colocado esos datos (obviamente con los codigos de su compañia), vamos a la ventana de macros y pegamos el siguiente codigo.

Acto seguido, volvemos a excel y agregamos un boton de formulario en la hoja desde la pestaña programador –> insertar –> controles de formulario

instantánea23

Una vez agregado el boton, debemos asignarle la macro para que ejecute el codigo que acabamos de escribir.

instantánea24

instantánea25

Y eso es todo, ahora solo basta con presionar el boton que agregamos y asignamos a la macro, esperar e ir a visualizar a SAP si se creo nuestra OC (Si tienen algun transaction validando campos obligatorios no funcionará al 100% ya que no están incluidos sus campos…ojo con eso.).

instantánea26

Si les aparece el mensaje “OK”, quiere decir que se cargó correctamente el documento, de lo contrario aparecerá el mensaje de error correspondiente. Ahora solo basta ir a SAP B1 y revisar el documento.

instantánea27

Y con eso, termina esta publicacion.

Saludos a todos los lectores.

Publicado en SAP Business One Etiquetado con: , , , , , ,
25 Comentarios en “Importar ordenes de compra desde excel via DI API
  1. William dice:

    Gran Aporte. Muchas Gracias

  2. Luis dice:

    Funciona perfecto ,pero debo agregar un valor en un campo definido por usuario , como lo puedo hacer.

  3. Fredy Lino dice:

    Excelente aporte, tengo una consulta, para actualizar un campo de usuario, pero que de igual forma lo tengo en columnas de Excel, como sería la sintaxis ???

    Gracias de antemano.

    Fredy

    • Estimado, en el comentario de arriba aparece.

      Saludos

      • Fredy Lino dice:

        Hola Amigo, en el comentario de arriba, se le escribe exactamente lo que quiere que se le actualice, pero si quiero que lo extraiga de una de las columnas de Excel, Yo lo he hecho de la siguiente forma y me da error:

        vItem.UserFields.Fields.Item(“U_Cod_Art_Base”).Value = ActiveSheet.Cells(Row, 4)

        Saludos

        Fredy

        • Hector Diaz dice:

          Yo lo solucione asi
          vItem.UserFields.Fields.Item(“U_Cod_Art_Base”).Value = ActiveSheet.Cells(Row, 4).value

          con un “punto value al final” ojala y te sirva

          ademas en la celda de excel si se trata de un numero en mi caso tuve que poner el apostrofe ‘ para que lo tomara como cadena y no como numero

        • Estimado, mis post y comentarios son a nivel de ejemplo para que uds apliquen la solución que desean.

          Saludos

  4. Hector Diaz dice:

    por cierto, estupendo aporte Felipe

    Saludos

  5. Renato Baez dice:

    Hola Felipe, gracias por tu aporte me funciona perfecto. Pero tengo un problema… Cuando crea la orden de compra, en el precio unitario coloca el precio de venta que tiene el articulo y no el precio que yo le estoy dando y lo otro es como controlar si la orden de compra va hacer en pesos o en dolares?

    Gracias y Saludos

  6. Jaime dice:

    Srea su apoyo:
    Yo agregue la siguiente linea para insertar un valor al campo de usuario “U_TipoOpT12”:
    vDoc.Lines.UserFields.Fields.Item(“U_TipoOpT12”).Value = ActiveSheet.Cells(RowD, 6).value

    y al ejecutar el macros el mensaje de error que me sales es “memoria insuficiente”.

  7. Hector Diaz dice:

    Que tal Felipe
    No he podido poner el descento en la linea de un pedido de venta, todo lo demas ya le he solucionado gracias a esta pagina, me marca error “el objeto no admite esta propiedad o metodo” cuando llega a esta linea

    vDoc.Lines.DiscPrcnt = descuento

    buscando en la ayuda, efectivamente la propiedad DiscPrcnt no aparece como tal, pero entonces de que manera puedo ponerle un descuento a mi Pedido?

    Saludos

    y gracias de antemano

  8. Jesus dice:

    Buenas Felipe,
    Excelente tutorial, me gustaria saber si existe alguna forma de hacer lo mismo pero para impresiones en PDF de las ordenes de compras que son liberadas. Me podrias echar una mano ?

    Quedo atento a comentarios.

    Saludos,

  9. Ricardo Uribe dice:

    Estimado Felipe,

    Estoy utilizando tu ejemplo para migrar una Oferta desde VB6, pero al momento de probar la conexión me aparece el mensaje “Database server type not supported”.

    Estos son mis datos de conexion
    oCompany.DbUserName = “sa”
    oCompany.DbPassword = “*****”
    oCompany.Server = “Servidor”
    oCompany.CompanyDB = “SBO_Demo”
    oCompany.UserName = “manager”
    oCompany.Password = “*******”
    oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2012
    oCompany.UseTrusted = False

    La version de SAP que utilizo es SAP Business One 9.1 (9.10.190) PL: 09 (32-bit).

    Estoy usando SAP Business One DI API Version 9.0

    Espero me puedas ayudar a saber a que se debe.

    Gracias

  10. Maria Monte dice:

    Estimado Felipe,

    Al ejecutar el código estoy teniendo un error relacionado al RFC y me aparece que es una empresa mexicana.

    Agradezco si me pudiera indicar a que se debe este error o que puedo hacer para solucionarlo.

    Muchas gracias!

  11. Luis Roberto dice:

    Felipe, estoy haciendo una remision, no un pedido, pero tengo problemas con los lotes, como puedo agregar un lote.

    Saludos

  12. Silvana Mauriel dice:

    Hola Felipe….
    Muchas Gracias por compartir tu conocimiento.

    Necesito hacer lo mismo pero para crear una SOLICITUD DE TRASLADO PRELIMINAR… CONOCES EL OMBRE DEL OBJECT??

    Esta linea es la que cambia, cierto?
    Set vDoc = oCompany.GetBusinessObject(oPurchaseOrders)

    gracias por tu ayuda.
    Dios te siga dando inteligencia.

  13. Leo Perez dice:

    Buenas tardes a todos,

    Me está apareciendo un mensaje que tiene que ver con el servidor de licencias: -131- Conexión fallida al servidor de licencias, si la dirección del servidor de licencias es inválida, corríjala; si el servicio de TAO NT Naming Service esta detenido, actívelo y reinicie el servidor de licencias.

    Por favor, cómo se repara ya que me impide avanzar con el requerimiento.

1 Pings/Trackbacks para "Importar ordenes de compra desde excel via DI API"
  1. […] Para los que leyeron el artculo anterior Importar ordenes de compra desde excel via DI API […]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*