CE PLUS - Nota 007261

Módulo: DRAWBACK

Funcionalidade: Entrada de NF Mercado Interno

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

Data/Hora Última Alteração: 17/02/2011 15:28:30

Descrição da Nota: AJUSTE NA VINCULAÇÃO E ESTORNO DA VINCULAÇÃO AO ATO CONCESSÓRIO

Sintoma

Ao desvincular o ato concessório e eliminar a entrada de nota fiscal o programa não devolve o saldo

disponivel para vinculação para o item do ato concessório.

 

 

Solução

Atualização do programa de nota fiscal para ao salvar ou excluir a entrada de nota fiscal o programa

retorne o saldo para o registro gravado no banco de dados.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

ENTRADA DE NOTAS NOS ATOS CONCESSÓRIOS DO TIPO SUSPENSÃO

Informações Complementares

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

Nota Número 07261 Data: 05/09/2008 Hora: 10:30:47

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

 

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

Nota Número              : 07261

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00006

Agrupamento              : 00063

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

Referência às notas relacionadas:

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

 

07060  - 00001 - 7.0    - 00006  - ENTRADA DE NOTAS NOS ATOS CONCESSÓRIOS DO TIPO SUSPENSÃO

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

AJUSTE NA VINCULAÇÃO E ESTORNO DA VINCULAÇÃO AO ATO CONCESSÓRIO

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

Palavras Chave:

VINCULAÇÃO - DESVINCULAÇÃO - SALDO - ENTRADA - NOTA - FISCAL - ATO

CONCESSÓRIO - /PWS/SAPMZYCI052

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

Objetos da nota:

REPS /PWS/MZYCI052F01

REPS /PWS/MZYCI052I01

 

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

Modificações efetuadas em REPS /PWS/MZYCI052F01

 

...

 

FORM salvar_dados.

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

  CLEAR: itab_zycit245, itab_zycit330.

  LOOP AT itab_zycit330 WHERE nrseqd EQ space.

    MESSAGE e104 WITH text-016.

    EXIT.

  ENDLOOP.

  IF NOT itab_zycit330 IS INITIAL.

    EXIT.

  ENDIF.

* << Fim da inclusão

  MODIFY /pws/zycit329 FROM /pws/zycie329.

  REFRESH: itab_zycit330_des.

  SELECT * FROM /pws/zycit330 INTO TABLE itab_zycit330_des

      WHERE docnum = /pws/zycie329-docnum.

  REFRESH itab_zycit245_des.

  IF NOT itab_zycit330_des[] IS INITIAL.

    SELECT * FROM /pws/zycit245 INTO TABLE itab_zycit245_des

        FOR ALL ENTRIES IN itab_zycit330_des

        WHERE nrseqd EQ itab_zycit330_des-nrseqd.

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

    REFRESH itab_zycit279_d.

    SELECT * FROM /pws/zycit279 INTO TABLE itab_zycit279_d

        FOR ALL ENTRIES  IN itab_zycit330_des

        WHERE docnum EQ itab_zycit330_des-docnum

          AND buzei  EQ itab_zycit330_des-buzei.

