CE PLUS - Nota 004324

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.

Versões Tratadas

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