¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Generación de Complemento para Facturas en SAP: Diferencias entre Tablas ODRF, OINV e INV1

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 47 Vistas
0
Cargando...

Hola a todos los miembros de esta comunidad, estoy aquí solicitando su ayuda, la cual agradezco de antemano. Mi problema radica en la generación de un complemento para la creación de facturas. He buscado en la documentación y he encontrado un ejemplo que graba en la tabla ODRF. Sin embargo, al trabajar con SAP, las facturas se graban en la tabla OINV y cada línea en INV1. El código de ejemplo que estoy utilizando es el siguiente:

Sub AddInvoice_Click()

Dim RetVal As Long

Dim ErrCode As Long

Dim ErrMsg As String

'Crear el objeto Documents

Dim vDrafts As SAPbobsCOM.Documents

Set vDrafts = vCmp.GetBusinessObject(oDrafts)

'Asignar valores a los campos

vDrafts.DocObjectCode = oInvoices

vDrafts.CardCode = "BP234"

vDrafts.HandWritten = tNO

vDrafts.DocDate = "21/8/2003"

vDrafts.DocTotal = 264.6

'Líneas de factura - Asignar valores a la primera línea

vDrafts.Lines.ItemCode = "A00023"

vDrafts.Lines.ItemDescription = "Banana"

vDrafts.Lines.Quantity = 50

'Líneas de factura - Asignar valores a la segunda línea

vDrafts.Lines.Add

vDrafts.Lines.ItemCode = "A00033"

vDrafts.Lines.ItemDescription = "Orange"

vDrafts.Lines.Quantity = 1

'Agregar la factura

RetVal = vDrafts.Add

End Sub

Este código está grabando en la tabla ODRF, ¿alguno de los expertos en SAP sabe por qué graba en ODRF y no en INV1 y OINV?

Espero su ayuda, seguimos en contacto.

Editado por: Rui Pereira el 7 de noviembre de 2008 a las 9:41 AM

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola a todos y muchas gracias Jorge Benítez, tenías razón, ese era el problema. Ya me di cuenta de que con eso podré grabar en la tabla que deseo, solo que ahora me manda un problema que dice que no genera la factura porque algunos datos no están completos. Al principio me salía un mensaje que faltaba el monto de la factura, cosa que ya corregí, pero ahora me pide la cuenta de mayor. No sé si alguien del foro me podría decir cuáles son los datos específicos que necesito para generar mi factura de manera correcta. Muchas gracias por su ayuda.

Y pues seguiremos en contacto.

________________________________________________________________________________________

La fortuna juega a favor de una mente preparada.

-


Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

¿Necesitas cuentas segmentadas?

Si tu respuesta es afirmativa, debes seguir un paso previo antes de pasar el código de la cuenta.

Dim sStr As String

Dim vRs As SAPbobsCOM.Recordset

Dim vBOB As SAPbobsCOM.SBObob

Dim vCH As SAPbobsCOM.ChartOfAccounts

Set vCH = Vcmp.GetBusinessObject(oChartOfAccounts)

Set vBOB = Vcmp.GetBusinessObject(BoBridge)

Set vRs = Vcmp.GetBusinessObject(BoRecordset)

' Al trabajar con segmentación, utiliza esta función

' para encontrar la clave de la cuenta en el objeto ChartOfAccount

Set vRs = vBOB.GetObjectKeyBySingleValue(oChartOfAccounts, "FormatCode", "125100000100101", 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)

¡Buena suerte!

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Se ha solucionado el error anterior, pero ahora aparece el siguiente mensaje...

-2028 (INV1.AcctCode) (línea: 1), 'No existen registros coincidentes (ODBC-2028)'

¿Alguien sabe cómo puedo resolverlo...?

Editado por: Jorge Luis Madrigal Hernández el 11 de septiembre de 2008 a las 11:16 AM

Editado por: Jorge Luis Madrigal Hernández el 11 de septiembre de 2008 a las 11:17 AM

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

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

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?