CE PLUS - Nota 005481

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Nota Fiscal

Data/Hora da Publicação: 17/12/2007 00:00:00

Data/Hora Última Alteração: 23/02/2011 09:15:54

Descrição da Nota: AJUST. DO RATEIO DAS DESPESAS NA NF E A GRAVAÇÃO DO FRETE NA DSI

Sintoma

O rateio das despesas na nota fisccal está diferente da DI.

A nota fiscal está lançando o valor do frete negativo o ultimo item.

 

 

Solução

Corrigir rateio para converter o valor de todos os itens para a mesma moeda para efetuar o rateio

das despesas.

Corrir DSI para gravar o valor correto na tabela /pws/zycit085

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

APRESENTAR MENSAGEM NA NOTA FISCAL DE "VALOR ICMS: DIFERIDO"

RATEIO DO FRETE DA DI NO CUSTO EFETIVO E NA CRIAÇÃO DA NOTA FISCAL

ERRO NO RATEIO DE DESPESAS DA DI AO FAZER A NF

AJUSTE NO RATEIO DAS DESPESAS COM GRANEL

Informações Complementares

----------------------------------------------------------------------------------------------------

Nota Número 05481 Data: 17/12/2007 Hora: 15:35:15

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 05481

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00003

Agrupamento              : 00028

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote - Descrição Breve

 

01848  - 00001 - 6.0    - 00024  - NA NOTA FISCAL TEXTO MENSAGEM NÃO ESTÁ LEVANDO A TAXA SISCOMEX E

02972  - 00002 - 6.0    - 00026  - APRESENTAR MENSAGEM NA NOTA FISCAL DE "VALOR ICMS: DIFERIDO"

03638  - 00003 - 7.0    - 00001  - RATEIO DO FRETE DA DI NO CUSTO EFETIVO E NA CRIAÇÃO DA NOTA FISCA

05011  - 00004 - 7.0    - 00003  - ERRO NO RATEIO DE DESPESAS DA DI AO FAZER A NF

05435  - 00005 - 7.0    - 00003  - AJUSTE NO RATEIO DAS DESPESAS COM GRANEL

----------------------------------------------------------------------------------------------------

AJUST. DO RATEIO DAS DESPESAS NA NF E A GRAVAÇÃO DO FRETE NA DSI

----------------------------------------------------------------------------------------------------

Palavras Chave:

RATEIO - DESPESAS - FRETE - NOTA - FISCAL - NF - DSI

/PWS/SAPMZYCI016 - /PWS/SAPMZYCI058 - /PWS/ZYCIR006

----------------------------------------------------------------------------------------------------

Objetos da nota:

REPS /PWS/MZYCI016F01

REPS /PWS/MZYCI058F01

REPS /PWS/ZYCIR006

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI016F01

 

...

        v_valor_r      TYPE /pws/zycit100-vlii,

        v_ind          TYPE i,

        v_descr        LIKE /pws/zycit027-descr,

        v_vldp_x(15)   TYPE c,

        v_cont         TYPE i,

        v_vlpis       LIKE /pws/zycit100-vlpis   ,

        v_vlcofins    LIKE /pws/zycit100-vlcofins,

        v_idx         LIKE sy-tabix              ,

        v_vldp_aux    LIKE /pws/zycit049-vldp    ,

        v_lin(3)        ,

* >> Início da inclusão: FORM MENSAGENS_NF

        v_taxa        TYPE /pws/zycit085-ukursfob,

* << Fim da inclusão

        v_lin2(3)       ,

        v_txtkey     LIKE thead-tdname.

  CLEAR v_icms_dif.

  FREE it_zycee006.

  SELECT SINGLE * FROM /pws/zycit001 INTO wa_zycit001

    WHERE nrseq = itab_zycit042-nrseq.

  SELECT SINGLE * FROM /pws/zycbt007

                  WHERE bukrs EQ wa_zycit001-bukrs.

  CLEAR: v_nrdi, v_dtreg, v_landx, v_impim, v_despace, v_nrseqm.

  IF itab_zycit085[] IS INITIAL.

