Skip to Content
Author's profile photo Felipe Loyola

Programar una macro para importar desde excel usando la DI API

Estimados,

Junto con saludar les dejo los pasos de un pequeño ejemplo sobre como importar desde excel usando la DI API mediante una simple macro.

1.- El primer paso consiste en abrir una hoja de calculo excel

ScreenShot005.jpg

2.- Luego abrimos la ventana de edicion de visual basic que trae excel para programar macros

ScreenShot006.jpg

3.- Agregamos las referencias de la DI API  de SAP al trabajo actual

ScreenShot007.jpg

ScreenShot008.jpg

4.- Insertamos el código, cambian los parámetros de conexión que corresponden a su servidor y ejecutan el código

Public Sub Imp_Items()
    Dim oCompany As SAPbobsCOM.Company
    Dim lRetCode, ErrorCode As Long
    Dim ErrorMessage As String
    Set oCompany = New SAPbobsCOM.Company
    oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2008
    oCompany.DbUserName = "sa"
    oCompany.DbPassword = "********"
    oCompany.Server = "localhost"
    oCompany.CompanyDB = "SBODemoCL"
    oCompany.UserName = "manager"
    oCompany.Password = "manager"
    oCompany.UseTrusted = False
    lRetCode = oCompany.Connect()
    Dim Retval As Long
    Dim vItem As SAPbobsCOM.Items
    Set vItem = oCompany.GetBusinessObject(oItems)
    Row = 2
    Do While ActiveSheet.Cells(Row, 1) <> ""
        vItem.ItemCode = ActiveSheet.Cells(Row, 1)
        vItem.ItemName = ActiveSheet.Cells(Row, 2)
        If vItem.ItemCode <> "" Then
            Retval = vItem.Add
        End If
    Row = Row + 1
    Loop
    oCompany.Disconnect
End Sub

Luego en SAP buscamos los articulos

ScreenShot009.jpg

Saludos y espero les haya gustado.

Felipe