* << Fim da inclusão

  ENDIF.

  IF v_tcode EQ '/PWS/ZYCI052_A'.

    DELETE FROM /pws/zycit330 WHERE docnum = /pws/zycie329-docnum.

  ENDIF.

  MODIFY /pws/zycit330 FROM TABLE itab_zycit330.

  IF NOT itab_zycit330[] IS INITIAL.

    SELECT ebeln ebelp matnr FROM ekpo INTO TABLE itab_ekpo

           FOR ALL ENTRIES IN itab_zycit330

           WHERE ebeln = itab_zycit330-ebeln AND

                 ebelp = itab_zycit330-ebelp.

    SELECT * FROM j_1bnflin INTO TABLE itab_j_1bnflin

        WHERE docnum EQ /pws/zycie329-docnum.

    REFRESH itab_zycit245.

    SELECT * FROM /pws/zycit245 INTO TABLE itab_zycit245

        FOR ALL ENTRIES IN itab_zycit330

        WHERE nrseqd EQ itab_zycit330-nrseqd

          AND nritem EQ itab_zycit330-nritem.

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

  ENDIF.

  IF v_tcode EQ '/PWS/ZYCI052_C' OR

     v_tcode EQ '/PWS/ZYCI052_A'.

    IF NOT itab_zycit279_d[] IS INITIAL.

      LOOP AT itab_zycit279_d.

        READ TABLE itab_zycit330_des

                    WITH KEY docnum = itab_zycit279_d-docnum

                             buzei  = itab_zycit279_d-buzei.

        READ TABLE itab_zycit245_des

                      WITH KEY nrseqd = itab_zycit330_des-nrseqd

                               nritem = itab_zycit330_des-nritem.

        itab_zycit245_des-vlvinc = itab_zycit245_des-vlvinc -

                                    itab_zycit279_d-vltot.

        IF /pws/zycit321-apr_imp IS INITIAL OR

           itab_zycit244-tipo EQ 'F'.

          itab_zycit245_des-vinculado =

                 itab_zycit245_des-vinculado - itab_zycit279_d-menge.

        ENDIF.

        IF itab_zycit245_des-vinculado <= 0.

          itab_zycit245_des-vinculado = 0.

        ENDIF.

        IF itab_zycit245_des-vlvinc <= 0.

          itab_zycit245_des-vlvinc = 0.

        ENDIF.

        MODIFY itab_zycit245_des TRANSPORTING vinculado vlvinc

                          WHERE nrseqd EQ itab_zycit330_d-nrseqd

                          AND   nritem EQ itab_zycit330_d-nritem.

        itab_zycit245 = itab_zycit245_des.

        MODIFY itab_zycit245 TRANSPORTING vinculado vlvinc

                          WHERE nrseqd EQ itab_zycit330_d-nrseqd

                          AND   nritem EQ itab_zycit330_d-nritem.

        UPDATE /pws/zycit245

            SET vlvinc    = itab_zycit245_des-vlvinc

                vinculado = itab_zycit245_des-vinculado

                    WHERE nrseqd EQ itab_zycit245_des-nrseqd

                      AND nritem EQ itab_zycit245_des-nritem.

      ENDLOOP.

      DELETE /pws/zycit279 FROM TABLE itab_zycit279_d.

* << Fim da inclusão

  ENDIF.

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

  IF v_tcode EQ '/PWS/ZYCI052_C'.

* << Fim da exclusão

    REFRESH: itab_zycit279.

    LOOP AT itab_zycit330.

      READ TABLE itab_ekpo WITH KEY ebeln = itab_zycit330-ebeln

                                    ebelp = itab_zycit330-ebelp.

      IF sy-subrc EQ 0.

        MOVE itab_ekpo-matnr TO /pws/zycit279-matnr.

...

 

...

      /pws/zycit279-vlfrete = itab_j_1bnflin-netfre.

      /pws/zycit279-vlseg   = itab_j_1bnflin-netins.

      /pws/zycit279-um_base = /pws/zycit279-meins.

      PERFORM  converte_um_base   USING /pws/zycit279-matnr

                               CHANGING /pws/zycit279-um_base

                                        /pws/zycit279-qtd_iten.

      DELETE FROM /pws/zycit279 WHERE docnum EQ itab_zycit330-docnum

                       AND buzei  EQ itab_zycit330-buzei.

      MODIFY /pws/zycit279 FROM /pws/zycit279.

      APPEND /pws/zycit279 TO itab_zycit279.

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

      CLEAR: itab_zycit330_des.

      READ TABLE itab_zycit330_des WITH KEY

                                    docnum = itab_zycit330-docnum

                                    buzei  = itab_zycit330-buzei .

      IF sy-subrc EQ 0 AND

         itab_zycit330_des-nrseqd EQ itab_zycit330-nrseqd.

        CONTINUE.

      ELSE.

        CLEAR: itab_zycit245_des.

        READ TABLE itab_zycit245_des WITH KEY

                               nrseqd  = itab_zycit330-nrseqd

                               nritem = itab_zycit330-nritem.

        IF sy-subrc EQ 0.

          itab_zycit245_des-vlvinc = itab_zycit245_des-vlvinc -

                                            /pws/zycit279-vltot.

          itab_zycit245_des-vinculado = itab_zycit245_des-vinculado -

                                               itab_zycit330-menge.

          UPDATE /pws/zycit245

                  SET vlvinc    = itab_zycit245_des-vlvinc

                      vinculado = itab_zycit245_des-vinculado

                          WHERE nrseqd EQ itab_zycit245_des-nrseqd

                            AND nritem EQ itab_zycit245_des-nritem.

          MODIFY itab_zycit245_des TRANSPORTING vlvinc vinculado

                  WHERE nrseqd EQ itab_zycit245_des-nrseqd

                    AND nritem EQ itab_zycit245_des-nritem.

          READ TABLE itab_zycit245 WITH KEY

                                 nrseqd  = itab_zycit245_des-nrseqd

                                 nritem  = itab_zycit245_des-nritem.

          IF sy-subrc EQ 0.

            itab_zycit245-vlvinc = itab_zycit245_des-vlvinc.

            itab_zycit245-vinculado = itab_zycit245_des-vinculado.

            MODIFY itab_zycit245 TRANSPORTING vlvinc vinculado

                  WHERE nrseqd EQ itab_zycit245_des-nrseqd

                    AND nritem EQ itab_zycit245_des-nritem.

          ENDIF.

        ENDIF.

      ENDIF.

