CE PLUS - Nota 007356

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Fatura Mercadoria

Data/Hora da Publicação: 24/09/2008 00:00:00

Data/Hora Última Alteração: 22/02/2011 16:16:10

Descrição da Nota: FORAM FEITAS 2 FATURAS DE SERVIÇO MAS APENAS 1 É EXIBIDA NO CUSTO

Sintoma

Embarque Serviço. Quando criamos 2 faturas (2 itens), somente uma aparece no custo efetivo.

Em embarque com itens de serviço e materiais, após criar a fatura de mercadoria está eliminando os

itens das faturas de serviço e marcando as faturas como eliminadas.

 

 

Solução

Atualização do programa de fatura para que o sistema leve corretamente os valores realizado e

movimentado para o custo efetivo.

 

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

QUANDO FATURA DE SERVIÇO LIVRE DE DÉBITO RECLAMA DE QUE NÃO POSSUI BL.

RELATORIO /PWS/ZTCIR986 - AJUSTE TABELA 036

DIFERENÇA DE CENTAVOS NO RATEIO DO DÉBITO EM CONTA

ERRO AO EXCLUIR O BL, MESMO SENDO FATURAS DO TIPO SEVIÇO

CORREÇÃO DA VERIFICAÇÃO DE ESTORNO POR FORA DA FATURA

AJUSTADO RATEIO DO VALOR NA FATURA E A ATUALIZAÇÃO DO CUSTO EFETIVO

Informações Complementares

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

Nota Número 07356 Data: 24/09/2008 Hora: 15:32:58

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

 

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

Nota Número              : 07356

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00007

Agrupamento              : 00066

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

Referência às notas relacionadas:

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

 

02951  - 00001 - 6.0    - 00026  - RELATORIO /PWS/ZTCIR986 - AJUSTE TABELA 036

03958  - 00002 - 7.0    - 00001  - ERRO AO EXCLUIR O BL, MESMO SENDO FATURAS DO TIPO SEVIÇO

05027  - 00003 - 7.0    - 00003  - AJUSTADO RATEIO DO VALOR NA FATURA E A ATUALIZAÇÃO DO CUSTO EFETI

06673  - 00004 - 7.0    - 00005  - CORREÇÃO DA VERIFICAÇÃO DE ESTORNO POR FORA DA FATURA

07271  - 00005 - 7.0    - 00006  - DIFERENÇA DE CENTAVOS NO RATEIO DO DÉBITO EM CONTA

07279  - 00006 - 7.0    - 00006  - QUANDO FATURA DE SERVIÇO LIVRE DE DÉBITO RECLAMA DE QUE NÃO POSSU

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

FORAM FEITAS 2 FATURAS DE SERVIÇO MAS APENAS 1 É EXIBIDA NO CUSTO

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

Palavras Chave:

FATURA - SERVIÇO - CUSTO - ITENS - EMBARQUE - ELIMINANDO

/PWS/SAPMZYCI003 - /PWS/SAPMZYCI001

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

Objetos da nota:

REPS /PWS/MZYCI001F01

REPS /PWS/MZYCI001I01

REPS /PWS/MZYCI003F02

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F01

 

...

            WHERE nrseq = /pws/zycie001-nrseq

              AND eliminado = space.

    ENDIF.

    IF NOT itab_zycit263[] IS INITIAL.

      REFRESH itab_temp_seq_pgfat.

      LOOP AT itab_zycit263.

        itab_temp_seq_pgfat-nrseq_pgfat = itab_zycit263-nrseq_pgfat.

        COLLECT itab_temp_seq_pgfat.

      ENDLOOP.

      IF NOT itab_temp_seq_pgfat[] IS INITIAL.

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

        REFRESH itab_zycit006.

* << Fim da inclusão

        SELECT * FROM /pws/zycit006                     "#EC CI_NOFIELD

          INTO TABLE itab_zycit006

          FOR ALL ENTRIES IN itab_temp_seq_pgfat

          WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat

            AND nrseqce = /pws/zycit094-nrseqce.

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

        IF sy-subrc NE 0.

          SELECT * FROM /pws/zycit006                   "#EC CI_NOFIELD

            INTO TABLE itab_zycit006

