CE PLUS - Nota 005055

Módulo: DOC. EXPORTAÇÃO

Funcionalidade: Relatórios

Data/Hora da Publicação: 23/10/2007 00:00:00

Data/Hora Última Alteração: 04/03/2010 13:44:11

Descrição da Nota: MELHORIA DE PERFORMANCE EM RELATÓRIO KPI

Sintoma

 

Baixa performance em grandes períodos.

 

Solução

 

Refatoração de seleção de dados.

Versões Tratadas

7.0

Informações Complementares

 

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

Nota Número 05055 Data: 23/10/2007 Hora: 11:22:44

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

 

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

Nota Número              : 05055

Categoria                : Melhoria

Prioridade               : Baixa

Versão PW.CE             : 7.0

Pacote                   : 00003

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

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

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

Texto Rápido:

MELHORIA DE PERFORMANCE EM RELATÓRIO KPI

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

Palavras Chave:

MELHORIA DE PERFORMANCE KPI

 

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

Objetos da nota:

REPS /PWS/ZYCER216

 

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

Modificações efetuadas em REPS /PWS/ZYCER216

 

...

        nrrota_tr LIKE /pws/zycet046-nrrota_tr,

        vdatu    LIKE vbak-vdatu,

        kurrf    LIKE /pws/zycet002-kurrf,

        dtbl_    LIKE /pws/zycet047-dtbl,

        knumv    LIKE konv-knumv,

        knump    LIKE konv-knumv,

        auart    LIKE vbak-auart,

        selk(1)  TYPE c,

     END OF itab_kpi.

DATA: BEGIN OF itab_embarques OCCURS 0,

* >> Início da exclusão:

        nrseq     LIKE /pws/zycet001-nrseq,

        bukrs     LIKE /pws/zycet001-bukrs,

        dtaverb   LIKE /pws/zycet001-dtaverb,

        dtemb     LIKE /pws/zycet001-dtemb,

        dteta     LIKE /pws/zycet001-dteta,

        dtprev    LIKE /pws/zycet001-dtprev,

        viatrans  LIKE /pws/zycet001-viatrans,

        dtcruze   LIKE /pws/zycet001-dtcruze,

        dtenvcamb LIKE /pws/zycet001-dtenvcamb,

        vbeln_va  LIKE /pws/zycet002-vbeln_va,

        vbeln_vf  LIKE /pws/zycet002-vbeln_vf,

        posnr     LIKE /pws/zycet002-posnr,

        vbeln_vl  LIKE /pws/zycet002-vbeln_vl,

        posnl     LIKE /pws/zycet002-posnl,

        auart     LIKE /pws/zycet002-auart,

        waers     LIKE /pws/zycet002-waers,

        inco1     LIKE /pws/zycet002-inco1,

        kurrf     LIKE /pws/zycet002-kurrf,

        land1     LIKE /pws/zycet002-land1,

        matnr     LIKE /pws/zycet002-matnr,

        aupos     LIKE /pws/zycet002-aupos,

        erdat     LIKE vbak-erdat,

        vkgrp     LIKE vbak-vkgrp,

        kunnr     LIKE vbak-kunnr,

* << Fim da exclusão

* >> Início da inclusão:

        nrseq      LIKE /pws/zycet001-nrseq,

        bukrs      LIKE /pws/zycet001-bukrs,

        dtaverb    LIKE /pws/zycet001-dtaverb,

        dtemb      LIKE /pws/zycet001-dtemb,

        dteta      LIKE /pws/zycet001-dteta,

        dtprev     LIKE /pws/zycet001-dtprev,

        viatrans   LIKE /pws/zycet001-viatrans,

        dtcruze    LIKE /pws/zycet001-dtcruze,

        dtenvcamb  LIKE /pws/zycet001-dtenvcamb,

        vbeln_va   LIKE /pws/zycet002-vbeln_va,

        vbeln_vf   LIKE /pws/zycet002-vbeln_vf,

        posnr      LIKE /pws/zycet002-posnr,

        vbeln_vl   LIKE /pws/zycet002-vbeln_vl,

        posnl      LIKE /pws/zycet002-posnl,

        auart      LIKE /pws/zycet002-auart,

        waers      LIKE /pws/zycet002-waers,

        inco1      LIKE /pws/zycet002-inco1,

        kurrf      LIKE /pws/zycet002-kurrf,

        land1      LIKE /pws/zycet002-land1,

        matnr      LIKE /pws/zycet002-matnr,

        aupos      LIKE /pws/zycet002-aupos,

        vlme       LIKE /pws/zycet002-vlme,

        vlemb      LIKE /pws/zycet002-vlemb,

        vlagente_r LIKE /pws/zycet002-vlagente_r,

        erdat      LIKE vbak-erdat,

        vkgrp      LIKE vbak-vkgrp,

        kunnr      LIKE vbak-kunnr,

