Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Fatura Frete Internacional
Data/Hora da Publicação: 26/05/2009 00:00:00
Data/Hora Última Alteração: 22/02/2011 15:53:01
Descrição da Nota: TAXA DE CONVERSÃO DE MOEDA NA FATURA PÓS DI
Sintoma
Ao contabilizar uma fatura de frete ou seguro após a criação da DI o programa lança a taxa de moeda
informada na DI sem verificar se a moeda da fatura é a mesma da DI.
Solução
Ajustado programa para verificar tratar moedas diferentes da DI em faturas criadas após a DI.
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 08441 Data: 26/05/2009 Hora: 09:40:29
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 08441
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00009
Agrupamento : 00099
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
02505 - 00001 - 6.0 - 00025 - EM FATURA JPY APÓS A CRIAÇÃO DA DI, OS VALORES ESTÃO DIVIDIDOS PO
----------------------------------------------------------------------------------------------------
TAXA DE CONVERSÃO DE MOEDA NA FATURA PÓS DI
----------------------------------------------------------------------------------------------------
Palavras Chave:
TAXA - CONVERSÃO - MOEDA - FATURA - PÓS - DI - FRETE - SEGURO
/PWS/SAPMZYCI003
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI003F01
REPS /PWS/MZYCI003F02
REPS /PWS/MZYCI003X01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003F01
...
v_codeven = '001NS'.
ENDIF.
READ TABLE itab_zycit003 INDEX 1.
SELECT * FROM /pws/zycit003 UP TO 1 ROWS INTO /pws/zycie003
WHERE nrseq EQ itab_zycit003-nrseq
AND gsber NE ' '.
ENDSELECT.
IF /pws/zycit085 IS INITIAL .
PERFORM busca_taxa_dia.
ELSE.
* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02
PERFORM busca_taxas.
* << Fim da inclusão
IF /pws/zycie006-tpfatura EQ '02' AND
NOT /pws/zycit085-ukursfre IS INITIAL AND
/pws/zycie006-frpagto EQ 'P' AND
/pws/zycit085-waersfre = /pws/zycie006-waers .
IF /pws/zycit000-kurst IS INITIAL.
v_kurst = 'M'.
ELSE.
v_kurst = /pws/zycit000-kurst.
ENDIF.
* >> Início da exclusão: FORM GET_PARAMETERS_F-43_F-02
SELECT SINGLE ffact tfact "#EC PORTABLE
* << Fim da exclusão
* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02
IF v_ob08 IS INITIAL.
SELECT SINGLE ffact tfact "#EC PORTABLE
* << Fim da inclusão
FROM tcurf
INTO (v_de, v_para)
WHERE fcurr = /pws/zycie006-waers AND
tcurr = /pws/zycbt007-waersb AND
gdatu >= sy-datum AND
kurst = v_kurst.
* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02
ELSE.
v_de = v_para = 1.
ENDIF.
/pws/zycit085-ukursfre =
* << Fim da inclusão
v_kursf = ( /pws/zycit085-ukursfre * v_de ) / v_para.
ELSEIF /pws/zycie006-tpfatura EQ '02' AND
NOT /pws/zycit085-ukursfre IS INITIAL AND
/pws/zycie006-frpagto EQ 'N' AND
/pws/zycit085-waersfre = /pws/zycie006-waers.
IF /pws/zycit000-kurst IS INITIAL.
v_kurst = 'M'.
ELSE.
v_kurst = /pws/zycit000-kurst.
ENDIF.
* >> Início da exclusão: FORM GET_PARAMETERS_F-43_F-02
SELECT SINGLE ffact tfact "#EC PORTABLE
* << Fim da exclusão
* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02
IF v_ob08 IS INITIAL.
SELECT SINGLE ffact tfact "#EC PORTABLE
* << Fim da inclusão
FROM tcurf
INTO (v_de, v_para)
WHERE fcurr = /pws/zycie006-waers AND
tcurr = /pws/zycbt007-waersb AND
gdatu >= sy-datum AND
kurst = v_kurst.
* >> Início da exclusão: FORM GET_PARAMETERS_F-43_F-02
v_kursf = ( /pws/zycit085-ukursfob * v_de ) / v_para.
* << Fim da exclusão
* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02
ELSE.
v_de = v_para = 1.
ENDIF.
/pws/zycit085-ukursfre =
v_kursf = ( /pws/zycit085-ukursfre * v_de ) / v_para.
* << Fim da inclusão
ELSEIF /pws/zycie006-tpfatura = '03' AND NOT
/pws/zycit085-ukursseg IS INITIAL .
IF /pws/zycit000-kurst IS INITIAL.
v_kurst = 'M'.
ELSE.
v_kurst = /pws/zycit000-kurst.
ENDIF.
* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02
IF v_ob08 IS INITIAL.
* << Fim da inclusão
SELECT SINGLE ffact tfact
* >> Início da exclusão: FORM GET_PARAMETERS_F-43_F-02
FROM tcurf "#EC PORTABLE
* << Fim da exclusão
* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02
FROM tcurf "#EC PORTABLE
* << Fim da inclusão
INTO (v_de, v_para)
WHERE fcurr = /pws/zycie006-waers AND
tcurr = /pws/zycbt007-waersb AND
gdatu >= sy-datum AND
kurst = v_kurst.
* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02
ELSE.
v_de = v_para = 1.
ENDIF.
/pws/zycit085-ukursseg =
* << Fim da inclusão
v_kursf = ( /pws/zycit085-ukursseg * v_de ) / v_para.
ELSEIF /pws/zycie006-tpfatura = '11'.
PERFORM busca_taxa_dia.
ENDIF.
ENDIF.
REFRESH itab_zycbt013.
SELECT * FROM /pws/zycbt013 INTO TABLE itab_zycbt013
WHERE tabela = '/PWS/ZYCIT006'.
REFRESH: itab_zycbt012.
SELECT * FROM /pws/zycbt012 INTO TABLE itab_zycbt012
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003F02
...
* >> Início da inclusão:
FORM busca_taxas.
CLEAR v_ob08.
CASE /pws/zycie006-tpfatura.
WHEN '02'.
IF /pws/zycie006-waers NE /pws/zycit085-waersfre.
/pws/zycit085-waersfre = /pws/zycie006-waers .
PERFORM atualiza_taxa USING /pws/zycit085-waersfre
/pws/zycit085-dttax
CHANGING /pws/zycit085-ukursfre.
ENDIF.
WHEN '03'.
IF /pws/zycie006-waers NE /pws/zycit085-waersseg.
/pws/zycit085-waersseg = /pws/zycie006-waers .
PERFORM atualiza_taxa USING /pws/zycit085-waersseg
/pws/zycit085-dttax
CHANGING /pws/zycit085-ukursseg.
ENDIF.
ENDCASE.
ENDFORM.
FORM atualiza_taxa USING p_waers
p_data
CHANGING p_taxa.
DATA: v_moeda LIKE tcurc-/pws/codmo,
v_linhas TYPE i,
v_txc TYPE tcurr-ukurs.
DATA: itab_zycit174 TYPE /pws/zycit174 OCCURS 0 WITH HEADER LINE.
CLEAR: p_taxa.
SELECT SINGLE /pws/codmo FROM tcurc INTO v_moeda WHERE
waers = p_waers.
IF sy-subrc EQ 0.
REFRESH itab_zycit174.
SELECT * FROM /pws/zycit174 INTO TABLE itab_zycit174 WHERE
codconver = v_moeda AND "#EC PORTABLE
vigen_inicio <= p_data AND
vigen_fim >= p_data AND
land1 = t001-land1.
DESCRIBE TABLE itab_zycit174 LINES v_linhas.
IF v_linhas EQ 1.
READ TABLE itab_zycit174 INDEX 1.
p_taxa = itab_zycit174-txconver.
ELSEIF v_linhas EQ 0.
IF NOT p_data IS INITIAL.
IF p_waers EQ wa_zycbt007-waersb.
p_taxa = 1.
EXIT.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF p_taxa IS INITIAL.
IF /pws/zycit000 IS INITIAL.
SELECT SINGLE * FROM t001 WHERE bukrs EQ /pws/zycie006-bukrs.
SELECT SINGLE * FROM /pws/zycit000 WHERE land1 EQ t001-land1.
ENDIF.
IF /pws/zycit000-kurst IS INITIAL.
v_kurst = 'M'.
ELSE.
v_kurst = /pws/zycit000-kurst.
ENDIF.
CLEAR v_txc.
CALL FUNCTION '/PWS/ZYCB_MONTANTE_CONVERTE'
EXPORTING
i_montante = '1'
i_demoeda = /pws/zycie006-waers
i_paramoeda = wa_zycbt007-waersb
i_ctmoeda = v_kurst
i_dtbase = p_data
IMPORTING
e_txc = v_txc
EXCEPTIONS
i_demoeda_nao_encontrado = 1
i_paramoeda_nao_encontrado = 2
i_ctmoeda_nao_encontrado = 3
i_dtbase_nao_encontrada = 4
taxa_nao_encontrada = 5
fator_nao_encontrado = 6
i_montante_nao_encontrado = 7
OTHERS = 8.
IF sy-subrc <> 0.
ENDIF.
p_taxa = v_txc.
v_ob08 = 'X'.
ENDIF.
ENDFORM.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003X01
...
* >> Início da inclusão:
DATA v_ob08 TYPE c.
* << Fim da inclusão
DATA: END OF COMMON PART.