CE PLUS - Nota 003154

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Recebimento

Data/Hora da Publicação: 27/02/2007 00:00:00

Data/Hora Última Alteração: 23/02/2011 09:53:06

Descrição da Nota: AJUSTADO PREENCHIMENTO DAS TABELAS DE DRAWBACK NO RECEBIMENTO COM LOTE

Sintoma

Quando está parametrizado para utilizar lote os itens que não possuem lote não são adicionados asa

tabelas de drawback e não está controlando corretamente o saldo dos itens quando utiliza nota de

remessa.

 

 

Solução

Corrigir calculo da proporsão dos itens com remessa e ajuste para não descartar itens que não são

sujeitos a lote.

 

Versões Tratadas

6.0


Pré-Requisitos

Produto:

Nota

Descrição

AJUSTE PARA SALVAR A NF GLOBAL AO INVÉS DA NF DE REMESSA

AJUSTE NO RECEBIMENTO VINCULADO AO ATO CONCESSÓRIO

Informações Complementares

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

Nota Número 03154 Data: 27/02/2007 Hora: 10:05:05

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

 

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

Nota Número              : 03154

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 6.0

Pacote                   : 00026

Agrupamento              : 00154

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

Referência às notas relacionadas:

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

 

02156  - 00001 - 6.0    - 00025  - AJUSTE NO RECEBIMENTO VINCULADO AO ATO CONCESSÓRIO

02469  - 00002 - 6.0    - 00025  - AJUSTE PARA SALVAR A NF GLOBAL AO INVÉS DA NF DE REMESSA

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

AJUSTADO PREENCHIMENTO DAS TABELAS DE DRAWBACK NO RECEBIMENTO COM LOTE

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

Palavras Chave:

RECEBIMENTO - LOTE - DRAWBACK - PREENCHIMENTO - TABELA

 

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

Objetos da nota:

REPS /PWS/MZYCI017F02

 

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

Modificações efetuadas em REPS /PWS/MZYCI017F02

 

...

    DELETE it_zycit270 WHERE belnr EQ it_zycit270-belnr.

  ENDIF.

  LOOP AT it_zycit270.

    INSERT INTO /pws/zycit270 VALUES it_zycit270.

  ENDLOOP.

  CLEAR it_zycit270. REFRESH it_zycit270.

ENDFORM.

FORM adiciona_saldo_ato.

  DATA: v_qtdpropor LIKE /pws/zycit245-qtd_iten,

        v_qtd_nftp    TYPE /pws/zycit044-qtd_item,

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

        v_meins TYPE /pws/zycit003-meins,

* << Fim da inclusão

        v_variacfob   TYPE /pws/zycit376-vlfob,

        wa_zycit279 TYPE /pws/zycit279,

        v_cob_camb  TYPE c.

  DATA: itab_zycit078 LIKE /pws/zycit078 OCCURS 0 WITH HEADER LINE.

  DATA: itab_zycit376 LIKE /pws/zycit376 OCCURS 0 WITH HEADER LINE.

  DATA: itab_zycit245 LIKE /pws/zycit245 OCCURS 0 WITH HEADER LINE.

  DATA: BEGIN OF itab_matuse1 OCCURS 0.

          INCLUDE STRUCTURE itab_matuse.

  DATA: ntgew LIKE ekpo-ntgew,

        gewei LIKE ekpo-gewei.

...

 

...

                 AND ebeln = itab_itens_nf-ebeln

                 AND ebelp = itab_itens_nf-ebelp.

  ENDIF.

  IF NOT itab_zycit042[] IS INITIAL.

    SELECT *

    FROM j_1bnfdoc

    INTO TABLE itab_j_1bnfdoc

    FOR ALL ENTRIES IN itab_zycit042

    WHERE docnum = itab_zycit042-docnum.

  ENDIF.

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

  IF itab_zycit100[] IS INITIAL.

* << Fim da exclusão

    SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100

        WHERE nrseqdi EQ /pws/zycit085-nrseqdi.

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

  ENDIF.

* << Fim da exclusão

  IF NOT itab_zycit003[] IS INITIAL.

    FREE itab_matuse1.

    SELECT ebeln ebelp matnr bwtar j_1bmatuse

           knttp werks umrez umren lmein ntgew gewei

           FROM ekpo INTO CORRESPONDING FIELDS OF TABLE itab_matuse1

...

 

...

                                      ebelp = itab_itens_nf-ebelp.

    READ TABLE itab_j_1bnfdoc WITH KEY docnum = itab_zycit042-docnum.

    v_qtd_nftp = itab_itens_nf-qtd_item.

    READ TABLE itab_matuse1   WITH KEY ebeln = itab_zycit003-ebeln

                                      ebelp = itab_zycit003-ebelp.

    itab_matuse1-ntgew = itab_matuse1-ntgew * itab_zycit003-qtd_iten.

    READ TABLE itab_zycit078 WITH KEY nrseqli = itab_zycit003-nrseqli.

    READ TABLE itab_zycit100 WITH KEY nrseq = itab_zycit003-nrseq

                                      ebeln = itab_zycit003-ebeln

                                      ebelp = itab_zycit003-ebelp.

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

    v_meins = itab_itens_nf-meins.

