CE PLUS - Nota 008800

Módulo: DRAWBACK

Funcionalidade: Forecast

Data/Hora da Publicação: 10/08/2009 00:00:00

Data/Hora Última Alteração: 17/02/2011 15:40:34

Descrição da Nota: FORECAST VERDE-AMARELO / INTEGRADO VINCULAÇÃO

Sintoma

Desenvolvimento do Forecast verde-amarelo / integrado.

 

 

Solução

Desenvolvimento do Forecast verde-amarelo / integrado.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

PREENCHIMENTO DO CAMPO MOEDA NO ATO CONCESSÓRIO ISENÇÃO

PROGRAMA ESTÁ ELIMINANDO INSUMOS QUANDO O FORECAST É POR AGRUPAMENTO

IMPORTA INSUMO NACIONAIS DO FORECAST PARA O ATO CONCESSÓRIO

AJUSTES REFERENTES AO DRAWBACK INTEGRADO

Informações Complementares

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

Nota Número 08800 Data: 10/08/2009 Hora: 09:52:16

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

 

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

Nota Número              : 08800

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00010

Agrupamento              : 00109

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

Referência às notas relacionadas:

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

 

05099  - 00001 - 7.0    - 00003  - PREENCHIMENTO DO CAMPO MOEDA NO ATO CONCESSÓRIO ISENÇÃO

07198  - 00002 - 7.0    - 00006  - IMPORTA INSUMO NACIONAIS DO FORECAST PARA O ATO CONCESSÓRIO

07841  - 00003 - 7.0    - 00008  - PROGRAMA ESTÁ ELIMINANDO INSUMOS QUANDO O FORECAST É POR AGRUPAME

08573  - 00004 - 7.0    - 00010  - AJUSTES REFERENTES AO DRAWBACK INTEGRADO

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

FORECAST VERDE-AMARELO / INTEGRADO VINCULAÇÃO

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

Palavras Chave:

ATO CONCESSÓRIO FORECAST VINCULAÇÃO VERDE-AMARELO INTEGRADO

 

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

Objetos da nota:

TABD /PWS/ZYCIE238

TABD /PWS/ZYCIT238

DYNP /PWS/SAPMZYCI063                        0101

REPS /PWS/MZYCI063F01

REPS /PWS/MZYCI040F02

REPS /PWS/MZYCI040I01

 

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

Modificações efetuadas em TABD /PWS/ZYCIE238

 

IMPORTACAO /PWS/ZYCIL841

DESCRICAO CHAR35

VARIACAOCB /PWS/ZYCIL444

APROVADO /PWS/ZYCIL451

DTAPROV DATUM

CODAGRUP /PWS/ZYCIL613

* >> Início da inclusão:TABD /PWS/ZYCIE238

SUBTIPO /PWS/ZYCIL874

* << Fim da inclusão

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

Modificações efetuadas em TABD /PWS/ZYCIT238

 

IMPORTACAO /PWS/ZYCIL841

DESCRICAO CHAR35

VARIACAOCB /PWS/ZYCIL444

APROVADO /PWS/ZYCIL451

DTAPROV DATUM

CODAGRUP /PWS/ZYCIL613

* >> Início da inclusão:TABD /PWS/ZYCIT238

SUBTIPO /PWS/ZYCIL874

* << Fim da inclusão

 

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

Modificações efetuadas em DYNP /PWS/SAPMZYCI063                        0101

 

INCLUIR CAMPO TEXTO "/PWS/ZYCIE238-SUBTIPO"

Altura                   15

Comprimento Visível      1

Linha                    6

Coluna                   73

Formato                  CHAR

Linhas mínimas           1

Texto                    _

Código função

 

INCLUIR TEXTO "/PWS/ZYCIE238-SUBTIPO"

Comprimento Visível      13

Linha                    6

Coluna                   58

Formato                  CHAR

Texto                    Sub-tipo

Código função

 

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

Modificações efetuadas em REPS /PWS/MZYCI063F01

 

...

        ( itab_compi_viab-vlcif / ( itab_exp-netpr_t -

                      itab_exp-vl_comis_t ) ) * 100.

      MOVE itab_compi_viab-variacaocb TO itab_compi_viab-variacaocb2.

      SHIFT itab_compi_viab-variacaocb2 LEFT DELETING LEADING space.

      CONCATENATE itab_compi_viab-variacaocb2 '%' INTO

                                            itab_compi_viab-variacaocb2.

      SHIFT itab_compi_viab-variacaocb2 RIGHT DELETING TRAILING space.

      REPLACE '.' WITH ',' INTO itab_compi_viab-variacaocb2.

      APPEND itab_compi_viab.

    ENDLOOP.

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

    IF /pws/zycie238-subtipo NE space.

      LOOP AT itab_compn.

        MOVE-CORRESPONDING itab_compn TO itab_compi_viab.

        CLEAR: itab_compi_viab-vlii, itab_compi_viab-vlafrmm,

               itab_compi_viab-vlicms.

        itab_compi_viab-vlcif = itab_compi_viab-netpr_t +

                  itab_compi_viab-vl_frete_t + itab_compi_viab-vl_seg_t.

        itab_compi_viab-vl_total = itab_compi_viab-vlii +

                      itab_compi_viab-vlipi + itab_compi_viab-vlafrmm +

                       itab_compi_viab-vlpis + itab_compi_viab-vlcofins

                         + itab_compi_viab-vlicms.

        itab_compi_viab-variacaocb =

          ( itab_compi_viab-vlcif / ( itab_exp-netpr_t -

                        itab_exp-vl_comis_t ) ) * 100.

        MOVE itab_compi_viab-variacaocb TO itab_compi_viab-variacaocb2.

        SHIFT itab_compi_viab-variacaocb2 LEFT DELETING LEADING space.

        CONCATENATE itab_compi_viab-variacaocb2 '%' INTO

                                            itab_compi_viab-variacaocb2.

        SHIFT itab_compi_viab-variacaocb2 RIGHT DELETING TRAILING space.

        REPLACE '.' WITH ',' INTO itab_compi_viab-variacaocb2.

        APPEND itab_compi_viab.

      ENDLOOP.

    ENDIF.

* << Fim da inclusão

    PERFORM atualiza_viabilidade.

    tc_compn-top_line = 1.

    tc_compi-top_line = 1.

    tc_viab-top_line  = 1.

  ENDIF.

ENDFORM.

FORM trata_button_prior.

  IF v_indicatu > 1.

    v_indicatu = v_indicatu - 1.

  ENDIF.

...

 

...

          itab_exp-meins   TO /pws/zycie239c-meins   ,

          v_qtdmat         TO /pws/zycie239c-qtd_iten,

          itab_exp-waers   TO /pws/zycie239c-waers   ,

          itab_exp-netpr   TO /pws/zycie239c-netpr   ,

          itab_exp-netpr_t TO /pws/zycie239c-netpr_t .

    PERFORM move_componentes.

    CLEAR: itab_compi_viab. REFRESH: itab_compi_viab.

    CLEAR: v_tot_eco, v_tot_cb.

    LOOP AT itab_compi.

      MOVE-CORRESPONDING itab_compi TO itab_compi_viab.

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

      itab_compi_viab-vlcif = itab_compi_viab-netpr_t +

                  itab_compi_viab-vl_frete_t + itab_compi_viab-vl_seg_t.

      itab_compi_viab-vl_total = itab_compi_viab-vlii +

                  itab_compi_viab-vlipi + itab_compi_viab-vlafrmm +

                  itab_compi_viab-vlpis + itab_compi_viab-vlcofins +

                  itab_compi_viab-vlicms .                       .

      itab_compi_viab-variacaocb =

                     ( itab_compi_viab-vlcif / ( itab_exp-netpr_t -

                      itab_exp-vl_comis_t ) ) * 100.

      MOVE itab_compi_viab-variacaocb TO itab_compi_viab-variacaocb2.

      SHIFT itab_compi_viab-variacaocb2 LEFT DELETING LEADING space.

      CONCATENATE itab_compi_viab-variacaocb2 '%' INTO

                                            itab_compi_viab-variacaocb2.

      SHIFT itab_compi_viab-variacaocb2 RIGHT DELETING TRAILING space.

      REPLACE '.' WITH ',' INTO itab_compi_viab-variacaocb2.

      APPEND itab_compi_viab.

    ENDLOOP.

    IF /pws/zycie238-subtipo NE space.

      LOOP AT itab_compn.

        MOVE-CORRESPONDING itab_compn TO itab_compi_viab.

        CLEAR: itab_compi_viab-vlii, itab_compi_viab-vlafrmm,

               itab_compi_viab-vlicms.

