CE PLUS - Nota 005915

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Embarque

Data/Hora da Publicação: 13/02/2008 00:00:00

Data/Hora Última Alteração: 09/03/2010 11:51:57

Descrição da Nota: DIVERGENCIA NO EMBARQUE ENTRE CENTROS PRODUTIVOS E IMPRODUTIVOS

Sintoma

 

O programa do embarque não estava verificando apenas os Centros vinculados no Embarque

 

Solução

 

Atualizada vinculação de itens no embarque de nacionalização para apenas verificar centros

utilizados no embarque.

Versões Tratadas

7.0

Informações Complementares

 

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

Nota Número 05915 Data: 13/02/2008 Hora: 14:12:51

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

 

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

Nota Número              : 05915

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00004

Agrupamento              : 00035

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

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

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

DIVERGENCIA NO EMBARQUE ENTRE CENTROS PRODUTIVOS E IMPRODUTIVOS

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

Palavras Chave:

CENTRO - PRODUTIVO - IMPRODUTIVO

 

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

Objetos da nota:

REPS /PWS/MZYCI001F01

REPS /PWS/MZYCI001F02

REPS /PWS/MZYCI001F03

REPS /PWS/MZYCI001X01

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F01

 

...

    LOOP AT itab_itens WHERE waers NE v_waers.

      v_waers_diferente = 'X'.

    ENDLOOP.

    IF NOT itab_zycit003[] IS INITIAL.

      LOOP AT itab_zycit003 WHERE waers NE v_waers.

        v_waers_diferente = 'X'.

      ENDLOOP.

    ENDIF.

    CLEAR v_werks_prod.

    MOVE itab_zycit003[] TO itab_werks[].

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

    CALL FUNCTION 'CHECK_BUKRS_ML_PRODUCTIVE'

         EXPORTING

              i_bukrs          = /pws/zycie001-bukrs

         IMPORTING

              e_all_productive = v_werks_prod.

* << Fim da exclusão

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

  PERFORM CHECK_BUKRS_ML_PRODUCTIVE_IT

          TABLES

            itab_itens

          USING

            /pws/zycie001-bukrs

          CHANGING

            v_werks_prod.

* << Fim da inclusão

    IF v_werks_prod IS INITIAL.

      MOVE: itab_itens-werks TO v_werks.

      LOOP AT itab_itens WHERE werks NE v_werks.

      ENDLOOP.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F02

 

...

 

* >> Início da inclusão:

form CHECK_BUKRS_ML_PRODUCTIVE

     TABLES pitab_itens STRUCTURE itab_da

     USING

       p_bukrs TYPE /pws/zycie001-bukrs

     CHANGING

       p_werks_prod LIKE v_werks_prod.

  TABLES: CKMLV.

  DATA: BEGIN OF TT_BWKEY_PRODUCTIVE OCCURS 0.

          INCLUDE STRUCTURE T001K.

  DATA: END OF TT_BWKEY_PRODUCTIVE.

  DATA: BEGIN OF TT_BWKEY_NOT_PRODUCTIVE OCCURS 0.

          INCLUDE STRUCTURE T001K.

  DATA: END OF TT_BWKEY_NOT_PRODUCTIVE.

  DATA: v_produtivo   TYPE i,

        v_improdutivo TYPE i,

        v_tem_produtivo   TYPE c,

        v_tem_improdutivo TYPE c.

  CALL FUNCTION 'CHECK_BUKRS_ML_PRODUCTIVE'

    EXPORTING

      i_bukrs                     = p_bukrs

   IMPORTING

     E_ALL_PRODUCTIVE             = v_werks_prod

   TABLES

     T_BWKEY_PRODUCTIVE           = TT_BWKEY_PRODUCTIVE

     T_BWKEY_NOT_PRODUCTIVE       = TT_BWKEY_NOT_PRODUCTIVE

            .

  IF sy-subrc <> 0.

  ENDIF.

  DESCRIBE TABLE TT_BWKEY_PRODUCTIVE LINES v_produtivo.

  DESCRIBE TABLE TT_BWKEY_NOT_PRODUCTIVE LINES v_improdutivo.

  IF v_produtivo > 0 AND

     v_improdutivo > 0.

    v_werks_prod = 'X'.

    v_tem_produtivo = '0'.

    v_tem_improdutivo = '0'.

    LOOP AT pitab_itens.

      IF v_tem_produtivo = '0' OR

         v_tem_improdutivo = '0'.

        READ TABLE TT_BWKEY_PRODUCTIVE WITH KEY

             bwkey = pitab_itens-werks.

        IF sy-subrc EQ 0.

          v_tem_produtivo = '1'.

        ELSE.

          READ TABLE TT_BWKEY_NOT_PRODUCTIVE WITH KEY

               bwkey = pitab_itens-werks.

          IF sy-subrc EQ 0.

            v_tem_improdutivo = '1'.

          ENDIF.

        ENDIF.

      ELSE.

        EXIT.

      ENDIF.

    ENDLOOP.

    IF v_tem_produtivo = '1' AND v_tem_improdutivo = '1'.

      CLEAR v_werks_prod.

    ENDIF.

  ENDIF.

