CE PLUS - Nota 003654

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Nota Fiscal

Data/Hora da Publicação: 10/05/2007 00:00:00

Data/Hora Última Alteração: 23/02/2011 09:14:11

Descrição da Nota: AO GERAR A NOTA FISCAL OS VALORES DO CUSTO FICAM INCORRETOS.

Sintoma

Ocorreu um erro que ao usuario apagar a fatura o registro da tabela /pws/zycit036 não foi eleiminado

e quando é gerada a nota fiscal acaba duplicando os registros.

 

 

Solução

Ajustar o programa para eliminar os registros da tabela /pws/zycit036 quando a fatura referente

aquela entrada for eliminada.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

ERRO NO CUSTO EFETIVO, VALOR DA FATURA

SISTEMA ESTÁ SE PERDENDO E SELECIONANDO FATURAS ELIMINADAS NO EMBARQUE

Informações Complementares

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

Nota Número 03654 Data: 10/05/2007 Hora: 14:02:29

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

 

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

Nota Número              : 03654

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00001

Agrupamento              : 00165

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

Referência às notas relacionadas:

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

 

03089  - 00001 - 6.0    - 00026  - SISTEMA ESTÁ SE PERDENDO E SELECIONANDO FATURAS ELIMINADAS NO EMB

03346  - 00002 - 7.0    - 00001  - ERRO NO CUSTO EFETIVO, VALOR DA FATURA

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

AO GERAR A NOTA FISCAL OS VALORES DO CUSTO FICAM INCORRETOS.

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

Palavras Chave:

CUSTO - EFETIVO - FATURA - NOTA - FISCAL - DUPLICADOS - VALORES

/PWS/SAPMZYCI003 - /PWS/SAPMZYCI016

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

Objetos da nota:

REPS /PWS/MZYCI003F01

REPS /PWS/MZYCI003F02

REPS /PWS/MZYCI003O01

REPS /PWS/MZYCI016F01

 

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

Modificações efetuadas em REPS /PWS/MZYCI003F01

 

...

          SELECT * FROM /pws/zycit006

            INTO TABLE itab_zycit006

            FOR ALL ENTRIES IN itab_zycit263

            WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat.

          LOOP AT itab_zycit263.

            v_tabix = sy-tabix.

            READ TABLE itab_zycit006 WITH KEY

                 nrseq_pgfat = itab_zycit263-nrseq_pgfat

                 eliminado   = space.

            IF sy-subrc NE 0.

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

              DELETE itab_zycit263 INDEX v_tabix.

* << Fim da exclusão

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

              itab_zycit263-eliminado = 'X'.

              MODIFY itab_zycit263 INDEX v_tabix.

              MODIFY /pws/zycit263 FROM itab_zycit263 .

* << Fim da inclusão

            ENDIF.

          ENDLOOP.

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

          LOOP AT itab_zycit006.

            v_tabix = sy-tabix.

            READ TABLE itab_zycit263 WITH KEY

                 nrseq_pgfat = itab_zycit006-nrseq_pgfat

                 eliminado   = space.

            IF sy-subrc NE 0.

              itab_zycit006-eliminado = 'X'.

              MODIFY itab_zycit006 INDEX v_tabix.

              MODIFY /pws/zycit006 FROM itab_zycit006 .

            ENDIF.

          ENDLOOP.

          DELETE itab_zycit006 WHERE eliminado = 'X'.

          DELETE itab_zycit263 WHERE eliminado = 'X'.

* << Fim da inclusão

        ENDIF.

      ENDIF.

      CLEAR v_flag_saldo.

      LOOP AT itab_zycit003_aux.

        CLEAR vsaldo.

        LOOP AT itab_zycit263_aux WHERE

             nrseq = itab_zycit003_aux-nrseq AND

             ebeln = itab_zycit003_aux-ebeln AND

             ebelp = itab_zycit003_aux-ebelp AND

             eliminado = space.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI003F02

 

