CE PLUS - Nota 004312

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Embarque

Data/Hora da Publicação: 31/07/2007 00:00:00

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

Descrição da Nota: DECLARAÇÃO DE IMPORTAÇÃO RECOF

Sintoma

Não vincula a DI de nacionalização (regime 16) a uma DA (regime 04) quando o pedido já foi utilizado

para outros embarques de mesma modalidade.

 

 

 

Solução

Atualização do programa da DA para verificar corretamente o saldo da DA nos embarques de regime 16.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

AJUSTES NA DA

EMBARQUE ESTÁ SALVANDO ITENS COM QUANTIDADES ZERADAS.

EMBARQUE ESTÁ SE PERDENDO AO VINCULAR ITENS DO PEDIDO OU SCHEDULE

Informações Complementares

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

Nota Número 04312 Data: 31/07/2007 Hora: 15:33:43

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

 

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

Nota Número              : 04312

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00002

Agrupamento              : 00006

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

Referência às notas relacionadas:

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

 

01383  - 00001 - 6.0    - 00023  - AJUSTES NA DA

02944  - 00002 - 6.0    - 00026  - EMBARQUE ESTÁ SE PERDENDO AO VINCULAR ITENS DO PEDIDO OU SCHEDULE

03437  - 00003 - 7.0    - 00001  - EMBARQUE ESTÁ SALVANDO ITENS COM QUANTIDADES ZERADAS.

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

DECLARAÇÃO DE IMPORTAÇÃO RECOF

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

Palavras Chave:

VÍNCULO DE DA; SALDO; QTDE. DA

 

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

Objetos da nota:

REPS /PWS/MZYCI001F01

REPS /PWS/MZYCI001F03

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F01

 

...

        /pws/zycie003-nrlsi = /pws/zycit078-nrli.

      ENDIF.

    ENDIF.

  ENDIF.

  /pws/zycie013-slqtde = itab_zycit003-slqtde.

  /pws/zycie013-meins = /pws/zycie263-meins = itab_zycit003-meins.

  /pws/zycie263-qtd_iten = itab_zycit003-invoiced.

  /pws/zycie003-dtremessa = itab_zycit003-dtremessa.

  REFRESH itab_zycit003_aux.

  MOVE itab_zycit003[] TO itab_zycit003_aux[].

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

  CHECK /pws/zycie001-regime EQ '16'.

  IF NOT itab_zycit003[] IS INITIAL.

    IF itab_zycit443[] IS INITIAL.

      SELECT *

             INTO  TABLE itab_zycit443

             FROM  /pws/zycit443

             FOR ALL ENTRIES IN itab_zycit003

             WHERE nrseqda EQ itab_zycit003-nrseqda.

    ENDIF.

  ENDIF.

  IF NOT itab_zycit443[] IS INITIAL.

    SELECT * FROM /pws/zycit003 INTO TABLE itab_zycit003_saldo

    FOR ALL ENTRIES IN itab_zycit443

     WHERE ebeln EQ itab_zycit443-ebeln

     AND   ebelp EQ itab_zycit443-ebelp.

  ENDIF.

  LOOP AT itab_zycit003.

    v_tabix = sy-tabix.

    IF NOT itab_zycit003_saldo[] IS INITIAL.

      SELECT nrseq  regime FROM /pws/zycit001

       INTO TABLE itab_zycit001_saldo

      FOR ALL ENTRIES IN itab_zycit003_saldo

      WHERE nrseq  EQ itab_zycit003_saldo-nrseq

       AND  tpdecl EQ 'DI'.

      LOOP AT itab_zycit001_saldo WHERE regime EQ '04'.

        DELETE itab_zycit003_saldo

          WHERE nrseq EQ itab_zycit001_saldo-nrseq.

      ENDLOOP.

    ENDIF.

    CLEAR v_qtdutil_da.

    LOOP AT itab_zycit003_saldo

      WHERE  ebeln = itab_zycit003-ebeln

      AND    ebelp = itab_zycit003-ebelp.

      IF itab_zycit003_saldo-nrseq NE /pws/zycie001-nrseq.

        v_qtdutil_da = v_qtdutil_da + itab_zycit003_saldo-qtd_iten .

      ENDIF.

    ENDLOOP.

    READ TABLE itab_zycit443 WITH KEY

                 ebeln = itab_zycit003-ebeln

                 ebelp = itab_zycit003-ebelp.

    IF sy-subrc IS INITIAL.

      itab_zycit003-sld_da   =  itab_zycit443-qtd_da -

     ( v_qtdutil_da  + itab_zycit003-qtd_iten ).

      IF itab_zycit003-sld_da LT 0.

        CLEAR itab_zycit443_saldo.

        READ TABLE itab_zycit443_saldo WITH KEY

                   ebeln = itab_zycit003-ebeln

                   ebelp = itab_zycit003-ebelp.

        itab_zycit003-sld_da = itab_zycit443_saldo-qtd_iten -

                             v_qtdutil_da  - itab_zycit003-qtd_iten.

      ENDIF.

    ENDIF.

    itab_zycit003-menge = itab_zycit443-qtd_da.

    MODIFY itab_zycit003 INDEX v_tabix.

  ENDLOOP.

* << Fim da inclusão

ENDFORM.

FORM altera_itab_zycit003.

