Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Vinculação
Data/Hora da Publicação: 23/01/2006 00:00:00
Data/Hora Última Alteração: 18/02/2011 14:48:00
Descrição da Nota: ERRO NO ESTORNO DA VINCULAÇÃO DE PRÉ-PAGAMENTO
Sintoma
Ao efetuar vinculações de faturas em contratos de pré Pagto, onde as faturas superam o valor da
primeira parcela de principal, ocorre o seguinte erro: Se por algum motivo abandonarmos o BI com o
/n, ainda na primeira abertura (desmembramento) antes de concluir sua contabilização, ao invés de o
programa abandonar o BI e ele volta a fazer a contabilização buscando o documento da parcela de
principal seguinte, ou seja, é feita a contabilização na segunda parcela e a primeira fica com o
saldo como se não estivesse sido contabilizado.
Solução
Ao salvar a vinculação e interrompê-la, o programa não está mais dobrando o valor do Saldo à
vincular das parcelas de principal, e ao entrar modificando a vinculação a contabilização está sendo
feita corretamente e o saldo baixado corretamente.
6.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 00701 Data: 23/01/2006 Hora: 14:13:15
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 00701
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00022
Agrupamento : 00097
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
ERRO NO ESTORNO DA VINCULAÇÃO DE PRÉ-PAGAMENTO
----------------------------------------------------------------------------------------------------
Palavras Chave:
VINCULAÇÃO ESTORNO ERRO /N PRÉ-PAGAMENTO
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCB009F03
REPS /PWS/MZYCB009F08
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009F03
FORM grava_tabelas.
...
* Se é INCLUSÃO de Vinculação, a mesma deve ser contabilizada
IF itab_zycbt005_ant[] IS INITIAL.
v_ind_mudanca = 'X'.
ELSE.
* >> Início da Deleção
LOOP AT itab_zycbt005_ant WHERE status = 'I'.
* << Fim da Deleção
* >> Início da Inclusão
LOOP AT itab_zycbt005_ant WHERE status = 'I'
OR status = ' '. " 274414
* << Fim da Inclusão
v_ind_mudanca = 'X'.
ENDLOOP.
* Maurício/Christian - Chamado 165675 - 26/05/2004 -Inicio
* Para os contratos de ACE/CP, verifica se a baixa do cliente
* foi feita na criação.
IF ( /pws/zycbe001-tpcontr+0(1) EQ 'C' AND
wa_zycbt007-liq_cp NE 'X' ) OR
/pws/zycbe001-tpcontr+0(1) EQ 'E'.
PERFORM verifica_baixa_cliente.
ELSEIF /pws/zycbe001-tpcontr+0(1) EQ 'C' AND
wa_zycbt007-liq_cp EQ 'X'.
LOOP AT itab_zycbt005_ant.
IF /pws/zycbe001-belnr = itab_zycbt005_ant-belnr.
itab_zycbt005-flag = 'I'.
MODIFY itab_zycbt005 TRANSPORTING flag
WHERE nrinvoic = itab_zycbt005_ant-nrinvoic AND
gsberf = itab_zycbt005_ant-gsberf AND
nrparcf = itab_zycbt005_ant-nrparcf.
v_ind_mudanca = 'X'.
ENDIF.
ENDLOOP.
ENDIF.
* Maurício/Christian - Chamado 165675 - 26/05/2004 -Fim
ENDIF.
...
ENDFORM. " GRAVA_TABELAS
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009F03
FORM busca_doc_valor_var USING p_flag.
CLEAR v_vlvinc.
CLEAR itab_zycbt002p_aux.
REFRESH itab_zycbt002p_aux.
LOOP AT itab_zycbt005 WHERE flag = p_flag.
v_vlvinc = v_vlvinc + itab_zycbt005-vlvinc. " Vl total a vincular
CLEAR v_f30_vinc.
ENDLOOP.
IF sy-subrc NE 0.
EXIT.
ELSE.
LOOP AT itab_zycbt002p.
IF itab_zycbt002p-slvinc > 0.
MOVE itab_zycbt002p TO itab_zycbt002p_aux.
* Se o valor a vinclar for maior ou igual a parcela do pré, não
* faz desmembramento, vincula o saldo da parcela.
IF ( v_vlvinc >= itab_zycbt002p-slvinc AND
v_line = 1 ) .
v_vlvinc = v_vlvinc - itab_zycbt002p-slvinc.
CLEAR itab_zycbt002p_aux-slvinc.
APPEND itab_zycbt002p_aux.
LOOP AT itab_zycbt005 WHERE flag = p_flag.
v_wrbtr = itab_zycbt005-vlvinc - v_vlvinc.
itab_zycbt005-vlvinc = v_vlvinc.
MODIFY itab_zycbt005 TRANSPORTING vlvinc
WHERE nrseqc = itab_zycbt005-nrseqc AND
tpdesp = itab_zycbt005-tpdesp AND
nrparc = itab_zycbt005-nrparc AND
dtincl = itab_zycbt005-dtincl AND
nrinvoic = itab_zycbt005-nrinvoic AND
gsberf = itab_zycbt005-gsberf AND
dtvincul = itab_zycbt005-dtvincul AND
dtvencto = itab_zycbt005-dtvencto.
v_doc_f30 = 'X' .
v_vinctot = 'X'.
PERFORM vinculacao.
ENDLOOP.
IF v_vlvinc EQ 0. " Se não houver mais vinculações
EXIT.
ENDIF.
ELSE.
READ TABLE itab_zycbt005 INDEX 1.
* Se o primeiro vl a vinc for maior que o valor da parcela de
* pre, não pode desmembrar, faz a vinculação no valor do saldo
* da parcela.
IF itab_zycbt005-vlvinc > itab_zycbt002p-slvinc.
v_vlvinc = v_vlvinc - itab_zycbt002p-slvinc.
CLEAR itab_zycbt002p_aux-slvinc.
APPEND itab_zycbt002p_aux.
v_wrbtr = itab_zycbt002p-slvinc.
itab_zycbt005-vlvinc = itab_zycbt005-vlvinc - v_wrbtr.
MODIFY itab_zycbt005 TRANSPORTING vlvinc
WHERE nrseqc = itab_zycbt005-nrseqc AND
tpdesp = itab_zycbt005-tpdesp AND
nrparc = itab_zycbt005-nrparc AND
dtincl = itab_zycbt005-dtincl AND
nrinvoic = itab_zycbt005-nrinvoic AND
gsberf = itab_zycbt005-gsberf AND
dtvincul = itab_zycbt005-dtvincul AND
dtvencto = itab_zycbt005-dtvencto.
v_doc_f30 = 'X' .
v_vinctot = 'X'.
PERFORM vinculacao.
* Se o primeiro vl a vinc for menor que o valor da parcela de
* pre, desmembrar a parcela e vincula cada uma das invoices.
ELSE.
IF itab_zycbt002p-slvinc < v_vlvinc.
CLEAR itab_zycbt002p_aux-slvinc.
ELSE.
itab_zycbt002p_aux-slvinc = itab_zycbt002p-slvinc - v_vlvinc.
ENDIF.
APPEND itab_zycbt002p_aux.
PERFORM desmembramento USING p_flag.
ENDIF.
IF v_vlvinc EQ 0. " Se não houver mais vinculações.
EXIT.
ENDIF.
ENDIF.
ENDIF.
* >> Início da Inclusão
* Chamado 274414 - Alexandre Adhmann - 12/01/2006 - INICIO
IF NOT itab_erro[] IS INITIAL.
EXIT.
ENDIF.
* Chamado 274414 - Alexandre Adhmann - 12/01/2006 - FIM
* << Fim da Inclusão
ENDLOOP.
* Repõe valores das vinculações.
LOOP AT itab_zycbt005.
MOVE itab_zycbt005-vlme_p TO itab_zycbt005-vlvinc.
itab_zycbt005-vlvinc = itab_zycbt005-vlvinc *
itab_zycbt005-parid.
MODIFY itab_zycbt005 TRANSPORTING vlvinc
WHERE nrseqc = itab_zycbt005-nrseqc AND
tpdesp = itab_zycbt005-tpdesp AND
nrparc = itab_zycbt005-nrparc AND
dtincl = itab_zycbt005-dtincl AND
nrinvoic = itab_zycbt005-nrinvoic AND
gsberf = itab_zycbt005-gsberf AND
dtvincul = itab_zycbt005-dtvincul AND
dtvencto = itab_zycbt005-dtvencto.
ENDLOOP.
ENDIF.
ENDFORM. " busca_doc_valor_var
FORM vinculacao.
...
READ TABLE itab_zycbt032 WITH KEY tcode = text-041
tabela = text-002
cpochv = v_cpochv
tpmsg = 'S'.
IF sy-subrc = 0. " Contabiliz. com sucesso
ADD 1 TO v_f30_vinc.
* Atualiza itab_zycbt005 com o Status e
* o número do Documento Contábil e Taxa de Câmbio
itab_zycbt005-status = text-008.
* Verifica se o número de documento a ser gravado é valido
IF NOT itab_zycbt032-belnr IS INITIAL.
IF itab_zycbt005-belnr_vinc IS INITIAL.
itab_zycbt005-belnr_vinc = itab_zycbt032-belnr.
ENDIF.
itab_zycbt005-belnr = itab_zycbt032-belnr.
itab_zycbt005-status = 'C'.
READ TABLE itab_zycbe033 WITH KEY cpochv = v_cpochv.
itab_zycbt005-dtbelnr = itab_zycbe033-budat.
CLEAR v_ind_errocont. "Limpa indicador de erro de contab.
itab_zycbt002p-slvinc = itab_zycbt002p_aux-slvinc.
IF v_vinctot = 'X' AND
v_linha1 <= 1. "PWS7809632.
itab_zycbt002p-belnr2 = itab_zycbt032-belnr.
itab_zycbt002p-dtvincul = itab_zycbe033-budat.
CLEAR v_vinctot.
ENDIF.
MODIFY itab_zycbt002p TRANSPORTING slvinc belnr2 dtvincul
WHERE nrseqc = itab_zycbt002p-nrseqc AND
nrparc = itab_zycbt002p-nrparc AND
tpparc = itab_zycbt002p-tpparc.
PERFORM atualiza_zycbt069.
ENDIF.
MODIFY itab_zycbt005 TRANSPORTING belnr belnr_vinc
dtbelnr vlvinc status
WHERE nrseqc = itab_zycbt005-nrseqc AND
tpdesp = itab_zycbt005-tpdesp AND
nrparc = itab_zycbt005-nrparc AND
dtincl = itab_zycbt005-dtincl AND
nrinvoic = itab_zycbt005-nrinvoic AND
gsberf = itab_zycbt005-gsberf AND
dtvincul = itab_zycbt005-dtvincul AND
dtvencto = itab_zycbt005-dtvencto.
* Histórico Documentos Contábeis
itab_zycbt077-belnr = itab_zycbt032-belnr.
itab_zycbt077-bukrs = itab_zycbe033-bukrs.
itab_zycbt077-gjahr = itab_zycbe033-budat(4).
itab_zycbt077-status = 'C'.
itab_zycbt077-tcode = itab_zycbt032-tcode.
CONCATENATE text-198 /pws/zycbe001-tpcontr INTO
itab_zycbt077-codeven.
itab_zycbt077-codmod = 'E'.
itab_zycbt077-nrseqc = /pws/zycbe001-nrseqc.
itab_zycbt077-gsberf = itab_zycbt005-gsberf.
itab_zycbt077-dtvincul = itab_zycbt005-dtvincul.
itab_zycbt077-nrinvoic = itab_zycbt005-nrinvoic.
itab_zycbt077-nrparc = itab_zycbt002p_aux-nrparc.
* Ch. 213594 - KB - 21/02/2005 - Início
* MODIFY /pws/zycbt077 FROM itab_zycbt077.
* Ch. 213594 - KB - 21/02/2005 - Fim
* Preenche itab com doc.contábil gerado p/ Estorno
itab_contabil-nrinvoic = itab_zycbt005-nrinvoic.
itab_contabil-docto = itab_zycbt032-belnr.
itab_contabil-msg = text-285.
itab_contabil-bukrs = /pws/zycbe001-bukrs.
itab_contabil-dtdocto = itab_zycbt005-dtvincul.
APPEND itab_contabil.
COMMIT WORK.
ELSE. " Contabiliz. com erro
LOOP AT itab_zycbt032 WHERE cpochv = v_cpochv.
* Armazena mensagens de erro do Call Transaction em uma tabela
* interna para mostrá-las posteriormente em um report
itab_erro-msg = itab_zycbt032-msg.
APPEND itab_erro.
ENDLOOP.
v_subrc = 4.
* >> Início da Inclusão
* Chamado 274414 - Renato - 18.01.2006 - Inicio
IF itab_zycbt002p-slvinc < v_wrbtr.
* << Fim da Inclusão
itab_zycbt002p-slvinc = itab_zycbt002p-slvinc
+ v_wrbtr.
MODIFY itab_zycbt002p TRANSPORTING slvinc
WHERE nrseqc = itab_zycbt002p-nrseqc AND
nrparc = itab_zycbt002p-nrparc AND
tpparc = itab_zycbt002p-tpparc.
* >> Início da Inclusão
ENDIF.
* Chamado 274414 - Renato - 18.01.2006 - Fim
* << Fim da Inclusão
* A fatura não pôde ser incluída na vinculação(cria msg de erro)
CONCATENATE text-053 itab_zycbt005-nrinvoic text-076
INTO v_msg SEPARATED BY space.
itab_erro-msg = v_msg.
APPEND itab_erro.
ENDIF.
ELSE.
* Campos da tela em branco
LOOP AT itab_zycbt034.
MESSAGE i016 WITH itab_zycbt034-descricao.
ENDLOOP.
v_subrc = 4.
itab_zycbt002p-slvinc = itab_zycbt002p-slvinc
+ v_wrbtr.
MODIFY itab_zycbt002p TRANSPORTING slvinc
WHERE nrseqc = itab_zycbt002p-nrseqc AND
nrparc = itab_zycbt002p-nrparc AND
tpparc = itab_zycbt002p-tpparc.
ENDIF.
ENDIF. " Pesquisa interna t034
PERFORM limpa_itabs_contabil.
...
ENDFORM. " vinculacao
ENDFORM. " vinculacao