* << Fim da inclusão

      itab_compi_viab-vlcif = itab_compi_viab-netpr_t +

                  itab_compi_viab-vl_frete_t + itab_compi_viab-vl_seg_t.

      itab_compi_viab-vl_total = itab_compi_viab-vlii +

                  itab_compi_viab-vlipi + itab_compi_viab-vlafrmm +

                  itab_compi_viab-vlpis + itab_compi_viab-vlcofins +

                  itab_compi_viab-vlicms .                       .

      itab_compi_viab-variacaocb =

                     ( itab_compi_viab-vlcif / ( itab_exp-netpr_t -

                      itab_exp-vl_comis_t ) ) * 100.

      MOVE itab_compi_viab-variacaocb TO itab_compi_viab-variacaocb2.

      SHIFT itab_compi_viab-variacaocb2 LEFT DELETING LEADING space.

      CONCATENATE itab_compi_viab-variacaocb2 '%' INTO

                                            itab_compi_viab-variacaocb2.

      SHIFT itab_compi_viab-variacaocb2 RIGHT DELETING TRAILING space.

      REPLACE '.' WITH ',' INTO itab_compi_viab-variacaocb2.

      APPEND itab_compi_viab.

    ENDLOOP.

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

    ENDIF.

* << Fim da inclusão

    PERFORM atualiza_viabilidade.

    tc_compn-top_line = 1.

    tc_compi-top_line = 1.

    tc_viab-top_line  = 1.

  ENDIF.

ENDFORM.

FORM trata_button_next.

  DESCRIBE TABLE itab_exp LINES v_ilinhas.

  IF v_indicatu < v_ilinhas.

    v_indicatu = v_indicatu + 1.

...

 

...

          itab_exp-meins   TO /pws/zycie239c-meins   ,

          v_qtdmat         TO /pws/zycie239c-qtd_iten,

          itab_exp-waers   TO /pws/zycie239c-waers   ,

          itab_exp-netpr   TO /pws/zycie239c-netpr   ,

          itab_exp-netpr_t TO /pws/zycie239c-netpr_t .

    PERFORM move_componentes.

    CLEAR: itab_compi_viab. REFRESH: itab_compi_viab.

    CLEAR: v_tot_eco, v_tot_cb.

    LOOP AT itab_compi.

      MOVE-CORRESPONDING itab_compi TO itab_compi_viab.

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

      itab_compi_viab-vlcif = itab_compi_viab-netpr_t +

                  itab_compi_viab-vl_frete_t + itab_compi_viab-vl_seg_t.

      itab_compi_viab-vl_total = itab_compi_viab-vlii +

                    itab_compi_viab-vlipi + itab_compi_viab-vlafrmm

                    + itab_compi_viab-vlcofins + itab_compi_viab-vlpis +

                    itab_compi_viab-vlicms .

      itab_compi_viab-variacaocb =

                     ( itab_compi_viab-vlcif / ( itab_exp-netpr_t -

                      itab_exp-vl_comis_t ) ) * 100.

      MOVE itab_compi_viab-variacaocb TO itab_compi_viab-variacaocb2.

      SHIFT itab_compi_viab-variacaocb2 LEFT DELETING LEADING space.

      CONCATENATE itab_compi_viab-variacaocb2 '%' INTO

                                            itab_compi_viab-variacaocb2.

      SHIFT itab_compi_viab-variacaocb2 RIGHT DELETING TRAILING space.

      REPLACE '.' WITH ',' INTO itab_compi_viab-variacaocb2.

      APPEND itab_compi_viab.

    ENDLOOP.

    IF /pws/zycie238-subtipo NE space.

      LOOP AT itab_compn.

        MOVE-CORRESPONDING itab_compn TO itab_compi_viab.

        CLEAR: itab_compi_viab-vlii, itab_compi_viab-vlafrmm,

               itab_compi_viab-vlicms.

* << Fim da inclusão

      itab_compi_viab-vlcif = itab_compi_viab-netpr_t +

                  itab_compi_viab-vl_frete_t + itab_compi_viab-vl_seg_t.

      itab_compi_viab-vl_total = itab_compi_viab-vlii +

                    itab_compi_viab-vlipi + itab_compi_viab-vlafrmm

                    + itab_compi_viab-vlcofins + itab_compi_viab-vlpis +

                    itab_compi_viab-vlicms .

      itab_compi_viab-variacaocb =

                     ( itab_compi_viab-vlcif / ( itab_exp-netpr_t -

                      itab_exp-vl_comis_t ) ) * 100.

      MOVE itab_compi_viab-variacaocb TO itab_compi_viab-variacaocb2.

      SHIFT itab_compi_viab-variacaocb2 LEFT DELETING LEADING space.

      CONCATENATE itab_compi_viab-variacaocb2 '%' INTO

                                            itab_compi_viab-variacaocb2.

      SHIFT itab_compi_viab-variacaocb2 RIGHT DELETING TRAILING space.

      REPLACE '.' WITH ',' INTO itab_compi_viab-variacaocb2.

      APPEND itab_compi_viab.

    ENDLOOP.

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

    ENDIF.

* << Fim da inclusão

    PERFORM atualiza_viabilidade.

    tc_compn-top_line = 1.

    tc_compi-top_line = 1.

    tc_viab-top_line  = 1.

  ENDIF.

ENDFORM.

FORM trata_button_last.

  DESCRIBE TABLE itab_exp LINES v_ilinhas.

  v_indicatu = v_ilinhas.

  LOOP AT itab_exp WHERE mark = 'X'.

...

 

...

          itab_exp-meins   TO /pws/zycie239c-meins   ,

          v_qtdmat         TO /pws/zycie239c-qtd_iten,

          itab_exp-waers   TO /pws/zycie239c-waers   ,

          itab_exp-netpr   TO /pws/zycie239c-netpr   ,

          itab_exp-netpr_t TO /pws/zycie239c-netpr_t .

    PERFORM move_componentes.

    CLEAR: itab_compi_viab. REFRESH: itab_compi_viab.

    CLEAR: v_tot_eco, v_tot_cb.

    LOOP AT itab_compi.

      MOVE-CORRESPONDING itab_compi TO itab_compi_viab.

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

      itab_compi_viab-vlcif = itab_compi_viab-netpr_t +

                  itab_compi_viab-vl_frete_t + itab_compi_viab-vl_seg_t.

      itab_compi_viab-vl_total = itab_compi_viab-vlii +

                  itab_compi_viab-vlipi + itab_compi_viab-vlafrmm

                  + itab_compi_viab-vlcofins + itab_compi_viab-vlpis +

                  itab_compi_viab-vlicms.

      itab_compi_viab-variacaocb =

                     ( itab_compi_viab-vlcif / ( itab_exp-netpr_t -

                      itab_exp-vl_comis_t ) ) * 100.

      MOVE itab_compi_viab-variacaocb TO itab_compi_viab-variacaocb2.

      SHIFT itab_compi_viab-variacaocb2 LEFT DELETING LEADING space.

      CONCATENATE itab_compi_viab-variacaocb2 '%' INTO

                                            itab_compi_viab-variacaocb2.

      SHIFT itab_compi_viab-variacaocb2 RIGHT DELETING TRAILING space.

      REPLACE '.' WITH ',' INTO itab_compi_viab-variacaocb2.

      APPEND itab_compi_viab.

    ENDLOOP.

    IF /pws/zycie238-subtipo NE space.

      LOOP AT itab_compn.

        MOVE-CORRESPONDING itab_compn TO itab_compi_viab.

        CLEAR: itab_compi_viab-vlii, itab_compi_viab-vlafrmm,

               itab_compi_viab-vlicms.