* << Fim da inclusão

    PERFORM carrega_umncm_real USING itab_zycit003-matnr

                            CHANGING itab_itens_nf-meins

                                     itab_itens_nf-qtd_item.

    PERFORM carrega_umncm_real USING itab_zycit003-matnr

                            CHANGING itab_zycit003-meins

                                     itab_zycit003-qtd_iten.

    READ TABLE itab_zycit279 WITH KEY nrseq = itab_zycit003-nrseq

                                      ebeln = itab_zycit003-ebeln

                                      ebelp = itab_zycit003-ebelp.

    IF sy-subrc = 0 AND /pws/zycit321-lote EQ space.

...

 

...

      .

      .

      PERFORM taxa_converte USING    /pws/zycit001-waers

                                     /pws/zycit085-dttax

                            CHANGING v_taxa.

      itab_zycit279-valor = ( itab_zycit100-vlfob * v_taxa ) /

                itab_zycit003-qtd_iten.

      IF /pws/zycit321-lote IS INITIAL.

        APPEND itab_zycit279.

      ELSE.

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

        READ TABLE itab_zycit223 WITH KEY

                                  nrseqnf   = itab_itens_nf-nrseqnf

                                  nrseq     = itab_itens_nf-nrseq

                                  nfglobal  = itab_itens_nf-nfglobal

                                  nfremessa = itab_itens_nf-nfremessa

                                  ebeln     = itab_itens_nf-ebeln

                                  ebelp     = itab_itens_nf-ebelp .

        IF sy-subrc NE 0.

          READ TABLE itab_zycit279 WITH KEY nrseq = itab_zycit003-nrseq

                                            ebeln = itab_zycit003-ebeln

                                            ebelp = itab_zycit003-ebelp.

          IF sy-subrc = 0.

            itab_zycit279-slqtde =

                     itab_zycit279-slqtde + itab_itens_nf-qtd_item.

            IF itab_zycit279-slqtde > 0.

              itab_zycit279-esgotado = space.

            ENDIF.

            MODIFY itab_zycit279 INDEX sy-tabix.

          ENDIF.

          IF /pws/zycit321-lote EQ '1'.

            SELECT SINGLE charg FROM mseg

                  INTO itab_zycit279-lote

                    WHERE mblnr EQ /pws/zycie041-mblnr_mb01

                      AND ebeln EQ itab_itens_nf-ebeln

                      AND ebelp EQ itab_itens_nf-ebelp.

          ENDIF.

          APPEND itab_zycit279.

          CONTINUE.

        ENDIF.

* << Fim da inclusão

        wa_zycit279 = itab_zycit279.

        LOOP AT itab_zycit223 WHERE

                              nrseqnf   EQ itab_itens_nf-nrseqnf

                          AND nrseq     EQ itab_itens_nf-nrseq

                          AND nfglobal  EQ itab_itens_nf-nfglobal

                          AND nfremessa EQ itab_itens_nf-nfremessa

                          AND ebeln     EQ itab_itens_nf-ebeln

                          AND ebelp     EQ itab_itens_nf-ebelp .

          IF /pws/zycit321-lote EQ '1'.

            wa_zycit279-lote = itab_zycit223-lote.

          ELSE.

            wa_zycit279-lote = itab_zycit223-lote_forn.

          ENDIF.

          READ TABLE itab_zycit279 WITH KEY nrseq = itab_zycit279-nrseq

                                            ebeln = itab_zycit279-ebeln

                                            ebelp = itab_zycit279-ebelp

                                            lote  = wa_zycit279-lote.

          IF sy-subrc EQ 0.

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

            itab_zycit279-qtd_iten = itab_zycit279-qtd_iten +

                                     itab_zycit223-qtde.

* << Fim da inclusão

            PERFORM carrega_umncm_real USING itab_zycit003-matnr

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

                                   CHANGING itab_itens_nf-meins

* << Fim da exclusão

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

                                   CHANGING v_meins

* << Fim da inclusão

                                        itab_zycit223-qtde.

            itab_zycit279-slqtde =

                          itab_zycit279-slqtde + itab_zycit223-qtde.

            IF itab_zycit279-slqtde > 0.

              itab_zycit279-esgotado = space.

            ENDIF.

            MODIFY itab_zycit279 TRANSPORTING  slqtde esgotado

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

                                      qtd_iten