Assigned Tags

      60 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Former Member
      Former Member

      Felipe, muy buen aporte, muy útil, gracias por tomarte el tiempo y compartirlo ya lo probé y funciona.

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Es conveniente para crear plantillas mas personalizadas sin necesidad de usar el DTW ­čśÇ

      Author's profile photo Marco Ramirez
      Marco Ramirez

      Excelente aporte! gracias por compartir.

      Es posible utilizar esta misma para importar información de bancos para el tema de conciliaciones bancarias?

      Saludos

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      ¿Te refieres a importar extractos bancarios?

      Author's profile photo Marco Ramirez
      Marco Ramirez

      Exacto!

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Si, los extractos bancarios (bank statements) si se pueden cargar por el mismo método ya que el objeto esta en el SDK.

      Pero el template del DTW es bastante simple, ¿nunca lo has probado?

      Author's profile photo Marco Ramirez
      Marco Ramirez

      Si por supuesto, en este caso se me ocurre dar este archivo a un usuario de contabilidad para que sean ellos quienes suban los datos del extracto bancario y así de simple cómo he visto que funciona. Gracias por tus aclaraciones, saludos

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author
      Author's profile photo Former Member
      Former Member

      Hi Felipe,

      I would like your could help  with the error that I get when i try to  uplode data from excel journal entry into SAP b1 i recvie an error -5010?

      Thanks in advance

      Ran

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Hi, what is your code?

      Author's profile photo Osvaldo Lopez
      Osvaldo Lopez

      Excelente! No había visto este tuto ­čśŤ

      Author's profile photo Luis Roberto
      Luis Roberto

      Buenas gente , necesito su ayuda en la siguiente linea

      Set vItem = oCompany.GetBusinessObject(oItems) 

      No veo donde se crea la variable ó objeto llamado   oItems  podrían ayudarme a entender por que en mi codigo es el único error que me marca, sera que  me hace falta importar algo o alguna referencia adicional no se

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      oItems, es el objeto  de negocio que está dentro de la DI API de SAP B1.

      Lo que se está realizando es seteando la variable vItem = oItems(SAPbobsCOM)

      Saludos

      FLR

      Author's profile photo Luis Roberto
      Luis Roberto

      Buenas Felipe como haces para indicarle a la orden de venta o pedido de cliente que su estado es abierto? ya que cuando creo la orden desde .net mediante la funcion que pusiste me pone el estado como impreso lo cual no es correcto , desde .net puse la siguiente linea

      oOrder.Printed = PrintStatusEnum.psNo

      pero sigue igual , me podrías ayudar con este tema

      Author's profile photo Augustus Pinto
      Augustus Pinto

      Bom dia Felipe.

      Recebo o mesmo erro que nosso colega Luis Roberto na linha :

      Set vItem = oCompany.GetBusinessObject(oItems)

      Ocorre erro de automação.

      Utilizo SAP B1 9.1 PL 11

      Abraços.

      Augustus Otávio

      Author's profile photo Former Member
      Former Member

      hola Felipe disculpa trate de hacer tu ejemplo pero me manda un error 429 no se puede crear el objeto si me puedes ayudar te lo agradeceré muchoo

      saludos cordiales

      Author's profile photo Agustin Marcos Cividanes
      Agustin Marcos Cividanes

      Blog genial !!!!

      Gracias Felipe por compartir estos conocimientos

      Agustín Marcos Cividanes

      Author's profile photo Former Member
      Former Member

      Una pregunta Felipe, si quisiera utilizarlo a subir Ordenes de Venta, o Asiento Contables,

      donde especifico el tipo de objeto? en el Query, no me queda claro como sabe a que objeto debe subirse.

      En espera de tu apreciable ayuda.

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Donde dice

      Dim vItem As SAPbobsCOM.Items 

      Set vItem = oCompany.GetBusinessObject(oItems) 

      En este caso de ejemplo estoy usando el objeto Items.

      Saludos

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Para todos a los que le ha gustado este tutorial, les dejo uno que acabo de escribir para cargar documentos.

      Importar orden compra excel DI API | Quality Info Solutions

      Saludos chicos

      Author's profile photo Former Member
      Former Member

      Felipe me dice que fallo la conexion con el servidor de licencias?

      que puede estar fallando.

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Agrega:

      oCompany.LicenseServer = "tuservidor:30000"

      Saludos

      Author's profile photo Former Member
      Former Member

      EXCELENTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

      MUCHAS GRACIAS!!!!!!! TENGO UNA ULTIMA PREGUNTA.......

      COMO SE LLAMA EL OBJETO DE LOS ASIENTOS CONTABLES?

      oJournalEntry?

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Correcto, se llama oJournalEntry

      Pero ademas de colocarlo en el Set, debes cambiar el Dim, ya que oJournalEntry no forma parte del objeto SAPbobsCOM.Documents si no que forma parte del Objeto SAPbobsCOM.JournalEntries

      Saludos

      Author's profile photo Former Member
      Former Member

      Hermano sos el capo de los capos. muchas gracias por compartir tus conocimientos. siempre sigo tus post.

      Saludos, y gracias otra vez.

      Author's profile photo Former Member
      Former Member

      Felipe, puse este codigo y no me funciona me mando un error que dice MEMORIA INSUFICIENTE.

      Cambie Datos de login por seguridad....

      Public oCompany As SAPbobsCOM.Company

      Public Sub ConnSAP()

              Dim lRetCode, ErrorCode As Long

              Dim ErrorMessage As String

             

              Set oCompany = New SAPbobsCOM.Company

             

              oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2008

              oCompany.DbUserName = "sa"

              oCompany.DbPassword = "*********"

              oCompany.Server = "emcdc01"

              oCompany.LicenseServer = "localhost:30000"

              oCompany.CompanyDB = "localhost"

              oCompany.UserName = "manager"

              oCompany.Password = "*********"

              oCompany.UseTrusted = False

              oCompany.Language = ln_Spanish_La

             

              lRetCode = oCompany.Connect()

              If lRetCode <> 0 Then

                  MsgBox (oCompany.GetLastErrorDescription())

              Else

                  Imp_OC

              End If

      End Sub

      Public Sub Imp_OC()

             

              Dim Retval As Long

              Dim vDoc As SAPbobsCOM.JournalEntries

             

              Set vDoc = oCompany.GetBusinessObject(oJournalEntry)

             

              RowC = 2

              RowD = 5

             

              If ActiveSheet.Cells(RowC, 1) <> "" Then

             

                  vDoc.RefDate = ActiveSheet.Cells(RowC, 1)

                  vDoc.TaxDate = ActiveSheet.Cells(RowC, 2)

                  vDoc.VatDate = ActiveSheet.Cells(RowC, 3)

                  vDoc.Memo = ActiveSheet.Cells(RowC, 4)

                 

                  vDoc.Lines.Account = ActiveSheet.Cells(RowD, 1)

                  vDoc.Lines.Debit = ActiveSheet.Cells(RowD, 2)

                  vDoc.Lines.Credit = ActiveSheet.Cells(RowD, 3)

                  vDoc.Lines.ProfitCode = ActiveSheet.Cells(RowD, 4)

                  vDoc.Lines.OcrCode2 = ActiveSheet.Cells(RowD, 5)

                 

                 

                  RowD = RowD + 1

                  Do While ActiveSheet.Cells(RowD, 1) <> ""

                 

                      vDoc.Lines.Add

                                     

                      vDoc.Lines.Account = ActiveSheet.Cells(RowD, 1)

                      vDoc.Lines.Debit = ActiveSheet.Cells(RowD, 2)

                      vDoc.Lines.Credit = ActiveSheet.Cells(RowD, 3)

                      vDoc.Lines.ProfitCode = ActiveSheet.Cells(RowD, 4)

                      vDoc.Lines.OcrCode2 = ActiveSheet.Cells(RowD, 5)

                     

                 

                      RowD = RowD + 1

                     

                  Loop

                 

                  Retval = vDoc.Add

                  If Retval <> 0 Then

                      MsgBox (oCompany.GetLastErrorDescription())

                  Else

                      MsgBox ("Asiento Contable Cargado con Exito")

                  End If

              Else

                  MsgBox ("Nada que cargar")

              End If

             

              oCompany.Disconnect

      End Sub

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Ese error no es lo que piensas, es como un error generico y las veces que me ha pasado es cuando estas asignando un valor muy largo o grande dentro de un campo que tiene menos caracteres definidos.

      Ejemplo.

      declare @var char(1)

      set @var='dos'

      eso dará error.

      Otra posibilidad es que estes asignando un valor a un campo read-only, verifica en la sdk que los campos que estas utilizando tengan la propiedad write.

      Atte.

      Author's profile photo Former Member
      Former Member

      Ya revise y solo deje 3 campos, Cuenta, Debito y Credito, y ni aun asi funciona, talvez cuando tengas tiempo me hechas una mano, para migrar el asiento.

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Revisa el vDoc.Memo, apuesto a que el comentario es muy largo.

      Saludos

      Author's profile photo Former Member
      Former Member

      En el memo solo dice prueba, inserto imagen de excel y codigo utilizado en macro.Sin t├ştulo.jpg

      Public oCompany As SAPbobsCOM.Company

      Public Sub ConnSAP()

              Dim lRetCode, ErrorCode As Long

              Dim ErrorMessage As String

             

              Set oCompany = New SAPbobsCOM.Company

             

              oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2008

              oCompany.DbUserName = "sa"

              oCompany.DbPassword = "++++++"

              oCompany.Server = "emcdc01"

              oCompany.LicenseServer = "emcdc01:30000"

              oCompany.CompanyDB = "PRUEBAS"

              oCompany.UserName = "manager"

              oCompany.Password = "++++++"

              oCompany.UseTrusted = False

              oCompany.Language = ln_Spanish_La

             

              lRetCode = oCompany.Connect()

              If lRetCode <> 0 Then

                  MsgBox (oCompany.GetLastErrorDescription())

              Else

                  Imp_OC

              End If

      End Sub

      Public Sub Imp_OC()

             

              Dim Retval As Long

              Dim vDoc As SAPbobsCOM.JournalEntries

             

              Set vDoc = oCompany.GetBusinessObject(oJournalEntry)

             

              RowC = 2

              RowD = 5

             

              If ActiveSheet.Cells(RowC, 1) <> "" Then

             

                  vDoc.RefDate = ActiveSheet.Cells(RowC, 1)

                  vDoc.DueDate = ActiveSheet.Cells(RowC, 2)

                  vDoc.Memo = ActiveSheet.Cells(RowC, 3)

                 

                  vDoc.Lines.Account = ActiveSheet.Cells(RowD, 1)

                  vDoc.Lines.Debit = ActiveSheet.Cells(RowD, 2)

                  vDoc.Lines.Credit = ActiveSheet.Cells(RowD, 3)

            

              

                 

                 

                  RowD = RowD + 1

                  Do While ActiveSheet.Cells(RowD, 1) <> ""

                 

                      vDoc.Lines.Add

                                     

                      vDoc.Lines.Account = ActiveSheet.Cells(RowD, 1)

                      vDoc.Lines.Debit = ActiveSheet.Cells(RowD, 2)

                      vDoc.Lines.Credit = ActiveSheet.Cells(RowD, 3)

              

                    

                     

                 

                      RowD = RowD + 1

                     

                  Loop

                 

                  Retval = vDoc.Add

                  If Retval <> 0 Then

                      MsgBox (oCompany.GetLastErrorDescription())

                  Else

                      MsgBox ("Asiento Contable Cargado con Exito")

                  End If

              Else

                  MsgBox ("Nada que cargar")

              End If

             

              oCompany.Disconnect

      End Sub

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Coloca el año completo

      01-01-2015

      usas cuentas segmentadas?

      Atte.

      Author's profile photo Former Member
      Former Member

      Pues no me deja poner el año completo, no uso cuentas segmentadas.

      en el formato de fecha solo sale ese formato, no sale uno con guiones que me permita poner el año completo, solo con /. osea tengo 2 opciones:

      01-01-15         o

      01/01/2015

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Pues, haz la prueba con el 01/01/2015

      Author's profile photo Former Member
      Former Member

      Ya lo hice y nada, no se mas bien, que tiene que ver con algo del cuadre del asiento, que no puede ir subiendo linea tras lineas, porque debe comprabar que esta cuadrado, algo asi debe ser, porque la Orden de compra y Orden de Venta subio barbaro.

      Author's profile photo Former Member
      Former Member

      /wp-content/uploads/2015/03/error_664485.jpg

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Douglas ya encontre tu error.

      Los campos en la DI API no se llaman igual que en la base de datos

      vDoc.RefDate no existe

      vDoc.ReferenceDate es el correcto

      vDoc.Lines.Account no exite

      vDoc.Lines.AccountCode es el correcto

      Saludos

      PD: Cambiando esos campos el asiento cargó con exito

      Author's profile photo Former Member
      Former Member

      Felipe hice lo que me dijiste y sigue mostrando error, te muestro el codigo:

      /wp-content/uploads/2015/03/excel_665650.jpg

      Public oCompany As SAPbobsCOM.Company

      Public Sub ConnSAP()

              Dim lRetCode, ErrorCode As Long

              Dim ErrorMessage As String

            

              Set oCompany = New SAPbobsCOM.Company

            

              oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2008

              oCompany.DbUserName = "sa"

              oCompany.DbPassword = "******"

              oCompany.Server = "emcdc01"

              oCompany.LicenseServer = "emcdc01:30000"

              oCompany.CompanyDB = "PRUEBAS"

              oCompany.UserName = "manager"

              oCompany.Password = "******"

              oCompany.UseTrusted = False

              oCompany.Language = ln_Spanish_La

            

              lRetCode = oCompany.Connect()

              If lRetCode <> 0 Then

                  MsgBox (oCompany.GetLastErrorDescription())

              Else

                  Imp_OC

              End If

      End Sub

      Public Sub Imp_OC()

            

              Dim Retval As Long

              Dim vDoc As SAPbobsCOM.JournalEntries

            

              Set vDoc = oCompany.GetBusinessObject(oJournalEntry)

            

              RowC = 2

              RowD = 5

            

              If ActiveSheet.Cells(RowC, 1) <> "" Then

            

                  vDoc.ReferenceDate = ActiveSheet.Cells(RowC, 1)

                  vDoc.Memo = ActiveSheet.Cells(RowC, 2)

                

                  vDoc.Lines.AccountCode = ActiveSheet.Cells(RowD, 1)

                  vDoc.Lines.Debit = ActiveSheet.Cells(RowD, 2)

                  vDoc.Lines.Credit = ActiveSheet.Cells(RowD, 3)

           

             

                

                

                  RowD = RowD + 1

                  Do While ActiveSheet.Cells(RowD, 1) <> ""

                

                      vDoc.Lines.Add

                                    

                      vDoc.Lines.AccountCode = ActiveSheet.Cells(RowD, 1)

                      vDoc.Lines.Debit = ActiveSheet.Cells(RowD, 2)

                      vDoc.Lines.Credit = ActiveSheet.Cells(RowD, 3)

             

                   

                    

                

                      RowD = RowD + 1

                    

                  Loop

                

                  Retval = vDoc.Add

                  If Retval <> 0 Then

                      MsgBox (oCompany.GetLastErrorDescription())

                  Else

                      MsgBox ("Asiento Contable Cargado con Exito")

                  End If

              Else

                  MsgBox ("Nada que cargar")

              End If

            

              oCompany.Disconnect

      End Sub

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      A mi me funcionó

      instantánea1.png

      Public oCompany As SAPbobsCOM.Company

      Public Sub ConnSAP()

              Dim lRetCode, ErrorCode As Long

              Dim ErrorMessage As String

         

              Set oCompany = New SAPbobsCOM.Company

         

              oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_MSSQL2008

              oCompany.DbUserName = "sa"

              oCompany.DbPassword = "SAP********"

              oCompany.Server = "sap9"

              oCompany.LicenseServer = "sap9:30000"

              oCompany.CompanyDB = "SBO_MerSud"

              oCompany.UserName = "manager"

              oCompany.Password = "b*******"

              oCompany.UseTrusted = False

              oCompany.Language = ln_Spanish_La

         

              lRetCode = oCompany.Connect()

              If lRetCode <> 0 Then

                  MsgBox (oCompany.GetLastErrorDescription())

              Else

                  Imp_OC

              End If

      End Sub

      Public Sub Imp_OC()

         

              Dim Retval As Long

              Dim vDoc As SAPbobsCOM.JournalEntries

         

              Set vDoc = oCompany.GetBusinessObject(oJournalEntries)

         

              RowC = 2

              RowD = 5

         

              If ActiveSheet.Cells(RowC, 1) <> "" Then

         

                  vDoc.ReferenceDate = ActiveSheet.Cells(RowC, 1)

                  vDoc.Memo = ActiveSheet.Cells(RowC, 3)

             

                  vDoc.Lines.AccountCode = ActiveSheet.Cells(RowD, 1)

                  vDoc.Lines.Debit = ActiveSheet.Cells(RowD, 2)

                  vDoc.Lines.Credit = ActiveSheet.Cells(RowD, 3)

              

                  RowD = RowD + 1

                  Do While ActiveSheet.Cells(RowD, 1) <> ""

             

                      vDoc.Lines.Add

                                 

                      vDoc.Lines.AccountCode = ActiveSheet.Cells(RowD, 1)

                      vDoc.Lines.Debit = ActiveSheet.Cells(RowD, 2)

                      vDoc.Lines.Credit = ActiveSheet.Cells(RowD, 3)

            

                      RowD = RowD + 1

                 

                  Loop

             

                  Retval = vDoc.Add

                  If Retval <> 0 Then

                      MsgBox (oCompany.GetLastErrorDescription())

                  Else

                      MsgBox ("Asiento Contable Cargado con Exito")

                  End If

              Else

                  MsgBox ("Nada que cargar")

              End If

         

              oCompany.Disconnect

      End Sub

      Atte.

      Author's profile photo Former Member
      Former Member

      ya encontré el Error, en las 2 ocasiones tenes JournalEntries y yo tengo JournalEntry.

      Author's profile photo Former Member
      Former Member

      Hola Felipe, intente hacer lo mismo pero me manda un mensaje , de que

      "No se encontró la información de licencia apropiada para utilizar esta función en el entorno de diseño"

      SAPBO.PNG

      Alguna sugerencia?

      Author's profile photo Former Member
      Former Member

      Felipe, excelente  aporte, gracias por compartir, y si quisiera consultar un asiento? como sería?

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Buenas tardes

      Ese error puede suceder porque estas utilizando excel 64 bits y SAP B1 32 bits o viceversa.

      Saludos

      Author's profile photo Former Member
      Former Member

      Felipe, Excelente aporte, gracias por compartir.

      Author's profile photo Boris Fierro
      Boris Fierro

      Hola.

      Alguno tendrá un ejemplo para generar Asiento con Cuentas Asociadas!!. y/o que objetos usar.

      saludos

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Estimado en las respuestas está el ejemplo de asientos contables.

      Saludos

      Author's profile photo Boris Fierro
      Boris Fierro

      Buen Día.

      Existe la opción de poder agregar mediante la DI API la "posición del formulario principal" que tiene relación con flujo de caja al asiento. Lo demás me  funciona al 100%.

      Saludos

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Dentro del JournalEntries_Lines

              Tran.Lines.PrimaryFormItems.CashFlowLineItemID = "mi valor"
              Tran.Lines.PrimaryFormItems.JDTLineId = "linea del asiento"
             

      Tran.Lines.PrimaryFormItems.AmountLC = "monto en moneda local"

      Saludos

      Author's profile photo Boris Fierro
      Boris Fierro

      Thanks.

      Saludos

      Author's profile photo Former Member
      Former Member

      Buenas tardes, he buscado como solucionar un problema que me arroja en el visual, pero no encuentro como. A alguien le ha pasado..Captura.PNG

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Luis puede ser un tema de seguridad de Excel, revisa que tienes habilitado el ActiveX en las seguridad de Excel.

      Atte.

      Author's profile photo Former Member
      Former Member

      Felipe, al parecer hay algo extraño con excel, probe en otro equipo y no da el error de activex. Pero al correr el codigo paso a paso, me arroja otro error. Podrias explicarme de que se trata por favor.

      /wp-content/uploads/2016/02/foto_896075.jpg

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      No es un error de Excel, es un error de que no te has conectado a SAP, el lRetCode = oCompany.Connect() no conecta por alguna excepción que no estás capturando, debes colocar un "If" en ese lugar para poder controlar la excepción, mira los códigos que están escritos en los comentarios y en link a la parte 2.

      Antiguamente en SAP 8, era mucho mas fácil conectarse, en SAP 9 es mejor tomar precauciones para cuando la DI API no se conecta.

      Atte.

      Author's profile photo Former Member
      Former Member

      Muchas gracias Felipe, hice el if y con eso ya puedo ingresar. No se si te pueda preguntar por aca o es mejor crear un tema nuevo, pero en el caso de la importacion de la orden de compra, como puedo rescatar el numero interno que esta genera..

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Agrega

      if retval<>0 then

           MsgBox(Cstr(oCompany.GetNewObjectKey))

      End if

      Atte.

      Author's profile photo Former Member
      Former Member

      Muchas gracias, ya con eso me arroja el numero que genera, solo que no se porque mi seria tiene numeros como 20026540 y con el codigo me arroja solo el 26540, le agregue esto

      Retval = vDoc.Add

                  If Retval <> 0 Then

                      MsgBox (oCompany.GetLastErrorDescription())

                  Else

                      MsgBox ("Oc de Compra Generada Nº   200" + CStr(oCompany.GetNewObjectKey - 1))

                  End If

      PD: Es lo mas facil, pero para otras series con otro correlativo no me sirve..

      De todos Modos Muchas gracias, ya  con esto puedo empezar a meterme mas en el SDK.

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Eso es porque la API siempre retorna el único número que no se repite (DocEntry) o el campo llave del objeto

      Atte,

      Author's profile photo Former Member
      Former Member

      Disculpen, donde puedo conseguir el listado con los objetos de sap, en el sdk al ver el indice de boObject types no me muestra, es como si no encontrara la info dentro de la carpeta sdk.

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      La lista completa la puedes encontrar en la ayuda el B1if

      Atte.

      Author's profile photo Former Member
      Former Member

      Buen Dia.

      soy nuevo en SAP B1 y necesito una ayuda, alguien tiene algun ejemplo como subir articulos pero con los campos de usuarios.

      si alguien me puede ayudar, se los agradeceria.

      Author's profile photo Former Member
      Former Member

      Excelente tutorial, para mi que soy novato, Una duda, quiero agregar con mi campo de usuario

      documento.Lines.UserFields.Fields.Item("u_odometro").value = ActiveSheet.Cells(fila,columna).value

      Pero al ejecutar mi macro en excel 2016, me marca error ( illegal value entered )

      este es el valor de la celda en excel.

      U_Odometro
      1198844

       

      El campo de usuario es N├║merico, y con espacio para 10 caracteres.

       

      p.d se puede pegar la imagen?