CE PLUS - Nota 008424

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Embarque

Data/Hora da Publicação: 20/05/2009 00:00:00

Data/Hora Última Alteração: 20/06/2011 12:01:23

Descrição da Nota: AJUSTE PARA MELHORIA DE PERFORMANCE DO EMBARQUE DE NACIONALIZAÇÃO DE DA

Sintoma

Ajuste para melhoria de performance do embarque de nacionalização de DA

 

 

Solução

Ajuste para melhoria de performance do embarque de nacionalização de DA

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

PERFORMANCE EMBARQUE DE NACIONALIZAÇÃO RC

DUMP NO EMBARQUE DE RECOF

Informações Complementares

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

Nota Número 08424 Data: 20/05/2009 Hora: 15:36:11

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

 

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

Nota Número              : 08424

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00009

Agrupamento              : 00098

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

Referência às notas relacionadas:

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

 

01516  - 00001 - 6.0    - 00023  - DUMP NO EMBARQUE DE RECOF

05941  - 00002 - 7.0    - 00004  - PERFORMANCE EMBARQUE DE NACIONALIZAÇÃO RC

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

AJUSTE PARA MELHORIA DE PERFORMANCE DO EMBARQUE DE NACIONALIZAÇÃO DE DA

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

Palavras Chave:

PERFORMANCE - EMBARQUE - NACIONALIZAÇÃO - DA

/PWS/SAPMZYCI001

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

Objetos da nota:

REPS /PWS/MZYCI001F01

REPS /PWS/MZYCI001F03

REPS /PWS/MZYCI001I01

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F01

 