...

 

...

              AND codigo = itab_zycit020-codigo

              AND land1 EQ t001-land1.

  ENDIF.

  CLEAR: v_tot_ntgew, v_tot_plan, v_tot_real.

  LOOP AT itab_zycit003.

    IF NOT itab_zycit003-qtd_itend IS INITIAL.

      v_tot_ntgew = v_tot_ntgew + itab_zycit003-ntgew.

    ELSE.

      v_tot_ntgew = v_tot_ntgew + itab_zycit003-ntgew.

    ENDIF.

* >> Início da inclusão: FORM MENSAGENS_NF

    IF itab_zycit085-waersfob NE itab_zycit003-waers.

      PERFORM taxa_converte USING itab_zycit003-waers

                                  itab_zycit085-dttax

                         CHANGING v_taxa.

      IF NOT v_taxa IS INITIAL.

        itab_zycit003-vlreal = itab_zycit003-vlreal * v_taxa.

        itab_zycit003-netpr  = itab_zycit003-netpr  * v_taxa.

      ENDIF.

      PERFORM taxa_converte USING itab_zycit085-waersfob

                                  itab_zycit085-dttax

                         CHANGING v_taxa.

      IF NOT v_taxa IS INITIAL.

        itab_zycit003-netpr  = itab_zycit003-netpr  / v_taxa .

        itab_zycit003-vlreal = itab_zycit003-vlreal / v_taxa .

      ENDIF.

    ENDIF.

* << Fim da inclusão

    v_tot_plan = v_tot_plan +

         ( itab_zycit003-netpr * itab_zycit003-qtd_iten ).

    v_tot_real = v_tot_real +

         ( itab_zycit003-vlreal * itab_zycit003-qtd_iten ).

  ENDLOOP.

  DESCRIBE TABLE itab_zycit042 LINES v_lines.

  DESCRIBE TABLE itab_zycit003 LINES v_lin.

  LOOP AT itab_zycit049_aux_r WHERE nrseq = v_nrseq AND

                                    vldp NE 0.

    it_zycee006-indice  = v_ind.

...

 

...

                                     itab_zycit049_aux_r-vldp.

        PERFORM taxa_converte USING itab_zycit049_aux_r-waers

                                     /pws/zycit085-dttax

                            CHANGING v_taxa_desp.

        itab_zycit049_aux_r-vldp = itab_zycit049_aux_r-vldp *

         v_taxa_desp.

      ENDIF.

      v_vldp_aux = itab_zycit049_aux_r-vldp.

      LOOP AT itab_zycit003_mark.

        v_idx = sy-tabix.

* >> Início da inclusão: FORM MENSAGENS_NF

        IF itab_zycit085-waersfob NE itab_zycit003_mark-waers.

          PERFORM taxa_converte USING itab_zycit003_mark-waers

                                      itab_zycit085-dttax

                             CHANGING v_taxa.

          IF NOT v_taxa IS INITIAL.

            itab_zycit003_mark-vlreal =

                  itab_zycit003_mark-vlreal * v_taxa.

            itab_zycit003_mark-netpr  =

                  itab_zycit003_mark-netpr  * v_taxa.

          ENDIF.

          PERFORM taxa_converte USING itab_zycit085-waersfob

                                      itab_zycit085-dttax

                             CHANGING v_taxa.

          IF NOT v_taxa IS INITIAL.

            itab_zycit003_mark-netpr  =

                    itab_zycit003_mark-netpr  / v_taxa .

            itab_zycit003_mark-vlreal =

                    itab_zycit003_mark-vlreal / v_taxa .

          ENDIF.

        ENDIF.