* << Fim da inclusão

      itab_compi_viab-vlcif = itab_compi_viab-netpr_t +

                  itab_compi_viab-vl_frete_t + itab_compi_viab-vl_seg_t.

      itab_compi_viab-vl_total = itab_compi_viab-vlii +

                  itab_compi_viab-vlipi + itab_compi_viab-vlafrmm

                  + itab_compi_viab-vlcofins + itab_compi_viab-vlpis +

                  itab_compi_viab-vlicms.

      itab_compi_viab-variacaocb =

                     ( itab_compi_viab-vlcif / ( itab_exp-netpr_t -

                      itab_exp-vl_comis_t ) ) * 100.

      MOVE itab_compi_viab-variacaocb TO itab_compi_viab-variacaocb2.

      SHIFT itab_compi_viab-variacaocb2 LEFT DELETING LEADING space.

      CONCATENATE itab_compi_viab-variacaocb2 '%' INTO

                                            itab_compi_viab-variacaocb2.

      SHIFT itab_compi_viab-variacaocb2 RIGHT DELETING TRAILING space.

      REPLACE '.' WITH ',' INTO itab_compi_viab-variacaocb2.

      APPEND itab_compi_viab.

    ENDLOOP.

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

    ENDIF.

* << Fim da inclusão

    PERFORM atualiza_viabilidade.

    tc_compn-top_line = 1.

    tc_compi-top_line = 1.

    tc_viab-top_line  = 1.

  ENDIF.

ENDFORM.

FORM gera_numero_seq.

  DATA: v_nrseqd   LIKE /pws/zycie238-nrseqd,

        v_count(7) TYPE n              ,

        v_ano(4)   TYPE c              .

...

 

...

  CLEAR itab_compn_final.

ENDFORM.

FORM atualiza_itab_compi_final.

  IF NOT itab_compi[] IS INITIAL.

    READ TABLE itab_compi INDEX tc_compi-current_line.

    IF sy-subrc EQ 0.

      DELETE itab_compi_final WHERE nritem = itab_compi-nritem

                                AND werks  = itab_compi-werks.

      LOOP AT itab_compi.

        MOVE-CORRESPONDING itab_compi TO itab_compi_final.

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

        APPEND itab_compi_final.

      ENDLOOP.

      IF /pws/zycie238-subtipo NE space.

        LOOP AT itab_compn_final.

          MOVE-CORRESPONDING itab_compn_final TO itab_compi_final.

* << Fim da inclusão

        APPEND itab_compi_final.

      ENDLOOP.

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

      ENDIF.

* << Fim da inclusão

    ENDIF.

  ENDIF.

  CLEAR itab_compi_final.

ENDFORM.

FORM trata_button_exclm_n.

...

 

...

            MOVE itab_marc-steuc TO itab_compn_final-j_1bnbm.

          ENDIF.

          itab_compn_final-qtd_iten = i_final-qtunit.

          PERFORM converte_um_base USING i_final-insumo

                                CHANGING i_final-meins

                                         itab_compn_final-qtd_iten.

          itab_compn_final-qtd_tot =

              ( itab_compn_final-qtd_iten * itab_exp-qtd_iten ).

          itab_compn_final-netpr_t =

               ( itab_compn_final-netpr * itab_compn_final-qtd_tot ).

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

          READ TABLE itab_compn_final INTO itab_compi

            WITH KEY nritem = itab_exp-nritem

                     codcomp = itab_compn_final-codcomp.

          IF sy-subrc EQ 0.

            CLEAR: itab_compn_final-netpr, itab_compn_final-txafrmm,

                   itab_compn_final-brgew, itab_compn_final-ntgew,

                   itab_compn_final-pctseg.

          ELSE.

            CLEAR: itab_impostos2, it_cpi.

            REFRESH: itab_impostos2, it_cpi.

            MOVE-CORRESPONDING itab_compn_final TO it_cpi.

            APPEND it_cpi.

            CALL FUNCTION '/PWS/ZYCI_VERIFICA_TAXA_DB'

                 EXPORTING

                      data           = sy-datum

                      centro         = /pws/zycie238-werks

                 TABLES

                      itab_itens     = it_cpi[]

                      itab_impostos2 = itab_impostos2[].

            READ TABLE itab_impostos2 WITH KEY

                                     codmat = itab_compn_final-codmat

                                    codcomp = itab_compn_final-codcomp

                                     proced = itab_compn_final-proced.

            IF sy-subrc EQ 0.

              itab_compn_final-txipi = itab_impostos2-rate2.

              itab_compn_final-txicms = itab_impostos2-rate3.

            ENDIF.

          ENDIF.

          itab_compi_final-txcofins = v_cofins1.

          itab_compi_final-txpis    = v_pis1   .

          itab_compn_final-waersimp = itab_compn_final-waers.

* << Fim da inclusão

          COLLECT itab_compn_final.

        ELSE.

          CLEAR itab_compi_final.

          MOVE: /pws/zycie238-nrseqd TO itab_compi_final-nrseqd ,

                itab_exp-codmat TO itab_compi_final-codmat ,

                itab_exp-nritem TO itab_compi_final-nritem ,

                itab_exp-werks  TO itab_compi_final-werks  ,

                itab_exp-agrup  TO itab_compi_final-agrup  ,

                i_final-insumo  TO itab_compi_final-codcomp,

                itab_mara-meins TO itab_compi_final-meins   ,

...

 

...

      ENDLOOP.

      itab_exp-imp_s_cob_camb = v_imp_camb.

      MODIFY itab_exp.

    ENDIF.

  ENDLOOP.

  READ TABLE itab_zycit407 WITH KEY tributos = 'PIS'  .

  IF sy-subrc EQ 0.

    itab_compi_final-txpis = itab_zycit407-aliquotas.

    MODIFY itab_compi_final TRANSPORTING txpis

                        WHERE txpis EQ space.

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

    itab_compn_final-txpis = itab_zycit407-aliquotas.

    MODIFY itab_compn_final TRANSPORTING txpis

                        WHERE txpis EQ space.

* << Fim da inclusão

  ENDIF.

  READ TABLE itab_zycit407 WITH KEY tributos = 'COFINS'  .

  IF sy-subrc EQ 0.

    itab_compi_final-txcofins = itab_zycit407-aliquotas.

    MODIFY itab_compi_final TRANSPORTING txcofins

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

                        WHERE txcofins EQ space.

    itab_compn_final-txcofins = itab_zycit407-aliquotas.

    MODIFY itab_compn_final TRANSPORTING txcofins

* << Fim da inclusão

                        WHERE txcofins EQ space.

  ENDIF.

  v_verificp = 'S'.

  DESCRIBE TABLE itab_exp LINES v_verifiit.

  MESSAGE s015 WITH text-023.

  PERFORM atualiza_impostos.

ENDFORM.

FORM atualiza_valores_comps.

  it_cpi[] = itab_compi_final[].

  LOOP AT itab_exp.

...

 

