Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Função
Data/Hora da Publicação: 24/03/2009 00:00:00
Data/Hora Última Alteração: 08/09/2010 16:35:35
Descrição da Nota: AJUSTE RATEIO DO SEGURO.
Sintoma
O rateio do seguro na fatura está errado quando Icoterm é FOB.
Solução
Realizado ajuste para utilizar o valor de frete correto para cada item e converter os valores de
frete e mercadoria para a moeda interna para realizar o rateio do seguro corretamente.
7.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 08236 Data: 24/03/2009 Hora: 16:55:52
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 08236
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00009
Agrupamento : 00091
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
AJUSTE RATEIO DO SEGURO.
----------------------------------------------------------------------------------------------------
Palavras Chave:
RATEIO - SEGURO - VALOR - MERCADORIA - FRETE - MOEDA - DIFERENTE
/PWS/ZYCI_RATEIO_CUSTO
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCI_RATEIO_CUSTO
REPS /PWS/LZYCIGF2F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCI_RATEIO_CUSTO
FUNCTION /pws/zyci_rateio_custo.
* >> Início da inclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO
DATA: BEGIN OF itab_conv OCCURS 0.
DATA: waers TYPE /pws/zycit036-waers,
kursf TYPE /pws/zycbe033-kursf,
de TYPE tcurr-ffact,
para TYPE tcurr-ffact.
DATA: END OF itab_conv.
DATA: v_kursf TYPE /pws/zycbe033-kursf,
v_de TYPE tcurr-ffact,
v_para TYPE tcurr-ffact,
v_kursf2 TYPE /pws/zycbe033-kursf,
v_de2 TYPE tcurr-ffact,
v_para2 TYPE tcurr-ffact,
v_vltemp1 TYPE /pws/zycit006-vlfre,
v_vltemp2 TYPE /pws/zycit006-vlfre.
* << Fim da inclusão
...
...
itab_zycit036-vlreal = v_total.
ENDIF.
IF v_waers IS INITIAL.
itab_zycit036-waers_real = /pws/zycbt007-waersb.
ELSE.
itab_zycit036-waers_real = v_waers.
ENDIF.
ELSE.
MOVE: 'SEGURO' TO itab_zycit036-codigo.
IF /pws/zycit031-inco1_ci = 'FOB'.
* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO
itab_zycit036-vlreal = v_total * ( v_vlfrete + (
itab_zycit003-qtd_iten * itab_zycit003-vlreal ) ) /
( v_tfrete + v_seg ).
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO
CLEAR: itab_conv .
READ TABLE itab_conv WITH KEY
waers = itab_zycit003-waers.
IF sy-subrc NE 0.
PERFORM converte_moeda
USING sy-datum
itab_zycit003-waers
/pws/zycbt007-waersb
CHANGING itab_conv-kursf
itab_conv-de
itab_conv-para .
itab_conv-waers = itab_zycit003-waers.
APPEND itab_conv.
ENDIF.
v_kursf = itab_conv-kursf.
v_de = itab_conv-de.
v_para = itab_conv-para .
CLEAR: itab_zycit036_aux.
READ TABLE itab_zycit036_aux WITH KEY
codigo = 'FRETEI'
origem = v_ori
ebeln = itab_zycit036-ebeln
ebelp = itab_zycit036-ebelp.
CLEAR: itab_conv .
READ TABLE itab_conv WITH KEY
waers = itab_zycit036_aux-waers_real.
IF sy-subrc NE 0.
PERFORM converte_moeda
USING sy-datum
itab_zycit036_aux-waers_real
/pws/zycbt007-waersb
CHANGING itab_conv-kursf
itab_conv-de
itab_conv-para .
itab_conv-waers = itab_zycit036_aux-waers_real.
APPEND itab_conv.
ENDIF.
v_kursf2 = itab_conv-kursf.
v_de2 = itab_conv-de.
v_para2 = itab_conv-para .
v_vltemp1 = ( v_tfrete *
( ( v_kursf2 * v_de2 ) / v_para2 ) )
+ ( v_seg * ( ( v_kursf * v_de ) / v_para ) ).
v_vlfrete = itab_zycit036_aux-vlreal *
( ( v_kursf2 * v_de2 ) / v_para2 ) .
itab_zycit036-vlreal = v_total * ( v_vlfrete +
( ( itab_zycit003-qtd_iten * itab_zycit003-vlreal )
* ( v_kursf * v_de ) / v_para ) ) / v_vltemp1.
* << Fim da inclusão
ELSEIF /pws/zycit031-inco1_ci = 'CIF' OR
/pws/zycit031-inco1_ci = 'C&F'.
itab_zycit036-vlreal = v_total *
( itab_zycit003-vlreal * itab_zycit003-qtd_iten )
/ v_seg .
ENDIF.
IF v_waers IS INITIAL.
itab_zycit036-waers_real = /pws/zycbt007-waersb.
ELSE.
itab_zycit036-waers_real = v_waers.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYCIGF2F01
...
* >> Início da inclusão:
FORM converte_moeda USING p_data TYPE sy-datum
p_waers TYPE /pws/zycit036-waers
p_waersd TYPE /pws/zycit036-waers
CHANGING p_kursf TYPE /pws/zycbe033-kursf
p_de TYPE tcurr-ffact
p_para TYPE tcurr-ffact.
DATA: v_kurst TYPE /pws/zycit000-kurst,
v_data_conv TYPE sy-datum.
IF /pws/zycit000-kurst IS INITIAL.
v_kurst = 'M'.
ELSE.
v_kurst = /pws/zycit000-kurst.
ENDIF.
IF NOT p_data IS INITIAL.
v_data_conv = p_data.
ELSE.
v_data_conv = sy-datum.
ENDIF.
CALL FUNCTION '/PWS/ZYCB_MONTANTE_CONVERTE'
EXPORTING
i_montante = '1'
i_demoeda = p_waers
i_paramoeda = p_waersd
i_ctmoeda = v_kurst
i_dtbase = v_data_conv
IMPORTING
e_txc = p_kursf
e_defator = p_de
e_parafator = p_para
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.
ENDFORM.
* << Fim da inclusão