DATA: v_difpos  LIKE ekpo-menge,

                           v_valor_uebto LIKE ekpo-menge,

      v_difneg LIKE ekpo-menge.

  EXPORT /pws/zycie003 TO MEMORY ID '025'.

  MOVE:

        /pws/zycie003-ebeln         TO itab_zycit003-ebeln       ,

        /pws/zycie003-ebelp         TO itab_zycit003-ebelp       ,

        /pws/zycie003-descr         TO itab_zycit003-descr       ,

...

 

...

  ENDLOOP.

  IF sy-subrc EQ 0.

    v_msg = 'X' .

  ENDIF.

  IF v_msg EQ 'X'.

    MESSAGE i015 WITH text-261 text-260.

    DELETE itab_zycit003 WHERE qtd_iten EQ '0'.

  ENDIF.

  LOOP AT itab_zycit003.

    itab_zycit003-nrseq = /pws/zycie001-nrseq.

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

    IF /pws/zycie001-regime NE '16'.

* << Fim da inclusão

    CLEAR /pws/zycit013.

    MOVE-CORRESPONDING itab_zycit003 TO /pws/zycit013.

    MODIFY /pws/zycit013.

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

    ENDIF.

* << Fim da inclusão

  ENDLOOP.

  IF v_sair NE 'X'.

    MODIFY /pws/zycit003 FROM TABLE itab_zycit003.

  ELSE.

...

 

...

  ENDIF.

  LOOP AT itab_zycit003_aux2.

    CLEAR itab_zycit003.

    READ TABLE itab_zycit003

          WITH KEY ebeln = itab_zycit003_aux2-ebeln

                   ebelp = itab_zycit003_aux2-ebelp.

    IF sy-subrc NE 0.

      itab_zycit003_aux2-slqtde = itab_zycit003_aux2-slqtde

                          + itab_zycit003_aux2-qtd_iten.

      itab_zycit003_aux2-qtd_iten = 0.

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

      IF /pws/zycie001-regime NE '16'.

* << Fim da inclusão

      CLEAR /pws/zycit013.

      MOVE-CORRESPONDING itab_zycit003_aux2 TO /pws/zycit013.

      MODIFY /pws/zycit013.

      CLEAR itab_zycit013.

      MOVE /pws/zycit013 TO itab_zycit013.

      MODIFY itab_zycit013 TRANSPORTING slqtde menge

             WHERE ebeln     = itab_zycit003_aux2-ebeln

               AND ebelp     = itab_zycit003_aux2-ebelp.

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

      ENDIF.

* << Fim da inclusão

      DELETE FROM /pws/zycit003

             WHERE nrseq     = itab_zycit003_aux2-nrseq

               AND ebeln     = itab_zycit003_aux2-ebeln

               AND ebelp     = itab_zycit003_aux2-ebelp.

      IF itab_zycit003_aux2-menge EQ itab_zycit003_aux2-slqtde.

        DELETE itab_zycit013

               WHERE ebeln     = itab_zycit003_aux2-ebeln

                 AND ebelp     = itab_zycit003_aux2-ebelp.

        DELETE FROM /pws/zycit013

               WHERE ebeln     = itab_zycit003_aux2-ebeln

...

 

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F03

 

...

             ebeln = itab_da-ebeln AND

             ebelp = itab_da-ebelp.

      MODIFY itab_da.

    ENDLOOP.

    DATA: itab_zycit003_saldo LIKE itab_zycit003 OCCURS 0

          WITH HEADER LINE.

    IF NOT itab_da[] IS INITIAL.

      SELECT * FROM /pws/zycit003 INTO TABLE itab_zycit003_saldo

         FOR ALL ENTRIES IN itab_da

         WHERE ebeln EQ itab_da-ebeln

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

         AND   ebelp EQ itab_da-ebelp.

* << Fim da exclusão

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

         AND   ebelp EQ itab_da-ebelp

         AND   nrseqda EQ itab_da-nrseqda.

* << Fim da inclusão

      IF sy-subrc EQ 0.

        SELECT nrseq regime FROM /pws/zycit001

           INTO TABLE itab_zycit001_saldo

           FOR ALL ENTRIES IN itab_zycit003_saldo

           WHERE nrseq EQ itab_zycit003_saldo-nrseq

           AND   regime EQ '04'

           AND   tpdecl EQ 'DI'.

      ENDIF.

      LOOP AT itab_zycit001_saldo.

        DELETE itab_zycit003_saldo

...

 

...

                                    ebelp = itab_zycit013-ebelp.

    IF sy-subrc EQ 0.

      CLEAR v_qtdemb.

      LOOP AT itab_zycit003_util WHERE ebeln EQ itab_zycit013-ebeln

                                 AND   ebelp EQ itab_zycit013-ebelp.

        v_qtdemb = v_qtdemb + itab_zycit003_util-qtd_iten.

      ENDLOOP.

    ENDIF.

    v_slqtde = itab_pedido-menge - v_qtdemb.

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

    IF v_slqtde NE itab_zycit013-slqtde.

      IF /pws/zycie001-regime NE '16'.

* << Fim da inclusão

      itab_zycit013-slqtde = v_slqtde.

      UPDATE /pws/zycit013 SET slqtde  = itab_zycit013-slqtde

                               menge   = itab_pedido-menge

                         WHERE ebeln   = itab_zycit013-ebeln

                           AND ebelp   = itab_zycit013-ebelp .

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

      ENDIF.

* << Fim da inclusão

      itab_zycit013-menge   = itab_pedido-menge.

      MODIFY itab_zycit013.

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

    ENDIF.

* << Fim da inclusão

...