* << Fim da inclusão

      END   OF itab_embarques.

DATA: BEGIN OF itab_kpi_ordens OCCURS 0,

        nrseq      LIKE /pws/zycet002-nrseq,

        vbeln_va   LIKE /pws/zycet002-vbeln_va,

        knumv      LIKE konv-knumv,

        kwert      LIKE konv-kwert,

      END   OF itab_kpi_ordens.

DATA: BEGIN OF itab_carga OCCURS 0,

        nrseqcg      LIKE /pws/zycet053-nrseqcg,

        nrseq        LIKE /pws/zycet054-nrseq,

...

 

...

                                 p_layout

                                 p_laytxt.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_layout.

  PERFORM f4_for_variant CHANGING g_variant

                                  p_layout.

START-OF-SELECTION.

  PERFORM select_parametros.

  PERFORM select_embarques_itens.

  PERFORM select_zycet262.

  PERFORM select_vbak.

* >> Início da exclusão:

  PERFORM total_fatura_comercial_2.

* << Fim da exclusão

* >> Início da inclusão:

  PERFORM acumula_valores.

* << Fim da inclusão

  PERFORM data_nota_com_embarque.

  PERFORM select_zycet015.

  PERFORM select_zycet225.

  PERFORM select_zycet046.

  PERFORM select_zycet102.

  PERFORM select_zycet053.

  PERFORM select_zycet101.

  PERFORM select_zycet100.

  PERFORM select_zycet047.

  PERFORM select_vbfa.

  PERFORM select_vbkd.

  PERFORM select_kna1.

  PERFORM select_lips.

  PERFORM select_likp.

* >> Início da exclusão:

  PERFORM select_konv.

* << Fim da exclusão

  PERFORM select_t005.

* >> Início da exclusão:

  PERFORM select_vbrp.

* << Fim da exclusão

  PERFORM select_j_1bnflin.

  PERFORM select_j_1bnfdoc.

  PERFORM select_zycet265.

  PERFORM fatura_e_data_eta.

  PERFORM calcula_dias_atraso.

  PERFORM parametros_campos_ocultos.

* >> Início da exclusão:

  PERFORM select_zycet008.

* << Fim da exclusão

  IF itab_kpi[] IS INITIAL.

    MESSAGE i008.

    STOP.

  ENDIF.

  DELETE ADJACENT DUPLICATES FROM itab_kpi.

  PERFORM e04_comment_build USING gt_list_top_of_page[].

  PERFORM f_fieldcat_fill.

  PERFORM monta_rel_alv.

FORM select_vbak.

  DATA: BEGIN OF itab_vbak OCCURS 0,

...

 

...

    IF sy-subrc = 0.

      MOVE itab_kna1-name1 TO itab_kpi-name1.

      MOVE itab_kna1-land1 TO itab_kpi-land1.

      MODIFY itab_kpi.

    ELSEIF NOT s_name1 IS INITIAL.

      DELETE itab_kpi.

    ENDIF.

  ENDLOOP.

  DELETE itab_kpi WHERE NOT land1 IN s_land1.

ENDFORM.

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

