CE PLUS - Nota 007854

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: DI

Data/Hora da Publicação: 30/12/2008 00:00:00

Data/Hora Última Alteração: 09/03/2010 16:13:48

Descrição da Nota: DUMP DE DIVISÃO POR ZERO QUANDO O PESO NÃO ESTÁ PREENCHIDO.

Sintoma

 

Está ocorrendo DUMP de divisão por zero na DI.

 

Solução

 

Realizado ajuste na DI para não efetuar divisão quando o peso estiver em branco.

Versões Tratadas

7.0

Informações Complementares

 

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

Nota Número 07854 Data: 30/12/2008 Hora: 15:14:45

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

 

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

Nota Número              : 07854

Categoria                : Consultoria

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00006

Agrupamento              : 00059

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

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

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

Texto Rápido:

DUMP DE DIVISÃO POR ZERO QUANDO O PESO NÃO ESTÁ PREENCHIDO.

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

Palavras Chave:

DUMP - DIVISÃO - ZERO - PESO - ITEM - DI

/PWS/SAPMZYCI001

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

Objetos da nota:

REPS /PWS/MZYCI023F01

REPS /PWS/MZYCI023F03

REPS /PWS/MZYCI023F04

REPS /PWS/MZYCI023O01

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F01

 

...

      v_ternacion = /pws/zycie093-ternacion.

      PERFORM trata_decimais USING /pws/zycie085-waersfre

                                   v_ternacion   .

      IF /pws/zycie085-waersfob NE /pws/zycie093-waersfre .

        PERFORM: calc_conv_moeda:

                 USING    /pws/zycie093-waersfre

                          /pws/zycie085-waersfob

                 CHANGING v_ternacion.

      ENDIF.

      IF NOT /pws/zycie003-qtd_itend IS INITIAL.

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

        IF NOT v_ntgewd IS INITIAL.

* << Fim da inclusão

        v_diftern =  ( ( /pws/zycie003-ntgewd / v_ntgewd )

                         * v_ternacion ).

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

        ENDIF.

* << Fim da inclusão

      ELSE.

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

        IF NOT v_tntgew IS INITIAL.

* << Fim da inclusão

        v_diftern =  ( ( /pws/zycie003-ntgew / v_tntgew )

                         * v_ternacion ).

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

        ENDIF.

* << Fim da inclusão

      ENDIF.

      t_vmle = t_vmle - v_diftern .

    ENDIF.

  ENDIF.

  IF itab_zycit003-qtd_itend IS INITIAL.

    t_vmle_d2 = t_vmle = t_vmle + t_vldif.

  ENDIF.

  itab_it-vlfob = t_vmle.

  /pws/zycie100a-vlfob = t_vmle.

ENDFORM.

...

 

...

  DATA: v_casasd  TYPE /pws/zycit036-vlreal,

        v_casasd2 TYPE /pws/zycit036-vlreal,

        v_casasd3 TYPE /pws/zycit036-vlreal.

  CLEAR: t_ivdesp.

  LOOP AT itab_zycit049 WHERE baseii EQ 'X' AND NOT vlreal IS initial.

    IF /pws/zycit000-flag_txsisc IS INITIAL  OR

       wa_it000-cod_sisc NE itab_zycit049-tpdesp.

      IF itab_zycit049-divabs  = 'X'.

        t_ivdes2 = ( 1 / v_ipt ) * itab_zycit049-vlreal.

      ELSEIF itab_zycit049-peso = 'X'.

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

        IF NOT v_tntgew IS INITIAL.

* << Fim da inclusão

        t_ivdes2 = ( wa_it-ntgew / v_tntgew )  *

                       itab_zycit049-vlreal.

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

        ENDIF.

* << Fim da inclusão

      ELSEIF itab_zycit049-proporplan = 'X'.

        IF NOT v_tot_plan IS INITIAL.

          READ TABLE itab_zycit003 WITH KEY

                      nrseq = itab_it-nrseq

                      ebeln = itab_it-ebeln

...

 

...

    PERFORM calc_itab_vals USING 'I'.

    s_wadreco = s_waddevi = s_waddevi + ( itab_it-baseantid *

    ( itab_it-antidrate / 100 ) ) + ( itab_it-vlantid *

    itab_it-qtdeantid ).

    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.

    IF NOT /pws/zycie093-ternacion IS INITIAL.

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

      IF NOT v_tntgew IS INITIAL.

* << Fim da inclusão

      IF NOT itab_it-qtd_itend IS INITIAL.

        itab_it-frn = ( /pws/zycie003-ntgewd / v_tntgew ) *

             /pws/zycie093-ternacion.

      ELSE.

        itab_it-frn = ( /pws/zycie003-ntgew / v_tntgew ) *

             /pws/zycie093-ternacion.

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

        ENDIF.

* << Fim da inclusão

      ENDIF.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F03

 

...

  CLEAR : v_fatx, v_xa , v_xb , v_xc, v_faty, v_fatpc.

  LOOP AT itab_zycit049 WHERE baseicms EQ 'X' AND NOT vlreal IS initial.

    CLEAR t_ivdes2.

    IF /pws/zycit000-flag_txsisc IS INITIAL OR v_dit NE 'N' OR

       wa_it000-cod_sisc NE itab_zycit049-tpdesp.

      IF NOT itab_zycit049-tipo EQ 'D' OR

        itab_zycit049-tpdesp = /pws/zycit000-flagfreten.

        IF itab_zycit049-divabs EQ 'X'.

          t_ivdes2 = ( 1 / v_ipt ) * itab_zycit049-vlreal.

        ELSEIF itab_zycit049-peso EQ 'X'.

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

          IF NOT v_tntgew IS INITIAL.