...

      SELECT * FROM /pws/zycit006

        INTO TABLE itab_zycit006

        FOR ALL ENTRIES IN itab_zycit263

        WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat.

      LOOP AT itab_zycit263.

        v_tabix = sy-tabix.

        READ TABLE itab_zycit006 WITH KEY

             nrseq_pgfat = itab_zycit263-nrseq_pgfat

             eliminado   = space.

        IF sy-subrc NE 0.

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

          itab_zycit263-eliminado = 'X' .

* << Fim da exclusão

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

          itab_zycit263-eliminado = 'X'.

* << Fim da inclusão

          MODIFY itab_zycit263 INDEX v_tabix.

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

          MODIFY /pws/zycit263 FROM itab_zycit263 .

* << Fim da inclusão

        ENDIF.

      ENDLOOP.

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

      LOOP AT itab_zycit006.

        v_tabix = sy-tabix.

        READ TABLE itab_zycit263 WITH KEY

             nrseq_pgfat = itab_zycit006-nrseq_pgfat

             eliminado   = space.

        IF sy-subrc NE 0.

          itab_zycit006-eliminado = 'X'.

          MODIFY itab_zycit006 INDEX v_tabix.

          MODIFY /pws/zycit006 FROM itab_zycit006 .

        ENDIF.

      ENDLOOP.

      DELETE itab_zycit006 WHERE eliminado = 'X'.

      DELETE itab_zycit263 WHERE eliminado = 'X'.

* << Fim da inclusão

    ENDIF.

  ENDIF.

  LOOP AT itab_zycit003.

    v_idx = sy-tabix.

    CLEAR: tqtd, tvlr, tntg, tfre, tseg.

    LOOP AT itab_zycit263 WHERE ebeln = itab_zycit003-ebeln AND

                                ebelp = itab_zycit003-ebelp.

      tfre = tfre + itab_zycit263-vlfre_fat.

      tseg = tseg + itab_zycit263-vlseg_fat.

      tntg = tntg + itab_zycit263-ntgew.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI003O01

 

...

      SELECT matnr mfrpn FROM mara

        INTO TABLE itab_mara

        FOR ALL ENTRIES IN itab_matuse

         WHERE matnr EQ itab_matuse-matnr.

    ENDIF.

    REFRESH itab_zycit263.

    SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263

             FOR ALL ENTRIES IN itab_zycit003 WHERE

             nrseq     = itab_zycit003-nrseq AND

             ebeln     = itab_zycit003-ebeln AND

* >> Início da exclusão: MODULE LOAD_DATA

             ebelp     = itab_zycit003-ebelp AND

             eliminado = space.

* << Fim da exclusão

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

             ebelp     = itab_zycit003-ebelp .

* << Fim da inclusão

    IF NOT itab_zycit263[] IS INITIAL.

      SELECT * FROM /pws/zycit006

        INTO TABLE itab_zycit006

        FOR ALL ENTRIES IN itab_zycit263

        WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat.

      LOOP AT itab_zycit263.

        v_tabix = sy-tabix.

        READ TABLE itab_zycit006 WITH KEY

             nrseq_pgfat = itab_zycit263-nrseq_pgfat

             eliminado   = space.

        IF sy-subrc NE 0.

* >> Início da exclusão: MODULE LOAD_DATA

          DELETE itab_zycit263 INDEX v_tabix.

* << Fim da exclusão

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

         itab_zycit263-eliminado = 'X'.

         modify itab_zycit263 index v_tabix.

         modify /pws/zycit263 from itab_zycit263 .

        ENDIF.

      ENDLOOP.

      loop at itab_zycit006.

         v_tabix = sy-tabix.

         read table itab_zycit263 with key

              nrseq_pgfat = itab_zycit006-nrseq_pgfat

              eliminado   = space.

         if sy-subrc ne 0.

           itab_zycit006-eliminado = 'X'.

           modify itab_zycit006 index v_tabix.

           modify /pws/zycit006 from itab_zycit006 .