FORM select_vbrp.

  DATA: BEGIN OF itab_vbrp OCCURS 1.

          INCLUDE STRUCTURE vbrp.

  DATA: END OF itab_vbrp.

  IF NOT itab_kpi[] IS INITIAL.

    SELECT * FROM vbrp

      APPENDING CORRESPONDING FIELDS OF TABLE itab_vbrp

        FOR ALL ENTRIES IN itab_kpi

          WHERE vgbel   = itab_kpi-vbeln_vl AND

                vgpos   = itab_kpi-posnl.

  ENDIF.

  SORT itab_vbrp BY vgbel vgpos.

  LOOP AT itab_kpi.

    READ TABLE itab_vbrp WITH KEY vgbel   = itab_kpi-vbeln_vl

                                  vgpos   = itab_kpi-posnl

                                  BINARY SEARCH.

    IF sy-subrc = 0.

      MOVE itab_vbrp-vbeln TO itab_kpi-vbeln_vf.

      MOVE itab_vbrp-posnr TO itab_kpi-posnr .

      MODIFY itab_kpi.

    ENDIF.

  ENDLOOP.

ENDFORM.

* << Fim da exclusão

FORM select_j_1bnflin.

  DATA: BEGIN OF itab_j_1bnflin OCCURS 1.

          INCLUDE STRUCTURE j_1bnflin.

  DATA: END OF itab_j_1bnflin.

  LOOP AT itab_kpi.

    MOVE itab_kpi-vbeln_vf TO itab_kpi-refkey.

    MODIFY itab_kpi.

  ENDLOOP.

  IF NOT itab_kpi[] IS INITIAL.

    SELECT * FROM j_1bnflin

...

 

...

            WHERE nrseq   EQ itab_embarques-nrseq.

  ENDIF.

  LOOP AT itab_kpi.

    READ TABLE itab_zycet047 WITH KEY nrseq = itab_kpi-nrseq.

    IF sy-subrc EQ 0.

      MOVE itab_zycet047-dtbl TO itab_kpi-dtbl.

      MODIFY itab_kpi TRANSPORTING dtbl.

    ENDIF.

  ENDLOOP.

ENDFORM.

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

FORM day_attributes_get USING data1 data2 dias sinal.

* << Fim da exclusão

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

FORM day_attributes_get USING

  data1 TYPE datum

  data2 TYPE datum

  dias  TYPE num03

  sinal TYPE char1.

* << Fim da inclusão

  DATA: iday_attributes LIKE casdayattr OCCURS 1 WITH HEADER LINE.

  DATA: data_aux LIKE sy-datlo.

  CHECK NOT data1 IS INITIAL.

  CHECK NOT data2 IS INITIAL.

  CLEAR data_aux.

  IF data2 GT data1.

    data_aux = data1.

    data1 = data2.

    data2 = data_aux.

    sinal = '-'.

...

 

...

  APPEND afield TO i_fieldcat.

ENDFORM.

FORM fatura_e_data_eta.

  LOOP AT itab_kpi.

    MOVE itab_kpi-erdat TO itab_kpi-erdat_.

    MOVE itab_kpi-nrseq TO itab_kpi-nrseq_.

    MOVE itab_kpi-dtbl  TO itab_kpi-dtbl_.

    MODIFY itab_kpi.

  ENDLOOP.

ENDFORM.

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

