Módulo: DOC. IMPORTAÇÃO
Funcionalidade: DI
Data/Hora da Publicação: 02/08/2007 00:00:00
Data/Hora Última Alteração: 09/03/2010 10:11:51
Descrição da Nota: CORREÇÃO DO CALCULO DOS VALORES DE FRETE E MERCADORIA NA ANA
Sintoma
A ana não está calculando corretamente os valores de frete e mercadoria no total da ana e para os
itens.
Solução
Corrigido os calculos e ajustado programa para realizar a conversão de moedas quando necessario.
7.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04324 Data: 02/08/2007 Hora: 08:54:14
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04324
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00002
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
Texto Rápido:
CORREÇÃO DO CALCULO DOS VALORES DE FRETE E MERCADORIA NA ANA
----------------------------------------------------------------------------------------------------
Palavras Chave:
VALORES - FRETE - MERCADORIA - ANA - /PWS/SAPMZYCI059 - ITENS - TOTAL
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI059F01
REPS /PWS/MZYCI059F03
REPS /PWS/MZYCI059I01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI059F01
...
if not v_usd is initial.
t_ivmle2 = t_vmle * /pws/zycie085-ukursfob / v_usd.
endif.
endif.
if not v_tcfr is initial.
if s_inco1_ci eq 'C&F' or
s_inco1_ci eq 'CIF'.
if not v_usd is initial.
v_fat = /pws/zycie003-vlfre_fat *
/pws/zycie085-ukursfob / v_usd.
* >> Início da inclusão: FORM LOAD_IFRE
ADD v_fat TO t_vmle2 .
* << Fim da inclusão
endif.
endif.
t_ivfre = ( ( t_ivmle2 + v_fat ) / v_tcfr ) * s_frvr.
v_tot_fre = ( ( t_ivmle2 + v_fat )
/ v_tcfr ) * v_frete_nm.
endif.
if /pws/zycie003-qtd_itend is initial.
case s_inco1_ci.
when 'C&F'.
t_vldif = /pws/zycie003-vlfre_fat - v_tot_fre.
...
...
/pws/zycie085-bukrs
id 'ACTVT' field '03'.
if sy-subrc ne 0.
message e083(f5) with /pws/zycie085-bukrs.
endif.
endif.
endif.
call screen '0100'.
endform.
form calc_itab.
* >> Início da inclusão: FORM CALC_ITAB
DATA: v_alter TYPE c.
* << Fim da inclusão
clear: /pws/zycie085-vlii,
/pws/zycie085-vlipi, /pws/zycie085-vlicms.
clear: /pws/zycie085-vlfob, s_fbvr, s_frvr_aux, s_frvr_aux1,
s_stvr_aux, s_stvr_aux1,
v_tntgew, v_tval, v_tvaln, v_tval2, v_tval3,
v_tmle, v_tdif, v_tdif_aux,
v_tsegfat, v_tfrefat, v_rsegfat, v_rfrefat,
s_wiicalc, s_wiiredu, s_wiidevi, s_wiireco,
s_wipicalc, s_wipiredu, s_wipidevi, s_wipireco,
s_wicdevi, s_wicreco, s_waddevi, s_wadreco, v_aux_rateio,
v_tot_plan.
* >> Início da inclusão: FORM CALC_ITAB
CLEAR: v_alter .
IF v_mudou NE 'X'.
v_alter = 'X'.
ENDIF.
v_mudou = 'X'.
* << Fim da inclusão
perform calc_init using 'I'.
v_bltofat = /pws/zycie093-prepaid +
/pws/zycie093-collect.
v_sgtofat = /pws/zycie085-vlseg.
if /pws/zycie085-mdadicao = 'S'.
case s_inco1_ci.
when 'C&F'.
if not /pws/zycie085-dttax is initial.
perform calc_conv_frete changing v_bltofat.
v_tdif = v_tfrefat - v_bltofat.
...
...
v_tdif = v_tfrefat - v_bltofat.
endif.
endcase.
if itab_zycit003-qtd_itend is initial.
/pws/zycie085-vlfob = v_tval2 = v_tval = v_tval + v_tdif.
else.
/pws/zycie085-vlfob = v_tval2 = v_tval = v_tval.
endif.
/pws/zycie085-vlfobr = s_fbvr = v_tmle.
s_fbvr = /pws/zycie085-vlfob.
* >> Início da exclusão: FORM CALC_ITAB
v_mudou = 'X'.
* << Fim da exclusão
perform: taxa_converte using /pws/zycbt007-waersa
/pws/zycie085-dttax
changing v_usd,
load_fbvl2.
* >> Início da exclusão: FORM CALC_ITAB
clear v_mudou.
* << Fim da exclusão
/pws/zycie085-vlfob = s_fbvr.
if v_tval2 lt '0'.
if v_msgfre ne 'N'.
...
...
itab_it-vlfre_me = v_tot_fre.
itab_it-vlseg_me = v_tot_seg.
itab_it-vlfre = t_ivfre.
itab_it-vlseg = t_ivseg.
itab_it-vldiffob = t_vldif.
itab_it-frn = ( /pws/zycie003-ntgew / v_tntgew ) * v_dif_frn.
modify itab_it index v_idx transporting
vlseg vlfre vlfob baseii vlii baseipi vlipi baseicms vlicms
vlfre_me vlseg_me vldiffob frn vlmerc_ad.
endloop.
* >> Início da inclusão: FORM CALC_ITAB
IF v_alter = 'X'.
CLEAR v_mudou.
ENDIF.
* << Fim da inclusão
/pws/zycie085-vlfob = v_tval2.
/pws/zycie085-vlfobr = s_fbvr.
if s_inco1_ci eq 'FOB'.
/pws/zycie085-vlfre = v_bltofat.
endif.
/pws/zycie085-waersfre = /pws/zycie093-waersfre.
select single * from tcurx where currkey = /pws/zycie085-waersfre.
if sy-subrc <> 0.
tcurx-currdec = 2.
endif.
...
...
endif.
else.
concatenate p_data+6(2) '/' p_data+4(2) '/' p_data+0(4)
into v_msgd.
concatenate p_waers text-022 p_data into s_msg1 separated by space.
message s015 with text-021 s_msg1.
endif.
endif.
endform.
form refresh_all.
* >> Início da inclusão: FORM REFRESH_ALL
v_mudou = 'X'.
* << Fim da inclusão
perform conversao_taxas.
perform calc_itab.
perform carrega_tributos.
perform propoe_banco.
perform recarrega_alv.
* >> Início da inclusão: FORM REFRESH_ALL
CLEAR: v_mudou.
* << Fim da inclusão
endform.
form update_item.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI059F03
...
v_dif_frn = itab_zycit049-vldp.
v_dif_frn = v_dif_frn * -1.
endif.
endif.
v_tval = v_tval + v_dif_frn.
endif.
endcase.
if p_tipo ne 'A'.
read table itab_zycit003 index 1.
if itab_zycit003-qtd_itend is initial.
* >> Início da exclusão: FORM CALC_INIT
v_tval3 = v_tval2 = v_tval + v_tdif + v_tfrefat.
* << Fim da exclusão
* >> Início da inclusão: FORM CALC_INIT
v_tval3 = v_tval2 = v_tval + v_tfrefat.
* << Fim da inclusão
else.
if s_inco1 eq 'CFR' or
s_inco1 eq 'C&F'.
if v_tfrefat is initial.
v_tval3 = v_tval2 = v_tval .
else.
v_tval3 = v_tval2 = v_tval + v_tfrefat.
endif.
else.
v_tval3 = v_tval2 = v_tval .
...
...
endif.
s_frvr_d2 = s_frvr.
endform.
form load_sevl2.
if not v_usd is initial.
s_stvr = s_stvr / v_usd.
endif.
s_stvr_d2 = s_stvr.
endform.
form conversao_taxas.
* >> Início da inclusão: FORM CONVERSAO_TAXAS
DATA: v_altera TYPE c.
* << Fim da inclusão
perform: taxa_converte using /pws/zycie085-waersfob
/pws/zycie085-dttax
changing /pws/zycie085-ukursfob,
load_fbvl.
perform: taxa_converte using /pws/zycbt007-waersa
/pws/zycie085-dttax
changing v_usd,
load_fbvl2.
loop at itab_it where not waersbem is initial and
waersbem ne /pws/zycbt007-waersb.
...
...
/pws/zycie085-dttax
changing itab_it-dttaxbem.
modify itab_it index v_idx transporting dttaxbem.
endloop.
if not /pws/zycie093-waersfre is initial.
perform: taxa_converte using /pws/zycie093-waersfre
/pws/zycie085-dttax
changing /pws/zycie085-ukursfre,
load_coll.
endif.
* >> Início da inclusão: FORM CONVERSAO_TAXAS
CLEAR: v_altera.
IF v_mudou NE 'X'.
v_altera = 'X'.
ENDIF.
* << Fim da inclusão
v_mudou = 'X'.
if not /pws/zycie085-waersseg is initial.
perform: taxa_converte using /pws/zycie085-waersseg
/pws/zycie085-dttax
changing /pws/zycie085-ukursseg,
load_sevl.
endif.
* >> Início da inclusão: FORM CONVERSAO_TAXAS
IF v_altera = 'X'.
* << Fim da inclusão
clear v_mudou.
* >> Início da inclusão: FORM CONVERSAO_TAXAS
ENDIF.
* << Fim da inclusão
endform.
form atualiza_zycit403.
loop at itab_zycit403_i.
read table itab_zycit403 with key ebeln = itab_zycit403_i-ebeln
ebelp = itab_zycit403_i-ebelp
codigo = itab_zycit403_i-codigo.
...
...
itab_zycit036 = itab_zycit036
itab_zycit003 = itab_zycit003
itab_zycit100 = itab_zycit100
changing
v_taxa_usd = v_usd.
if v_resp eq 'S'.
modify /pws/zycit036 from table itab_zycit036.
endif.
endform.
form busca_usd.
* >> Início da inclusão: FORM BUSCA_USD
DATA: altera TYPE c.
CLEAR: altera.
IF v_mudou NE 'X'.
altera ='X'.
ENDIF.
* << Fim da inclusão
v_mudou = 'X'.
perform: taxa_converte using /pws/zycbt007-waersa
/pws/zycie085-dttax
changing v_usd.
* >> Início da inclusão: FORM BUSCA_USD
IF altera = 'X'.
* << Fim da inclusão
clear v_mudou.
* >> Início da inclusão: FORM BUSCA_USD
ENDIF.
* << Fim da inclusão
endform.
form recarrega_alv.
g_repid = sy-repid.
if custom_container1 is initial.
create object custom_container1
exporting
container_name = cont_on_200.
create object grid1
exporting i_parent = custom_container1.
endif.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI059I01