...

        itab_exp-waers   TO /pws/zycie239c-waers   ,

        itab_exp-netpr   TO /pws/zycie239c-netpr   ,

        itab_exp-netpr_t TO /pws/zycie239c-netpr_t ,

        itab_exp-meins   TO /pws/zycie239c-meins   ,

        v_qtdmat         TO /pws/zycie239c-qtd_iten.

  PERFORM move_componentes.

  CLEAR: itab_compi_viab. REFRESH: itab_compi_viab.

  CLEAR: v_tot_eco, v_tot_cb.

  LOOP AT itab_compi.

    MOVE-CORRESPONDING itab_compi TO itab_compi_viab.

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

    itab_compi_viab-vlcif = itab_compi_viab-netpr_t +

                  itab_compi_viab-vl_frete_t + itab_compi_viab-vl_seg_t.

    itab_compi_viab-vl_total = itab_compi_viab-vlii +

                    itab_compi_viab-vlipi + itab_compi_viab-vlafrmm

                  + itab_compi_viab-vlcofins + itab_compi_viab-vlpis +

                    itab_compi_viab-vlicms                        .

    IF /pws/zycie238-importacao EQ 'X'.

      itab_compi_viab-variacaocb =

                       ( itab_compi_viab-vlcif / ( itab_exp-netpr_t -

                        itab_exp-vl_comis_t ) ) * 100.

    ELSE.

      itab_compi_viab-variacaocb =

                        itab_compi_viab-vlcif / ( ( itab_exp-netpr_t -

                     itab_exp-vl_comis_t ) + itab_compi-netpr_t ) * 100.

    ENDIF.

    MOVE itab_compi_viab-variacaocb TO itab_compi_viab-variacaocb2.

    SHIFT itab_compi_viab-variacaocb2 LEFT DELETING LEADING space.

    CONCATENATE itab_compi_viab-variacaocb2 '%' INTO

                                            itab_compi_viab-variacaocb2.

    SHIFT itab_compi_viab-variacaocb2 RIGHT DELETING TRAILING space.

    REPLACE '.' WITH ',' INTO itab_compi_viab-variacaocb2.

    APPEND itab_compi_viab.

  ENDLOOP.

  IF /pws/zycie238-subtipo NE space.

    LOOP AT itab_compn.

      MOVE-CORRESPONDING itab_compn TO itab_compi_viab.

      CLEAR: itab_compi_viab-vlii, itab_compi_viab-vlafrmm,

             itab_compi_viab-vlicms.

* << Fim da inclusão

    itab_compi_viab-vlcif = itab_compi_viab-netpr_t +

                  itab_compi_viab-vl_frete_t + itab_compi_viab-vl_seg_t.

    itab_compi_viab-vl_total = itab_compi_viab-vlii +

                    itab_compi_viab-vlipi + itab_compi_viab-vlafrmm

                  + itab_compi_viab-vlcofins + itab_compi_viab-vlpis +

                    itab_compi_viab-vlicms                        .

    IF /pws/zycie238-importacao EQ 'X'.

      itab_compi_viab-variacaocb =

                       ( itab_compi_viab-vlcif / ( itab_exp-netpr_t -

                        itab_exp-vl_comis_t ) ) * 100.

...

 

...

                     itab_exp-vl_comis_t ) + itab_compi-netpr_t ) * 100.

    ENDIF.

    MOVE itab_compi_viab-variacaocb TO itab_compi_viab-variacaocb2.

    SHIFT itab_compi_viab-variacaocb2 LEFT DELETING LEADING space.

    CONCATENATE itab_compi_viab-variacaocb2 '%' INTO

                                            itab_compi_viab-variacaocb2.

    SHIFT itab_compi_viab-variacaocb2 RIGHT DELETING TRAILING space.

    REPLACE '.' WITH ',' INTO itab_compi_viab-variacaocb2.

    APPEND itab_compi_viab.

  ENDLOOP.

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

  ENDIF.

* << Fim da inclusão

  PERFORM atualiza_viabilidade.

  pressed_tab      = ok_code.

  dynpronr         = '0108'.

  tc_viab-top_line = 1.

ENDFORM.

FORM check_screen_0108.

  LOOP AT SCREEN.

    IF NOT /pws/zycit321-ltopc IS INITIAL.

      CASE screen-group4.

        WHEN 'MAT'.

...

 

...

    EXIT.

  ENDIF.

  PERFORM atualiza_viabilidade.

  IF v_tot_eco7_aux > 60.

    IF ok_code NE 'BACK' AND ok_code NE 'ABORT'.

      MESSAGE w015 WITH text-047.

    ENDIF.

  ENDIF.

  IF v_tcode EQ '/PWS/ZYCI040_P'.

    PERFORM verifica_nrseq_gravado.

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

  ENDIF.

  IF /pws/zycie238-subtipo EQ space.

    itab_compn_final-transp = ''.

    MODIFY itab_compn_final TRANSPORTING transp

    WHERE nrseqd EQ /pws/zycie238-nrseqd.

* << Fim da inclusão

  ENDIF.

  LOOP AT itab_compn_final.

    CHECK itab_compn_final-codcomp IS INITIAL.

    READ TABLE itab_compn WITH KEY nrseqd  = itab_compn_final-nrseqd

                                   nritem  = itab_compn_final-nritem

                                   codcomp = itab_compn_final-codcomp

                                   proced  = itab_compn_final-proced.

    IF sy-subrc EQ 0.

      DELETE itab_compn WHERE nrseqd  = itab_compn_final-nrseqd

                         AND nritem  = itab_compn_final-nritem

...

 

...

   v_cif_aux = itab_compi_final-netpr_t + itab_compi_final-vl_frete_t +

                                             itab_compi_final-vl_seg_t .

    v_cif_aux2 = v_cif_aux2 + v_cif_aux.

    v_totii2 = ( v_totii2 + itab_compi_final-vlii ).

    v_totipi2 = ( v_totipi2 + itab_compi_final-vlipi ).

    v_totpis2 = ( v_totpis2 + itab_compi_final-vlpis ).

    v_totcofins2 = ( v_totcofins2 + itab_compi_final-vlcofins ).

    v_totafrmm2 = ( v_totafrmm2 + itab_compi_final-vlafrmm ).

    v_fob_t = v_fob_t + itab_compi_final-netpr_t.

  ENDLOOP.

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

  IF /pws/zycie238-subtipo NE space.

    LOOP AT itab_compn_final WHERE transp EQ 'X'.

     v_cif_aux = itab_compn_final-netpr_t + itab_compn_final-vl_frete_t

                                           + itab_compn_final-vl_seg_t .

      v_cif_aux2 = v_cif_aux2 + v_cif_aux.

      v_totipi2 = ( v_totipi2 + itab_compn_final-vlipi ).

      v_totpis2 = ( v_totpis2 + itab_compn_final-vlpis ).

      v_totcofins2 = ( v_totcofins2 + itab_compn_final-vlcofins ).

      v_fob_t = v_fob_t + itab_compn_final-netpr_t.

    ENDLOOP.

  ENDIF.

* << Fim da inclusão

  v_tot_eco4 = v_totafrmm2 + v_totii2.

  v_tot_eco6 = v_totpis2 + v_totcofins2 + v_tot_eco5 + v_totipi2.

  v_totr = v_tot_eco6 + v_tot_eco4.

  IF /pws/zycie238-importacao EQ 'X'.

    v_tot_eco7_aux = ( ( v_cif_aux2 / v_netprmat ) * 100 ).

  ELSE.

    v_tot_eco7_aux =  ( v_cif_aux2 / ( ( v_netprmat + v_fob_t )

                    - v_comis_t )  * 100 ).

  ENDIF.

  MOVE v_tot_eco7_aux TO v_tot_eco7.

...

 