* << Fim da inclusão

                                      WHERE nrseq = itab_zycit279-nrseq

                                        AND ebeln = itab_zycit279-ebeln

                                        AND ebelp = itab_zycit279-ebelp

                                        AND lote  = wa_zycit279-lote.

          ELSE.

            itab_zycit279 = wa_zycit279.

            itab_zycit279-qtd_iten = itab_zycit223-qtde.

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

            PERFORM carrega_umncm_real USING itab_zycit003-matnr

                                   CHANGING v_meins

                                        itab_zycit223-qtde.

* << Fim da inclusão

            itab_zycit279-ntgew      = itab_zycit279-ntgew *

                                    ( itab_zycit223-qtde /

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

                                               itab_zycit003-qtd_iten ).

* << Fim da exclusão

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

                                         itab_itens_nf-qtd_item ).

* << Fim da inclusão

            itab_zycit279-vltot      = itab_zycit279-vltot *

                                    ( itab_zycit223-qtde /

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

                                               itab_zycit003-qtd_iten ).

* << Fim da exclusão

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

                                         itab_itens_nf-qtd_item ).

* << Fim da inclusão

            itab_zycit279-vlseg      = itab_zycit279-vlseg *

                                    ( itab_zycit223-qtde /

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

                                               itab_zycit003-qtd_iten ).

* << Fim da exclusão

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

                                         itab_itens_nf-qtd_item ).

* << Fim da inclusão

            itab_zycit279-vlfrete    = itab_zycit279-vlfrete *

                                    ( itab_zycit223-qtde /

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

                                               itab_zycit003-qtd_iten ).

* << Fim da exclusão

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

                                         itab_itens_nf-qtd_item ).

* << Fim da inclusão

            itab_zycit279-slqtde     = itab_zycit279-slqtde *

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

                                    ( itab_zycit223-qtde / v_qtd_nftp ).

* << Fim da exclusão

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

                                    ( itab_zycit223-qtde /

                                         itab_itens_nf-qtd_item ).

* << Fim da inclusão

            itab_zycit279-menge      = itab_zycit279-menge *

                                    ( itab_zycit223-qtde /

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

                                               itab_zycit003-qtd_iten ).

* << Fim da exclusão

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

                                         itab_itens_nf-qtd_item ).

* << Fim da inclusão

            itab_zycit279-baseii     = itab_zycit279-baseii *

                                    ( itab_zycit223-qtde /

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

                                               itab_zycit003-qtd_iten ).

* << Fim da exclusão

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

                                         itab_itens_nf-qtd_item ).

* << Fim da inclusão

            itab_zycit279-baseipi    = itab_zycit279-baseipi *

                                    ( itab_zycit223-qtde /

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

                                               itab_zycit003-qtd_iten ).

* << Fim da exclusão

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

                                         itab_itens_nf-qtd_item ).

* << Fim da inclusão

            itab_zycit279-basecofins = itab_zycit279-basecofins *

                                    ( itab_zycit223-qtde /

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

                                               itab_zycit003-qtd_iten ).

* << Fim da exclusão

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

                                         itab_itens_nf-qtd_item ).

* << Fim da inclusão

            itab_zycit279-basepis    = itab_zycit279-basepis *

                                    ( itab_zycit223-qtde /

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

                                               itab_zycit003-qtd_iten ).

* << Fim da exclusão

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

                                         itab_itens_nf-qtd_item ).

* << Fim da inclusão

            itab_zycit279-baseicms   = itab_zycit279-baseicms *

                                    ( itab_zycit223-qtde /

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

                                               itab_zycit003-qtd_iten ).

* << Fim da exclusão

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

                                         itab_itens_nf-qtd_item ).

* << Fim da inclusão

            COLLECT itab_zycit279.

          ENDIF.

...

 

...

          WHERE nrseqd EQ itab_zycit376d-nrseqd

            AND nritem EQ itab_zycit376d-nritem.

    ENDIF.

  ENDIF.

  LOOP AT itab_itens_nf.

    READ TABLE itab_matuse WITH KEY ebeln = itab_itens_nf-ebeln

                                    ebelp = itab_itens_nf-ebelp.

    READ TABLE itab_zycit279 WITH KEY nrseq = itab_itens_nf-nrseq

                                      ebeln = itab_itens_nf-ebeln

                                      ebelp = itab_itens_nf-ebelp.

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

    IF sy-subrc = 0.

* << Fim da exclusão

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

    IF sy-subrc = 0 .