FORM select_zycet008.

  DATA: BEGIN OF itab_zycet008 OCCURS 1.

          INCLUDE STRUCTURE /pws/zycet008.

  DATA: END OF itab_zycet008 .

  DATA: BEGIN OF itab_zycet008_aux OCCURS 1.

          INCLUDE STRUCTURE /pws/zycet008.

  DATA: END OF itab_zycet008_aux .

  DATA: BEGIN OF itab_zycbt011 OCCURS 1.

          INCLUDE STRUCTURE /pws/zycbt011.

  DATA: END OF itab_zycbt011.

  DATA: v_kurrf  LIKE /pws/zycet002-kurrf,

        v_tabix LIKE sy-tabix,

        v_defator   TYPE tcurr-ffact,

        v_parafator TYPE tcurr-ffact.

  IF NOT itab_kpi[] IS INITIAL.

    SELECT * FROM /pws/zycet008

      APPENDING CORRESPONDING FIELDS OF TABLE itab_zycet008_aux

        FOR ALL ENTRIES IN itab_kpi

            WHERE nrseq   EQ itab_kpi-nrseq.

    LOOP AT itab_zycet008_aux.

      READ TABLE itab_zycet156

        WITH KEY codigo = itab_zycet008_aux-codigo.

      IF itab_zycet156-proccond EQ 'FOB'.

        MOVE itab_zycet008_aux TO itab_zycet008.

        APPEND itab_zycet008.

      ENDIF.

    ENDLOOP.

  ENDIF.

  SORT itab_zycet008 BY nrseq.

  SELECT * FROM /pws/zycbt011

    APPENDING CORRESPONDING FIELDS OF TABLE itab_zycbt011

       WHERE codeven = '001' AND

             codmod  = 'X'.

  READ TABLE itab_zycbt011 INDEX 1.

  LOOP AT itab_kpi WHERE NOT dtaverb IS initial.

    READ TABLE it_moedas INTO wa_moedas WITH KEY bukrs = itab_kpi-bukrs.

    READ TABLE itab_zycet008 WITH KEY nrseq = itab_kpi-nrseq.

    CHECK itab_zycet008-waers NE wa_moedas-waersa.

    CALL FUNCTION '/PWS/ZYGL_MONTANTE_CONVERTE'

         EXPORTING

              i_montante                   = 1

              i_demoeda                    = itab_zycet008-waers

              i_paramoeda                  = wa_moedas-waersa

              i_ctmoeda                    = itab_zycbt011-ctmoed

              i_dtbase                     = itab_kpi-dtaverb

         IMPORTING

              e_txc                        = v_kurrf

              e_defator                    = v_defator

              e_parafator                  = v_parafator

         EXCEPTIONS

              i_demoeda_nao_encontrado     = 1

              i_paramoeda_nao_encontrado   = 2

              i_ctmoeda_nao_encontrado     = 3

              i_dtbase_nao_encontrada      = 4

              taxa_nao_encontrada          = 5

              fator_nao_encontrado         = 6

              i_montante_nao_encontrado    = 7

              tabela_categ_nao_configurada = 8

              OTHERS                       = 9.

    IF sy-subrc = 0.

      itab_kpi-vlme = itab_kpi-vlme *

                      ( ( v_kurrf / v_defator ) * v_parafator ).

      itab_kpi-waers = wa_moedas-waersa.

      MODIFY itab_kpi.

    ENDIF.

  ENDLOOP.

  FREE itab_zycet008.

  CLEAR itab_zycet008.

  IF NOT itab_kpi[] IS INITIAL.

    LOOP AT itab_zycet008_aux.

      READ TABLE itab_zycet156

        WITH KEY codigo = itab_zycet008_aux-codigo.

      IF itab_zycet156-proccond EQ 'COM'.

        MOVE itab_zycet008_aux TO itab_zycet008.

        APPEND itab_zycet008.

      ENDIF.

    ENDLOOP.

  ENDIF.

  READ TABLE itab_zycet156 WITH KEY codmod = c_codmod_x

                                    codigo = c_codigo_9.

  SORT itab_zycet008 BY nrseq.

  CLEAR: itab_kpi_ordens.

  FREE : itab_kpi_ordens.

  LOOP AT itab_kpi.

    itab_kpi_ordens-nrseq    = itab_kpi-nrseq.

    itab_kpi_ordens-vbeln_va = itab_kpi-vbeln_va.

    itab_kpi_ordens-knumv    = itab_kpi-knumv.

    APPEND itab_kpi_ordens.

    CLEAR  itab_kpi_ordens.

  ENDLOOP.

  SORT itab_kpi_ordens BY nrseq vbeln_va knumv.

  DELETE ADJACENT DUPLICATES FROM itab_kpi_ordens

                  COMPARING  nrseq vbeln_va.

  LOOP AT itab_kpi_ordens.

    v_tabix = sy-tabix.

    READ TABLE itab_zycet008 WITH KEY nrseq = itab_kpi_ordens-nrseq

                                      BINARY SEARCH.

    IF sy-subrc = 0.

      IF NOT itab_zycet008-vlme_f IS INITIAL.

        READ TABLE itab_kpi WITH KEY nrseq = itab_kpi_ordens-nrseq.

        IF sy-subrc IS INITIAL.

          v_tabix = sy-tabix.

          MOVE itab_zycet008-vlme_f TO itab_kpi-vlme_f.

          MODIFY itab_kpi INDEX v_tabix.

        ENDIF.

      ELSE.

        PERFORM busca_comissao_agente_ordem.

        itab_kpi_ordens-kwert = v_kwert_tot.

        MODIFY itab_kpi_ordens INDEX v_tabix.

      ENDIF.

    ENDIF.

  ENDLOOP.

  CLEAR v_kwert_tot.

  LOOP AT itab_kpi.

    v_tabix = sy-tabix.

    ON CHANGE OF itab_kpi-nrseq.

      IF itab_kpi-vlme_f IS INITIAL.

        LOOP AT itab_kpi_ordens WHERE nrseq EQ itab_kpi-nrseq.

          v_kwert_tot = v_kwert_tot + itab_kpi_ordens-kwert.

        ENDLOOP.

        itab_kpi-vlme_f = v_kwert_tot.

        MODIFY itab_kpi INDEX v_tabix.

        CLEAR v_kwert_tot.

      ENDIF.

    ENDON.

  ENDLOOP.

