CE PLUS - Nota 005941

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Embarque

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

Data/Hora Última Alteração: 22/02/2011 15:20:48

Descrição da Nota: PERFORMANCE EMBARQUE DE NACIONALIZAÇÃO RC

Sintoma

PERFORMANCE EMBARQUE DE NACIONALIZAÇÃO RC

 

 

Solução

Atualizado embarque de nacionalização para melhoria de performance nos itens

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

DUMP SALDO DA SLD_DA "VALOR NEGATIVO NO SALDO DA DA" NO EMBARQUE

AJUSTES NA DA

Informações Complementares

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

Nota Número 05941 Data: 15/02/2008 Hora: 14:20:29

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

 

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

Nota Número              : 05941

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00004

Agrupamento              : 00034

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

Referência às notas relacionadas:

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

 

01383  - 00001 - 6.0    - 00023  - AJUSTES NA DA

04848  - 00002 - 7.0    - 00003  - DUMP SALDO DA SLD_DA "VALOR NEGATIVO NO SALDO DA DA" NO EMBARQUE

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

PERFORMANCE EMBARQUE DE NACIONALIZAÇÃO RC

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

Palavras Chave:

PERFORMANCE - NACIONALIZAÇÃO - EMBARQUE - RC -

/PWS/SAPMZYCI001

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

Objetos da nota:

REPS /PWS/MZYCI001F01

REPS /PWS/MZYCI001F03

REPS /PWS/MZYCI001I01

REPS /PWS/MZYCI001X01

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F01

 

...

        ( /pws/zycie001-regime EQ '14' AND

          sy-tcode             EQ '/PWS/ZYCI001_A' ) OR

        ( /pws/zycie001-regime EQ '14' AND

          sy-tcode             EQ '/PWS/ZYCI001_E' ).

  CLEAR itab_zycit482.

  SELECT * FROM /pws/zycit482 INTO TABLE itab_zycit482

       WHERE processo = '1'.

  READ TABLE itab_zycit482 WITH KEY

             processo = '1'.

  IF sy-subrc = 0 AND /pws/zycie001-regime EQ '16'.

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

    SELECT * FROM /pws/zycit003                         "#EC CI_NOFIRST

* << Fim da exclusão

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

    IF NOT itab_zycit003[] IS INITIAL AND

           v_atualrc IS INITIAL.

      v_atualrc = 'X'.

      SELECT * FROM /pws/zycit003                       "#EC CI_NOFIRST

* << Fim da inclusão

    INTO TABLE itab_zycit003_saldo

    FOR ALL ENTRIES IN itab_zycit003

     WHERE ebeln EQ itab_zycit003-ebeln

       AND ebelp   EQ itab_zycit003-ebelp

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

       AND nrseqda EQ itab_zycit003-nrseqda.

* << Fim da exclusão

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

          AND nrseq NE /pws/zycie003-nrseq.

      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   tpdecl EQ 'DI'

        AND regime EQ '16'.

        LOOP AT itab_zycit003_saldo.

          READ TABLE itab_zycit001_saldo WITH KEY

                      nrseq = itab_zycit003_saldo-nrseq.

          IF sy-subrc NE 0 .

            DELETE itab_zycit003_saldo WHERE

                  nrseq EQ itab_zycit003_saldo-nrseq.

          ENDIF.

        ENDLOOP.

      ENDIF.

* << Fim da inclusão

    LOOP AT itab_zycit003.

      v_tabix = sy-tabix.

      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.

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

      SELECT SINGLE * FROM /pws/zycit100

         WHERE ebeln = itab_zycit003-ebeln AND

               ebelp = itab_zycit003-ebelp AND

               nrseqdi = itab_zycit003-nrseqda.

      SELECT SINGLE qtd_iten

          FROM /pws/zycit003 INTO itab_zycit443-qtd_da

          WHERE nrseq = /pws/zycit100-nrseq AND

                ebeln = /pws/zycit100-ebeln AND

                ebelp = /pws/zycit100-ebelp.

      IF sy-subrc EQ  0 .

* << Fim da exclusão

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

        MOVE itab_zycit003-menge TO itab_zycit443-qtd_da.