* << Fim da exclusão

      CLEAR: itab_zycit245.

      IF /pws/zycit321-apr_imp IS INITIAL OR itab_zycit244-tipo EQ 'F'.

        READ TABLE itab_zycit245 WITH KEY

                               nrseqd = itab_zycit330-nrseqd

                               nritem = itab_zycit330-nritem.

      ELSE.

        READ TABLE itab_zycit245 WITH KEY

                               nrseqd  = itab_zycit330-nrseqd.

      ENDIF.

      IF sy-subrc EQ 0.

...

 

...

                                               itab_zycit330-menge.

        ENDIF.

        UPDATE /pws/zycit245

                SET vlvinc    = itab_zycit245-vlvinc

                    vinculado = itab_zycit245-vinculado

                        WHERE nrseqd EQ itab_zycit245-nrseqd

                          AND nritem EQ itab_zycit245-nritem.

        MODIFY itab_zycit245 TRANSPORTING vlvinc vinculado

                             WHERE nrseqd EQ itab_zycit245-nrseqd

                               AND nritem EQ itab_zycit245-nritem.

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

      ENDIF.

    ENDLOOP.

    IF NOT itab_zycit279_d[] IS INITIAL.

      LOOP AT itab_zycit279_d.

    READ TABLE itab_zycit330_d WITH KEY docnum = itab_zycit279_d-docnum

                                         buzei  = itab_zycit279_d-buzei.

      READ TABLE itab_zycit245 WITH KEY nrseqd = itab_zycit330_d-nrseqd

                                        nritem = itab_zycit330_d-nritem.

    itab_zycit245-vlvinc = itab_zycit245-vlvinc - itab_zycit279_d-vltot.

        IF /pws/zycit321-apr_imp IS INITIAL.

          itab_zycit245-vinculado =

                        itab_zycit245-vinculado - itab_zycit279_d-menge.

* << Fim da exclusão

        ENDIF.

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

        IF itab_zycit245-vinculado <= 0.

          itab_zycit245-vinculado = 0.

        ENDIF.

        IF itab_zycit245-vlvinc <= 0.

          itab_zycit245-vlvinc = 0.

        ENDIF.

        MODIFY itab_zycit245 TRANSPORTING vinculado vlvinc

                          WHERE nrseqd EQ itab_zycit330_d-nrseqd

                          AND   nritem EQ itab_zycit330_d-nritem.

        UPDATE /pws/zycit245

            SET vlvinc    = itab_zycit245-vlvinc

                vinculado = itab_zycit245-vinculado

                    WHERE nrseqd EQ itab_zycit245-nrseqd

                      AND nritem EQ itab_zycit245-nritem.

* << Fim da exclusão

      ENDLOOP.

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

      DELETE /pws/zycit279 FROM TABLE itab_zycit279_d.

    ENDIF.

  ELSEIF v_tcode EQ '/PWS/ZYCI052_A'.

    IF NOT itab_zycit279_d[] IS INITIAL.

      LOOP AT itab_zycit279_d.

    READ TABLE itab_zycit330_d WITH KEY docnum = itab_zycit279_d-docnum

                                         buzei  = itab_zycit279_d-buzei.

      READ TABLE itab_zycit245 WITH KEY nrseqd = itab_zycit330_d-nrseqd

                                        nritem = itab_zycit330_d-nritem.

    itab_zycit245-vlvinc = itab_zycit245-vlvinc - itab_zycit279_d-vltot.

        IF /pws/zycit321-apr_imp IS INITIAL.

          itab_zycit245-vinculado =

                        itab_zycit245-vinculado - itab_zycit279_d-menge.

        ENDIF.

        IF itab_zycit245-vinculado <= 0.

          itab_zycit245-vinculado = 0.

        ENDIF.

        IF itab_zycit245-vlvinc <= 0.

          itab_zycit245-vlvinc = 0.

        ENDIF.

        MODIFY itab_zycit245 TRANSPORTING vinculado vlvinc

                          WHERE nrseqd EQ itab_zycit330_d-nrseqd

                          AND   nritem EQ itab_zycit330_d-nritem.

        UPDATE /pws/zycit245

            SET vlvinc    = itab_zycit245-vlvinc

                vinculado = itab_zycit245-vinculado

                    WHERE nrseqd EQ itab_zycit245-nrseqd

                      AND nritem EQ itab_zycit245-nritem.

      ENDLOOP.

      DELETE /pws/zycit279 FROM TABLE itab_zycit279_d.

    ENDIF.