ENDFORM.

* << Fim da exclusão

FORM select_t005.

  DATA: BEGIN OF itab_t005 OCCURS 1.

          INCLUDE STRUCTURE t005.

  DATA: END OF itab_t005.

  IF NOT itab_kpi[] IS INITIAL.

    SELECT * FROM t005

      APPENDING CORRESPONDING FIELDS OF TABLE itab_t005

        FOR ALL ENTRIES IN itab_kpi

          WHERE land1      = itab_kpi-land1 AND

                /pws/cotne IN s_cotne        AND

...

 

...

         b~posnr

         b~vbeln_vl

         b~posnl

         b~auart

         b~waers

         b~inco1

         b~kurrf

         b~land1

         b~matnr

         b~aupos

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

         b~vlme

         b~vlemb

         b~vlagente_r

* << Fim da inclusão

         INTO TABLE itab_embarques

         FROM       /pws/zycet001 AS a

         LEFT OUTER JOIN /pws/zycet002 AS b

               ON a~nrseq EQ b~nrseq

         WHERE a~nrseq    IN s_nrseq

         AND   a~nremb    IN s_nremb

         AND   a~viatrans IN s_via

         AND   a~dtemb    IN s_dtemb.

  LOOP AT itab_embarques.

    itab_kpi-nrseq     = itab_embarques-nrseq.

...

 

...

    itab_kpi-viatrans  = itab_embarques-viatrans.

    itab_kpi-dtenvcamb = itab_embarques-dtenvcamb.

    itab_kpi-vbeln_va  = itab_embarques-vbeln_va.

    itab_kpi-vbeln_vf  = itab_embarques-vbeln_vf.

    itab_kpi-vbeln_vl  = itab_embarques-vbeln_vl.

    itab_kpi-auart     = itab_embarques-auart.

    itab_kpi-waers     = itab_embarques-waers.

    itab_kpi-inco1     = itab_embarques-inco1.

    itab_kpi-kurrf     = itab_embarques-kurrf.

    itab_kpi-land1     = itab_embarques-land1.

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

    itab_kpi-vlme      = itab_embarques-vlme.

    itab_kpi-totfatcom = itab_embarques-vlemb.

    itab_kpi-vlme_f    = itab_embarques-vlagente_r.

* << Fim da inclusão

    IF itab_embarques-viatrans EQ c_rd.

      itab_kpi-dtcruze = itab_embarques-dtcruze.

    ELSE.

      CLEAR itab_kpi-dtcruze.

    ENDIF.

    COLLECT itab_kpi.

    CLEAR  itab_kpi.

    CALL FUNCTION 'K_PROGRESS_INDICATOR_PERCENT'

         EXPORTING

              i_processed = sy-tabix

              i_total     = sy-tfill.

  ENDLOOP.