* << Fim da inclusão

          t_ivdes2 = ( wa_it-ntgew / v_tntgew ) * itab_zycit049-vlreal.

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

          ENDIF.

* << Fim da inclusão

        ELSEIF itab_zycit049-proporplan EQ 'X'.

          IF NOT v_tot_plan IS INITIAL.

            READ TABLE itab_zycit003 WITH KEY

                        nrseq = itab_it-nrseq

                        ebeln = itab_it-ebeln

                        ebelp = itab_it-ebelp.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F04

 

...

  LOOP AT itab_zycit049 WHERE tipo EQ 'A' AND NOT vlreal IS initial.

    IF itab_zycit049-baseicms EQ 'X'.

      IF /pws/zycit000-flag_txsisc IS INITIAL OR

       wa_it000-cod_sisc NE itab_zycit049-tpdesp.

        IF v_idx EQ v_ipt AND v_ipt NE 1.

          t_vmle = t_vmle + ( itab_zycit049-vlreal - v_vldp_aux ) .

        ELSE.

          IF itab_zycit049-divabs EQ 'X'.

            t_ivdes2 = ( 1 / v_ipt ) * itab_zycit049-vlreal.

          ELSEIF itab_zycit049-peso EQ 'X'.

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

            IF NOT v_tntgew IS INITIAL.

* << Fim da inclusão

           t_ivdes2 = ( wa_it-ntgew / v_tntgew ) * itab_zycit049-vlreal.

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

            ENDIF.

* << Fim da inclusão

          ELSEIF itab_zycit049-proporplan EQ 'X'.

            t_ivdes2 = ( v_it_plan / v_tot_plan  ) *

                       itab_zycit049-vlreal.

          ELSE.

            IF /pws/zycit062-bs_rat_icms EQ 'CIF'.

              t_ivdes2 = ( itab_zycit049-vlreal *

...

 

...

      ENDIF.

      t_vmle = t_vmle + t_ivdes2.

      v_vldp_aux = v_vldp_aux + t_ivdes2.

    ELSE.

      IF v_idx EQ v_ipt AND v_ipt NE 1.

        t_vmle = t_vmle + ( itab_zycit049-vlreal - v_vldp_aux ) .

      ELSE.

        IF itab_zycit049-divabs  = 'X'.

          t_ivdes2 = ( 1 / v_ipt ) * itab_zycit049-vlreal.

        ELSEIF itab_zycit049-peso = 'X'.

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

          IF NOT v_tntgew IS INITIAL.

* << Fim da inclusão

          t_ivdes2 = ( wa_it-ntgew / v_tntgew )  *

                         itab_zycit049-vlreal.

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

          ENDIF.

* << Fim da inclusão

        ELSEIF itab_zycit049-proporplan = 'X'.

          t_ivdes2 = ( v_it_plan / v_tot_plan  )

               * itab_zycit049-vlreal.

        ELSE.

          t_ivdes2 = ( v_it_plan / v_tot_plan  )

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023O01

 

...

    IF NOT itab_zycit049-vldp IS INITIAL.

      IF v_adics EQ '1'.

        v_wa_it122-vldp   = v_wa_it122-vldp   + itab_zycit049-vldp.

        v_wa_it122-vlreal = v_wa_it122-vlreal + itab_zycit049-vlreal.

      ELSE.

        IF itab_zycit049-peso EQ 'X'.

          CLEAR : wa_it122-vldp, wa_it122-vlreal, v_ntgew_adic.

          LOOP AT itab_it WHERE adicao = wa_it-adicao.

            v_ntgew_adic = v_ntgew_adic + itab_it-ntgew.

          ENDLOOP.

* >> Início da inclusão: MODULE FILL_STRUCT049B

          IF NOT v_tntgew IS INITIAL.

* << Fim da inclusão

          v_wa_it122-vldp   = v_wa_it122-vldp +

                              ( v_ntgew_adic / v_tntgew ) *

                               itab_zycit049-vldp.

          v_wa_it122-vlreal = v_wa_it122-vlreal +

                               ( v_ntgew_adic / v_tntgew ) *

                               itab_zycit049-vlreal.

* >> Início da inclusão: MODULE FILL_STRUCT049B

          ENDIF.

* << Fim da inclusão

        ELSEIF itab_zycit049-proporplan = 'X'.

...

 

...

    IF NOT itab_zycit049-vldp IS INITIAL.

      IF v_adics EQ '1'.

        v_wa_it123-vldp   = v_wa_it123-vldp   + itab_zycit049-vldp.

        v_wa_it123-vlreal = v_wa_it123-vlreal + itab_zycit049-vlreal.

      ELSE.

        IF itab_zycit049-peso EQ 'X'.

          CLEAR: wa_it123-vldp, wa_it123-vlreal, v_ntgew_adic.

          LOOP AT itab_it WHERE adicao = wa_it-adicao.

            v_ntgew_adic = v_ntgew_adic + itab_it-ntgew.

          ENDLOOP.

* >> Início da inclusão: MODULE FILL_STRUCT049C

          IF NOT v_tntgew IS INITIAL.

* << Fim da inclusão

          v_wa_it123-vldp = v_wa_it123-vldp +

                             ( v_ntgew_adic / v_tntgew ) *

                              itab_zycit049-vldp.

          v_wa_it123-vlreal = v_wa_it123-vlreal +

                             ( v_ntgew_adic / v_tntgew ) *

                              itab_zycit049-vlreal.

* >> Início da inclusão: MODULE FILL_STRUCT049C

          ENDIF.

* << Fim da inclusão

        ELSEIF itab_zycit049-proporplan = 'X'.

...