* << Fim da inclusão

        itab_zycit003-sld_da   =  itab_zycit443-qtd_da -

       ( v_qtdutil_da  + itab_zycit003-qtd_iten ).

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

      ENDIF.

      itab_zycit003-menge = itab_zycit443-qtd_da.

* << Fim da exclusão

      MODIFY itab_zycit003 INDEX v_tabix.

    ENDLOOP.

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

    ENDIF.

* << Fim da inclusão

  ELSE.

    IF NOT itab_zycit003[] IS INITIAL.

      FREE itab_zycit443.

      REFRESH itab_zycit443.

      SELECT *

             INTO  TABLE itab_zycit443

             FROM  /pws/zycit443

             FOR ALL ENTRIES IN itab_zycit003

             WHERE nrseqda EQ itab_zycit003-nrseqda.

    ENDIF.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F03

 

...

    v_waers_diferente = 'X'.

  ENDLOOP.

  IF sy-subrc NE 0.

    /pws/zycie001-waers = v_moeda.

  ELSE.

    /pws/zycie001-waers = /pws/zycbt007-waersa.

    IF /pws/zycbt007-waersa IS INITIAL.

      MESSAGE e015 WITH text-213.

    ENDIF.

  ENDIF.

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

  IF NOT itab_zycit003[] IS INITIAL AND

         v_atualrc IS INITIAL.

    v_atualrc = 'X'.

    SELECT * FROM /pws/zycit003                         "#EC CI_NOFIRST

     INTO TABLE itab_zycit003_saldo

     FOR ALL ENTRIES IN itab_zycit003

      WHERE ebeln EQ itab_zycit003-ebeln

        AND ebelp   EQ itab_zycit003-ebelp

        AND nrseq NE /pws/zycie003-nrseq.

    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   tpdecl EQ 'DI'

      AND regime EQ '16'.

      LOOP AT itab_zycit003_saldo.

        READ TABLE itab_zycit001_saldo WITH KEY

                    nrseq = itab_zycit003_saldo-nrseq.

        IF sy-subrc NE 0 .

          DELETE itab_zycit003_saldo WHERE

                nrseq EQ itab_zycit003_saldo-nrseq.

        ENDIF.

      ENDLOOP.

    ENDIF.

  ENDIF.

* << Fim da inclusão

  LOOP AT itab_zycit003.

    v_tabix = sy-tabix.

    v_netpr = v_netpr +

      ( itab_zycit003-netpr * itab_zycit003-qtd_iten ).

    /pws/zycie001-netpr = v_netpr.

    IF /pws/zycie001-netpr < 0.

      CLEAR /pws/zycie001-netpr.

      MESSAGE e061 WITH text-235 text-236.

    ENDIF.

    SELECT SINGLE j_1bmatuse INTO ekpo-j_1bmatuse

...

 

...

         itab_zycit003-qtd_iten IS INITIAL.

        itab_zycit003-ntgew = 1 / 1000.

      ENDIF.

    ENDIF.

    CLEAR itab_zycit482.

    SELECT * FROM /pws/zycit482 INTO TABLE itab_zycit482

         WHERE processo = '1'.

    READ TABLE itab_zycit482 WITH KEY

               processo = '1'.

    IF sy-subrc = 0 AND /pws/zycie001-regime EQ '16'.

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

      SELECT * FROM /pws/zycit003                       "#EC CI_NOFIRST

      INTO TABLE itab_zycit003_saldo

      FOR ALL ENTRIES IN itab_zycit003

       WHERE ebeln EQ itab_zycit003-ebeln

         AND ebelp   EQ itab_zycit003-ebelp

         AND nrseqda EQ itab_zycit003-nrseqda.

* << Fim da exclusão

      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.

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

      SELECT SINGLE * FROM /pws/zycit100

         WHERE ebeln = itab_zycit003-ebeln AND

               ebelp = itab_zycit003-ebelp AND

               nrseqdi = itab_zycit003-nrseqda.

      SELECT SINGLE qtd_iten

          FROM /pws/zycit003 INTO itab_zycit443-qtd_da

          WHERE nrseq = /pws/zycit100-nrseq AND

                ebeln = /pws/zycit100-ebeln AND

                ebelp = /pws/zycit100-ebelp.

      IF sy-subrc EQ  0 .

        itab_zycit003-sld_da   =  itab_zycit443-qtd_da -