endform.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F03

 

...

 

FORM selecionar_itens_da.

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

DATA: it_bwkey_productive LIKE t001k OCCURS 0,

      it_bwkey_not_productive LIKE t001k OCCURS 0.

* << Fim da inclusão

...

...

 

    IF v_line GT '1'.

      LOOP AT itab_da WHERE qtd_nac NE space.

        MOVE itab_da TO itab_werks .

        APPEND itab_werks.

      ENDLOOP.

    ENDIF.

  ENDIF.

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

  CALL FUNCTION 'CHECK_BUKRS_ML_PRODUCTIVE'

       EXPORTING

            i_bukrs          = /pws/zycie001-bukrs

       IMPORTING

            e_all_productive = v_werks_prod.

* << Fim da exclusão

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

  PERFORM CHECK_BUKRS_ML_PRODUCTIVE

         TABLES

            itab_da

         USING

            /pws/zycie001-bukrs

          CHANGING

            v_werks_prod.

* << Fim da inclusão

  IF     v_werks_prod  IS INITIAL AND

     NOT itab_da-werks IS INITIAL.

    MOVE: itab_da-werks TO v_werks.

    LOOP AT itab_da WHERE werks NE v_werks

                    AND   werks NE space

                    AND   NOT qtd_nac IS initial.

    ENDLOOP.

    IF sy-subrc EQ 0.

      v_prod_dif = 'X'.

    ENDIF.

...

 

...

 

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

  itab_zycit003_da-indic_obrig       TO    itab_zycit003-indic_obrig ,

* << Fim da exclusão

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

     itab_zycit003_da-indic_obrig    TO    itab_zycit003-indic_obrig ,

* << Fim da inclusão

     itab_zycit003_da-ipi_anoemiss   TO    itab_zycit003-ipi_anoemiss,

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

      itab_zycit003_da-ipi_extarif    TO    itab_zycit003-ipi_extarif,

* << Fim da exclusão

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

      itab_zycit003_da-ipi_extarif   TO    itab_zycit003-ipi_extarif,

* << Fim da inclusão

...

 

...

    DELETE itab_zycit467_del WHERE nrseqda EQ itab_da_aux-nrseqda

                             AND   nrseqlote EQ itab_da_aux-nrseqlote

                             AND   nrseq     EQ /pws/zycie001-nrseq

                             AND   ebeln     EQ itab_da_aux-ebeln

                             AND   ebelp     EQ itab_da_aux-ebelp.

  ENDLOOP.

  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,

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

        itab_zycit003-lifnr TO /pws/zycie000-lifnr.

* << Fim da exclusão

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

        itab_zycit003-lifnr TO /pws/zycie000-lifnr .

* << Fim da inclusão

  LOOP AT itab_zycit003 WHERE waers NE v_waers.

    v_waers_diferente = 'X'.

  ENDLOOP.

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

  PERFORM CHECK_BUKRS_ML_PRODUCTIVE

          TABLES

            itab_da

          USING

            /pws/zycie001-bukrs

          CHANGING

            v_werks_prod.

* << Fim da inclusão

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

  CALL FUNCTION 'CHECK_BUKRS_ML_PRODUCTIVE'

       EXPORTING

            i_bukrs          = /pws/zycie001-bukrs

       IMPORTING

            e_all_productive = v_werks_prod.

