¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Geração de Complemento para Faturas no SAP: Diferenças entre Tabelas ODRF, OINV e INV1

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

Olá a todos os membros desta comunidade, estou aqui solicitando sua ajuda, agradeço antecipadamente. Meu problema está na geração de um complemento para a criação de faturas. Tenho pesquisado na documentação e encontrei um exemplo que grava na tabela ODRF. No entanto, ao trabalhar com o SAP, as faturas são gravadas na tabela OINV e cada linha em INV1. O código de exemplo que estou usando é o seguinte:

Sub AddInvoice_Click()

Dim RetVal As Long

Dim ErrCode As Long

Dim ErrMsg As String

'Criar o objeto Documents

Dim vDrafts As SAPbobsCOM.Documents

Set vDrafts = vCmp.GetBusinessObject(oDrafts)

'Atribuir valores aos campos

vDrafts.DocObjectCode = oInvoices

vDrafts.CardCode = "BP234"

vDrafts.HandWritten = tNO

vDrafts.DocDate = "21/8/2003"

vDrafts.DocTotal = 264.6

'Linhas de fatura - Atribuir valores à primeira linha

vDrafts.Lines.ItemCode = "A00023"

vDrafts.Lines.ItemDescription = "Banana"

vDrafts.Lines.Quantity = 50

'Linhas de fatura - Atribuir valores à segunda linha

vDrafts.Lines.Add

vDrafts.Lines.ItemCode = "A00033"

vDrafts.Lines.ItemDescription = "Orange"

vDrafts.Lines.Quantity = 1

'Adicionar a fatura

RetVal = vDrafts.Add

End Sub

Este código está gravando na tabela ODRF, algum dos especialistas em SAP sabe por que grava em ODRF e não em INV1 e OINV?

Aguardo sua ajuda, mantemos contato.

Editado por: Rui Pereira em 7 de novembro de 2008 às 9:41 AM

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

4 Respuestas

0
Cargando...

Olá a todos e muito obrigado Jorge Benítez, tinhas razão, esse era o problema. Agora percebi que com isso poderei gravar na tabela que desejo, só que agora está a surgir um problema que diz que não gera a fatura porque alguns dados não estão completos. No início aparecia uma mensagem a dizer que faltava o valor da fatura, algo que já corrigi, mas agora pede o número da conta. Não sei se alguém do fórum poderia me dizer quais são os dados específicos que preciso para gerar minha fatura corretamente. Muito obrigado pela ajuda.

E continuaremos em contato.

________________________________________________________________________________________

A sorte favorece uma mente preparada.

-


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

Precisas de contas segmentadas?

Se a tua resposta for afirmativa, deves seguir um passo anterior antes de passar o código da conta.

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)

' Ao trabalhar com segmentação, utilize esta função

' para encontrar a chave da conta no objeto ChartOfAccount

Set vRs = vBOB.GetObjectKeyBySingleValue(oChartOfAccounts, "FormatCode", "125100000100101", bqc_Equal)

' O Recordset recupera o valor da chave (por exemplo, sStr = _SYS00000000010).

sStr = vRs.Fields.Item(0).Value

' Chame o método GetByKey com este valor (por exemplo, sStr =_SYS00000000010) para 'recuperar a conta

vCH.GetByKey (sStr)

Boa sorte!

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

O erro anterior foi corrigido, mas agora está aparecendo a seguinte mensagem...

-2028 (INV1.AcctCode) (linha: 1), 'Não há registros correspondentes (ODBC-2028)'

Alguém sabe como posso resolver isso...?

Editado por: Jorge Luis Madrigal Hernández em 11 de setembro de 2008 às 11:16 AM

Editado por: Jorge Luis Madrigal Hernández em 11 de setembro de 2008 às 11:17 AM

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

Ok, muito obrigado Jorge, já percebi que estou lidando com contas segmentadas e inseri o código que mencionaste anteriormente. No entanto, continuo a ter problemas, agora a mensagem que recebo é a seguinte:

"Either BOF or EOF have Been Reached"

Tenho tentado resolver isso e simplesmente não consigo encontrar como fazê-lo.

Este é o código que tenho atualmente para a criação da minha fatura. Espero que consigas encontrar algo com o qual possa resolver meu problema. Desde já, muito obrigado pela ajuda.

Private Sub CriaFatura()

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)

' Ao trabalhar com segmentação, utilize esta função

' para encontrar a chave da conta no objeto ChartOfAccount

vRs = vBOB.GetObjectKeyBySingleValue(SAPbobsCOM.BoObjectTypes.oChartOfAccounts, "FormatCode", "125100000100101", SAPbobsCOM.BoQueryConditions.bqc_Equal)

' O Recordset recupera o valor da chave (por exemplo, sStr = _SYS00000000010).

sStr = vRs.Fields.Item(0).Value

' Chama o método GetByKey com este valor (por exemplo, sStr = _SYS00000000010) para 'recuperar a conta

vCH.GetByKey(sStr)

Try

''Cria o objeto Documents

Dim vDrafts As SAPbobsCOM.Documents

vDrafts = Co_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oInvoices)

Co_Fatura = Co_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners)

If Co_Fatura.GetByKey(cardcode) <> 0 Then

''Define valores nos campos

vDrafts.DocObjectCode = SAPbobsCOM.BoObjectTypes.oInvoices

vDrafts.CardCode = Co_Fatura.CardCode

vDrafts.HandWritten = SAPbobsCOM.BoYesNoEnum.tNO

vDrafts.DocDate = Now.Date

vDrafts.DocType = SAPbobsCOM.BoDocumentTypes.dDocument_Service

vDrafts.DocNum = Li_DocNum

''Linhas da fatura - Define valores na primeira linha

vDrafts.Lines.ItemCode = "1"

vDrafts.Lines.ItemDescription = "Banana"

vDrafts.Lines.Quantity = 1

vDrafts.Lines.Price = 10

vDrafts.Lines.LineTotal = 10

vDrafts.Lines.RowTotalFC = 11.5

vDrafts.Lines.AccountCode = "P001"

''Adicionar a fatura

RetVal = vDrafts.Add

'' ''Verificar o resultado

If RetVal <> 0 Then

Co_Company.GetLastError(ErrCode, ErrMsg)

MsgBox(ErrCode & " " & ErrMsg)

End If

End If

Catch ex As Exception

HandleException(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?