...

      itab_compi-vl_total = ( itab_compi-vlii + itab_compi-vlipi +

                             itab_compi-vlicms + itab_compi-vlafrmm +

                             itab_compi-vlpis + itab_compi-vlcofins ).

      MODIFY itab_compi TRANSPORTING codmat codcomp proced txii vlii

                                     txipi vlipi txicms vlicms txafrmm

                                     vlafrmm vl_total vlpis vlcofins

                                    nritem

                             WHERE  nritem = itab_compi_final-nritem

                               AND codcomp = itab_compi_final-codcomp

                               AND  proced = itab_compi_final-proced.

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

    ENDIF.

  ENDLOOP.

  v_index = 0.

  LOOP AT itab_compn_final.

    v_index = sy-tabix.

    IF itab_compn_final-txicms > 0.

      v_icmspct = ( 100 - itab_compn_final-txicms ) / 100.

    ELSE.

      v_icmspct = 1.

    ENDIF.

    v_vlcif_imp = itab_compn_final-netpr_t +

              itab_compn_final-vl_frete_t + itab_compn_final-vl_seg_t.

    itab_compn_final-vlii =

                        ( v_vlcif_imp * itab_compn_final-txii ) / 100.

    itab_compn_final-vlipi = ( ( v_vlcif_imp + itab_compn_final-vlii )

                                      * itab_compn_final-txipi ) / 100.

    v_advii   = ( itab_compn_final-txii / 100 ).

    v_advipi  = ( itab_compn_final-txipi / 100 ).

    v_advicms = ( itab_compn_final-txicms / 100 ).

    v_advpis  = ( itab_compn_final-txpis / 100 ).

    v_advcof  = ( itab_compn_final-txcofins / 100 ).

    v_xb = ( 1 - v_advpis - v_advcof ) * ( 1 - v_advicms ).

    v_xa =  1 + v_advicms *  ( v_advii + v_advipi *

                                           ( 1 + v_advii ) ) .

    v_fatx = v_xa / v_xb.

    v_faty = v_advicms / v_xb.

    itab_compn_final-vlpis = ( v_vlcif_imp * v_fatx ) *

                    v_advpis.

    itab_compn_final-vlcofins = ( v_vlcif_imp * v_fatx ) *

                    v_advcof.

    itab_compn_final-vlicms =

    ( ( ( v_vlcif_imp + itab_compn_final-vlii +

        itab_compn_final-vlpis + itab_compn_final-vlcofins +

                             itab_compn_final-vlipi ) / v_icmspct ) *

                                      itab_compn_final-txicms ) / 100.

    itab_compn_final-txafrmm = 25.

    itab_compn_final-vlafrmm =

     ( itab_compn_final-vl_frete_t * itab_compn_final-txafrmm ) / 100.

    itab_compn_final-vl_total =

    ( itab_compn_final-vlii + itab_compn_final-vlipi +

      itab_compn_final-vlicms + itab_compn_final-vlafrmm +

      itab_compn_final-vlpis + itab_compn_final-vlcofins ).

    MODIFY itab_compn_final INDEX v_index.

    READ TABLE itab_compn WITH KEY nritem = itab_compn_final-nritem

                                   codcomp = itab_compn_final-codcomp

                                    proced = itab_compn_final-proced.

    IF sy-subrc EQ 0.

      IF itab_compn-txicms > 0.

        v_icmspct = ( 100 - itab_compn-txicms ) / 100.

      ELSE.

        v_icmspct = 1.

      ENDIF.

      v_vlcif_imp = itab_compn-netpr_t +

                          itab_compn-vl_frete_t + itab_compn-vl_seg_t.

      itab_compn-vlii = ( v_vlcif_imp * itab_compi-txii ) / 100.

      itab_compn-vlipi = ( ( v_vlcif_imp + itab_compn-vlii )

                                           * itab_compn-txipi ) / 100.

      itab_compn-vlicms = ( ( ( v_vlcif_imp + itab_compn-vlii +

         itab_compn-vlipi ) / v_icmspct ) * itab_compn-txicms ) / 100.

      itab_compn-txafrmm = 25.

      itab_compn-vlafrmm =

                 ( itab_compn-vl_frete_t * itab_compn-txafrmm ) / 100.

      v_advii   = ( itab_compn-txii / 100 ).

      v_advipi  = ( itab_compn-txipi / 100 ).

      v_advicms = ( itab_compn-txicms / 100 ).

      v_advpis  = ( itab_compn-txpis / 100 ).

      v_advcof  = ( itab_compn-txcofins / 100 ).

      v_xb = ( 1 - v_advpis - v_advcof ) * ( 1 - v_advicms ).

      v_xa =  1 + v_advicms *  ( v_advii + v_advipi *

                                             ( 1 + v_advii ) ) .

      v_fatx = v_xa / v_xb.

      v_faty = v_advicms / v_xb.

      itab_compn-vlpis = ( v_vlcif_imp * v_fatx ) *

                      v_advpis.

      itab_compn-vlcofins = ( v_vlcif_imp * v_fatx ) *

                      v_advcof.

      itab_compn-vl_total = ( itab_compn-vlii + itab_compn-vlipi +

                             itab_compn-vlicms + itab_compn-vlafrmm +

                             itab_compn-vlpis + itab_compn-vlcofins ).

      MODIFY itab_compn TRANSPORTING codmat codcomp proced txii vlii

                                    txipi vlipi txicms vlicms txafrmm

                                     vlafrmm vl_total vlpis vlcofins

                                    nritem

                             WHERE  nritem = itab_compn_final-nritem

                               AND codcomp = itab_compn_final-codcomp

                               AND  proced = itab_compn_final-proced.

* << Fim da inclusão

    ENDIF.

  ENDLOOP.

ENDFORM.

FORM check_fields_screen_0101.

  LOOP AT SCREEN.

    IF screen-group1 NE 'NEX'.

      screen-input = v_status.

      MODIFY SCREEN.

    ENDIF.

  ENDLOOP.

...

 

...

          itab_compi_final-vlipi      TO itab_sdocompi-vlipi     ,

          itab_compi_final-vlicms     TO itab_sdocompi-vlicms    ,

          itab_compi_final-vlpis      TO itab_sdocompi-vlpis     ,

          itab_compi_final-vlcofins   TO itab_sdocompi-vlcofins  ,

          itab_compi_final-vlafrmm    TO itab_sdocompi-vlafrmm   ,

          itab_compi_final-vl_total   TO itab_sdocompi-vl_total  .

    itab_sdocompi-vl_cif_t = ( itab_compi_final-netpr_t +

        itab_compi_final-vl_frete_t + itab_compi_final-vl_seg_t ).

    COLLECT itab_sdocompi.

  ENDLOOP.

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

  IF /pws/zycie238-subtipo NE space.

    LOOP AT itab_compn_final.

      CLEAR: itab_sdocompi.

      MOVE: /pws/zycie238-nrseqd        TO itab_sdocompi-nrseqd    ,

            itab_compn_final-codcomp    TO itab_sdocompi-codcomp   ,

            itab_compn_final-proced     TO itab_sdocompi-proced    ,

            itab_compn_final-qtd_iten   TO itab_sdocompi-qtd_iten  ,

            itab_compn_final-qtd_tot    TO itab_sdocompi-qtd_tot   ,

            itab_compn_final-netpr_t    TO itab_sdocompi-netpr_t   ,

            itab_compn_final-vl_frete_t TO itab_sdocompi-vl_frete_t,

            itab_compn_final-vl_seg_t   TO itab_sdocompi-vl_seg_t  ,

            itab_compn_final-vlipi      TO itab_sdocompi-vlipi     ,

            itab_compn_final-vlpis      TO itab_sdocompi-vlpis     ,

            itab_compn_final-vlcofins   TO itab_sdocompi-vlcofins  .

      itab_sdocompi-vl_total = itab_compn_final-vlipi +

         itab_compn_final-vlpis + itab_compn_final-vlcofins.

      itab_sdocompi-vl_cif_t = ( itab_compn_final-netpr_t +

              itab_compn_final-vl_frete_t + itab_compn_final-vl_seg_t ).

      COLLECT itab_sdocompi.

    ENDLOOP.

  ENDIF.