* << Fim da inclusão

        CLEAR: itab_zycit039, itab_zycit020.

        READ TABLE itab_zycit019 WITH KEY

                                  tpdesp = itab_zycit049_aux_r-tpdesp.

        IF sy-subrc EQ 0.

        READ TABLE itab_zycit020 WITH KEY codigo = itab_zycit019-codigo

                                          regio  =  itab_zycit019-regio.

          READ TABLE itab_zycit039 WITH KEY

                                    codigo = itab_zycit019-codigo.

          IF sy-subrc EQ 0.

            IF v_idx EQ v_lines.

...

 

...

    LOOP AT it_zycet004.

      MESSAGE i019 WITH it_zycet004-descricao.

    ENDLOOP.

  ENDIF.

  CLEAR v_modo_bi.

ENDFORM.

FORM seleciona_despesas.

  DATA:

    v_vldp    LIKE /pws/zycit049-vldp,

    v_totitem LIKE /pws/zycit042-netpr,

* >> Início da inclusão: FORM SELECIONA_DESPESAS

    v_taxa        TYPE /pws/zycit085-ukursfob,

* << Fim da inclusão

    v_tot_vldp LIKE /pws/zycit049-vldp,

    v_tot_ntgew LIKE /pws/zycit003-ntgew.

  DATA:

   v_vlfre LIKE /pws/zycit085-vlfre,

   v_vlseg LIKE /pws/zycit085-vlseg.

  PERFORM verifica_filial.

  IF t001 IS INITIAL OR /pws/zycit000 IS INITIAL.

    SELECT SINGLE * FROM t001 WHERE bukrs = /pws/zycie041-bukrs.

    SELECT SINGLE * FROM /pws/zycit000 WHERE land1 EQ t001-land1.

  ENDIF.

...

 

...

  IF NOT itab_zycit019[] IS INITIAL.

    SELECT * FROM /pws/zycit049

      INTO TABLE itab_zycit049_a

      FOR ALL ENTRIES IN itab_zycit019

      WHERE nrseq = /pws/zycie041-nrseq

         AND vldp > 0

         AND tpdesp = itab_zycit019-tpdesp.

  ENDIF.

  DESCRIBE TABLE itab_zycit042_d LINES v_lines.

  CLEAR:  v_tot_ntgew, v_tot_plan, v_tot_real.

* >> Início da inclusão: FORM SELECIONA_DESPESAS

  READ TABLE itab_zycit085 INDEX 1.

* << Fim da inclusão

  LOOP AT itab_zycit003.

      v_tot_ntgew = v_tot_ntgew + itab_zycit003-ntgew.

* >> Início da inclusão: FORM SELECIONA_DESPESAS

    IF itab_zycit085-waersfob NE itab_zycit003-waers.

      PERFORM taxa_converte USING itab_zycit003-waers

                                  itab_zycit085-dttax

                         CHANGING v_taxa.

      IF NOT v_taxa IS INITIAL.

        itab_zycit003-vlreal =

              itab_zycit003-vlreal * v_taxa.

        itab_zycit003-netpr  =

              itab_zycit003-netpr  * v_taxa.

      ENDIF.

      PERFORM taxa_converte USING itab_zycit085-waersfob

                                  itab_zycit085-dttax

                         CHANGING v_taxa.

      IF NOT v_taxa IS INITIAL.

        itab_zycit003-netpr  =

                itab_zycit003-netpr  / v_taxa .

        itab_zycit003-vlreal =

                itab_zycit003-vlreal / v_taxa .

      ENDIF.

    ENDIF.

* << Fim da inclusão

    v_tot_plan = v_tot_plan +

         ( itab_zycit003-netpr * itab_zycit003-qtd_iten ).

    v_tot_real = v_tot_real +

         ( itab_zycit003-vlreal * itab_zycit003-qtd_iten ).

  ENDLOOP.

  LOOP AT itab_zycit049_a.

    IF itab_zycit049_a-tpdesp NE /pws/zycit000-cod_sisc OR

       /pws/zycit000-flag_txsisc IS INITIAL OR

       /pws/zycit001-tpdecl = 'DSI'.

      CLEAR: v_tot_vldp, v_vldp.

      LOOP AT itab_zycit042_d.

        MOVE sy-tabix TO v_tabix.

        READ TABLE itab_zycit003 WITH KEY

                           nrseq = itab_zycit042_d-nrseq

                           ebeln = itab_zycit042_d-ebeln

                           ebelp = itab_zycit042_d-ebelp.