* << Fim da inclusão

      v_tabix1 = sy-tabix.

      READ TABLE itab_zycit376d WITH KEY ebeln = itab_itens_nf-ebeln

                                        ebelp = itab_itens_nf-ebelp.

      READ TABLE itab_zycit245d WITH KEY nrseqd = itab_zycit376d-nrseqd

                                         nritem = itab_zycit376d-nritem.

      READ TABLE itab_zycit003 WITH KEY nrseq = itab_itens_nf-nrseq

                                        ebeln = itab_itens_nf-ebeln

                                        ebelp = itab_itens_nf-ebelp.

      CLEAR: v_variacfobd.

      v_variacfobd = itab_zycit279-menge *

      ( ( itab_zycit376d-vlfob / itab_zycit376d-qtd_apro ) -

        ( itab_zycit279-vltot / itab_zycit279-menge    ) ).

      itab_zycit245d-vlvinc = itab_zycit245d-vlvinc + v_variacfobd.

      UPDATE /pws/zycit245 SET vlvinc = itab_zycit245d-vlvinc

                           WHERE nrseqd EQ itab_zycit245d-nrseqd

                             AND nritem EQ itab_zycit245d-nritem.

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

      IF /pws/zycit321-lote EQ space OR

         itab_zycit279-lote IS INITIAL.

* << Fim da inclusão

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

      IF /pws/zycit321-lote EQ space.

* << Fim da exclusão

        PERFORM carrega_umncm_real USING itab_zycit003-matnr

                                CHANGING itab_itens_nf-meins

                                         itab_itens_nf-qtd_item.

        itab_zycit279-slqtde =

                          itab_zycit279-slqtde - itab_itens_nf-qtd_item.

        IF itab_zycit279-slqtde < 0.

          itab_zycit279-slqtde = 0.

        ENDIF.

        IF itab_zycit279-slqtde = 0.

          DELETE FROM /pws/zycit279 WHERE nrseq = itab_itens_nf-nrseq

...

 

...

        ENDIF.

        MODIFY itab_zycit279 INDEX v_tabix1.

      ELSE.

        LOOP AT itab_zycit223 WHERE

                              nrseqnf   EQ itab_itens_nf-nrseqnf

                          AND nrseq     EQ itab_itens_nf-nrseq

                          AND nfglobal  EQ itab_itens_nf-nfglobal

                          AND nfremessa EQ itab_itens_nf-nfremessa

                          AND ebeln     EQ itab_itens_nf-ebeln

                          AND ebelp     EQ itab_itens_nf-ebelp .

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

          PERFORM carrega_umncm_real USING itab_zycit003-matnr

                                    CHANGING itab_itens_nf-meins

                                             itab_zycit223-qtde.

* << Fim da exclusão

          IF /pws/zycit321-lote EQ '1'.

          READ TABLE itab_zycit279 WITH KEY nrseq = itab_itens_nf-nrseq

                                            ebeln = itab_itens_nf-ebeln

                                            ebelp = itab_itens_nf-ebelp

                                             lote  = itab_zycit223-lote.

          ELSE.

          READ TABLE itab_zycit279 WITH KEY nrseq = itab_itens_nf-nrseq

                                            ebeln = itab_itens_nf-ebeln

                                            ebelp = itab_itens_nf-ebelp

                                        lote  = itab_zycit223-lote_forn.

          ENDIF.

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

          v_tabix = sy-tabix.

          itab_zycit279-qtd_iten = itab_zycit279-qtd_iten -

                                   itab_zycit223-qtde.

          PERFORM carrega_umncm_real USING itab_zycit003-matnr

                                    CHANGING itab_itens_nf-meins

                                             itab_zycit223-qtde.

* << Fim da inclusão

          itab_zycit279-slqtde =

                    itab_zycit279-slqtde - itab_zycit223-qtde.

          IF itab_zycit279-slqtde < 0.

            itab_zycit279-slqtde = 0.

          ENDIF.

          IF itab_zycit279-slqtde = 0.

            IF /pws/zycit321-lote EQ '1'.

            DELETE FROM /pws/zycit279 WHERE nrseq = itab_itens_nf-nrseq

                                        AND ebeln = itab_itens_nf-ebeln

                                        AND ebelp = itab_itens_nf-ebelp

...

 

...

                                        AND ebelp = itab_itens_nf-ebelp

                                    AND lote  = itab_zycit223-lote_forn.

            DELETE  itab_zycit279     WHERE nrseq = itab_itens_nf-nrseq

                                        AND ebeln = itab_itens_nf-ebeln

                                        AND ebelp = itab_itens_nf-ebelp

                                    AND lote  = itab_zycit223-lote_forn.

            ENDIF.

            CLEAR itab_zycit279.

            CONTINUE.

          ENDIF.

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

          MODIFY itab_zycit279 INDEX sy-tabix.

* << Fim da exclusão

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

          MODIFY itab_zycit279 INDEX v_tabix .

* << Fim da inclusão

        ENDLOOP.

      ENDIF.

    ENDIF.

  ENDLOOP.

  IF NOT itab_zycit279[] IS INITIAL.

    MODIFY /pws/zycit279 FROM TABLE itab_zycit279.

  ENDIF.

ENDFORM.

FORM lock_record.

  CLEAR v_lock.

...