* << Fim da inclusão

  LOOP AT itab_sdocompi.

    v_index = sy-tabix.

    READ TABLE itab_compi_final WITH KEY

                                        codcomp = itab_sdocompi-codcomp

                                        proced  = itab_sdocompi-proced.

    IF sy-subrc EQ 0.

      MOVE: itab_compi_final-werks    TO itab_sdocompi-werks   ,

            itab_compi_final-meins    TO itab_sdocompi-meins   ,

            itab_compi_final-gewei    TO itab_sdocompi-gewei   ,

            itab_compi_final-brgew    TO itab_sdocompi-brgew   ,

...

 

...

            itab_compi_final-vl_frete TO itab_sdocompi-vl_frete,

            itab_compi_final-pctseg   TO itab_sdocompi-pctseg  ,

            itab_compi_final-vl_seg   TO itab_sdocompi-vl_seg  ,

            itab_compi_final-transp   TO itab_sdocompi-transp  .

      IF v_verifvb = 'S'.

        IF itab_sdocompi-vl_total >= /pws/zycit321-viabilidade.

          itab_sdocompi-transp = 'X'.

        ENDIF.

        itab_compi_final-transp = itab_sdocompi-transp  .

        MODIFY itab_compi_final TRANSPORTING transp

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

                                WHERE codcomp = itab_sdocompi-codcomp

                                  AND proced  = itab_sdocompi-proced.

      ENDIF.

      MODIFY itab_sdocompi INDEX v_index.

    ELSE.

      READ TABLE itab_compn_final WITH KEY

                                      codcomp = itab_sdocompi-codcomp

                                      proced  = itab_sdocompi-proced.

      IF sy-subrc EQ 0.

        MOVE: itab_compn_final-werks    TO itab_sdocompi-werks   ,

              itab_compn_final-meins    TO itab_sdocompi-meins   ,

              itab_compn_final-gewei    TO itab_sdocompi-gewei   ,

              itab_compn_final-brgew    TO itab_sdocompi-brgew   ,

              itab_compn_final-ntgew    TO itab_sdocompi-ntgew   ,

              itab_compn_final-j_1bnbm  TO itab_sdocompi-j_1bnbm ,

              itab_compn_final-waers    TO itab_sdocompi-waers   ,

              itab_compn_final-waersimp TO itab_sdocompi-waersimp,

              itab_compn_final-netpr    TO itab_sdocompi-netpr   ,

              itab_compn_final-vl_frete TO itab_sdocompi-vl_frete,

              itab_compn_final-pctseg   TO itab_sdocompi-pctseg  ,

              itab_compn_final-vl_seg   TO itab_sdocompi-vl_seg  ,

              itab_compn_final-transp   TO itab_sdocompi-transp  .

        IF v_verifvb = 'S'.

          IF itab_sdocompi-vl_total >= /pws/zycit321-viabilidade.

            itab_sdocompi-transp = 'X'.

          ENDIF.

          itab_compn_final-transp = itab_sdocompi-transp  .

          MODIFY itab_compn_final TRANSPORTING transp

* << Fim da inclusão

                                WHERE codcomp = itab_sdocompi-codcomp

                                  AND proced  = itab_sdocompi-proced.

      ENDIF.

      MODIFY itab_sdocompi INDEX v_index.

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

      ENDIF.

* << Fim da inclusão

    ENDIF.

  ENDLOOP.

  SORT itab_sdocompi BY codcomp.

...

 

...

  ENDLOOP.

ENDFORM.

FORM trata_button_transp.

  READ TABLE itab_sdocompi WITH KEY mark_res = 'X'.

  IF sy-subrc NE 0.

    MESSAGE s015 WITH text-148.

    EXIT.

  ENDIF.

  LOOP AT itab_sdocompi WHERE mark_res = 'X'.

    IF itab_sdocompi-transp EQ 'X'.

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

      IF itab_sdocompi-proced EQ '0'.

        LOOP AT itab_compn_final

                  WHERE codcomp = itab_sdocompi-codcomp

                    AND proced  = itab_sdocompi-proced.

          itab_compn_final-transp = ' '.

          MODIFY itab_compn_final.

        ENDLOOP.

      ELSE.

* << Fim da inclusão

      LOOP AT itab_compi_final

                WHERE codcomp = itab_sdocompi-codcomp

                  AND proced  = itab_sdocompi-proced.

        itab_compi_final-transp = ' '.

        MODIFY itab_compi_final.

      ENDLOOP.

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

      ENDIF.

* << Fim da inclusão

      itab_sdocompi-transp = ' '.

    ELSE.

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

      IF itab_sdocompi-proced EQ '0'.

        LOOP AT itab_compn_final

                  WHERE codcomp = itab_sdocompi-codcomp

                    AND proced  = itab_sdocompi-proced.

          itab_compn_final-transp = 'X'.

          MODIFY itab_compn_final.

        ENDLOOP.

      ELSE.

* << Fim da inclusão

      LOOP AT itab_compi_final

                WHERE codcomp = itab_sdocompi-codcomp

                  AND proced  = itab_sdocompi-proced.

        itab_compi_final-transp = 'X'.

        MODIFY itab_compi_final.

      ENDLOOP.

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

      ENDIF.

* << Fim da inclusão

      itab_sdocompi-transp = 'X'.

...

 

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

Modificações efetuadas em REPS /PWS/MZYCI040F02

 

...

        MODIFY SCREEN.

      ENDIF.

    ENDIF.

    IF screen-name EQ '/PWS/ZYCIE244-VERD_AMA'.

      IF /pws/zycie244-modalidade EQ 'I' OR

         /pws/zycie244-tipo EQ 'F'.

        screen-invisible = 1.

        screen-active = 0.

        CLEAR: /pws/zycie244-verd_ama.

      ELSE.

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

        IF NOT /pws/zycie244-nratoc IS INITIAL.

* << Fim da exclusão

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

        IF NOT /pws/zycie244-nratoc IS INITIAL OR NOT

        /pws/zycie244-nrforecast IS INITIAL.

* << Fim da inclusão

          screen-input = 0.

        ELSE.

          screen-input = 1.

        ENDIF.

        screen-invisible = 0.

      ENDIF.

      MODIFY SCREEN.

    ENDIF.

    IF screen-name EQ 'LINHA'.

      IF /pws/zycie244-modalidade EQ 'I'.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI040I01

 

...

MODULE user_command_0200_exit INPUT.

  CASE ok_code2.

    WHEN 'ABORT'.

      PERFORM check_button_abort2.

  ENDCASE.

ENDMODULE.

MODULE trata_forecast INPUT.

  DATA: v_item_fc TYPE i,

        v_brgew_t TYPE /pws/zycit245-qtd_tot,

        v_ntgew_t TYPE /pws/zycit245-qtd_tot.

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

  DATA: v_conv10  TYPE /pws/zycit245-qtd_ncm,

        v_conv20  TYPE /pws/zycit245-qtd_ncm.

* << Fim da inclusão

  PERFORM verifica_exit USING 'D'

                             '/PWS/SAPMZYCI040'

                             'ATO003'.

  e_subrc = 0.

  CLEAR itab_zyglt100 .

  READ TABLE itab_zyglt100 WITH KEY zexit = 'ATO003'  BINARY SEARCH.

  IF sy-subrc EQ 0.

    IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

      PERFORM (itab_zyglt100-formulario) IN PROGRAM

          (itab_zyglt100-programa)

...

 

...

      DELETE ADJACENT DUPLICATES FROM itab_zycit250 COMPARING codagrup.

      MOVE: wa_zycit2382-modalidade TO /pws/zycie244-modalidade,

            wa_zycit2382-tipo       TO /pws/zycie244-tipo      ,

            wa_zycit2382-tipoemp    TO /pws/zycie244-tipoemp   ,

            wa_zycit2382-oper_ind   TO /pws/zycie244-oper_ind  ,

            wa_zycit2382-bukrs      TO /pws/zycie244-bukrs     ,

            wa_zycit2382-werks      TO /pws/zycie244-werks     ,

            wa_zycit2382-ekorg      TO /pws/zycie244-ekorg     ,

            wa_zycit2382-importacao TO /pws/zycie244-importacao,

            wa_zycit2382-variacaocb TO /pws/zycie244-variacaocb,

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

            wa_zycit2382-codagrup   TO /pws/zycie244-codagrup.

