CE PLUS - Nota 001468

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Embarque

Data/Hora da Publicação: 31/05/2006 00:00:00

Data/Hora Última Alteração: 20/06/2011 12:25:44

Descrição da Nota: CONTROLE DE SALDO DA DA POR LOTE

Sintoma

O sistema está se perdendo ao desvincular pedidos do embarque pois não retorna saldo aos lotes.

 

 

Solução

Foi criada a tabela /PWS/ZYCIT467 onde podemos identificar o embarque vinculado, quantidade

vinculada e o lote de origem.

 

Versões Tratadas

6.0


Pré-Requisitos

Produto:

Nota

Descrição

DESENVOLVIMENTO ENTREPOSTO ADUANEIRO

AGREGAR OS CUSTOS EFETIVOS DA ADMISSÃO NA NACIONALIZAÇÃO DA MERCADORIA

Informações Complementares

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

Nota Número 01468 Data: 31/05/2006 Hora: 10:09:04

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

 

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

Nota Número              : 01468

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 6.0

Pacote                   : 00023

Agrupamento              : 00116

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

Referência às notas relacionadas:

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

 

01268  - 00001 - 6.0    - 00023  - DESENVOLVIMENTO ENTREPOSTO ADUANEIRO

01417  - 00002 - 6.0    - 00023  - AGREGAR OS CUSTOS EFETIVOS DA ADMISSÃO NA NACIONALIZAÇÃO DA MERCA

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

CONTROLE DE SALDO DA DA POR LOTE

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

Palavras Chave:

SALDO DA DA - LOTE DA DA - CONTROLE DE SALDO

VINCULAÇÃO EMBARQUE - /PWS/ZYCIT467

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

Objetos da nota:

DYNP /PWS/SAPMZYCI001                        0003

REPS /PWS/MZYCI001F03

REPS /PWS/MZYCI001TOP

REPS /PWS/MZYCI001X01

REPT /PWS/SAPMZYCI001

TABL /PWS/ZYCIT467

 

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

Modificações efetuadas em DYNP /PWS/SAPMZYCI001                        0003

 

 

 

  Nome

  Ctg.      Linha   Coluna  CmprDf  CmVis   Altura  Format Dict  Modif At.Des.Só At

  Gr1 Gr2 Gr3 Gr4  SPA GPA ID parâm             Cód.F                TCmp

  Outros atributos

 

*campos eliminado da tela

- ITAB_DA-LOTE

                 I/O        1        5      15      15       1     CHAR                   Off

                 Elem.TC

*campos inserido na tela

- ITAB_DA-LOTE_FORN

                 I/O        1        5      15      15       1     CHAR                   Off

                 Elem.TC

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F03

 

...

      MODIFY tc_ped-cols FROM wa_cols.

    ENDLOOP.

  ENDIF.

ENDFORM.

FORM selecionar_da.

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

   clear   itab_zycit467.

   refresh itab_zycit467.

* << Fim da inclusão

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

    SELECT /pws/zycit442~nrseqda /pws/zycit442~nrdi /pws/zycit442~bukrs

           /pws/zycit442~dtdesemb  /pws/zycit443~ebeln

         /pws/zycit443~ebelp /pws/zycit443~matnr /pws/zycit443~qtd_iten

           /pws/zycit443~qtd_iten

...

 

...

        LOOP AT itab_zycit003_saldo WHERE ebeln EQ itab_da-ebeln

                                    AND   ebelp EQ itab_da-ebelp.

          v_qtdutil_da = v_qtdutil_da + itab_zycit003_saldo-qtd_iten .

        ENDLOOP.

        itab_da-qtd_lote = itab_da-qtd_lote - v_qtdutil_da.

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

        IF itab_da-qtd_lote EQ 0.

* << Fim da exclusão

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

        IF itab_da-qtd_lote le 0.

* << Fim da inclusão

          DELETE itab_da.

        ENDIF.

        CLEAR v_qtdutil_da.

        MODIFY itab_da INDEX v_index.

      ENDLOOP.

    ENDIF.

  ELSE.

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

   if not so_lifn is initial.

* << Fim da inclusão

    SELECT /pws/zycit442~nrseqda /pws/zycit442~nrdi /pws/zycit442~bukrs

         /pws/zycit442~dtdesemb /pws/zycit460~lifnr /pws/zycit443~ebeln

        /pws/zycit443~ebelp /pws/zycit443~matnr

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

           /pws/zycit463~nrseqlote