* << Fim da exclusão

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

        SELECT * FROM /pws/zycit006                     "#EC CI_NOFIELD

          APPENDING TABLE itab_zycit006

* << Fim da inclusão

            FOR ALL ENTRIES IN itab_temp_seq_pgfat

            WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat

              AND tpfatura  = '11'.

        ENDIF.

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

      ENDIF.

* << Fim da exclusão

      LOOP AT itab_zycit263.

        v_tabix = sy-tabix.

        READ TABLE itab_zycit006 WITH KEY

...

 

...

  IF NOT itab_zycit003[] IS INITIAL.

    SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263

          WHERE nrseq = /pws/zycie001-nrseq.

    IF NOT itab_zycit263[] IS INITIAL.

      REFRESH itab_temp_seq_pgfat.

      LOOP AT itab_zycit263.

        itab_temp_seq_pgfat-nrseq_pgfat = itab_zycit263-nrseq_pgfat.

        COLLECT itab_temp_seq_pgfat.

      ENDLOOP.

      IF NOT itab_temp_seq_pgfat[] IS INITIAL.

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

        REFRESH itab_zycit006.

* << Fim da inclusão

        SELECT * FROM /pws/zycit006                     "#EC CI_NOFIELD

          INTO TABLE itab_zycit006

          FOR ALL ENTRIES IN itab_temp_seq_pgfat

          WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat

            AND nrseqce = /pws/zycit094-nrseqce.

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

        SELECT * FROM /pws/zycit006                     "#EC CI_NOFIELD

          APPENDING TABLE itab_zycit006

          FOR ALL ENTRIES IN itab_temp_seq_pgfat

          WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat

            AND tpfatura  = '11'.

* << Fim da inclusão

      ENDIF.

      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.

          DELETE itab_zycit263 INDEX v_tabix.

        ENDIF.

      ENDLOOP.

...

 

...

         /pws/zycie006-nrseq

         e_status

      TO MEMORY ID '003'.

    EXPORT itab_sele[]

      TO MEMORY ID 'IP003B'.

    IF v_status_s = 1.

      IF NOT /pws/zycie001-modalidade EQ '02'.

        IF ( /pws/zycie001-modalidade EQ '03' AND

            itab_zycit003-servico EQ 'X' ) .

        ELSE.

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

         SELECT SINGLE * FROM /pws/zycit094             "#EC CI_NOFIRST

* << Fim da exclusão

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

          SELECT SINGLE * FROM /pws/zycit094            "#EC CI_NOFIRST

* << Fim da inclusão

           WHERE nrseq = /pws/zycie001-nrseq.

          IF sy-subrc NE 0.

            MESSAGE s061 WITH text-026 text-027.

            EXIT.

          ENDIF.

        ENDIF.

      ENDIF.

      PERFORM valida_trans USING '/PWS/ZYCI003_C' ''.

    ELSE.

      MESSAGE s015 WITH text-073.

...

 

...

          ENDIF.

        ENDIF.

      ENDIF.

      REFRESH itab_zycit006. CLEAR itab_zycit006.

      REFRESH itab_temp_seq_pgfat.

      LOOP AT itab_zycit263.

        itab_temp_seq_pgfat-nrseq_pgfat = itab_zycit263-nrseq_pgfat.

        COLLECT itab_temp_seq_pgfat.

      ENDLOOP.

      IF NOT itab_temp_seq_pgfat[] IS INITIAL.

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

        REFRESH itab_zycit006.

* << Fim da inclusão

        SELECT * FROM /pws/zycit006                     "#EC CI_NOFIELD

          INTO TABLE itab_zycit006

          FOR ALL ENTRIES IN itab_temp_seq_pgfat

          WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat

            AND nrseqce = /pws/zycit094-nrseqce.

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

        IF sy-subrc NE 0.

          SELECT * FROM /pws/zycit006                   "#EC CI_NOFIELD

            INTO TABLE itab_zycit006

