CE PLUS - Nota 000882

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Nota Fiscal

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

Data/Hora Última Alteração: 20/06/2011 12:16:03

Descrição da Nota: PROBLEMA DE PERFORMANCE NA GERAÇÃO DA NF

Sintoma

Problema de performance na geração da NF.

 

 

Solução

Inseridas condições nas seleções das tabelas com for all entries.

 

Versões Tratadas

6.0

Informações Complementares

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

Nota Número 00882 Data: 15/02/2006 Hora: 11:45:07

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

 

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

Nota Número              : 00882

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 6.0

Pacote                   : 00022

Agrupamento              : 00101

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

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

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

PROBLEMA DE PERFORMANCE NA GERAÇÃO DA NF

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

Palavras Chave:

PERFORMANCE - GERAÇÃO - NOTA - FISCAL

 

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

Objetos da nota:

FUNC /PWS/ZYCI_RATEIO_CUSTO

REPS /PWS/MZYCI016F01

REPS /PWS/ZYCIR035

 

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

Modificações efetuadas em FUNC /PWS/ZYCI_RATEIO_CUSTO

 

...

  IF sy-subrc NE 0.

    v_erro = '2'.

    v_resposta = 'S'.

  ENDIF.

  DELETE itab_zycit036 WHERE vlreal IS initial.

* >> Início da inclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO

  PERFORM custeando_planejado(/pws/zycir035) TABLES it_desp

                                       itab_zycit036_plan.

* << Fim da inclusão

  IF v_erro IS INITIAL AND sy-binpt IS INITIAL.

    EXPORT itab_zycit036 TO MEMORY ID 'r145'.

    EXPORT v_parametro TO MEMORY ID '145p'.

    EXPORT v_visualiza TO MEMORY ID '145v'.

    EXPORT v_programa  TO MEMORY ID '145r'.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI016F01

 

...

        PERFORM  visualiza_rateio.

        IF v_resp NE 'S'.

          EXIT.

        ENDIF.

      ENDIF.

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

      PERFORM cria_despesas(/pws/zycir035) TABLES it_desp

                                          itab_zycit036.

      PERFORM custeando_planejado(/pws/zycir035) TABLES it_desp

                                           itab_zycit036_plan.

* << Fim da exclusão

      MOVE itab_zycit036[] TO itab_zycit036_di[].

      LOOP AT itab_zycit036 WHERE origem = 'DI'.

       READ TABLE itab_zycit036_di WITH KEY nrseq = itab_zycit036-nrseq

                                            ebeln = itab_zycit036-ebeln

                                            ebelp = itab_zycit036-ebelp

...

 

...

        PERFORM  visualiza_rateio.

        IF v_resp NE 'S'.

          EXIT.

        ENDIF.

      ENDIF.

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

      PERFORM cria_despesas(/pws/zycir035) TABLES it_desp

                                          itab_zycit036.

      PERFORM custeando_planejado(/pws/zycir035) TABLES it_desp

                                          itab_zycit036_plan.

* << Fim da exclusão

      MOVE itab_zycit036[] TO itab_zycit036_di[].

    ENDIF.

  ENDIF.

  MOVE itab_zycit036[] TO itab_zycit036_di[].

  PERFORM calcular_outros_custos(/pws/zycir006) TABLES itab_zycit036.

...

 

...

        v_resposta          =  v_resp

        v_erro              =  v_erro

      TABLES

        itab_zycit036       =  itab_zycit036

        itab_zycit003       =  itab_zycit003_aux

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

        itab_zycit100       =  itab_zycit100aux.

* << Fim da exclusão

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

        itab_zycit100       =  itab_zycit100aux

        itab_zycit036_plan  =  itab_zycit036_plan.

* << Fim da inclusão

  ELSE.

    CALL FUNCTION '/PWS/ZYCI_RATEIO_CUSTO'

      EXPORTING

        v_programa          =  v_programa

        v_visualiza         =  v_visualiza

...

 

...

        v_resposta          =  v_resp

        v_erro              =  v_erro

      TABLES

        itab_zycit036       =  itab_zycit036

        itab_zycit003       =  itab_zycit003

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

        itab_zycit100       =  itab_zycit100aux.

* << Fim da exclusão

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

        itab_zycit100       =  itab_zycit100aux

        itab_zycit036_plan  =  itab_zycit036_plan.

* << Fim da inclusão

  ENDIF.

ENDFORM.

FORM ver_rateio.

  DATA: v_programa LIKE /pws/zycit036-origem VALUE 'NF'.

  SELECT * FROM /pws/zycit100

...

 

 

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

Modificações efetuadas em REPS /PWS/ZYCIR035

 

report /pws/zycir035 message-id /pws/zycim

                line-count 65

                line-size  132

                no standard page heading.

* >> Início da exclusão:

data: v_origem(3)    value 'DI ',

      v_codmod       value 'D',

      v_ok,

      v_netpr        type /pws/zycil816 .

* << Fim da exclusão

tables: /pws/zycit085, /pws/zycie085,

        /pws/zycit003,

        /pws/zycie093,

        /pws/zycit100,

        /pws/zycit001,

...

 