ENDFORM.

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

FORM select_konv.

  READ TABLE itab_zycet156 INDEX 1.

  LOOP AT itab_kpi.

    CLEAR: itab_konv, v_kwert_tot.

    FREE : itab_konv.

    LOOP AT itab_embarques WHERE vbeln_vl = itab_kpi-vbeln_vl.

      CLEAR: itab_konv.

      FREE : itab_konv.

      SELECT knumv

             kposn

             kschl

             waers

             kwert

             INTO TABLE itab_konv

             FROM konv

             WHERE knumv EQ itab_kpi-knump

             AND   kposn EQ itab_kpi-posnl

             AND   kschl EQ itab_zycet156-kschl.

      LOOP AT itab_konv.

        v_kwert_tot = v_kwert_tot + ABS( itab_konv-kwert ).

      ENDLOOP.

    ENDLOOP.

    itab_kpi-vlme = v_kwert_tot.

    MODIFY itab_kpi.

  ENDLOOP.

ENDFORM.

* << Fim da exclusão

FORM select_zycet053.

  CLEAR itab_carga.

  FREE  itab_carga.

  IF NOT itab_kpi[] IS INITIAL.

    SELECT a~nrseqcg

           a~nrseq

           b~dtconsolida

           INTO TABLE itab_carga

           FROM       /pws/zycet054 AS a

           INNER JOIN /pws/zycet053 AS b

...

 

...

      READ TABLE itab_zycet262 WITH KEY

                               nrseq = itab_kpi-nrseq

                               BINARY SEARCH.

      IF sy-subrc IS INITIAL.

        itab_kpi-dtchegf = itab_zycet262-dtchegf.

        MODIFY itab_kpi.

      ENDIF.

    ENDIF.

  ENDLOOP.

ENDFORM.

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

FORM busca_comissao_agente_ordem.

  CLEAR: itab_konv, v_kwert_tot.

  FREE : itab_konv.

  SELECT knumv

         kposn

         kschl

         waers

         kwert

         INTO TABLE itab_konv

         FROM konv

         WHERE knumv EQ itab_kpi_ordens-knumv

         AND   kschl EQ itab_zycet156-kschl.

  LOOP AT itab_konv.

    v_kwert_tot = v_kwert_tot + ABS( itab_konv-kwert ).

  ENDLOOP.

ENDFORM.

* << Fim da exclusão

FORM f4_for_variant CHANGING p_disvariant TYPE disvariant

                             p_variant TYPE disvariant-variant.

  DATA: local_variant TYPE disvariant,

        exit.

  p_disvariant-report = sy-repid.

  p_disvariant-username = sy-uname.

  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

       EXPORTING

            is_variant         = p_disvariant

            i_save             = 'A'

...

 

...

      CLEAR: p_disvariant,

             p_variant,

             p_text.

    ENDIF.

  ELSE.

    CLEAR: p_disvariant,

           p_variant,

           p_text.

  ENDIF.

ENDFORM.

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

FORM total_fatura_comercial_2.

  DATA: BEGIN OF itab_zycet065 OCCURS 1.

          INCLUDE STRUCTURE /pws/zycet065.

  DATA: END OF itab_zycet065.

* << Fim da exclusão

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

FORM acumula_valores.

  FIELD-SYMBOLS <fs_kpi> LIKE LINE OF itab_kpi.

  DATA:

    v_totfatcom LIKE itab_kpi-totfatcom,

    v_vlme_f    LIKE itab_kpi-vlme_f.

* << Fim da inclusão

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

  DATA: BEGIN OF itab_zycet008 OCCURS 1.

          INCLUDE STRUCTURE /pws/zycet008.

  DATA: END OF itab_zycet008.

* << Fim da exclusão

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

  CLEAR:

    v_totfatcom,

    v_vlme_f.

* << Fim da inclusão

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

  DATA: BEGIN OF itab_zycet008_aux OCCURS 1.

          INCLUDE STRUCTURE /pws/zycet008.

  DATA: END OF itab_zycet008_aux.