* << Fim da exclusão

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

        SELECT * FROM /pws/zycit006                     "#EC CI_NOFIELD

          APPENDING TABLE itab_zycit006

* << Fim da inclusão

            FOR ALL ENTRIES IN itab_temp_seq_pgfat

            WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat

              AND tpfatura  = '11'.

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

        ENDIF.

* << Fim da exclusão

      ENDIF.

      LOOP AT itab_zycit263.

        IF itab_zycit263-nrseq_pgfat IS INITIAL.

          DELETE FROM /pws/zycit263

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001I01

 

...

            WHERE nrseq = /pws/zycie001-nrseq

              AND eliminado = space.

    ENDIF.

    IF NOT itab_zycit263[] IS INITIAL.

      REFRESH itab_temp_seq_pgfat.

      LOOP AT itab_zycit263.

        itab_temp_seq_pgfat-nrseq_pgfat = itab_zycit263-nrseq_pgfat.

        COLLECT itab_temp_seq_pgfat.

      ENDLOOP.

      IF NOT itab_temp_seq_pgfat[] IS INITIAL.

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

        REFRESH itab_zycit006.

* << Fim da inclusão

        SELECT * FROM /pws/zycit006                     "#EC CI_NOFIELD

          INTO TABLE itab_zycit006

          FOR ALL ENTRIES IN itab_temp_seq_pgfat

          WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat

            AND nrseqce = /pws/zycit094-nrseqce.

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

        SELECT * FROM /pws/zycit006                     "#EC CI_NOFIELD

          APPENDING TABLE itab_zycit006

          FOR ALL ENTRIES IN itab_temp_seq_pgfat

          WHERE nrseq_pgfat EQ itab_temp_seq_pgfat-nrseq_pgfat

            AND tpfatura = '11'.

* << Fim da inclusão

      ENDIF.

      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.

          DELETE itab_zycit263 INDEX v_tabix.

        ENDIF.

      ENDLOOP.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI003F02

 

...

    MODIFY itab_zycit003 INDEX v_idx

                    TRANSPORTING ntgew vlseg_fat vlfre_fat vlreal.

  ENDLOOP.

  MODIFY /pws/zycit003 FROM TABLE itab_zycit003.

ENDFORM.

FORM dele_custo USING pcodigo ptype.

  DATA: lt   LIKE /pws/zycit036-vlreal,

        lvlr LIKE /pws/zycit036-vlreal,

        ld   LIKE /pws/zycit036-vlreal,

        ln   LIKE /pws/zycie003-ntgew.

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

  CHECK /pws/zycie006-tpfatura EQ '01'.

* << Fim da exclusão

  REFRESH: itab_zycit036, itab_zycit263, it003.

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

  IF /pws/zycie006-tpfatura EQ '01'.

* << Fim da inclusão

  IF NOT itab_zycit003[] IS INITIAL.

    SELECT * FROM /pws/zycit036 INTO TABLE itab_zycit036

             FOR ALL ENTRIES IN itab_zycit003 WHERE

             nrseq  = itab_zycit003-nrseq AND

             ebeln  = itab_zycit003-ebeln AND

             ebelp  = itab_zycit003-ebelp AND

...

 

...

                         nrseq       = it003-nrseq AND

                         ebeln       = it003-ebeln AND

                         ebelp       = it003-ebelp AND

                         nrseq_pgfat = /pws/zycie006-nrseq.

      ENDIF.

    ENDIF.

    IF sy-subrc NE 0.

      DELETE FROM /pws/zycit036

      WHERE codigo = pcodigo

        AND origem = 'FAT'

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

        AND nrseqori = /pws/zycie006-nrseq.             "#EC CI_NOFIRST

* << Fim da exclusão

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

         AND nrseqori = /pws/zycie006-nrseq.            "#EC CI_NOFIRST

* << Fim da inclusão

    ENDIF.

  ENDLOOP.

  IF sy-subrc NE 0.

    DELETE FROM /pws/zycit036

    WHERE codigo = pcodigo

      AND origem = 'FAT'

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

      AND nrseqori = /pws/zycie006-nrseq.               "#EC CI_NOFIRST

