Programa para Facturas y pagos

Buen día.

E estado trabajando en una pequeña aplicación para poder subir facturas a SAP a partir de un archivo CSV, por ciertas circunstancias no puedo usar el DTW ya que el archivo es incompleto y por eso no puedo usar el DTW, el programa me funciona correctamente hace las facturas les hace el pago pero mi problema es cuando 2 personas estan usando el mismo programa.
Esta es la porción del código con la que se crean las facturas y se hace el pago.
esta porción esta dentro de un bucle.

     oInvoice = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oInvoices)
     oInvoice.CardCode = dgvFacturas(10, X).Value
     oInvoice.DocType = SAPbobsCOM.BoDocumentTypes.dDocument_Items
     oInvoice.DocDate = dtpFecha.Value
     oInvoice.TaxDate = dtpFecha.Value
     oInvoice.DocDueDate = dtpFecha.Value
     oInvoice.NumAtCard = dgvFacturas(0, X).Value
     oInvoice.Series = 64
     oInvoice.SalesPersonCode = BusinessPartners.SalesEmployeeCode
     Clientes.GetByKey(dgvFacturas(10, X).Value)
     oInvoice.UserFields.Fields.Item("U_IdDoc").Value = Clientes.UserFields.Fields.Item("U_DUI").Value

     oInvoice.Lines.ItemCode = ItemCod
     oInvoice.Lines.Quantity = dgvFacturas(6, X).Value
     oInvoice.Lines.TaxCode = Impuesto
     oInvoice.Lines.DiscountPercent = Desc
     oInvoice.Lines.WarehouseCode = oWareHouse.WarehouseCode
     oInvoice.Lines.AccountCode = CuentM


     lRetCode = oInvoice.Add()

     **Entry = oCompany.GetNewObjectKey()**  <-------- Este parece ser mi problema, ya que cuando me falla me aparece otra key y no el docentry>

     If lRetCode <> 0 Then
              oCompany.GetLastError(lErrCode, sErrMsg)
              MsgBox(lErrCode & " " & sErrMsg)
              Exit Sub
      Else
              ---------------------------------------------------------
              Dim oPago As SAPbobsCOM.Payments
              oPago = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oIncomingPayments)

              oPago.Series = 14
              oPago.CardCode = dgvFacturas(10, X).Value
              oPago.DocDate = dtpFecha.Value
              oPago.DueDate = dtpFecha.Value
              oPago.TaxDate = dtpFecha.Value
                                        
              oPago.CashAccount = CV
              oPago.Invoices.InvoiceType = 13
              **oPago.Invoices.DocEntry = Entry**  ----------- no siempre toma el Docentry correcto
              oInvoice.GetByKey(Entry)
              oPago.CashSum = oInvoice.DocTotal

              Call oPago.Invoices.Add()
              lRetCode = oPago.Add()
              oCompany.GetLastError(lErrCode, sErrMsg)

              dgvFacturas.CurrentCell = dgvFacturas.Rows(X).Cells(6)

              Monto = lblMontoVendido.Text
              Monto = Monto - dgvFacturas.Item(6, dgvFacturas.CurrentRow.Index).Value
              lblMontoVendido.Text = Monto
              ---------------------------------------------------------
   End If`

mi pregunta es, ¿como puedo obtener el docentry de la factura recién creada? una alternativa que pensé es buscar por medio del correlativo (el numero que trae impreso) de la factura haciendo una query con un recordset para buscar la factura primero y obtener el docentry pero quiero saber si hay una forma mas directa o si tienen otra sugerencia para poder hacer que varias personas usen el programa con la misma sociedad.

De antemano gracias por cualquier ayuda o sugerencia que puedan hacer.

Buen día.

aquí no mas dando seguimiento a mi problema, y estaba equivocado mi problema no es el oCompany.GetNewObjectKey esto hace lo que debe hacer, mi problema esta mas arriba en el código y es aquí Clientes.GetByKey(dgvFacturas(10, X).Value) despues de pasar horas buscando en internet y no encontrar nada de nada que me ayude a solucionarlo me puse a debuguear todo el fragmento de código.
al usar el Debug.print me va a mostrar el contenido en la venta debug en tiempo de ejecución para ver cuando y donde cambia el valor y así lo encontré

   Debug.Print(oCompany.GetNewObjectKey) <--- aquí me muestra en la ventana debug el valor de GetNewObjectKey hasta aqui es correcto
   Clientes.GetByKey(dgvFacturas(10, X).Value)
   Debug.Print(oCompany.GetNewObjectKey) <-- pero aquí ya me cambia el valor y lo mantiene durante toda la ejecución de esta parte del código

no se porque pero yo supongo que después de esta parte del “codigo lRetCode = oInvoice.Add()” el oCompany.GetNewObjectKey deberia actualizarse al docentry de la nueva factura creada pero no lo hace cuando hay dos usuarios usando la misma aplicación, y escribiendo este comentario estaba cuando se me ocurrió una posible solución, en la parte de código donde cargo los datos del cliente en la tabla voy a agregar una columna para el DUI (Documento Único de Identificación) y así no ocupo hacer el GetByKey, al rato pruebo esa modificación y espero que me funcione.

Hola mira después de que creas tu factura SAP de forma nativa te regresa el oCompany.GetNewObjectCode(strReturn) este seria el Entry del documento creado lo puede guardar en una variable, o usarlo así strReturn Espero te sirva . Saludos

hola

También probé con el GetNewObjectC(strRetun) pero me dio el mismo problema, cuando una sola persona lo usa no hay ninguna problema todo funciona bien, pero cuando ya 2 se ponen a usarlo es cuando me salta el problema de que el GetNewObjectCode o el GetNewObjectKey me dan un valor erróneo y es cuando le falla a la segunda persona que inicio la facturación, por eso estoy pensando que mi problema va por otro camino, aunque todavía no veo por donde.

Este tema se cerró automáticamente 91 días después del último post. No se permiten nuevas respuestas.