Ok muchas gracias Jorge, ya me di cuenta de que estoy manejando cuentas segmentadas y he colocado el código que mencionaste anteriormente. Sin embargo, sigo teniendo problemas, ahora el mensaje que recibo es el siguiente:
"Either BOF or EOF have Been Reached"
He estado intentando solucionarlo y simplemente no encuentro cómo hacerlo.
Este es el código que tengo actualmente para la creación de mi factura. Espero que puedas encontrar algo con lo que pueda resolver mi problema. Desde ya, muchas gracias por la ayuda.
Private Sub CreaFactura()
Dim RetVal As Long
Dim ErrCode As Long
Dim ErrMsg As String
Dim sStr As String
Dim vRs As SAPbobsCOM.Recordset
Dim vBOB As SAPbobsCOM.SBObob
Dim vCH As SAPbobsCOM.ChartOfAccounts
vCH = Co_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oChartOfAccounts)
vBOB = Co_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoBridge)
vRs = Co_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
' Al trabajar con segmentación, utiliza esta función
' para encontrar la clave de la cuenta en el objeto ChartOfAccount
vRs = vBOB.GetObjectKeyBySingleValue(SAPbobsCOM.BoObjectTypes.oChartOfAccounts, "FormatCode", "125100000100101", SAPbobsCOM.BoQueryConditions.bqc_Equal)
' El Recordset recupera el valor de la clave (por ejemplo, sStr = _SYS00000000010).
sStr = vRs.Fields.Item(0).Value
' Llama al método GetByKey con este valor (por ejemplo, sStr = _SYS00000000010) para 'recuperar la cuenta
vCH.GetByKey(sStr)
Try
''Crea el objeto Documents
Dim vDrafts As SAPbobsCOM.Documents
vDrafts = Co_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oInvoices)
Co_Factura = Co_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners)
If Co_Factura.GetByKey(cardcode) <> 0 Then
''Establece valores en los campos
vDrafts.DocObjectCode = SAPbobsCOM.BoObjectTypes.oInvoices
vDrafts.CardCode = Co_Factura.CardCode
vDrafts.HandWritten = SAPbobsCOM.BoYesNoEnum.tNO
vDrafts.DocDate = Now.Date
vDrafts.DocType = SAPbobsCOM.BoDocumentTypes.dDocument_Service
vDrafts.DocNum = Li_DocNum
''Líneas de factura - Establece valores en la primera línea
vDrafts.Lines.ItemCode = "1"
vDrafts.Lines.ItemDescription = "Plátano"
vDrafts.Lines.Quantity = 1
vDrafts.Lines.Price = 10
vDrafts.Lines.LineTotal = 10
vDrafts.Lines.RowTotalFC = 11.5
vDrafts.Lines.AccountCode = "P001"
''Añadir la factura
RetVal = vDrafts.Add
'' ''Verificar el resultado
If RetVal <> 0 Then
Co_Company.GetLastError(ErrCode, ErrMsg)
MsgBox(ErrCode & " " & ErrMsg)
End If
End If
Catch ex As Exception
ManejaExcepcion(ex)
Finally
Mo_Forma.Freeze(False)
End Try
End Sub