Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Liquidação de Fatura
Data/Hora da Publicação: 26/12/2005 00:00:00
Data/Hora Última Alteração: 22/02/2011 11:56:04
Descrição da Nota: CASAS DECIMAIS NA LIQUIDAÇÃO DE CONTRATOS
Sintoma
Foi feito um contrato de USD e vinculamos faturas em EUR, (ARBITRAGEM), o valor das faturas
vinculadas é EUR 100.000,00 usamos a paridade de 1,20 e covertido para Dolar é USD 120.000,00;
porém, no momento em que tentamos liquidar as faturas aparecem com valores maiores, no caso EUR
10.000.000,00. verificamos nas tabelas TCURX e ZYBCT005 e os valores estão normais.
Solução
Apenas consistir a quantidade de casas decimais quando a quantidade de casas decimas da moeda do
contrato for diferente da quantidade de casas decimais da moeda da fatura.
6.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 00534 Data: 26/12/2005 Hora: 14:07:45
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 00534
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00022
Agrupamento : 00093
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
00430 - 00001 - 6.0 - 00021 - NA LIQUIDAÇÃO COM ARBITRAGEM, O VALOR VINCULADO NÃO ESTÁ CORRETO
----------------------------------------------------------------------------------------------------
CASAS DECIMAIS NA LIQUIDAÇÃO DE CONTRATOS
----------------------------------------------------------------------------------------------------
Palavras Chave:
LIQUIDAÇÃO USD EUR ARBITRAGEM
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCB004F01
REPS /PWS/MZYCB004F03
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB004F01
Contexto: FORM carrega_itab_zycbt005.
DATA: v_bukrs_fat LIKE /pws/zycbt017-bukrs.
REFRESH: itab_zycbt005.
CLEAR: /pws/zycbe005, /pws/zycbe006.
IF v_trans IS INITIAL. " Transação de criação
...
LOOP AT itab_zycbt005.
itab_zycbt005-vlme = itab_zycbt005-slpagar.
IF itab_zycbt005-waers NE itab_zycbt005-waers_c.
itab_zycbt005-vlme = itab_zycbt005-vlme / itab_zycbt005-parid.
* CHAMADO 275543 - 07/12/2005 - INICIO
PERFORM verifica_casas_decimais
USING
itab_zycbt005-vlme
itab_zycbt005-waers
* >> Início da Inclusão
* Ch. 278297 - 23.12.2005 - Início
itab_zycbt005-waers_c
* Ch. 278297 - 23.12.2005 - Fim
* << Fim da Inclusão
CHANGING itab_zycbt005-vlme.
* CHAMADO 275543 - 07/12/2005 - FIM
ENDIF.
MODIFY itab_zycbt005.
MOVE-CORRESPONDING itab_zycbt005 TO itab_paridade.
MOVE itab_zycbt005-parid TO itab_paridade-v_parid.
MOVE itab_zycbt005-waers_c TO itab_paridade-v_waers_c.
APPEND itab_paridade.
ENDLOOP.
CLEAR: itab_zycbt005-status.
MODIFY itab_zycbt005 TRANSPORTING status
WHERE nrseqc = v_nrseqc.
LOOP AT itab_paridade.
itab_paridade-v_vlme_c =
itab_paridade-vlme * itab_paridade-v_parid.
MODIFY itab_paridade.
ENDLOOP.
ELSE. " Transação de Alteração / Modificação
...
ENDIF.
SELECT * FROM /pws/zycbt001
INTO TABLE itab_zycbt001
WHERE nrseqc = v_nrseqc.
...
ENDFORM. " CARREGA_ITAB_ZYCBT005
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB004F03
*----------------------------------------------------------------------*
* Form VERIFICA_CASAS_DECIMAIS
*----------------------------------------------------------------------*
* Objetivo Ajustar as casas decimais de um valor de acordo com a moeda.
*----------------------------------------------------------------------*
* Parâmetros: ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Chamado Data Descrição
*----------------------------------------------------------------------*
* 2675543 07/12/2005 Codificação inicial
* >> Início da Inclusão
* 278297 23/12/2005 Ajuste para tratamento quando a quantidade
* de casas decimais da moeda do contrato for
* igual a quantidade de casas decimais da
* moeda da fatura.
* Ex: Moedas: Contrato USD e Fatura EUR
* << Fim da Inclusão
*----------------------------------------------------------------------*
FORM verifica_casas_decimais
USING
value(p_valor)
value(p_waers)
* >> Início da Inclusão
* Ch. 278297 - 23.12.2005 - Início
value(p_waers_c)
* Ch. 278297 - 23.12.2005 - Fim
* << Fim da Inclusão
CHANGING
p_valor_aj.
* >> Início da Inclusão
* Ch. 278297 - 23.12.2005 - Início
* << Fim da Inclusão
* >> Início da Deleção
* DATA v_decimais LIKE tcurx-currdec,
* << Fim da Deleção
* >> Início da Inclusão
DATA: v_decimais LIKE tcurx-currdec,
v_decimais_c LIKE tcurx-currdec.
* Ch. 278297 - 23.12.2005 - Fim
* >> Fim da Inclusão
SELECT SINGLE currdec
FROM tcurx
INTO v_decimais
WHERE currkey EQ p_waers.
IF sy-subrc NE 0.
v_decimais = 2.
ENDIF.
* >> Início da Inclusão
* Ch. 278297 - 23.12.2005 - Início
* Verifica a quantidade de casas decimais da moeda do contrato
SELECT SINGLE currdec
FROM tcurx
INTO v_decimais_c
WHERE currkey EQ p_waers_c.
IF sy-subrc NE 0.
v_decimais_c = 2.
ENDIF.
* Apenas continua se a quantidade de casas decimais do contrato e da
* fatura forem diferentes
CHECK v_decimais NE v_decimais_c.
* Ch. 278297 - 23.12.2005 - Fim
* << Fim da Inclusão
IF v_decimais EQ 0.
p_valor_aj = p_valor / 100.
ELSE.
p_valor_aj = p_valor * 100.
ENDIF.
ENDFORM.
ENDFORM.
ENDFORM.