* << Fim da exclusão

  ENDIF.

  COMMIT WORK AND WAIT.

  MESSAGE i017 WITH /pws/zycie329-docnum.

  MOVE /pws/zycie329 TO wa_zycie329.

  MOVE itab_zycit330[] TO itab_zycit330_aux[].

ENDFORM.

 

...

 

...

            answer                = v_answer.

  IF v_answer = '1'.

    IF NOT itab_zycit279[] IS INITIAL.

      LOOP AT itab_zycit279.

        IF itab_zycit279-menge <> itab_zycit279-slqtde.

          MESSAGE i013 WITH text-014 space text-015.

          LEAVE SCREEN.

        ENDIF.

      ENDLOOP.

      CLEAR itab_zycit245_des. REFRESH itab_zycit245_des.

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

      SELECT * FROM /pws/zycit330 INTO TABLE itab_zycit330_des

          WHERE docnum = /pws/zycie329-docnum.

      IF sy-subrc EQ 0.

* << Fim da inclusão

      SELECT * FROM /pws/zycit245 INTO TABLE itab_zycit245_des

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

           FOR ALL ENTRIES IN itab_zycit330

            WHERE nrseqd  = itab_zycit330-nrseqd

              AND nritem  = itab_zycit330-nritem.

* << Fim da exclusão

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

             FOR ALL ENTRIES IN itab_zycit330_des

              WHERE nrseqd  = itab_zycit330_des-nrseqd

                AND nritem  = itab_zycit330_des-nritem.

      ENDIF.

* << Fim da inclusão

      CLEAR itab_zycit282. REFRESH itab_zycit282.

      SELECT * FROM /pws/zycit282 INTO

      TABLE itab_zycit282

             FOR ALL ENTRIES IN itab_zycit279

             WHERE nrseqimp  = itab_zycit279-nrseq

               AND ebeln     = itab_zycit279-ebeln

               AND ebelp     = itab_zycit279-ebelp

               AND docnumimp = itab_zycit279-docnum.

      IF sy-subrc NE 0.

        DELETE FROM /pws/zycit330 WHERE docnum = /pws/zycie329-docnum.

        LOOP AT itab_zycit279.

          DELETE FROM /pws/zycit279 WHERE

                          ebeln  = itab_zycit279-ebeln AND

                          ebelp  = itab_zycit279-ebelp AND

                          docnum = itab_zycit279-docnum.

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

          READ TABLE itab_zycit330 WITH KEY ebeln = itab_zycit279-ebeln

* << Fim da exclusão

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

          READ TABLE itab_zycit330_des

                              WITH KEY ebeln = itab_zycit279-ebeln

* << Fim da inclusão

                                            ebelp = itab_zycit279-ebelp.

          IF /pws/zycit321-apr_imp IS INITIAL.

            READ TABLE itab_zycit245_des WITH KEY

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

                                  nrseqd  = itab_zycit330-nrseqd

                                  nritem  = itab_zycit330-nritem.

* << Fim da exclusão

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

                           nrseqd  = itab_zycit330_des-nrseqd

                           nritem  = itab_zycit330_des-nritem.

* << Fim da inclusão

          ELSE.

            READ TABLE itab_zycit245_des WITH KEY

                                  nrseqd  = itab_zycit330-nrseqd.

          ENDIF.

          IF sy-subrc EQ 0.

            itab_zycit245_des-vlvinc = itab_zycit245_des-vlvinc -

                                              itab_zycit279-vltot.

            itab_zycit245_des-vinculado = itab_zycit245_des-vinculado -

                                                 itab_zycit279-menge.

            IF itab_zycit245_des-vlvinc <= 0.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI052I01

 

...

    WHEN 'VINC'.

      READ TABLE itab_vinc WITH KEY mark = 'X'.

      IF sy-subrc EQ 0

         AND itab_vinc-icon EQ '@5B@'.

        itab_zycit330-nrseqd = itab_vinc-nrseqd.

        itab_zycit330-nratoc = itab_vinc-nratoc.

        itab_zycit330-nritem = itab_vinc-nritem.

        MODIFY itab_zycit330 TRANSPORTING nrseqd nratoc nritem

                             WHERE docnum EQ itab_zycit330-docnum

                               AND buzei  EQ itab_zycit330-buzei.

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

        DELETE FROM /pws/zycit279 WHERE docnum EQ itab_zycit330-docnum

                     AND buzei  EQ itab_zycit330-buzei.

* << Fim da exclusão

        LEAVE TO SCREEN 100.

      ELSE.

        MESSAGE i015 WITH text-022.

      ENDIF.

  ENDCASE.

ENDMODULE.