* >> Início da inclusão: FORM SELECIONA_DESPESAS

        IF itab_zycit085-waersfob NE itab_zycit003-waers.

          PERFORM taxa_converte USING itab_zycit003-waers

                                      itab_zycit085-dttax

                             CHANGING v_taxa.

          IF NOT v_taxa IS INITIAL.

            itab_zycit003-vlreal =

                  itab_zycit003-vlreal * v_taxa.

            itab_zycit003-netpr  =

                  itab_zycit003-netpr  * v_taxa.

          ENDIF.

          PERFORM taxa_converte USING itab_zycit085-waersfob

                                      itab_zycit085-dttax

                             CHANGING v_taxa.

          IF NOT v_taxa IS INITIAL.

            itab_zycit003-netpr  =

                    itab_zycit003-netpr  / v_taxa .

            itab_zycit003-vlreal =

                    itab_zycit003-vlreal / v_taxa .

          ENDIF.

        ENDIF.

* << Fim da inclusão

        CLEAR: itab_zycit039, itab_zycit020, itab_zycit019.

        READ TABLE itab_zycit019 WITH KEY

                                    tpdesp = itab_zycit049_a-tpdesp.

        IF itab_zycit019-tipo EQ 'A' OR

           itab_zycit019-tipo IS INITIAL.

          READ TABLE itab_zycit020 WITH KEY

                                   codigo = itab_zycit019-codigo.

          READ TABLE itab_zycit039 WITH KEY

                                   codigo = itab_zycit020-codigo.

          IF itab_zycit049_a-waers NE /pws/zycbt007-waersb.

...

 

...

        IF itab_zycit049-tpdesp NE /pws/zycit000-cod_sisc OR

           /pws/zycit000-flag_txsisc IS INITIAL OR

       /pws/zycit001-tpdecl = 'DSI'.

          CLEAR: v_tot_vldp, v_vldp.

          LOOP AT itab_zycit042.

            MOVE sy-tabix TO v_tabix.

            READ TABLE itab_zycit003 WITH KEY

                         nrseq = itab_zycit042-nrseq

                         ebeln = itab_zycit042-ebeln

                         ebelp = itab_zycit042-ebelp.

* >> Início da inclusão: FORM SELECIONA_DESPESAS

            IF itab_zycit085-waersfob NE itab_zycit003-waers.

              PERFORM taxa_converte USING itab_zycit003-waers

                                          itab_zycit085-dttax

                                 CHANGING v_taxa.

              IF NOT v_taxa IS INITIAL.

                itab_zycit003-vlreal =

                      itab_zycit003-vlreal * v_taxa.

                itab_zycit003-netpr  =

                      itab_zycit003-netpr  * v_taxa.

              ENDIF.

              PERFORM taxa_converte USING itab_zycit085-waersfob

                                          itab_zycit085-dttax

                                 CHANGING v_taxa.

              IF NOT v_taxa IS INITIAL.

                itab_zycit003-netpr  =

                        itab_zycit003-netpr  / v_taxa .

                itab_zycit003-vlreal =

                        itab_zycit003-vlreal / v_taxa .

              ENDIF.

            ENDIF.

* << Fim da inclusão

            CLEAR: itab_zycit039, itab_zycit020, itab_zycit019.

            READ TABLE itab_zycit019 WITH KEY

                                        tpdesp = itab_zycit049-tpdesp.

            IF itab_zycit019-tipo EQ 'A' OR

               itab_zycit019-tipo IS INITIAL.

              READ TABLE itab_zycit020 WITH KEY

                                       codigo = itab_zycit019-codigo.

              READ TABLE itab_zycit039 WITH KEY

                                       codigo = itab_zycit020-codigo.

              IF itab_zycit049-waers NE /pws/zycbt007-waersb.

