Buen dia, @DavidSDK
acabo de empezar con esto de los SDK y alguien mo podria hacer un ejemplo de como importar clientes a sap desde con codigo de visual basic .net, estare agradecido ya que quiero ver como funciona el sdk a nivel de datos maestros.
Para crear un SN deberas usar el Objeto BusinessPartners de la DIAPI:
Dim nErr As Long
Dim errMsg As String
'Crear el Objeto SN (BP)
Dim vBP As SAPbobsCOM.BusinessPartners
vBP = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners) 'Calls BusinessPartners object
'Asignar los valores a los campo obligatorios y opcionales
vBP.CardCode = "HU1003" 'Campo Obligatorio
vBP.CardName = "ABCD"
vBP.CardType = SAPbobsCOM.BoCardTypes.cCustomer
vBP.SubjectToWithholdingTax = SAPbobsCOM.BoYesNoEnum.tNO
If (0 <> vBP.Add()) Then
MsgBox("Error al crear el Socio de Negocio")
Else
Dim objCode As String
MsgBox("Socio de Negocio creado, Nuevo Codigo =" + vBP.CardCode)
End If
'Check Error
Call oCompany.GetLastError(nErr, errMsg)
If (0 <> nErr) Then
MsgBox ("Found error:" + Str(nErr) + "," + errMsg)
End If
Ten en cuenta que hay campos que son Llaves Foraneas, por lo tanto deberan existir en las tablas relacionadas.
Eso es porque faltan definir campos obligatorios, como el metodo de pago, trata de ver cuales son los campos obligatorios al momento de crear un SC en SAP, y toma nota del nombre del campo correspondiente (Menu Visualizar -> Informacion del Sistema).
Con eso conoceras los campos minimos requeridos y cuales son sus nombres.
ya encontre el campo que me hacia falta y logre ingresar el cliente, solo una consulta mas… que objeto deberia de utilizar para actualizar ese mismo registro en caso de que quiera cambiar el vendedor, o la direccion.
Hola @Oscar_Lara. Me alegra que lograras realizar con exito el proceso.
Por favor, si puedes compartir como lo hiciste, para que quede registro en el foro y las personas con la misma duda puedan beneficiarse en el futuro, tambien recuerda marcar como solucion la respuesta correspondiente.
Respecto a como modificar o actualizar cualquier objeto por la DIAPI, es a traves del mismo que utilizaste para registrarlo, es decir en el caso del SN usaste SAPbobsCOM.BusinessPartners, para poder actualizarlo, debemos primero ubicar el registro correspondiente mediante su Campo Clave (CardCode) y por medio del metodo GetByKey().
Por Ejemplo, si quiero el campo “Address2” del SC:
Dim BP As SAPbobsCOM.BusinessPartners = oCompany.GetBusinessObject(BoObjectTypes.oBusinessPartners)
If BP.GetByKey("ABCXYZ") Then 'Este metodo retorna la instancia de SC con el CardCode ABCXYZ'
For i As Integer = 0 To BP.Addresses.Count - 1
BP.Addresses.SetCurrentLine(i)
If BP.Addresses.AddressName = "Address2" Then
BP.Addresses.Block = "2"
BP.Addresses.Street = "street 2"
BP.Addresses.City = "City 2"
BP.Addresses.Country = "DE"
Exit For
End If
Next
BP.Update()
End If
Hola nuevamente @GabrielGS implemente el codigo que me diste pero no me actualiza el cliente, estaba revisando mi BD y no entiendo muy bien porque utilizamos este comando Addresses.
Era un ejemplo, el campo “Addresses” del BP corresponde al conjunto de direcciones que puede tener un SN (Que pueden ser muchas).
Pero solo debes enfocarte en los campo que quieres modificar:
Dim BP As SAPbobsCOM.BusinessPartners = oCompany.GetBusinessObject(BoObjectTypes.oBusinessPartners)
If BP.GetByKey("ABCXYZ") Then 'Este metodo retorna la instancia de SC con el CardCode ABCXYZ'
vBP.CardName = "Nuevo Nombre"
vBP.Phone1= "Nuevo Telefono 1"
vBP.E_Mail= "Nuevo email"
' Y Asi con los campos respectivos que se requieran modificar '
BP.Update()
End If
Hola @GabrielGS corri este ultimo codigo y me actualiza muy bien, el unico problema es que hay campos que le coloco la informacion y no me la actualiza, probe con las direcciones pero sigue sin hacer el update…
Dim bp As SAPbobsCOM.BusinessPartners
Dim bpA As SAPbobsCOM.BPAddresses
Set bp = oCompany.GetBusinessObject(oBusinessPartners)
bp.GetByKey ("C00067")
Set bpA = bp.Addresses
bpA.AddressName = "Entrega1"
bpA.Street = "Entrega1 street"
bpA.AddressType = SAPbobsCOM.BoAddressType.bo_BillTo
bpA.Add
bp.Update
bpA.AddressName = "Entrega2"
bpA.Street = "Entrega2 street"
bpA.AddressType = SAPbobsCOM.BoAddressType.bo_ShipTo
bpA.Add
bp.Update
Para MODIFICAR debes hacer tal cual el ejemplo Inicial, usando SetCurrentLine en el objeto BusinessPartners.Addresses:
Dim BP As SAPbobsCOM.BusinessPartners = oCompany.GetBusinessObject(BoObjectTypes.oBusinessPartners)
If BP.GetByKey("ABCXYZ") Then 'Este metodo retorna la instancia de SN con el CardCode ABCXYZ'
For i As Integer = 0 To BP.Addresses.Count - 1 'Este ciclo recorre todas las direcciones asociadas al SN'
BP.Addresses.SetCurrentLine(i)
If BP.Addresses.AddressName = "Address2" Then 'Aqui verifica que solo se modificara el Address2'
BP.Addresses.Block = "2"
BP.Addresses.Street = "street 2"
BP.Addresses.City = "City 2"
BP.Addresses.Country = "DE"
Exit For
End If
Next
BP.Update()
End If
Hola @GabrielGS me estoy inclinando por este codigo solo que cuando corro el codigo, solo me agrega el primer tipo de direccion. y en cuanto al otro codigo me sigue sin funcionar.
hola @GabrielGS ya solvente el problema tus codigos estan bien solo tuve que separar en 2 funciones diferentes la direcciones en ‘Bill to’ y ‘Ship to’, solo necesito que me ayudes en una ultima cosa, como agrego informacion a un campo de usuario agregado a la tabla de Socios de negocios, con esto culminaria mis dudas por hoy.
gracias por tu ayuda.
Agregar Direccion Bill to en una funcion
Dim bp As SAPbobsCOM.BusinessPartners
Dim bpA As SAPbobsCOM.BPAddresses
bp = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners)
bp.GetByKey(TextBox1.Text)
bpA = bp.Addresses
bpA.AddressName = "Bill to"
bpA.City = "city"
bpA.AddressName2 = "DKSAJDKASKDAK"
bpA.State = "XX"
bpA.AddressType = SAPbobsCOM.BoAddressType.bo_BillTo
bpA.Add()
bp.Update()
agregar Direccion Ship to en otra funcion
Dim bp As SAPbobsCOM.BusinessPartners
Dim bpA As SAPbobsCOM.BPAddresses
bp = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners)
bp.GetByKey(TextBox1.Text)
bpA = bp.Addresses
bpA.AddressName = "Ship to"
bpA.City = "city"
bpA.AddressName2 = "DKSAJDKASKDAK"
bpA.State = "XX"
bpA.AddressType = SAPbobsCOM.BoAddressType.bo_ShipTo
bpA.Add()
bp.Update()
Recuerda postear como lo hiciste para futuras consultas.
Para mantener el orden y las normas dentro del foro, abre un nuevo tema con el titulo: “Asignar informacion a un campo de usuario (UDF) por medio del SDK(DI API)”. Para asi responderte en ese nuevo tema.