* << Fim da exclusão

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

       AND nrseqori = /pws/zycie006-nrseq.              "#EC CI_NOFIRST

* << Fim da inclusão

  ENDIF.

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

  ELSEIF /pws/zycie006-tpfatura EQ '11'.

    IF NOT itab_zycit003[] IS INITIAL.

      SELECT * FROM /pws/zycit036 INTO TABLE itab_zycit036

               FOR ALL ENTRIES IN itab_zycit003 WHERE

               nrseq  = itab_zycit003-nrseq AND

               ebeln  = itab_zycit003-ebeln AND

               ebelp  = itab_zycit003-ebelp AND

               codigo = pcodigo AND

               nrseqori = /pws/zycie006-nrseq AND

               origem = 'FAT'.

    ENDIF.

    MOVE itab_zycit003_ini[] TO it003[].

    DESCRIBE TABLE it003 LINES v_line.

    LOOP AT it003.

      v_idx = sy-tabix.

      READ TABLE itab_zycit036 WITH KEY ebeln = it003-ebeln

                                        ebelp = it003-ebelp.

      IF sy-subrc EQ 0.

        lvlr = ( it003-vlreal    * it003-toinv ) +

                 it003-vlfre_fat + it003-vlseg_fat.

        PERFORM trata_decimais USING    itab_zycit036-waers

                                 CHANGING lvlr.

        itab_zycit036-vlreal = itab_zycit036-vlreal - lvlr.

        DELETE FROM /pws/zycit036

                        WHERE nrseq  = it003-nrseq

                          AND ebeln  = it003-ebeln

                          AND ebelp  = it003-ebelp

                          AND codigo = pcodigo

                          AND origem = 'FAT'

                          AND nrseqori = /pws/zycie006-nrseq.

        IF ptype = 'X'.

          UPDATE /pws/zycit263 SET eliminado   = 'X' WHERE

                           nrseq       = it003-nrseq AND

                           ebeln       = it003-ebeln AND

                           ebelp       = it003-ebelp AND

                           nrseq_pgfat = /pws/zycie006-nrseq.

        ENDIF.

      ENDIF.

      IF sy-subrc NE 0.

        DELETE FROM /pws/zycit036

        WHERE codigo = pcodigo

          AND origem = 'FAT'

         AND nrseqori = /pws/zycie006-nrseq.            "#EC CI_NOFIRST

      ENDIF.

    ENDLOOP.

    IF sy-subrc NE 0.

      DELETE FROM /pws/zycit036

      WHERE codigo = pcodigo

        AND origem = 'FAT'

       AND nrseqori = /pws/zycie006-nrseq.              "#EC CI_NOFIRST

    ENDIF.

  ENDIF.

* << Fim da inclusão

  IF ptype = 'X'.

    CLEAR /pws/zycie006.

  ENDIF.

  COMMIT WORK.

ENDFORM.

FORM executa_recebimento.

  DATA: v_lfsnr_old   LIKE /pws/zycie006-lfsnr,

        v_lfsnr       LIKE /pws/zycie006-lfsnr,

        v_indice(02)  TYPE n                  ,

        v_erro                                ,

...

 

...

          MESSAGE e039 WITH text-171.

        ENDIF.

      ENDIF.

    ENDIF.

  ENDIF.

ENDFORM.

FORM atualiza_fb08_fat.

  PERFORM verifica_ano_contabil USING /pws/zycie006-dtincl

                                CHANGING v_ano.

  IF v_parcela = 'X'.

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

    SELECT SINGLE *

      FROM bkpf

      WHERE belnr EQ itab_zycit132-belnr_p

        AND gjahr EQ v_ano

        AND bukrs EQ /pws/zycie006-bukrs.

* << Fim da exclusão

    READ TABLE itab_zycbt032 WITH KEY tcode  = 'FB08'

                                      tabela = '/PWS/ZYCIT132'

                                      cpochv = /pws/zycie006-nrseq

                                      tpmsg  = 'S'.

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

    IF sy-subrc EQ 0 AND  NOT bkpf-stblg IS INITIAL.