* << Fim da exclusão

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

            wa_zycit2382-codagrup   TO /pws/zycie244-codagrup  ,

            wa_zycit2382-subtipo    TO /pws/zycie244-verd_ama  .

* << Fim da inclusão

      SELECT SINGLE * FROM t001 WHERE bukrs EQ /pws/zycie244-bukrs.

      IF NOT /pws/zycie244-bukrs IS INITIAL.

        SELECT SINGLE * FROM /pws/zycbt007 INTO wa_zycbt007

        WHERE bukrs = /pws/zycie244-bukrs .

      ENDIF.

      SELECT SINGLE ddtext FROM dd07t

          INTO /pws/zycie244-tipo2

          WHERE domname    EQ '/PWS/ZYGLD053'

          AND   ddlanguage EQ sy-langu(1)

          AND   domvalue_l LIKE /pws/zycie244-tipo.

      CLEAR itab_zycit245. REFRESH itab_zycit245.

      SELECT * FROM /pws/zycit249 INTO TABLE itab_zycit249

             WHERE nrseqd EQ /pws/zycie244-nrforecast.

      SELECT * FROM /pws/zycit240 INTO TABLE itab_zycit240

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

             WHERE nrseqd EQ /pws/zycie244-nrforecast.

* << Fim da exclusão

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

             WHERE nrseqd EQ /pws/zycie244-nrforecast

             AND   transp NE space.

* << Fim da inclusão

      IF sy-subrc EQ 0.

        CLEAR itab_zycit245_aux. REFRESH itab_zycit245_aux.

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

        LOOP AT itab_zycit249.

* << Fim da exclusão

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

        LOOP AT itab_zycit249 WHERE proced NE '0'.

* << Fim da inclusão

          CLEAR itab_zycit245.

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

          CHECK itab_zycit249-transp EQ 'X'.

* << Fim da exclusão

          MOVE-CORRESPONDING itab_zycit249 TO itab_zycit245.

          PERFORM select_max_item_number2 CHANGING v_nritem.

          itab_zycit245-nritem = v_nritem.

          itab_zycit245-nrseqd = /pws/zycie244-nrseqd.

          itab_zycit245-sdocomp_i = itab_zycit249-qtd_tot.

          LOOP AT itab_zycit240 WHERE

              codcomp EQ itab_zycit245-codcomp.

            itab_zycit245-qtd_perda_e = itab_zycit245-qtd_perda_e +

                                        itab_zycit240-qtd_perda_e.

            itab_zycit245-vl_scamb = itab_zycit245-vl_scamb +

...

 

...

                              itab_zycit245-qtd_perda_e.

          itab_zycit245-perda_e = ( itab_zycit245-qtd_perda_e * 100 )

                                             / itab_zycit245-qtd_tot.

          itab_zycit245-qtd_ncm = itab_zycit245-qtd_tot.

          itab_zycit245-um_ncm  = itab_zycit245-meins  .

          PERFORM converte_um_ncm USING itab_zycit245-codcomp

                                  CHANGING itab_zycit245-um_ncm

                                           itab_zycit245-werks

                                           itab_zycit245-qtd_ncm.

          CLEAR: itab_zycit245-qtd_perda_e.

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

          IF itab_zycit245-gewei NE 'KG'.

            CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'

                 EXPORTING

                      input                = v_conv10

                      no_type_check        = 'X'

                      round_sign           = 'X'

                      unit_in              = itab_zycit245-gewei

                      unit_out             = 'KG'

                 IMPORTING

                      denominator          = v_um_ren

                      numerator            = v_um_rez

                      output               = v_conv20

                 EXCEPTIONS

                      conversion_not_found = 1

                      division_by_zero     = 2

                      input_invalid        = 3

                      output_invalid       = 4

                      overflow             = 5

                      type_invalid         = 6

                      units_missing        = 7

                      unit_in_not_found    = 8

                      unit_out_not_found   = 9

                      OTHERS               = 10.

            IF sy-subrc = 0.

              itab_zycit245-ntgew =

                      ( itab_zycit245-ntgew / v_um_ren ) * v_um_rez.

              itab_zycit245-brgew =

                      ( itab_zycit245-brgew / v_um_ren ) * v_um_rez.

              itab_zycit245-gewei = 'KG'.

            ENDIF.

          ENDIF.

          itab_zycit245-ntgewt = itab_zycit245-ntgew *

                                 itab_zycit245-qtd_tot.

          itab_zycit245-brgew  = itab_zycit245-brgew *

                                 itab_zycit245-qtd_tot.

          CLEAR itab_zycit245-pctseg.

* << Fim da inclusão

          IF /pws/zycit321-c_comum EQ 'X'.

            READ TABLE itab_zycit245_aux

                      WITH KEY j_1bnbm = itab_zycit245-j_1bnbm.

            IF sy-subrc EQ 0.

              itab_zycit245-nritem  = itab_zycit245_aux-nritem.

            ENDIF.

            itab_zycit245-qtd_tot = itab_zycit245-qtd_ncm   .

            itab_zycit245-meins   = itab_zycit245-um_ncm    .

            CLEAR: itab_zycit245-qtd_iten, itab_zycit245-codcomp,

                   itab_zycit245-perda, itab_zycit245-perda_e.

...

 

...

              v_nritem = itab_zycit245-nritem.

              EXIT.

            ENDLOOP.

          ENDIF.

          CLEAR: itab_zycit245.

          MOVE-CORRESPONDING itab_zycit240 TO itab_zycit245.

          itab_zycit245-nrseqd = /pws/zycie244-nrseqd.

          itab_zycit245-sdocomp_i = itab_zycit240-qtd_tot.

          itab_zycit245-qtd_tot = itab_zycit245-qtd_tot +

                                    itab_zycit245-qtd_perda_e.

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

          itab_zycit245-qtd_ncm = itab_zycit245-qtd_tot.

          itab_zycit245-um_ncm  = itab_zycit245-meins  .

          PERFORM converte_um_ncm USING itab_zycit245-codcomp

                                  CHANGING itab_zycit245-um_ncm

                                           itab_zycit245-werks

                                           itab_zycit245-qtd_ncm.

          IF itab_zycit245-gewei NE 'KG'.

            CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'

                 EXPORTING

                      input                = v_conv10

                      no_type_check        = 'X'

                      round_sign           = 'X'

                      unit_in              = itab_zycit245-gewei

                      unit_out             = 'KG'

                 IMPORTING

                      denominator          = v_um_ren

                      numerator            = v_um_rez

                      output               = v_conv20

                 EXCEPTIONS

                      conversion_not_found = 1

                      division_by_zero     = 2

                      input_invalid        = 3

                      output_invalid       = 4

                      overflow             = 5

                      type_invalid         = 6

                      units_missing        = 7

                      unit_in_not_found    = 8

                      unit_out_not_found   = 9

                      OTHERS               = 10.

            IF sy-subrc = 0.

              itab_zycit245-ntgew =

                      ( itab_zycit245-ntgew / v_um_ren ) * v_um_rez.

              itab_zycit245-brgew =

                      ( itab_zycit245-brgew / v_um_ren ) * v_um_rez.

              itab_zycit245-gewei = 'KG'.

            ENDIF.

          ENDIF.

          itab_zycit245-ntgewt = itab_zycit245-ntgew *

                                 itab_zycit245-qtd_tot.

          itab_zycit245-brgew  = itab_zycit245-brgew *

                                 itab_zycit245-qtd_tot.

          CLEAR itab_zycit245-pctseg.

          IF /pws/zycit321-c_comum EQ 'X'.

            itab_zycit245-qtd_tot = itab_zycit245-qtd_ncm   .

            itab_zycit245-meins   = itab_zycit245-um_ncm    .

            CLEAR: itab_zycit245-qtd_iten, itab_zycit245-codcomp,

                   itab_zycit245-perda, itab_zycit245-perda_e.

          ENDIF.