* << Fim da inclusão

        ENDIF.

      ENDLOOP.

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

      delete itab_zycit006 where eliminado = 'X'.

      delete itab_zycit263 where eliminado = 'X'.

* << Fim da inclusão

    ENDIF.

    LOOP AT itab_zycit003.

      READ TABLE itab_matuse WITH KEY ebeln = itab_zycit003-ebeln

                                    ebelp = itab_zycit003-ebelp.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI016F01

 

...

      INTO TABLE itab_zycit036

      FOR ALL ENTRIES IN itab_zycit100

      WHERE nrseq = itab_zycit100-nrseq

        AND ebeln = itab_zycit100-ebeln

        AND ebelp = itab_zycit100-ebelp

        AND origem = 'FAT'

        AND ( codigo = 'FOB' OR

              codigo = 'CIF' OR

              codigo = 'C&F' ).

  ENDIF.

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

  IF itab_zycit036[] IS INITIAL.

* << Fim da exclusão

    PERFORM atualiza_custos.

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

  ENDIF.

* << Fim da exclusão

  MOVE itab_zycit036[] TO itab_zycit036_di[].

  MOVE itab_zycit036[] TO itab_zycit036_atual[].

  IF v_libera = 'X' AND v_modalidade = '99'.

    IF NOT itab_zycit100[] IS INITIAL.

      SELECT * FROM /pws/zycit036

        INTO TABLE itab_zycit036

...

 

...

      it_erro-branch = wa_zycit001-j_1bbranch.

      it_erro-msg    = it_zycet005-msg.

      APPEND it_erro.

    ENDIF.

  ENDIF.

ENDFORM.

FORM atualiza_custos .

  DATA: BEGIN OF itab_zycit006 OCCURS 0.

          INCLUDE STRUCTURE /pws/zycit006.

  DATA: END OF itab_zycit006.

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

  DATA: BEGIN OF itab_zycit036_aux OCCURS 0.

          INCLUDE STRUCTURE /pws/zycit036.

  DATA: END OF itab_zycit036_aux.

* << Fim da inclusão

  IF NOT itab_zycit003[] IS INITIAL.

    SELECT * FROM /pws/zycit263

      INTO TABLE itab_zycit263

    FOR ALL ENTRIES IN itab_zycit003

    WHERE nrseq EQ itab_zycit003-nrseq

    AND   ebeln EQ itab_zycit003-ebeln

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

    AND   ebelp EQ itab_zycit003-ebelp

    AND   eliminado NE 'X'.

* << Fim da exclusão

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

    AND   ebelp EQ itab_zycit003-ebelp .

* << Fim da inclusão

    IF NOT itab_zycit263[] IS INITIAL.

      SELECT * FROM /pws/zycit006

        INTO TABLE itab_zycit006

      FOR ALL ENTRIES IN itab_zycit263

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

      WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat

      AND   eliminado NE 'X'.

* << Fim da exclusão

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

      WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat .

* << Fim da inclusão

    ENDIF.

  ENDIF.

  READ TABLE itab_zycit003 INDEX 1.

  SELECT SINGLE * FROM /pws/zycit001

    INTO /pws/zycie001

    WHERE nrseq EQ itab_zycit003-nrseq.

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

  SELECT * FROM /pws/zycit036

    INTO TABLE itab_zycit036_aux

    WHERE nrseq  EQ /pws/zycie001-nrseq

    AND   codigo EQ /pws/zycit031-inco1_ci

    AND   origem EQ 'FAT' .

  LOOP AT itab_zycit036_aux.

    READ TABLE itab_zycit006 WITH KEY

         nrseq = itab_zycit036_aux-nrseqori.

    IF sy-subrc NE 0.

      DELETE FROM /pws/zycit036

         WHERE nrseq    = itab_zycit036_aux-nrseq

         AND   ebeln    = itab_zycit036_aux-ebeln

         AND   ebelp    = itab_zycit036_aux-ebelp

         AND   nrseqori = itab_zycit006-nrseq.

    ELSE.

      READ TABLE itab_zycit263 WITH KEY

           nrseq = itab_zycit036_aux-nrseq

           ebeln = itab_zycit036_aux-ebeln

           ebelp = itab_zycit036_aux-ebelp

           nrseq_pgfat = itab_zycit006-nrseq_pgfat

           eliminado = space   .

      IF sy-subrc NE 0.

        DELETE FROM /pws/zycit036

           WHERE nrseq    = itab_zycit036_aux-nrseq

           AND   ebeln    = itab_zycit036_aux-ebeln

           AND   ebelp    = itab_zycit036_aux-ebelp

           AND   nrseqori = itab_zycit006-nrseq.

        DELETE itab_zycit036

           WHERE nrseq    = itab_zycit036_aux-nrseq

           AND   ebeln    = itab_zycit036_aux-ebeln

           AND   ebelp    = itab_zycit036_aux-ebelp

           AND   nrseqori = itab_zycit006-nrseq.

      ENDIF.

    ENDIF.

  ENDLOOP.

* << Fim da inclusão

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

  LOOP AT itab_zycit263.

* << Fim da exclusão

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

  LOOP AT itab_zycit263 WHERE eliminado NE 'X'.

* << Fim da inclusão

    READ TABLE itab_zycit003 WITH KEY

             nrseq = itab_zycit263-nrseq

             ebeln = itab_zycit263-ebeln

             ebelp = itab_zycit263-ebelp.

    IF sy-subrc EQ 0.

      LOOP AT itab_zycit006

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

          WHERE nrseq_pgfat = itab_zycit263-nrseq_pgfat.

* << Fim da exclusão

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

          WHERE nrseq_pgfat = itab_zycit263-nrseq_pgfat

          AND   eliminado   NE 'X'.

* << Fim da inclusão

        IF NOT itab_zycit006-belnr_p IS INITIAL.

          itab_zycit036-mandt      = sy-mandt  .

          itab_zycit036-nrseq      = itab_zycit003-nrseq.

          itab_zycit036-ebeln      = itab_zycit003-ebeln.

          itab_zycit036-ebelp      = itab_zycit003-ebelp.

          itab_zycit036-werks      = itab_zycit003-werks.

          itab_zycit036-nrseqori   = itab_zycit006-nrseq.

          itab_zycit036-embarca    = /pws/zycie001-embarca.

          itab_zycit036-codigo     = /pws/zycit031-inco1_ci.

          itab_zycit036-netpr      =

...

 

...

        ( itab_zycit003-vlreal    * itab_zycit263-qtd_iten ) +

          itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat.

          itab_zycit036-bukrs      = itab_zycit006-bukrs.

          itab_zycit036-codmod     = 'D'.

          itab_zycit036-status     = 'M'.

          itab_zycit036-vlreal_emb = itab_zycit006-vltotal.

          itab_zycit036-waers_emb  = itab_zycit006-waers.

          itab_zycit036-origem     = 'FAT'.

          itab_zycit036-waers_dif  = /pws/zycie001-waers.

          MODIFY /pws/zycit036 FROM itab_zycit036.

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

          READ TABLE itab_zycit036 TRANSPORTING NO FIELDS WITH KEY

                                nrseq      = itab_zycit003-nrseq

                                ebeln      = itab_zycit003-ebeln

                                ebelp      = itab_zycit003-ebelp

                                nrseqori   = itab_zycit006-nrseq

                                origem     = 'FAT'

                                codigo     = /pws/zycit031-inco1_ci.

          IF sy-subrc EQ 0.

            MODIFY itab_zycit036 INDEX sy-tabix.

          ELSE.

* << Fim da inclusão

          APPEND itab_zycit036.

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

          ENDIF.

* << Fim da inclusão

        ENDIF.

      ENDLOOP.

    ENDIF.

  ENDLOOP.

ENDFORM.