* << Fim da exclusão

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

    IF sy-subrc = 0.

* << Fim da inclusão

      MESSAGE i030 WITH v_belnr_ant.

      IF okcode NE 'DELE'.

        CLEAR: /pws/zycie006-statusp , /pws/zycie006-belnr_p.

        MODIFY /pws/zycit006 FROM /pws/zycie006.

        v_rev = 'X'.

        PERFORM clear_date_batch.

        IF v_estorno IS INITIAL.

          IF itab_zycit132-mark NE 'X' AND itab_zycit132-status NE 'X'.

            PERFORM dele_custo USING /pws/zycit031-inco1_ci space.

            PERFORM fill_date_f-43_f-02.

...

 

...

        itab_zycit132-status = 'X'.

        itab_zycit132-eliminado = 'X'.

        MODIFY itab_zycit132.

      ENDIF.

    ELSE.

      LOOP AT itab_zycbt032.

        MESSAGE i015 WITH itab_zycbt032-msg+0(50)

                          itab_zycbt032-msg+50(50).

      ENDLOOP.

      PERFORM clear_date_batch.

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

      PERFORM verifica_estorno_r3 CHANGING v_erro

                                           v_answer.

      IF v_erro = 'S'.

        v_erro = 'X'.

        EXIT.

      ENDIF.

      IF v_answer = 'J'.

* << Fim da inclusão

      CLEAR: /pws/zycie006-belnr_p, /pws/zycie006-statusp.

      MODIFY /pws/zycit006 FROM /pws/zycie006.

      COMMIT WORK.

      PERFORM dele_custo USING /pws/zycit031-inco1_ci space.

      PERFORM fill_date_f-43_f-02.

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

      ELSE.

        v_erro = 'X'.

* << Fim da inclusão

    ENDIF.

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

    ENDIF.

* << Fim da inclusão

  ELSE.

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

    SELECT SINGLE *

      FROM bkpf

      WHERE belnr EQ /pws/zycie006-belnr_p

        AND gjahr EQ v_ano

        AND bukrs EQ /pws/zycie006-bukrs.

* << Fim da exclusão

    READ TABLE itab_zycbt032 WITH KEY tcode  = 'FB08'

                                      tabela = '/PWS/ZYCIT006'

                                      cpochv = /pws/zycie006-nrseq

                                      tpmsg  = 'S'.

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

    IF sy-subrc EQ 0 AND NOT bkpf-stblg IS INITIAL.

* << Fim da exclusão

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

    IF sy-subrc = 0.

* << Fim da inclusão

      MESSAGE i030 WITH v_belnr_ant.

      IF okcode NE 'DELE'.

        CLEAR: /pws/zycie006-statusp , /pws/zycie006-belnr_p.

        MODIFY /pws/zycit006 FROM /pws/zycie006.

        PERFORM clear_date_batch.

        IF v_estorno IS INITIAL.

          PERFORM dele_custo USING /pws/zycit031-inco1_ci space.

          PERFORM fill_date_f-43_f-02.

        ENDIF.

      ENDIF.

    ELSE.

      LOOP AT itab_zycbt032.

        MESSAGE i015 WITH itab_zycbt032-msg+0(50)

                          itab_zycbt032-msg+50(50).

      ENDLOOP.

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

      PERFORM clear_date_batch.

      IF okcode NE 'DELE'.

* << Fim da exclusão

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

      PERFORM verifica_estorno_r3 CHANGING v_erro

                                           v_answer.

      IF v_erro = 'S'.

        v_erro = 'X'.

        EXIT.

      ENDIF.

      IF v_answer = 'J'.

* << Fim da inclusão

        CLEAR: /pws/zycie006-belnr_p, /pws/zycie006-statusp.

        MODIFY /pws/zycit006 FROM /pws/zycie006.

        COMMIT WORK.

        PERFORM dele_custo USING /pws/zycit031-inco1_ci space.

        PERFORM fill_date_f-43_f-02.

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

      ELSE.

        v_erro = 'X'.

* << Fim da inclusão

      ENDIF.

...