* << Fim da exclusão

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

  LOOP AT itab_kpi ASSIGNING <fs_kpi>.

    ADD:

      <fs_kpi>-totfatcom TO v_totfatcom,

      <fs_kpi>-vlme_f    TO v_vlme_f.

* << Fim da inclusão

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

  SELECT * FROM /pws/zycet065

    APPENDING CORRESPONDING FIELDS OF TABLE itab_zycet065.

* << Fim da exclusão

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

    CLEAR:

      <fs_kpi>-totfatcom,

      <fs_kpi>-vlme_f.

* << Fim da inclusão

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

  IF NOT itab_kpi[] IS INITIAL.

    SELECT * FROM /pws/zycet156 INTO TABLE itab_zycet156

         FOR ALL ENTRIES IN itab_kpi

            WHERE bukrs   EQ itab_kpi-bukrs.

* << Fim da exclusão

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

    AT END OF <fs_kpi>-nrseq.

      <fs_kpi>-totfatcom = v_totfatcom.

      <fs_kpi>-vlme_f    = v_vlme_f.

* << Fim da inclusão

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

    SELECT * FROM /pws/zycet008

      APPENDING CORRESPONDING FIELDS OF TABLE itab_zycet008

        FOR ALL ENTRIES IN itab_kpi

          WHERE nrseq = itab_kpi-nrseq.

  ENDIF.

  LOOP AT itab_kpi.

    ON CHANGE OF itab_kpi-nrseq.

      CLEAR itab_zycet008_aux.

      REFRESH itab_zycet008_aux.

      LOOP AT itab_zycet008 WHERE nrseq = itab_kpi-nrseq.

        MOVE itab_zycet008 TO itab_zycet008_aux.

        APPEND itab_zycet008_aux.

      ENDLOOP.

      CLEAR /pws/zycee313.

      CALL FUNCTION '/PWS/ZYCE_CALC_VALOR_CONDITION'

           IMPORTING

                /pws/zycee313 = /pws/zycee313

           TABLES

                itab_zycet008 = itab_zycet008_aux.

      CLEAR itab_kpi-totfatcom.

      READ TABLE itab_zycet065 WITH KEY inco1 = itab_kpi-inco1.

      IF sy-subrc = 0.

        IF NOT itab_zycet065-fob IS INITIAL.

          itab_kpi-totfatcom = itab_kpi-totfatcom +

                                               /pws/zycee313-vlme_fob.

        ENDIF.

        IF NOT itab_zycet065-frete IS INITIAL.

          itab_kpi-totfatcom = itab_kpi-totfatcom +

                                               /pws/zycee313-vlme_frt.

        ENDIF.

* << Fim da exclusão

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

      CLEAR:

        v_totfatcom,

        v_vlme_f.

    ENDAT.

* << Fim da inclusão

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

        IF NOT itab_zycet065-seguro IS INITIAL.

          itab_kpi-totfatcom = itab_kpi-totfatcom +

                                               /pws/zycee313-vlme_seg.

        ENDIF.

        IF NOT itab_zycet065-outras_desp IS INITIAL.

          itab_kpi-totfatcom = itab_kpi-totfatcom +

                                               /pws/zycee313-vlme_out.

        ENDIF.

        IF NOT itab_zycet065-desconto IS INITIAL.

          itab_kpi-totfatcom = itab_kpi-totfatcom -

                                        ABS( /pws/zycee313-vlme_des ).

        ENDIF.

        IF NOT itab_zycet065-acrescimo IS INITIAL.

          itab_kpi-totfatcom = itab_kpi-totfatcom +

                                               /pws/zycee313-vlme_acr.

        ENDIF.

        IF NOT itab_zycet065-comissao IS INITIAL.

          itab_kpi-totfatcom = itab_kpi-totfatcom +

                                               /pws/zycee313-vlme_com.

        ENDIF.

        MODIFY itab_kpi.

      ENDIF.

    ENDON.

* << Fim da exclusão

  ENDLOOP.

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

ENDFORM.

* << Fim da exclusão

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

ENDFORM.

* << Fim da inclusão

FORM select_parametros.

  SELECT bukrs waersa

    FROM /pws/zycbt007

...