* << Fim da exclusão

  IF v_werks_prod IS INITIAL.

    MOVE: itab_zycit003-werks TO v_werks.

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

    LOOP AT itab_zycit003 WHERE werks NE v_werks

                          AND   werks NE space.

    ENDLOOP.

    IF sy-subrc EQ 0.

      v_prod_dif = 'X'.

    ENDIF.

    IF NOT itab_werks[] IS INITIAL.

      LOOP AT itab_zycit003 WHERE werks NE v_werks

                            AND   werks NE space.

      ENDLOOP.

      IF sy-subrc EQ 0.

        v_prod_dif = 'X'.

      ENDIF.

* << Fim da exclusão

    ENDIF.

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

  ENDIF.

* << Fim da exclusão

  IF v_prod_dif = 'X'.

    MESSAGE i015 WITH text-198 text-199.

    EXIT.

  ENDIF.

  IF NOT t001-land1 EQ 'CL' AND NOT t001-land1 EQ 'AR'.

    IF NOT itab_zycit003[] IS INITIAL.

...

 

 

...

 

* >> Início da inclusão:

FORM check_bukrs_ml_productive_it

TABLES   p_itab_itens STRUCTURE itab_itens

          USING    /pws/zycie001-bukrs

          CHANGING v_werks_prod.

 

  clear: TT_BWKEY_PRODUCTIVE, TT_BWKEY_NOT_PRODUCTIVE .

  refresh: TT_BWKEY_PRODUCTIVE, TT_BWKEY_NOT_PRODUCTIVE .

 

  clear : v_produtivo ,

          v_improdutivo ,

          v_tem_produtivo  ,

          v_tem_improdutivo .

 

 

  CALL FUNCTION 'CHECK_BUKRS_ML_PRODUCTIVE'

       EXPORTING

            i_bukrs                = /pws/zycie001-bukrs

       IMPORTING

            e_all_productive       = v_werks_prod

       TABLES

            t_bwkey_productive     = tt_bwkey_productive

            t_bwkey_not_productive = tt_bwkey_not_productive.

  IF sy-subrc <> 0.

 

  ENDIF.

 

  DESCRIBE TABLE tt_bwkey_productive LINES v_produtivo.

  DESCRIBE TABLE tt_bwkey_not_productive LINES v_improdutivo.

 

 

  IF v_produtivo > 0 AND

     v_improdutivo > 0.

 

    v_werks_prod = 'X'.

    v_tem_produtivo = '0'.

    v_tem_improdutivo = '0'.

 

    LOOP AT p_itab_itens.

      IF v_tem_produtivo = '0' OR

         v_tem_improdutivo = '0'.

        READ TABLE tt_bwkey_productive WITH KEY

             bwkey = p_itab_itens-werks.

        IF sy-subrc EQ 0.

          v_tem_produtivo = '1'.

        ELSE.

          READ TABLE tt_bwkey_not_productive WITH KEY

               bwkey = p_itab_itens-werks.

          IF sy-subrc EQ 0.

            v_tem_improdutivo = '1'.

          ENDIF.

        ENDIF.

      ELSE.

        EXIT.

      ENDIF.

    ENDLOOP.

    IF v_tem_produtivo = '1' AND v_tem_improdutivo = '1'.

      CLEAR v_werks_prod.

    ENDIF.

  ENDIF.

 

ENDFORM.                    " check_bukrs_ml_productive_it

* >> Fim da inclusão

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

Modificações efetuadas em REPS /PWS/MZYCI001X01

 

...

 

* >> Início da inclusão:

  DATA: BEGIN OF TT_BWKEY_PRODUCTIVE OCCURS 0.

          INCLUDE STRUCTURE T001K.

  DATA: END OF TT_BWKEY_PRODUCTIVE.

 

  DATA: BEGIN OF TT_BWKEY_NOT_PRODUCTIVE OCCURS 0.

          INCLUDE STRUCTURE T001K.

  DATA: END OF TT_BWKEY_NOT_PRODUCTIVE.

 

  DATA: v_produtivo   TYPE i,

        v_improdutivo TYPE i,

        v_tem_produtivo   TYPE c,

        v_tem_improdutivo TYPE c.

 

* >> Fim da inclusão

 

DATA: END OF COMMON PART a.