* << Fim da inclusão

          IF v_nritem IS INITIAL.

            PERFORM select_max_item_number2 CHANGING v_nritem.

            itab_zycit245-nritem = v_nritem.

            APPEND itab_zycit245.

          ELSE.

            itab_zycit245-nritem = v_nritem.

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

            CLEAR: itab_zycit245-qtd_iten, itab_zycit245-brgew,

                   itab_zycit245-netpr, itab_zycit245-pctseg,

                   itab_zycit245-vl_seg, itab_zycit245-vl_frete.

* << Fim da exclusão

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

            CLEAR: itab_zycit245-qtd_iten, itab_zycit245-netpr,

                   itab_zycit245-pctseg, itab_zycit245-vl_seg,

                   itab_zycit245-vl_frete.

* << Fim da inclusão

            COLLECT itab_zycit245.

          ENDIF.

          itab_zycit245_aux[] = itab_zycit245[].

        ENDLOOP.

        LOOP AT itab_zycit245.

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

          itab_zycit245-qtd_ncm = itab_zycit245-qtd_tot.

          itab_zycit245-um_ncm  = itab_zycit245-meins  .

          itab_zycit245-perda_e = ( itab_zycit245-qtd_perda_e * 100 )

* << Fim da exclusão

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

          IF NOT itab_zycit245-ntgewt IS INITIAL.

            itab_zycit245-ntgew = itab_zycit245-ntgewt

                                / itab_zycit245-qtd_tot.

            itab_zycit245-brgew = itab_zycit245-brgew

* << Fim da inclusão

                                             / itab_zycit245-qtd_tot.

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

          CLEAR: itab_zycit245-qtd_perda_e.

          PERFORM converte_um_ncm USING itab_zycit245-codcomp

                                  CHANGING itab_zycit245-um_ncm

                                           itab_zycit245-werks

                                           itab_zycit245-qtd_ncm.

* << Fim da exclusão

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

            itab_zycit245-pctseg = ( itab_zycit245-vl_seg_t  /

               ( itab_zycit245-netpr_t + itab_zycit245-vl_frete_t )

                                                               ) * 100.

          ENDIF.

* << Fim da inclusão

          MODIFY itab_zycit245.

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

        ENDLOOP.

        LOOP AT itab_zycit245t.

          IF NOT itab_zycit245t-ntgewt IS INITIAL.

            itab_zycit245t-ntgew = itab_zycit245t-ntgewt

                                / itab_zycit245t-qtd_tot.

            itab_zycit245t-brgew = itab_zycit245t-brgew

                                / itab_zycit245t-qtd_tot.

            itab_zycit245t-pctseg = ( itab_zycit245t-vl_seg_t  /

               ( itab_zycit245t-netpr_t + itab_zycit245t-vl_frete_t )

                                                               ) * 100.

          ENDIF.

          MODIFY itab_zycit245t.

* << Fim da inclusão

        ENDLOOP.

        pressed_tab_2a = 'FS_CABEC2'.

        /pws/zycie245-nrseqd = /pws/zycie244-nrseqd.

        IF /pws/zycie244-tipo EQ 'G'.

          PERFORM acumula_item_lista_tecnica_tg2.

        ENDIF.

      ENDIF.

      CLEAR itab_zycit247. REFRESH itab_zycit247.

      SELECT * FROM /pws/zycit239 INTO TABLE itab_zycit239

             WHERE nrseqd EQ /pws/zycie244-nrforecast.

...

 

...

      ENDIF.

      PERFORM replace_screen_0201.

      IF v_tcode2 EQ '/PWS/ZYCI040_A'.

      ENDIF.

      v_verificp2 = 'S'.

    ELSE.

      MESSAGE e015 WITH text-051.

    ENDIF.

    IF /pws/zycit321-c_comum EQ 'X'.

      LOOP AT itab_zycit245.

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

        IF NOT itab_zycit245-qtd_tot IS INITIAL.

* << Fim da inclusão

        itab_zycit245-netpr = itab_zycit245-netpr_t /

                                              itab_zycit245-qtd_tot.

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

        IF NOT itab_zycit245-vl_seg_t IS INITIAL.

          itab_zycit245-pctseg = ( itab_zycit245-vl_seg_t  /

             ( itab_zycit245-netpr_t + itab_zycit245-vl_frete_t )

                                                             ) * 100.

* << Fim da exclusão

        ENDIF.

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

        CLEAR: v_brgew_t, v_ntgew_t.

        LOOP AT itab_zycit249 WHERE j_1bnbm EQ itab_zycit245-j_1bnbm.

          v_ntgew_t = v_ntgew_t +

              ( itab_zycit249-ntgew * itab_zycit249-qtd_tot ).

          v_brgew_t = v_brgew_t +

              ( itab_zycit249-brgew * itab_zycit249-qtd_tot ).

        ENDLOOP.

        itab_zycit245-brgew = v_brgew_t / itab_zycit245-qtd_tot.

        itab_zycit245-ntgew = v_ntgew_t / itab_zycit245-qtd_tot.

* << Fim da exclusão

        MODIFY itab_zycit245.

      ENDLOOP.

      LOOP AT itab_zycit247.

        itab_zycit247-netpr = itab_zycit247-netpr_t /

                                              itab_zycit247-qtd_iten.

        itab_zycit247-vl_frete = itab_zycit247-vl_frete_t /

                                              itab_zycit247-qtd_iten.

        IF NOT itab_zycit247-netpr_t IS INITIAL.

          IF NOT itab_zycit247-pctcomis IS INITIAL.

            itab_zycit247-pctcomis = ( itab_zycit247-vl_comis_t /

                                  itab_zycit247-netpr_t ) * 100.

          ELSE.

            itab_zycit247-pctcomis = itab_zycit247-vl_comis_t /

                                               itab_zycit247-qtd_iten.

          ENDIF.

        ENDIF.

        CLEAR: v_brgew_t, v_ntgew_t.

        LOOP AT itab_zycit239 WHERE j_1bnbm EQ itab_zycit247-j_1bnbm.

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

          IF itab_zycit239-gewei NE 'KG'.

            CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'

                 EXPORTING

                      input                = v_conv10

                      no_type_check        = 'X'

                      round_sign           = 'X'

                      unit_in              = itab_zycit239-gewei

                      unit_out             = 'KG'

                 IMPORTING

                      denominator          = v_um_ren

                      numerator            = v_um_rez

                      output               = v_conv20

                 EXCEPTIONS

                      conversion_not_found = 1

                      division_by_zero     = 2

                      input_invalid        = 3

                      output_invalid       = 4

                      overflow             = 5

                      type_invalid         = 6

                      units_missing        = 7

                      unit_in_not_found    = 8

                      unit_out_not_found   = 9

                      OTHERS               = 10.

            IF sy-subrc = 0.

              itab_zycit239-ntgew =

                      ( itab_zycit239-ntgew / v_um_ren ) * v_um_rez.

              itab_zycit239-brgew =

                      ( itab_zycit239-brgew / v_um_ren ) * v_um_rez.

              itab_zycit239-gewei = 'KG'.

            ENDIF.

          ENDIF.

* << Fim da inclusão

          v_ntgew_t = v_ntgew_t +

              ( itab_zycit239-ntgew * itab_zycit239-qtd_iten ).

          v_brgew_t = v_brgew_t +

              ( itab_zycit239-brgew * itab_zycit239-qtd_iten ).

        ENDLOOP.

        itab_zycit247-brgew = v_brgew_t / itab_zycit247-qtd_iten.

        itab_zycit247-ntgew = v_ntgew_t / itab_zycit247-qtd_iten.

        MODIFY itab_zycit247.

      ENDLOOP.

    ENDIF.

...