...

        /pws/zycit093,

        ekko,

        tcurx,

        konv,

        t001.

* >> Início da inclusão:

DATA: v_origem(3)    VALUE 'DI ',

      v_codmod       VALUE 'D',

      v_ok,

      v_netpr        TYPE /pws/zycil816 .

* << Fim da inclusão

data: begin of it_desp occurs 0,

            nrseq      like /pws/zycie003-nrseq,

            ebeln      like /pws/zycie003-ebeln,

            ebelp      like /pws/zycie003-ebelp,

            netpr      like /pws/zycie003-netpr,

...

 

...

            vlcofins   like /pws/zycit100-vlcofins,

      end of it_desp.

data: itab_zycit036      like /pws/zycit036 occurs 0 with header line,

      it_zycit100        like /pws/zycit100 occurs 0 with header line,

      itab_zycit100        like /pws/zycit100 occurs 0 with header line.

* >> Início da inclusão:

DATA: BEGIN OF itab_zyglt100 OCCURS 10.

        INCLUDE STRUCTURE /pws/zyglt100.

DATA: END OF itab_zyglt100.

* << Fim da inclusão

data: it_zycit085 like /pws/zycie085,

      wa_desp     like it_desp,

      wa_036      like itab_zycit036.

selection-screen begin of block di with frame title text-001.

parameter: pa_nrseq like /pws/zycie085-nrseqdi,

...

 

...

    where inco1 = it_desp-inco1

      and land1 eq t001-land1.

  select * from /pws/zycit029 into table itab_zycit029

         where codmod eq 'D'

         and land1 eq t001-land1.

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

  IF NOT itab_zycit029[] IS INITIAL.

* << Fim da inclusão

  select * from /pws/zycit030

    into table itab_zycit030

    for all entries in itab_zycit029

    where land1 eq t001-land1

    and codmod eq 'D'

    and codigo eq itab_zycit029-codigo.

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

  ENDIF.

  IF NOT it_desp[] IS INITIAL.

* << Fim da inclusão

  select nrseq embarca bukrs werks waers dtinicio from /pws/zycit001

         into table itab_zycit001

         for all entries in it_desp

         where nrseq = it_desp-nrseq.

  select * from /pws/zycit003 into table itab_zycit003

...

 

...

               ebeln = it_desp-ebeln and

               ebelp = it_desp-ebelp.

  select * from /pws/zycit100 into table itab_zycit100

    for all entries in it_desp

    where nrseq = it_desp-nrseq.

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

  ENDIF.

* << Fim da inclusão

  if /pws/zycit031-inco1_ci eq 'FOB'.

    delete itab_zycit030 where codigo = 'CIF'

                            or codigo  = 'C&F'.

  elseif /pws/zycit031-inco1_ci eq 'C&F'.

    delete itab_zycit030 where codigo = 'FOB'

...

 

...

      v_ebeln = it_desp-ebeln.

      read table itab_zycit001 with key nrseq = it_desp-nrseq.

      select single bstyp from ekko into v_bstyp where

             ebeln = it_desp-ebeln.

      if v_bstyp eq 'L'.

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

        PERFORM verifica_exit USING 'D'

                                    '/PWS/ZYCIR035'

                                    'CST001'.

        CLEAR: itab_zyglt100 .

        READ TABLE itab_zyglt100 WITH KEY zexit = 'CST001'.

        IF sy-subrc EQ 0.

          IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

            PERFORM (itab_zyglt100-formulario) IN PROGRAM

                (itab_zyglt100-programa) TABLES IT_DESP

                                          CHANGING ITAB_KONP.

          ENDIF.

        ELSE.

* << Fim da inclusão

        select * from a016 into table itab_a016

               for all entries in it_desp where

               evrtn = it_desp-ebeln and

               evrtp = it_desp-ebelp and

               datbi GE itab_zycit001-dtinicio AND

...

 

...

            read table itab_a016 with key knumh = itab_konp-knumh.

            itab_konp-ebeln = itab_a016-evrtn.

            itab_konp-ebelp = itab_a016-evrtp.

            modify itab_konp transporting ebeln ebelp.

          endloop.

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

          ENDIF.

* << Fim da inclusão

        endif.

      else.

        free itab_custo_condition.

        select single * from ekko

              into ekko

...

 

...

    tcurx-currdec = 2.

  endif.

  p_itab_zycit036_vlreal =

  p_itab_zycit036_vlreal / ( 10 ** ( tcurx-currdec - 2 ) ).

endform.

* >> Início da inclusão:

FORM verifica_exit USING    p_modulo

                            p_func

                            p_exit.

  CLEAR itab_zyglt100.

  REFRESH itab_zyglt100.

  CALL FUNCTION '/PWS/ZYGL_BUSCA_EXIT_CLIENTE'

    EXPORTING

      i_codmod                = p_modulo

      i_func                  = p_func

      i_zexit                 = p_exit

    TABLES

      itab_zyglt100           = itab_zyglt100

    EXCEPTIONS

      i_codmod_nao_encontrado = 1

      i_func_nao_encontrado   = 2

      i_zexit_nao_encontrado  = 3

      OTHERS                  = 4.

ENDFORM.

* << Fim da inclusão