* << Fim da inclusão

           /pws/zycit463~lote_forn

           /pws/zycit463~numfatura /pws/zycit463~qtd_lote

           /pws/zycit463~qtd_nac

       FROM ( /pws/zycit442 INNER JOIN /pws/zycit460 ON

              /pws/zycit442~nrseqda = /pws/zycit460~nrseqda

             INNER JOIN /pws/zycit443 ON

             /pws/zycit442~nrseqda = /pws/zycit443~nrseqda

             INNER JOIN /pws/zycit463 ON

             /pws/zycit463~nrseqda = /pws/zycit443~nrseqda  )

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

      INTO TABLE itab_da

* << Fim da exclusão

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

      INTO CORRESPONDING FIELDS OF TABLE itab_da

* << Fim da inclusão

      WHERE /pws/zycit442~bukrs   EQ pa_buk

        AND /pws/zycit460~lifnr   IN so_lifn

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

        AND /pws/zycit442~nrseqda IN so_nrseq

        AND /pws/zycit442~nrdi    IN so_nrda

        AND /pws/zycit443~ebeln   IN so_beln

        AND /pws/zycit443~ebelp   IN so_belp

        AND /pws/zycit443~matnr   IN so_matn.

   else.

    SELECT /pws/zycit442~nrseqda /pws/zycit442~nrdi /pws/zycit442~bukrs

         /pws/zycit442~dtdesemb /pws/zycit443~ebeln

        /pws/zycit443~ebelp /pws/zycit443~matnr

           /pws/zycit463~nrseqlote

           /pws/zycit463~lote_forn

           /pws/zycit463~numfatura /pws/zycit463~qtd_lote

           /pws/zycit463~qtd_nac

       FROM ( /pws/zycit442 INNER JOIN /pws/zycit443 ON

             /pws/zycit442~nrseqda = /pws/zycit443~nrseqda

             INNER JOIN /pws/zycit463 ON

             /pws/zycit463~nrseqda = /pws/zycit443~nrseqda  )

      INTO CORRESPONDING FIELDS OF TABLE itab_da

      WHERE /pws/zycit442~bukrs   EQ pa_buk

* << Fim da inclusão

        AND /pws/zycit442~nrseqda IN so_nrseq

        AND /pws/zycit442~nrdi    IN so_nrda

        AND /pws/zycit443~ebeln   IN so_beln

        AND /pws/zycit443~ebelp   IN so_belp

        AND /pws/zycit443~matnr   IN so_matn.

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

   endif.

* << Fim da inclusão

  ENDIF.

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

  SORT itab_da BY nrseqda ebeln ebelp matnr lote .

* << Fim da exclusão

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

  SORT itab_da BY nrseqda ebeln ebelp matnr lote_forn .

* << Fim da inclusão

  DELETE ADJACENT DUPLICATES FROM itab_da COMPARING

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

          nrseqda ebeln ebelp matnr lote.

* << Fim da exclusão

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

          nrseqda ebeln ebelp matnr lote_forn.

* << Fim da inclusão

  IF NOT itab_da[] IS INITIAL.

    MOVE itab_da[] TO itab_da_aux[].

    IF /pws/zycie001-regime EQ '14'.

      LOOP AT itab_da.

        IF itab_da-qtd_lote IS INITIAL.

          DELETE itab_da.

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

        ELSEIF itab_da-qtd_nac EQ itab_da-qtd_lote AND

* << Fim da exclusão

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

        ELSEIF itab_da-qtd_nac GE itab_da-qtd_lote AND

* << Fim da inclusão

           NOT itab_da-qtd_nac IS INITIAL .

          DELETE itab_da .

        ELSE.

          IF NOT itab_da-qtd_nac IS INITIAL.

            itab_da-qtd_lote = itab_da-qtd_lote - itab_da-qtd_nac.

...

 

...

          ENDIF.

        ENDIF.

      ENDLOOP.

    ENDIF.

    DESCRIBE TABLE itab_da LINES v_line.

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

    if itab_da[] is initial.

       MESSAGE s015 WITH text-259 text-264.

       exit.

    endif.

* << Fim da inclusão

    v_caller = 'SELECIONAR_DA'.

    CALL SCREEN '0003'.

  ELSE.

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

    MESSAGE s015 WITH text-259.

* << Fim da exclusão

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

    MESSAGE s015 WITH text-259 text-264.