* << Fim da exclusão

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

      itab_zycit003-sld_da   =  itab_zycit003-menge -

* << Fim da inclusão

       ( v_qtdutil_da  + itab_zycit003-qtd_iten ).

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

      ENDIF.

* << Fim da exclusão

    ELSE.

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

         /pws/zycie001-regime EQ '16'.

        IF NOT itab_zycit443[] IS INITIAL.

          SELECT * FROM /pws/zycit003                   "#EC CI_NOFIRST

          INTO TABLE itab_zycit003_saldo

...

 

...

        IF itab_da-werks IS INITIAL.

          itab_da-werks = itab_zycit003_da-werks.

        ELSE.

          IF itab_da-werks NE itab_zycit003_da-werks.

            v_centro_dif = c_sim.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDLOOP.

    LOOP AT itab_zycit100_da.

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

      CLEAR: v_atualrc.

* << Fim da inclusão

      READ TABLE itab_zycit003_da WITH KEY

                               ebeln = itab_zycit100_da-ebeln

                               ebelp = itab_zycit100_da-ebelp

                               nrseq = itab_zycit100_da-nrseq.

      CLEAR v_qtd_util.

      LOOP AT itab_zycit003_saldo

              WHERE   ebeln = itab_zycit100_da-ebeln

                AND   ebelp = itab_zycit100_da-ebelp

                AND   nrseq NE itab_zycit100_da-nrseq.

        v_qtd_util = v_qtd_util + itab_zycit003_saldo-qtd_iten.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001I01

 

MODULE user_command_0001 INPUT.

  WRITE /pws/zycie001-nrseq TO /pws/zycie001-nrseq RIGHT-JUSTIFIED.

  OVERLAY /pws/zycie001-nrseq WITH '0000000000'.

  CASE okcode.

    WHEN 'ENTE'.

* >> Início da inclusão: MODULE USER_COMMAND_0001

      CLEAR: v_atualrc.

* << Fim da inclusão

      SELECT SINGLE *

       FROM /pws/zycit001

       INTO /pws/zycie001

       WHERE nrseq = /pws/zycie001-nrseq.

      IF sy-subrc NE 0.

        MESSAGE w015 WITH text-031.

      ELSE.

        MOVE /pws/zycie001 TO wa_zycit001.

        PERFORM lock_record.

        PERFORM recuperando_itens.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001X01

 

...

       v_belnr     LIKE /pws/zycbt032-belnr   ,

       v_nrpres    LIKE /pws/zycit026-nrpres  ,

       v_nradto    LIKE /pws/zycit008-nradto  ,

       v_nrseqori  LIKE /pws/zycit036-nrseqori.

DATA:  v_value(10) TYPE n                     ,

       v_registro                             ,

       v_tipo_1    LIKE /pws/zycit036-origem  ,

       v_belnr_ant LIKE /pws/zycie006-belnr_p ,

       v_cpochv1   LIKE /pws/zycbe033-cpochv  ,

       v_tabela    LIKE /pws/zycbe033-tabela  .

* >> Início da inclusão:

data: v_atualrc type c.

* << Fim da inclusão

DATA:

      itab_zycbt032  LIKE /pws/zycbt032 OCCURS 10 WITH HEADER LINE,

      it_zycbe033  LIKE /pws/zycbe033 OCCURS 10 WITH HEADER LINE,

      it_zycbt034 LIKE /pws/zycbt034 OCCURS 0 WITH HEADER LINE  ,

      it_zycbt011  LIKE /pws/zycbt011 OCCURS 10 WITH HEADER LINE,

      it_zycbt012  LIKE /pws/zycbt012 OCCURS 10 WITH HEADER LINE,

      it_zycbt013  LIKE /pws/zycbt013 OCCURS 10 WITH HEADER LINE.

DATA: BEGIN OF it_zycbe035 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbe035.

DATA: END OF it_zycbe035.

...