...

 

...

        IF itab_zycit049-tpdesp NE /pws/zycit000-cod_sisc OR

          /pws/zycit000-flag_txsisc IS INITIAL OR

       /pws/zycit001-tpdecl = 'DSI'.

          CLEAR: v_tot_vldp, v_vldp.

          LOOP AT itab_zycit042_d.

            MOVE sy-tabix TO v_tabix.

            READ TABLE itab_zycit003 WITH KEY

                         nrseq = itab_zycit042_d-nrseq

                         ebeln = itab_zycit042_d-ebeln

                         ebelp = itab_zycit042_d-ebelp.

* >> Início da inclusão: FORM SELECIONA_DESPESAS

            IF itab_zycit085-waersfob NE itab_zycit003-waers.

              PERFORM taxa_converte USING itab_zycit003-waers

                                          itab_zycit085-dttax

                                 CHANGING v_taxa.

              IF NOT v_taxa IS INITIAL.

                itab_zycit003-vlreal =

                      itab_zycit003-vlreal * v_taxa.

                itab_zycit003-netpr  =

                      itab_zycit003-netpr  * v_taxa.

              ENDIF.

              PERFORM taxa_converte USING itab_zycit085-waersfob

                                          itab_zycit085-dttax

                                 CHANGING v_taxa.

              IF NOT v_taxa IS INITIAL.

                itab_zycit003-netpr  =

                        itab_zycit003-netpr  / v_taxa .

                itab_zycit003-vlreal =

                        itab_zycit003-vlreal / v_taxa .

              ENDIF.

            ENDIF.

* << Fim da inclusão

            CLEAR: itab_zycit039, itab_zycit020, itab_zycit019.

            READ TABLE itab_zycit019 WITH KEY

                                        tpdesp = itab_zycit049-tpdesp.

            IF itab_zycit019-tipo EQ 'A' OR

               itab_zycit019-tipo IS INITIAL.

              READ TABLE itab_zycit020 WITH KEY

                                       codigo = itab_zycit019-codigo.

              READ TABLE itab_zycit039 WITH KEY

                                       codigo = itab_zycit020-codigo.

              IF itab_zycit049-waers NE /pws/zycbt007-waersb.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI058F01

 

...

           vlseg vlfre vlfob baseii vlii baseipi vlipi baseicms vlicms

           vlfre_me vlseg_me vldiffob frn vlmerc_ad vlpis basepis

           vlcofins basecofins.

  ENDLOOP.

  /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.

* >> Início da exclusão: FORM CALC_ITAB

  SELECT SINGLE * FROM tcurx WHERE currkey = /pws/zycie085-waersfre.

  IF sy-subrc <> 0.

    tcurx-currdec = 2.

  ENDIF.

  /pws/zycie085-vlfre = /pws/zycie085-vlfre * ( 10 ** ( tcurx-currdec -

 2 ) ).

* << Fim da exclusão

  IF v_dit = 'S' AND /pws/zycie093-meiotransp NE 'PS'.

    t_vlii   = /pws/zycie085-vlii.

    t_vlipi  = /pws/zycie085-vlipi.

    t_vlicms = /pws/zycie085-vlicms.

  ENDIF.

  IF /pws/zycie100a-codregtri EQ '5'.

    CLEAR: t_vlipi, t_tot.

  ENDIF.

ENDFORM.

FORM adic_next.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/ZYCIR006

 