* << Fim da inclusão

  ENDIF.

ENDFORM.

FORM trata_delp.

  CASE ts_embar-activetab.

    WHEN 'FC_PED' .

...

 

...

                 itab_zycit003-ebelp    TO itab_zycit455_del-ebelp,

                 space                  TO itab_zycit455_del-nrseq,

                 itab_zycit003-nrseqda  TO itab_zycit455_del-nrseqda.

            APPEND itab_zycit455_del.

          ENDIF.

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

        MOVE:itab_zycit003-nrseqda    TO itab_zycit467_del-nrseqda,

             itab_zycit003-nrseq      TO itab_zycit467_del-nrseq  ,

             itab_zycit003-ebeln      TO itab_zycit467_del-ebeln  ,

             itab_zycit003-ebelp      TO itab_zycit467_del-ebelp  .

             append itab_zycit467_del.

          delete itab_da_aux where nrseqda eq itab_zycit003-nrseqda

                             and   ebeln   eq itab_zycit003-ebeln

                             and   ebelp   eq itab_zycit003-ebelp.

* << Fim da inclusão

          DELETE itab_zycit003 INDEX v_tabix.

          CLEAR itab_zycit003.

        ELSE.

          MESSAGE w015 WITH text-190.

          EXIT.

...

 

...

    DELETE itab_da WHERE qtd_nac IS initial.

  ENDIF.

  READ TABLE itab_da INDEX 1.

  IF NOT itab_da[] IS INITIAL AND ( /pws/zycie001-regime EQ '14' OR

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

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

    LOOP AT itab_da.

      IF NOT itab_da-lote_forn IS INITIAL.

        MOVE : itab_da-nrseqda     TO itab_zycit467-nrseqda  ,

               itab_da-nrseqlote   TO itab_zycit467-nrseqlote,

               itab_da-ebeln       TO itab_zycit467-ebeln    ,

               itab_da-ebelp       TO itab_zycit467-ebelp    ,

               /pws/zycie001-nrseq TO itab_zycit467-nrseq    ,

               itab_da-qtd_nac     TO itab_zycit467-qtd_nac  .

        APPEND itab_zycit467.

      ENDIF.

    ENDLOOP.

* << Fim da inclusão

    SELECT SINGLE *

      FROM /pws/zycit442

      WHERE nrseqda EQ itab_da-nrseqda

        AND ( codreg EQ '02' OR

              codreg EQ '04' ).

...

 

...

  ENDLOOP.

  CLEAR   itab_nac.

  REFRESH itab_nac.

  MOVE itab_da[] TO itab_da_aux[].

  CLEAR itab_da. REFRESH itab_da.

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

 loop at itab_da_aux.

  delete itab_zycit467_del where nrseqda eq itab_da_aux-nrseqda

                           and   ebeln   eq itab_zycit003-ebeln

                           and   ebelp   eq itab_zycit003-ebelp.

 endloop.

* << Fim da inclusão

  READ TABLE itab_zycit003 INDEX 1 .

  MOVE: itab_zycit003-lifnr TO v_lifnr,

        itab_zycit003-waers TO v_waers,

        itab_zycit003-waers TO /pws/zycie000-waers,

        itab_zycit003-lifnr TO /pws/zycie000-lifnr.

...

 

...

  MOVE :

      itab_da-nrseqda  TO /pws/zycie442-nrseqda ,

      itab_da-ebeln    TO /pws/zycie443-ebeln   ,

      itab_da-ebelp    TO /pws/zycit443-ebelp   ,

      itab_da-matnr    TO /pws/zycie443-matnr   ,

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

      itab_da-lote     TO /pws/zycie463-lote_forn,

* << Fim da exclusão

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

      itab_da-lote_forn TO /pws/zycie463-lote_forn,

* << Fim da inclusão

      itab_da-qtd_lote TO /pws/zycie463-qtd_lote.

ENDFORM.

FORM calcula_saldo_da.

  SELECT * FROM /pws/zycit455 INTO TABLE itab_zycit455

    WHERE nrseqda EQ /pws/zycit442-nrseqda.

...

 

...

    ENDCASE.

    MODIFY tc_selda-cols FROM wa_cols.

  ENDLOOP.

ENDFORM.

FORM salva_dados_da.

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

  data: itab_zycit463 like /pws/zycit463 occurs 0 with header line.

  data: itab_zycit467_aux like /pws/zycit467 occurs 0 with header line.

* << Fim da inclusão

  LOOP AT itab_zycit003_del.

    DELETE itab_zycit455 WHERE nrseq  = /pws/zycie001-nrseq

                    AND   ebeln    = itab_zycit003_del-ebeln

                    AND   ebelp    = itab_zycit003_del-ebelp .

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

  ENDLOOP.

  if not itab_zycit467_del[] is initial.

    select * from /pws/zycit467 into table itab_zycit467_aux

    for all entries in itab_zycit467_del

    where NRSEQDA   eq itab_zycit467_del-nrseqda

    and   nrseq     eq itab_zycit467_del-nrseq

    and   ebeln     eq itab_zycit467_del-ebeln

    and   ebelp     eq itab_zycit467_del-ebelp.

  if not itab_zycit467_aux[] is initial.

    select * from /pws/zycit463 into table itab_zycit463

    for all entries in itab_zycit467_aux

    where NRSEQDA   eq itab_zycit467_aux-nrseqda

    and   NRSEQLOTE eq itab_zycit467_aux-nrseqlote.

  endif.

  loop at itab_zycit467_aux.

     read table itab_zycit463 with key

          nrseqda   = itab_zycit467_aux-nrseqda

          nrseqlote = itab_zycit467_aux-nrseqlote.

     if sy-subrc eq 0.

          clear v_qtdutil_da.

          v_qtdutil_da = itab_zycit463-qtd_nac -

           itab_zycit467_aux-qtd_nac             .

           UPDATE /pws/zycit463 SET qtd_nac = v_qtdutil_da

                  WHERE nrseqda    = itab_zycit467_aux-nrseqda

                  AND   nrseqlote  = itab_zycit467_aux-nrseqlote.

     endif.

     delete from /pws/zycit467

            where nrseqda   = itab_zycit467_aux-nrseqda

            and   nrseqlote = itab_zycit467_aux-nrseqlote

            and   nrseq     = itab_zycit467_aux-nrseq.

* << Fim da inclusão

  ENDLOOP.

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

  endif.

  clear  :  itab_zycit467_del, itab_zycit463.

  refresh:  itab_zycit467_del, itab_zycit463.

if not itab_zycit003[] is initial.

  if not itab_da_aux[] is initial.

    select * from /pws/zycit463 into table itab_zycit463

    for all entries in itab_da_aux

    where NRSEQDA   eq itab_da_aux-nrseqda

    and   NRSEQLOTE eq itab_da_aux-nrseqlote

    and   matnr     eq itab_da_aux-matnr

    and   lote_forn eq itab_da_aux-lote_forn.

  endif.

* << Fim da inclusão

  LOOP AT itab_da_aux.

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

    UPDATE /pws/zycit463 SET qtd_nac = itab_da_aux-qtd_nac

* << Fim da exclusão

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

          read table itab_zycit463 with key

             NRSEQDA   = itab_da_aux-nrseqda

             NRSEQLOTE = itab_da_aux-nrseqlote

             matnr     = itab_da_aux-matnr

             lote_forn = itab_da_aux-lote_forn.

          if sy-subrc eq 0.

            clear v_qtdutil_da.

            v_qtdutil_da = itab_zycit463-qtd_nac +

            itab_da_aux-qtd_nac             .

          endif.

      UPDATE /pws/zycit463 SET qtd_nac = v_qtdutil_da

* << Fim da inclusão

                    WHERE nrseqda    = itab_da_aux-nrseqda

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

                    AND   lote_forn  = itab_da_aux-lote.

* << Fim da exclusão

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

                      AND   lote_forn  = itab_da_aux-lote_forn.

* << Fim da inclusão

  ENDLOOP.

  LOOP AT itab_zycit003.

    UPDATE /pws/zycit455 SET nrseq = itab_zycit003-nrseq

                    WHERE nrseqda  = /pws/zycit442-nrseqda

                    AND   ebeln    = itab_zycit003-ebeln

                    AND   ebelp    = itab_zycit003-ebelp .

  ENDLOOP.

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

endif.

  modify /pws/zycit467 from table itab_zycit467[].

clear:    itab_zycit463, itab_zycit467, itab_zycit467_aux, itab_da_aux.

refresh : itab_zycit463, itab_zycit467, itab_zycit467_aux, itab_da_aux.

* << Fim da inclusão

  COMMIT WORK.

ENDFORM.

FORM salva_dados_rc.

  FIELD-SYMBOLS:

    <fs_tabrc> TYPE STANDARD TABLE,

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001TOP

 

...

  /pws/zycie396,

  /pws/zycit395,

  /pws/zycie442,

  /pws/zycie443,

  /pws/zycie463,

* >> Início da inclusão:

  /pws/zycit467,

* << Fim da inclusão

  eket.

DATA: BEGIN OF itab_zycit013 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycie013.

DATA: END OF itab_zycit013.

DATA: BEGIN OF itab_zycit395 OCCURS 0.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001X01

 

...

       dtdesemb LIKE /pws/zycie442-dtdesemb ,

       agente   LIKE /pws/zycie460-lifnr    ,

       ebeln    LIKE /pws/zycie443-ebeln    ,

       ebelp    LIKE /pws/zycie443-ebelp    ,

       matnr    LIKE /pws/zycie443-matnr    ,

* >> Início da exclusão:

       lote     LIKE /pws/zycie463-lote_forn,

* << Fim da exclusão

* >> Início da inclusão:

       nrseqlote   like /pws/zycie463-nrseqlote,

       lote_forn   LIKE /pws/zycie463-lote_forn,

* << Fim da inclusão

       numfatura   LIKE /pws/zycie463-numfatura,

       qtd_lote LIKE /pws/zycie463-qtd_lote ,

       qtd_nac  LIKE /pws/zycie463-qtd_lote ,

       qtd_usada LIKE /pws/zycie463-qtd_lote ,

       adicao    TYPE /pws/zycie455-adicao   ,

       itseqda   TYPE /pws/zycie455-itseqda  ,

       mark.

DATA: END OF itab_da.

DATA: itab_zycit443_aux LIKE itab_zycit443 OCCURS 0 WITH HEADER LINE,

      itab_da_aux       LIKE itab_da OCCURS 0 WITH HEADER LINE,

* >> Início da exclusão:

      itab_da_aux2      LIKE itab_da OCCURS 0 WITH HEADER LINE.

* << Fim da exclusão

* >> Início da inclusão:

      itab_da_aux2      LIKE itab_da OCCURS 0 WITH HEADER LINE,

      itab_zycit467     like /pws/zycit467 occurs 0 with header line,

      itab_zycit467_del like /pws/zycit467 occurs 0 with header line.

* << Fim da inclusão

DATA: BEGIN OF itab_nac OCCURS 0.

DATA:   ebeln   LIKE /pws/zycit443-ebeln,

        ebelp   LIKE /pws/zycit443-ebelp,

        qtd_nac LIKE /pws/zycit443-qtd_iten.

DATA: END OF itab_nac.

...

 

 

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

Modificações efetuadas em REPT /PWS/SAPMZYCI001

 

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

Modificado símbolo de texto:

 

Idioma: PT

 

Símbolo: 259

 

Texto: (32 caracteres)

"Não foram encontrados itens para"

 

Comprimento máximo: 53

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 264

 

Texto: (20 caracteres)

"critério de seleção."

 

Comprimento máximo: 20

 

 

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

Modificações efetuadas em TABL /PWS/ZYCIT467

* Criada a tabela /pws/zycit467

CRIAR TABELA TRANSPARENTE: /PWS/ZYCIT467

DESCRIÇÃO BREVE: CI - Saldo de Lote da DA

 

CARACTERÍSTICAS

 

CATEGORIA DA TABELA: Tabela transparente

CLASSE DE ENTREGA:   A

(X)  AUTUALIZAÇÃO DE TABELAS PERMITIDA

 

CAMPOS NOVOS

 

CAMPOS:         TP. CAMPO        CH: INI: TAB.VERIF.:    TAB.REF.:     CPO.RE

 

MANDT           MANDT            X    X   T000

NRSEQDA         /PWS/ZYCIL831    X    X   /PWS/ZYCIT463

NRSEQLOTE       NUMC3            X    X

NRSEQ           /PWS/ZYCIL001    X    X   /PWS/ZYCIT001

EBELN           EBELN            X    X

EBELP           EBELP            X    X

QTD_NAC         BMENGEV

 

 

 

OPÇÕES TÉCNICAS

 

TIPO DE DADOS: APPL0

CATEGOR. TAMANHO: 0

 

(X) - AR. BUFFER NÃO PERMITIDO

Nº DE CPOS CHAVE: 0