...

  /pws/zycie263-qtd_iten = itab_zycit003-invoiced.

  /pws/zycie003-dtremessa = itab_zycit003-dtremessa.

  REFRESH itab_zycit003_aux.

  MOVE itab_zycit003[] TO itab_zycit003_aux[].

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

        ( /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.

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

  IF itab_zycit482[] IS INITIAL.

* << Fim da inclusão

  SELECT * FROM /pws/zycit482 INTO TABLE itab_zycit482

       WHERE processo = '1'.

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

  ENDIF.

* << Fim da inclusão

  READ TABLE itab_zycit482 WITH KEY

             processo = '1'.

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

    IF NOT itab_zycit003[] IS INITIAL AND

           v_atualrc IS INITIAL.

...

 

...

            v_qtdutil_da = v_qtdutil_da + itab_zycit003_saldo-qtd_iten .

          ENDIF.

        ENDLOOP.

        MOVE itab_zycit003-menge TO itab_zycit443-qtd_da.

        itab_zycit003-sld_da   =  itab_zycit443-qtd_da -

       ( v_qtdutil_da  + itab_zycit003-qtd_iten ).

        MODIFY itab_zycit003 INDEX v_tabix.

      ENDLOOP.

    ENDIF.

  ELSE.

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

    IF NOT itab_zycit003[] IS INITIAL.

* << Fim da exclusão

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

    IF NOT itab_zycit003[] IS INITIAL

       AND v_atualrc IS INITIAL.

* << Fim da inclusão

      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.

      READ TABLE itab_zycit467 INDEX 1.

      IF sy-subrc EQ 0 AND

         itab_zycit467-nrseq NE /pws/zycie001-nrseq..

        REFRESH itab_zycit467.

      ENDIF.

      IF itab_zycit467[] IS INITIAL.

        SELECT * FROM /pws/zycit467                     "#EC CI_NOFIRST

             INTO TABLE itab_zycit467

             WHERE nrseq EQ /pws/zycie001-nrseq.

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

      ENDIF.

* << Fim da exclusão

    ENDIF.

    IF NOT itab_zycit443[] IS INITIAL.

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

      SELECT * FROM /pws/zycit003                       "#EC CI_NOFIELD

      INTO TABLE itab_zycit003_saldo                    "#EC CI_NOFIRST

* << Fim da exclusão

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

        v_atualrc = 'X'.

        SELECT * FROM /pws/zycit003                     "#EC CI_NOFIRST

         INTO TABLE itab_zycit003_saldo

* << Fim da inclusão

      FOR ALL ENTRIES IN itab_zycit443

       WHERE ebeln EQ itab_zycit443-ebeln

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

       AND   ebelp EQ itab_zycit443-ebelp

       AND    nrseqda EQ itab_zycit443-nrseqda.

    ENDIF.

    LOOP AT itab_zycit003.

      v_tabix = sy-tabix.

      IF NOT itab_zycit003_saldo[] IS INITIAL.

* << Fim da exclusão

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

            AND ebelp EQ itab_zycit443-ebelp .

        IF sy-subrc EQ 0.

* << Fim da inclusão

        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

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

         AND  tpdecl EQ 'DI'.

* << Fim da exclusão

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

            AND tpdecl EQ 'DI'.

* << Fim da inclusão

        LOOP AT itab_zycit001_saldo WHERE regime EQ '04'.

          DELETE itab_zycit003_saldo

            WHERE nrseq EQ itab_zycit001_saldo-nrseq.

        ENDLOOP.

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

        ENDIF.

* << Fim da inclusão

      ENDIF.

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

    ENDIF.

    LOOP AT itab_zycit003.

      v_tabix = sy-tabix.

* << Fim da inclusã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.

      READ TABLE itab_zycit443 WITH KEY

                   ebeln = itab_zycit003-ebeln

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F03

 

...

    /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.

  IF NOT itab_zycit003[] IS INITIAL AND

         v_atualrc IS INITIAL.

    v_atualrc = 'X'.

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

    SELECT * FROM /pws/zycit003                         "#EC CI_NOFIRST

* << Fim da exclusão

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

    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

        FOR ALL ENTRIES IN itab_zycit443

         WHERE ebeln EQ itab_zycit443-ebeln

           AND ebelp EQ itab_zycit443-ebelp .

        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'.

          LOOP AT itab_zycit001_saldo WHERE regime EQ '04'.

            DELETE itab_zycit003_saldo

              WHERE nrseq EQ itab_zycit001_saldo-nrseq.

          ENDLOOP.

        ENDIF.

      ENDIF.

    ELSE.

      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

        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 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.

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

    ENDIF.

  ENDIF.

  IF NOT itab_zycit003[] IS INITIAL.

    SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263

          WHERE nrseq = /pws/zycie001-nrseq

            AND eliminado = space.

* << Fim da inclusão

  ENDIF.

  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.

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

    READ TABLE itab_zycit100_per WITH KEY nrseq = itab_zycit003-nrseq

                                          ebeln = itab_zycit003-ebeln

                                          ebelp = itab_zycit003-ebelp.

    IF itab_zycit003-tpnf IS INITIAL.

      READ TABLE itab_zycit100 WITH KEY nrseq = itab_zycit003-nrseq

                                        ebeln = itab_zycit003-ebeln

                                        ebelp = itab_zycit003-ebelp.

      IF sy-subrc EQ 0.

* << Fim da inclusão

    SELECT SINGLE j_1bmatuse INTO ekpo-j_1bmatuse

             FROM ekpo

            WHERE ebeln EQ itab_zycit003-ebeln

              AND ebelp EQ itab_zycit003-ebelp.

    SELECT SINGLE tpnf tpnf_ld tpnf_db tpnf_icms INTO

    CORRESPONDING FIELDS OF /pws/zycit012

             FROM /pws/zycit012

             WHERE j_1bmatuse EQ ekpo-j_1bmatuse.

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

    READ TABLE itab_zycit100_per WITH KEY nrseq = itab_zycit003-nrseq

                                          ebeln = itab_zycit003-ebeln

                                          ebelp = itab_zycit003-ebelp.

    IF itab_zycit003-tpnf IS INITIAL.

      READ TABLE itab_zycit100 WITH KEY nrseq = itab_zycit003-nrseq

                                        ebeln = itab_zycit003-ebeln

                                        ebelp = itab_zycit003-ebelp.

      IF sy-subrc EQ 0.

* << Fim da exclusão

        IF NOT itab_zycit003-nrseqd IS INITIAL

        AND NOT /pws/zycit012-tpnf_db IS INITIAL.

          itab_zycit003-tpnf   = /pws/zycit012-tpnf_db.

        ELSEIF /pws/zycit100-icms_dif EQ 'X'

        AND NOT /pws/zycit012-tpnf_icms IS INITIAL.

          itab_zycit003-tpnf   = /pws/zycit012-tpnf_icms.

        ELSE.

          itab_zycit003-tpnf   = /pws/zycit012-tpnf.

          REFRESH itab_zycit263.

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

          IF NOT itab_zycit003[] IS INITIAL.

            SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263

                  WHERE nrseq = /pws/zycie001-nrseq

                    AND eliminado = space.

          ENDIF.

* << Fim da exclusão

          READ TABLE itab_zycit263 WITH KEY ebeln = itab_zycit263-ebeln

                                            ebelp = itab_zycit263-ebelp.

          IF sy-subrc EQ 0.

            SELECT SINGLE frpagto INTO /pws/zycit006-frpagto

             FROM /pws/zycit006                         "#EC CI_NOFIELD

             WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat.

            IF sy-subrc EQ 0.

              IF /pws/zycit006-frpagto EQ 'A'.

                itab_zycit003-tpnf = /pws/zycit012-tpnf_ld.

              ENDIF.

            ENDIF.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDIF.

...

 

...

                 ebeln = itab_zycit003-ebeln

                 ebelp = itab_zycit003-ebelp.

    IF sy-subrc EQ  0.

      IF itab_zycit003-ntgew IS INITIAL AND

         itab_zycit443_aux-gewei = 'G' AND NOT

         itab_zycit003-qtd_iten IS INITIAL.

        itab_zycit003-ntgew = 1 / 1000.

      ENDIF.

    ENDIF.

    CLEAR itab_zycit482.

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

    IF itab_zycit482[] IS INITIAL.

* << Fim da inclusão

    SELECT * FROM /pws/zycit482 INTO TABLE itab_zycit482

         WHERE processo = '1'.

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

    ENDIF.

* << Fim da inclusão

    READ TABLE itab_zycit482 WITH KEY

               processo = '1'.

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

      CLEAR v_qtdutil_da.

      LOOP AT itab_zycit003_saldo

...

 

...

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

          v_qtdutil_da = v_qtdutil_da + itab_zycit003_saldo-qtd_iten .

        ENDIF.

      ENDLOOP.

      itab_zycit003-sld_da   =  itab_zycit003-menge -

     ( v_qtdutil_da  + itab_zycit003-qtd_iten ).

    ELSE.

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

         /pws/zycie001-regime EQ '16'.

        IF NOT itab_zycit443[] IS INITIAL.

* >> 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_zycit443

           WHERE ebeln EQ itab_zycit443-ebeln

       AND    ebelp   EQ itab_zycit443-ebelp .

          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'.

            LOOP AT itab_zycit001_saldo WHERE regime EQ '04'.

              DELETE itab_zycit003_saldo

                WHERE nrseq EQ itab_zycit001_saldo-nrseq.

            ENDLOOP.

          ENDIF.

* << 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.

          READ TABLE itab_zycit443 WITH KEY

                       ebeln = itab_zycit003-ebeln

...

 

...

    WHERE   ebeln EQ itab_zycit455-ebeln

    AND   ebelp EQ itab_zycit455-ebelp.

  ENDIF.

  IF itab_zycit443[]     IS INITIAL AND

     sy-ucomm            NE 'DELP'  AND

     itab_zycit003_del[] IS INITIAL.

    SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443

      WHERE nrseqda EQ /pws/zycit442-nrseqda.

  ENDIF.

  DELETE itab_zycit443_saldo WHERE nrseqda NE /pws/zycit442-nrseqda.

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

  IF NOT itab_zycit443[] IS INITIAL.

* << Fim da exclusão

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

  IF NOT itab_zycit443[] IS INITIAL

     AND v_atualrc IS INITIAL.

    v_atualrc = 'X'.

* << Fim da inclusão

    SELECT * FROM /pws/zycit003                         "#EC CI_NOFIRST

    INTO TABLE itab_zycit003_saldo

    FOR ALL ENTRIES IN itab_zycit443

     WHERE ebeln EQ itab_zycit443-ebeln

     AND   ebelp   EQ itab_zycit443-ebelp .

    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

...

 

...

            WHERE nrseq EQ itab_zycit001_saldo-nrseq.

        ENDLOOP.

      ELSEIF /pws/zycie001-regime EQ '16'

         AND  /pws/zycie001-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.

    ENDIF.

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

  ENDIF.

* << Fim da inclusão

    LOOP AT itab_zycit443.

      CLEAR v_qtdutil_da.

      v_index = sy-tabix.

      LOOP AT itab_zycit003_saldo WHERE ebeln EQ itab_zycit443-ebeln

                             AND    ebelp   EQ itab_zycit443-ebelp .

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

          v_qtdutil_da = v_qtdutil_da + itab_zycit003_saldo-qtd_iten.

        ENDIF.

      ENDLOOP.

      itab_zycit443-qtd_util = v_qtdutil_da.

      MODIFY itab_zycit443 INDEX v_index.

    ENDLOOP.

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

  ENDIF.

* << Fim da exclusão

ENDFORM.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001I01

 

...

      WHEN 'DA'.

        IF v_status_s NE 0.

          PERFORM grava_tabelas.

        ENDIF.

        PERFORM call_da.

        SELECT SINGLE status

               FROM /pws/zycit001

               INTO /pws/zycie001-status

               WHERE nrseq = /pws/zycie001-nrseq.

      WHEN 'SELE_DA'.

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

        CLEAR: v_atualrc.

* << Fim da inclusão

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

          PERFORM verifica_rc.

        ENDIF.

        SELECT * FROM /pws/zycit482 INTO TABLE itab_zycit482

          WHERE processo = '1'.

        IF v_manual EQ 'N'.

          CALL SELECTION-SCREEN '0701'.

        ELSE.

          CALL SELECTION-SCREEN '0700'.

        ENDIF.

...

 

...

MODULE mod_374 INPUT.

  READ TABLE itab_zycit003 WITH KEY ebeln = /pws/zycie374-ebeln

                                    ebelp = /pws/zycie374-ebelp.

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

    SELECT SINGLE nrseq FROM /pws/zycit100              "#EC CI_NOFIRST

* << Fim da exclusão

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

  SELECT SINGLE nrseq FROM /pws/zycit100                "#EC CI_NOFIRST

* << Fim da inclusão

      INTO itab_zycit003-nrseq

      WHERE nrseq EQ /pws/zycie001-nrseq.

    IF sy-subrc EQ 0.

      EXIT.

    ENDIF.

    CLEAR: itab_zycit003.

  MODIFY itab_zycit003 TRANSPORTING advalii advalipi advalicms

              WHERE ebeln = /pws/zycie374-ebeln

                AND ebelp = /pws/zycie374-ebelp.

ENDMODULE.

...