...

        v_result   LIKE /pws/zycit036-vldif,

        v_resultf  LIKE /pws/zycit036-vldif,

        v_vlfre    LIKE /pws/zycit085-vlfre,

        v_ukursfre LIKE /pws/zycit085-ukursfre,

        v_vlseg    LIKE /pws/zycit085-vlseg,

        v_ukursseg LIKE /pws/zycit085-ukursseg,

        v_usd      LIKE /pws/zycie085-ukursfob,

        v_vl       LIKE /pws/zycit036-netpr VALUE '0.01',

        v_val_tot  LIKE /pws/zycit036-vlreal ,

        v_val_tot2  LIKE /pws/zycit036-vlreal ,

* >> Início da exclusão: FORM CALCULAR_OUTROS_CUSTOS

        v_val_tots2  LIKE /pws/zycit036-vlreal ,

* << Fim da exclusão

* >> Início da inclusão: FORM CALCULAR_OUTROS_CUSTOS

        v_val_totf2  LIKE /pws/zycit100-vlfre ,

* << Fim da inclusão

        v_val_tots  LIKE /pws/zycit036-vlreal ,

        v_linf TYPE i,

        v_lins TYPE i,

        v_ebeln TYPE /pws/zycit003-ebeln,

        v_ebelp TYPE /pws/zycit003-ebelp,

        v_tot_lins TYPE i,

        v_tot_linf TYPE i,

        v_valor_mi LIKE /pws/zycit036-vlreal,

        v_val     LIKE /pws/zycit100-vlseg  ,

        v_linha  TYPE i.

...

 

...

    LOOP AT itab_zycit036 WHERE nrseqori <> '9999999999' AND

                                      codigo = itab_zycit140-codigo.

      EXIT.

    ENDLOOP.

    IF sy-subrc = 0.

      DELETE itab_zycit036 WHERE codigo = itab_zycit140-codigo AND

                                 nrseqori = '9999999999'.

    ENDIF.

  ENDLOOP.

  CLEAR: v_tot_linf, v_tot_lins, v_linf, v_lins.

* >> Início da inclusão: FORM CALCULAR_OUTROS_CUSTOS

  CLEAR: v_val_totf2.

  LOOP AT itab_zycit100.

    v_val_totf2 = v_val_totf2 + itab_zycit100-vlfre.

  ENDLOOP.

  v_val_tot2 = v_val_totf2.

* << Fim da inclusão

  SORT itab_zycit036 BY ebeln ebelp origem codigo.

  LOOP AT itab_zycit036 WHERE codigo EQ 'FRETEI'

                          AND origem NE 'PED'.

    READ TABLE itab_zycit140 WITH KEY codigo = itab_zycit036-codigo

                                      origem = itab_zycit036-origem

                                      custo = 'X'.

    IF sy-subrc = 0.

      v_tot_linf = v_tot_linf + 1.

      IF itab_zycit036-origem = 'NF'.

        v_ebeln = itab_zycit036-ebeln.

...

 

...

          IF itab_zycit036-origem = 'NF'.

            PERFORM retorna_decimais USING itab_zycit100-waersreal

                                      CHANGING v_valor.

          ELSE.

            PERFORM retorna_decimais USING itab_zycit036-waers_real

                                        CHANGING v_valor.

          ENDIF.

          IF itab_zycit036-origem = 'NF'

            AND v_ebeln = itab_zycit036-ebeln

            AND v_ebelp = itab_zycit036-ebelp.

* >> Início da exclusão: FORM CALCULAR_OUTROS_CUSTOS

            IF itab_zycit036-origem = 'NF'.

              v_val_tot2 = /pws/zycit085-vlfre * /pws/zycit085-ukursfre.

            ENDIF.

* << Fim da exclusão

            v_valor = v_val_tot2 - v_val_tot.

            IF itab_zycit036-origem = 'NF'.

              PERFORM retorna_decimais USING itab_zycit100-waersreal

                                        CHANGING v_valor.

            ELSE.

              PERFORM retorna_decimais USING itab_zycit036-waers_real

                                          CHANGING v_valor.

            ENDIF.

          ENDIF.

          IF itab_zycit036-origem = 'NF'.

...