CE PLUS - Nota 004583

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Prestação de Contas

Data/Hora da Publicação: 31/08/2007 00:00:00

Data/Hora Última Alteração: 23/02/2011 09:32:39

Descrição da Nota: PREENCHER AUTOMATICAMENTE OS VALORES DOS IMPOSTOS E TAXA SISCOMES

Sintoma

AO FAZERMOS O DÉBITO EM CONTA DA DA ESSE NAO TRAZ AUTOMÁTICO OS VALORES DE ICMS E TX DE SISCOMEX.

 

 

Solução

Corrigir seleção e ajustar calculos para realizar o tratamento necessario para processos de DA.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

DECLARAÇÃO DE ADMISSÃO - MATERIAIS DIFERENTES

FATURA DE DESPESA PARA EMBARQUES DE SERVIÇO

O RATEIO DOS IMPOSTOS NA NF APARECE COM O MESMO VALOR PARA OS DOIS ITENS

AO LIBERAR DÉB.EM CONTA, VALOR DO IPI ESTÁ FICANDO NEGATIVO.

O SISTEMA ESTÁ EMITINDO MENSAGEM INCORRETA AO LIBERAR PREST.DE CONTAS.

ERRO DE ARREDONDAMENTO AO CALCULAR O VALOR DOS IMPOSTOS DA DI.

DÉBITO EM CONTA DA VERIFICA EXISTÊNCIA DA DI

NA NOTA FISCAL VERIFICAR TABELA ZYCIT062 PARA NÃO INCIDÊNCIA DA DI

Informações Complementares

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

Nota Número 04583 Data: 31/08/2007 Hora: 10:40:20

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

 

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

Nota Número              : 04583

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00002

Agrupamento              : 00011

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

Referência às notas relacionadas:

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

 

01092  - 00001 - 6.0    - 00023  - O SISTEMA ESTÁ EMITINDO MENSAGEM INCORRETA AO LIBERAR PREST.DE CO

01667  - 00002 - 6.0    - 00024  - O RATEIO DOS IMPOSTOS NA NF APARECE COM O MESMO VALOR PARA OS DOI

02396  - 00003 - 6.0    - 00025  - FATURA DE DESPESA PARA EMBARQUES DE SERVIÇO

03302  - 00004 - 7.0    - 00001  - NA NOTA FISCAL VERIFICAR TABELA ZYCIT062 PARA NÃO INCIDÊNCIA DA D

03418  - 00005 - 7.0    - 00001  - ERRO DE ARREDONDAMENTO AO CALCULAR O VALOR DOS IMPOSTOS DA DI.

03511  - 00006 - 7.0    - 00001  - DECLARAÇÃO DE ADMISSÃO - MATERIAIS DIFERENTES

03602  - 00008 - 7.0    - 00001  - DÉBITO EM CONTA DA VERIFICA EXISTÊNCIA DA DI

03675  - 00007 - 7.0    - 00001  - AO LIBERAR DÉB.EM CONTA, VALOR DO IPI ESTÁ FICANDO NEGATIVO.

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

PREENCHER AUTOMATICAMENTE OS VALORES DOS IMPOSTOS E TAXA SISCOMES

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

Palavras Chave:

PRESTAÇÃO - CONTA - DEBITO - VALOR - IMPOSTOS - SISCOMEX

/PWS/SAPMZYCI006 - /PWS/SAPMZYCI007 - /PWS/SAPMZYCI013

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

Objetos da nota:

FUNC /PWS/ZYCI_RATEIO_CUSTO

REPS /PWS/LZYCIGF2TOP

REPS /PWS/MZYCI006F01

REPS /PWS/MZYCI006TOP

REPS /PWS/MZYCI007F01

REPS /PWS/MZYCI007F02

REPS /PWS/MZYCI007TOP

REPS /PWS/MZYCI013F01

REPS /PWS/MZYCI013X01

 

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

Modificações efetuadas em FUNC /PWS/ZYCI_RATEIO_CUSTO

 

...

 

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

  DATA: BEGIN OF itab_zycit443 OCCURS 0.

          INCLUDE STRUCTURE /pws/zycit443.

  DATA vl_sisco(13)  TYPE p DECIMALS 3.

  DATA: END OF itab_zycit443.

    DATA: BEGIN OF itab_zycit451 OCCURS 0.

          INCLUDE STRUCTURE /pws/zycit451.

  DATA: nr_itens TYPE i,

  flag_vltot.

  DATA: END OF itab_zycit451.

* << Fim da inclusão

...

 

...

 

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

        DATA: v_vfre LIKE /pws/zycie085-vlfre,

              v_tfre LIKE /pws/zycie085-vlfre,

              v_vseg LIKE /pws/zycie085-vlseg,

              v_vfob LIKE /pws/zycie085-vlfob,

              v_vtot LIKE /pws/zycie085-vlfob.

* << Fim da inclusão

 

...

 

...

 

  SELECT SINGLE * FROM /pws/zycit094

    WHERE nrseq = itab_zycit003-nrseq.

  SELECT SINGLE * FROM /pws/zycit085

      WHERE nrbl = /pws/zycit094-nrseqce.

  SELECT * FROM /pws/zycit100

        INTO TABLE itab_zycit100a

        WHERE nrseqdi = /pws/zycit085-nrseqdi.

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

  if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

  SELECT * FROM /pws/zycit443

        INTO TABLE itab_zycit443

        WHERE nrseq = itab_zycit003-nrseq.

      read table itab_zycit443 index 1.

      select single * from /pws/zycit442 into /pws/zycie442

        where nrseqda = itab_zycit443-nrseqda.

  endif.

* << Fim da inclusão

  IMPORT v_vinserv FROM MEMORY ID 'VINSERV'.

 

...

 

...

    ENDLOOP.

  ENDIF.

  LOOP AT itab_zycit003 .

    IF ( v_vinserv IS INITIAL AND

         itab_zycit003-servico IS INITIAL ) OR

         ( v_vinserv EQ 'X' AND itab_zycit003-servico EQ 'X' ) .

      v_vlfrete =  v_tfrete * ( itab_zycit003-ntgew / v_tpeso ).

      v_tot = v_tot + ( itab_zycit003-netpr * itab_zycit003-qtd_iten ).

      v_tot_vlreal = v_tot_vlreal + ( itab_zycit003-vlreal *

                      itab_zycit003-qtd_iten ).

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

    ENDIF.

  ENDLOOP.

if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

  LOOP AT itab_zycit443.

    IF NOT '356' CA itab_zycit443-codregtri .

      v_tot_ii   = itab_zycit443-vlii + v_tot_ii.

    ENDIF.

    IF NOT '156' CA itab_zycit443-codregtriipi .

      v_tot_ipi  = itab_zycit443-vlipi + v_tot_ipi.

    ENDIF.

    IF NOT '356' CA itab_zycit443-codregtripiscofi.

      v_tot_pis     = itab_zycit443-vlpis + v_tot_pis.

      v_tot_cofins  = itab_zycit443-vlcofins + v_tot_cofins.

    ENDIF.

    IF NOT '356' CA itab_zycit443-codregtriicms  .

      v_tot_icms = itab_zycit443-vlicms + v_tot_icms.

    ENDIF.

  ENDLOOP.

  IF NOT itab_zycit443[] IS INITIAL.

    SELECT * FROM /pws/zycit451

       INTO TABLE itab_zycit451

       FOR ALL ENTRIES IN itab_zycit443

       WHERE nrseqda = itab_zycit443-nrseqda.

  ENDIF.

  LOOP AT itab_zycit451.

    v_linha = sy-tabix.

    LOOP AT itab_zycit443 WHERE adicao = itab_zycit451-adicao.

      itab_zycit451-nr_itens = itab_zycit451-nr_itens + 1.

    ENDLOOP.

    MODIFY itab_zycit451 INDEX v_linha.

  ENDLOOP.

  IF NOT itab_zycit451[] IS INITIAL.

    DESCRIBE TABLE itab_zycit451 LINES v_line.

    READ TABLE itab_despesa WITH KEY tpdesp = /pws/zycit000-cod_sisc.

    IF sy-subrc = 0 AND NOT /pws/zycit000-flag_txsisc IS INITIAL.

      v_sisco1 = ( itab_despesa-netpr - /pws/zycit000-txsis_fix )

                                   / v_line.

      v_sisco2 =   /pws/zycit000-txsis_fix / v_line.

      v_sisco3 = v_sisco1 + v_sisco2.

      LOOP AT itab_zycit451.

        CLEAR: v_lines, v_sisco_tot.

        IF NOT itab_zycit451-nr_itens IS INITIAL.

          v_sisco_item = v_sisco3 / itab_zycit451-nr_itens.

        ENDIF.

        LOOP AT itab_zycit443 WHERE adicao = itab_zycit451-adicao.

          v_lines = v_lines + 1.

          IF v_lines = itab_zycit451-nr_itens.

            itab_zycit443-vl_sisco = v_sisco3 - v_sisco_tot.

          ELSE.

            itab_zycit443-vl_sisco = v_sisco_item.

            v_sisco_tot = v_sisco_tot + v_sisco_item.

* << Fim da inclusão

    ENDIF.

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

          MODIFY itab_zycit443.

        ENDLOOP.

* << Fim da inclusão

  ENDLOOP.

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

    ENDIF.

  ENDIF.

else.

* << Fim da inclusão

  LOOP AT itab_zycit100a.

    IF NOT '356' CA itab_zycit100a-codregtri .

      v_tot_ii   = itab_zycit100a-vlii + v_tot_ii.

    ENDIF.

 

...

 

...

 

    ENDIF.

  ENDIF.

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

  endif.

* << Fim da inclusão

  DESCRIBE TABLE itab_zycit003 LINES v_linha.

  IF v_programa EQ 'DC' OR v_programa EQ 'PC' OR

     v_programa EQ 'DI' OR

     ( v_programa EQ 'FAT' AND v_parametro(2) EQ '04' ).

    MOVE itab_zycit036[] TO itab_zycit036_aux[].

    LOOP AT itab_despesa WHERE netpr NE 0.

 

...

 

...

 

 

            IF itab_ekpo-j_1bmatuse NE itab_despesa-matuse .

              CONTINUE.

            ENDIF.

          ENDIF.

          v_index = sy-tabix.

          IF itab_despesa-codigo IS INITIAL.

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

            SELECT SINGLE land1 FROM t001 INTO t001-land1

* << Fim da exclusão

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

            select single land1

            from t001 into t001-land1

* << Fim da inclusão

                      WHERE bukrs EQ /pws/zycbt007-bukrs.

            SELECT SINGLE *  FROM /pws/zycit019

              WHERE tpdesp EQ itab_despesa-tpdesp AND

                    land1  EQ t001-land1.

          ELSE.

            SELECT SINGLE land1 FROM t001 INTO t001-land1

                     WHERE bukrs EQ /pws/zycbt007-bukrs.

            SELECT SINGLE *  FROM /pws/zycit019

                      WHERE codigo EQ itab_despesa-codigo AND

                            land1  EQ t001-land1.

...

 

...

                /pws/zycit001-werks    TO itab_zycit036_aux-werks,

                'D'                    TO itab_zycit036_aux-codmod,

                itab_despesa-netpr     TO itab_zycit036_aux-vlreal_emb,

                sy-uname               TO itab_zycit036_aux-usernamec,

                sy-datum               TO itab_zycit036_aux-dtuserc,

                sy-uzeit               TO itab_zycit036_aux-hruserc,

                itab_despesa-tpdesp    TO itab_zycit036_aux-tpdesp .

            v_plan = itab_zycit003-netpr * itab_zycit003-qtd_iten.

            CLEAR itab_zycit039.

         READ TABLE itab_zycit039 WITH KEY codigo = itab_despesa-codigo.

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

        if  /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

            IF v_linha = v_index.

              IF NOT itab_despesa-waers IS INITIAL.

                itab_zycit036_aux-waers_real = itab_despesa-waers.

              ELSE.

                itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

              ENDIF.

              IF ( /pws/zycit019-codigo EQ 'II'     OR

                   /pws/zycit019-codigo EQ 'IPI'    OR

                   /pws/zycit019-codigo EQ 'ICMS'   OR

                   /pws/zycit019-codigo EQ 'COFINS' OR

                   /pws/zycit019-codigo EQ 'PIS'    OR

              ( /pws/zycit000-cod_sisc EQ itab_despesa-tpdesp AND

                NOT /pws/zycit000-flag_txsisc IS INITIAL ) ) AND

                NOT itab_zycit443[] IS INITIAL.

                IF /pws/zycit019-codigo = 'ICMS' AND

                   NOT v_tot_icms IS INITIAL.

                  READ TABLE itab_zycit443 WITH KEY

                            ebeln = itab_zycit003-ebeln

                            ebelp = itab_zycit003-ebelp.

                  IF sy-subrc EQ 0.

             itab_zycit036_aux-vlreal = itab_despesa-netpr - v_tot_desp

                                                                       .

                    itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                  ENDIF.

                ELSEIF /pws/zycit019-codigo = 'IPI' AND

                   NOT v_tot_ipi IS INITIAL.

                  READ TABLE itab_zycit443 WITH KEY

                            ebeln = itab_zycit003-ebeln

                            ebelp = itab_zycit003-ebelp.

                  IF sy-subrc EQ 0 AND

                     NOT '156' CA itab_zycit443-codregtriipi .

             itab_zycit036_aux-vlreal = itab_despesa-netpr - v_tot_desp.

                    itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                  ENDIF.

                ELSEIF /pws/zycit019-codigo = 'II' AND

                   NOT v_tot_ii IS INITIAL.

                  READ TABLE itab_zycit443 WITH KEY

                            ebeln = itab_zycit003-ebeln

                            ebelp = itab_zycit003-ebelp.

                  IF sy-subrc EQ 0 AND

               NOT '356' CA itab_zycit443-codregtri .

             itab_zycit036_aux-vlreal = itab_despesa-netpr - v_tot_desp.

                    itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                  ENDIF.

                ELSEIF /pws/zycit019-codigo = 'COFINS'

                AND NOT v_tot_cofins IS INITIAL.

                  READ TABLE itab_zycit443 WITH KEY

                            ebeln = itab_zycit003-ebeln

                            ebelp = itab_zycit003-ebelp.

                  IF sy-subrc EQ 0 AND

                  NOT '356' CA  itab_zycit443-codregtripiscofi .

             itab_zycit036_aux-vlreal = itab_despesa-netpr - v_tot_desp.

                    itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                  ENDIF.

                ELSEIF /pws/zycit019-codigo = 'PIS'

                AND NOT v_tot_pis IS INITIAL.

                  READ TABLE itab_zycit443 WITH KEY

                            ebeln = itab_zycit003-ebeln

                            ebelp = itab_zycit003-ebelp.

                  IF sy-subrc EQ 0 AND

                  NOT '356' CA  itab_zycit443-codregtripiscofi .

             itab_zycit036_aux-vlreal = itab_despesa-netpr - v_tot_desp.

                    itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                  ENDIF.

                ELSE.

                  READ TABLE itab_zycit443 WITH KEY

                            ebeln = itab_zycit003-ebeln

                            ebelp = itab_zycit003-ebelp.

                  IF sy-subrc EQ 0 AND NOT v_tot_desp IS INITIAL.

             itab_zycit036_aux-vlreal = itab_despesa-netpr - v_tot_desp.

                    itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                  ELSE.

                    itab_zycit036_aux-vlreal = itab_despesa-netpr.

                    itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                  ENDIF.

                ENDIF.

              ELSE.

                IF itab_zycit039-divabs EQ 'X'.

                  itab_zycit036_aux-vlreal = itab_despesa-netpr -

                                                             v_tot_desp.

                  itab_zycit036_aux-waers_real = itab_despesa-waers.

                ELSEIF itab_zycit039-peso EQ 'X'.

                  IF NOT v_tpeso IS INITIAL.

                    itab_zycit036_aux-vlreal = itab_despesa-netpr -

                                                             v_tot_desp.

                    itab_zycit036_aux-waers_real = itab_despesa-waers.

                  ENDIF.

                ELSEIF itab_zycit039-proporplan EQ 'X'.

                  itab_zycit036_aux-vlreal = itab_despesa-netpr -

                                                             v_tot_desp.

                  itab_zycit036_aux-waers_real = itab_despesa-waers.

                ELSEIF itab_zycit039-vlreal EQ 'X'.

                        itab_zycit036_aux-vlreal =

                        ( itab_zycit003-vlreal * itab_zycit003-qtd_iten

                           / v_tot_vlreal  ) * itab_despesa-netpr .

                  itab_zycit036_aux-waers_real = itab_despesa-waers.

                ELSE.

                  v_erro = '1'.

                  EXIT.

                ENDIF.

                IF NOT itab_despesa-waers IS INITIAL.

                  itab_zycit036_aux-waers_real = itab_despesa-waers.

                ELSE.

                  itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                ENDIF.

              ENDIF.

            ELSE.

              IF NOT itab_despesa-waers IS INITIAL.

                itab_zycit036_aux-waers_real = itab_despesa-waers.

              ELSE.

                itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

              ENDIF.

              IF ( /pws/zycit019-codigo EQ 'II' OR

                 /pws/zycit019-codigo EQ 'IPI' OR

                 /pws/zycit019-codigo EQ 'ICMS' OR

                 /pws/zycit019-codigo EQ 'COFINS' OR

                 /pws/zycit019-codigo EQ 'PIS' OR

                ( /pws/zycit000-cod_sisc EQ itab_despesa-tpdesp AND

                  NOT /pws/zycit000-flag_txsisc IS INITIAL ) ) AND

                  NOT itab_zycit443[] IS INITIAL.

                IF /pws/zycit019-codigo = 'ICMS' AND

                   NOT v_tot_icms IS INITIAL.

                  READ TABLE itab_zycit443 WITH KEY

                            ebeln = itab_zycit003-ebeln

                            ebelp = itab_zycit003-ebelp.

                  IF sy-subrc EQ 0 AND NOT '356' CA

                  itab_zycit443-codregtriicms  .

                   itab_zycit036_aux-vlreal = ( itab_zycit443-vlicms /

                                   v_tot_icms ) * itab_despesa-netpr.

                    itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                  ENDIF.

                ELSEIF /pws/zycit019-codigo = 'IPI' AND

                   NOT v_tot_ipi IS INITIAL.

                  READ TABLE itab_zycit443 WITH KEY

                            ebeln = itab_zycit003-ebeln

                            ebelp = itab_zycit003-ebelp.

                  IF sy-subrc EQ 0 AND

                    NOT '156' CA itab_zycit443-codregtriipi .

                    itab_zycit036_aux-vlreal = ( itab_zycit443-vlipi /

                         v_tot_ipi ) * itab_despesa-netpr.

                    itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                  ENDIF.

                ELSEIF /pws/zycit019-codigo = 'II' AND

                   NOT v_tot_ii IS INITIAL.

                  READ TABLE itab_zycit443 WITH KEY

                            ebeln = itab_zycit003-ebeln

                            ebelp = itab_zycit003-ebelp.

                  IF sy-subrc EQ 0 AND

                  NOT '356' CA  itab_zycit443-codregtri .

                    itab_zycit036_aux-vlreal = ( itab_zycit443-vlii /

                         v_tot_ii ) * itab_despesa-netpr.

                    itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                  ENDIF.

                ELSEIF /pws/zycit019-codigo = 'COFINS'

                AND NOT v_tot_cofins IS INITIAL.

                  READ TABLE itab_zycit443 WITH KEY

                            ebeln = itab_zycit003-ebeln

                            ebelp = itab_zycit003-ebelp.

                  IF sy-subrc EQ 0 AND

            NOT '356' CA  itab_zycit443-codregtripiscofi .

                 itab_zycit036_aux-vlreal = ( itab_zycit443-vlcofins /

                                    v_tot_cofins ) * itab_despesa-netpr.

                    itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                  ENDIF.

                ELSEIF /pws/zycit019-codigo = 'PIS'

                AND NOT v_tot_pis IS INITIAL.

                  READ TABLE itab_zycit443 WITH KEY

                            ebeln = itab_zycit003-ebeln

                            ebelp = itab_zycit003-ebelp.

                  IF sy-subrc EQ 0 AND

                       NOT '356' CA itab_zycit443-codregtripiscofi .

                    itab_zycit036_aux-vlreal = ( itab_zycit443-vlpis /

                         v_tot_pis ) * itab_despesa-netpr.

                    itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                  ENDIF.

                ELSE.

                  READ TABLE itab_zycit443 WITH KEY

                            ebeln = itab_zycit003-ebeln

                            ebelp = itab_zycit003-ebelp.

                  IF sy-subrc EQ 0.

                    itab_zycit036_aux-vlreal = itab_zycit443-vl_sisco.

                    itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                  ENDIF.

                ENDIF.

              ELSE.

                IF itab_zycit039-divabs EQ 'X'.

                itab_zycit036_aux-vlreal = itab_despesa-netpr / v_linha.

                  itab_zycit036_aux-waers_real = itab_despesa-waers.

                ELSEIF itab_zycit039-peso EQ 'X'.

                  IF NOT v_tpeso IS INITIAL.

                    itab_zycit036_aux-vlreal = itab_despesa-netpr *

                                          itab_zycit003-ntgew / v_tpeso.

                    itab_zycit036_aux-waers_real = itab_despesa-waers.

                  ENDIF.

                ELSEIF itab_zycit039-proporplan EQ 'X'.

                  itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *

                   itab_zycit003-qtd_iten / v_tot ) *

                   itab_despesa-netpr.

                  itab_zycit036_aux-waers_real = itab_despesa-waers.

                ELSE.

                  CLEAR /pws/zycit020.

                  SELECT SINGLE * FROM /pws/zycit020 WHERE

                    regio = adrc-region AND

                    codigo = /pws/zycit019-codigo AND

                    baseicms EQ 'X'  AND

                    land1 EQ t001-land1.

                  IF sy-subrc NE 0.

                    SELECT SINGLE * FROM /pws/zycit020 WHERE

                      regio = space AND

                      codigo = /pws/zycit019-codigo AND

                      baseicms EQ 'X'  AND

                      land1 EQ t001-land1.

                  ENDIF.

                  IF /pws/zycit020-baseicms EQ 'X'.

                    IF /pws/zycit062-bs_rat_icms EQ 'CIF' .

                      READ TABLE itab_zycit443 WITH KEY

                                ebeln = itab_zycit003-ebeln

                                ebelp = itab_zycit003-ebelp.

                      IF sy-subrc EQ 0.

                    PERFORM taxa_converte USING  /pws/zycie442-waersfob

                                                    /pws/zycie442-dttax

                                                             t001-land1

                                                       CHANGING  v_taxa.

                        IF NOT v_taxa IS INITIAL.

                          v_vfre = itab_zycit443-vlfre / v_taxa.

                          v_vseg = itab_zycit443-vlseg / v_taxa.

                        ENDIF.

                        v_vfob = itab_zycit443-vlfob.

                        v_tseg = /pws/zycie442-vlseg .

                        IF /pws/zycie442-ukursfre

                           NE /pws/zycie442-ukursfob.

                          PERFORM taxa_converte USING

                                  /pws/zycie442-waersfre

                                        /pws/zycie442-dttax

                                        t001-land1

                                 CHANGING  v_taxa.

                          v_tfre = /pws/zycie442-vlfre * v_taxa.

                          PERFORM taxa_converte USING

                                  /pws/zycie442-waersfob

                                        /pws/zycie442-dttax

                                        t001-land1

                                 CHANGING  v_taxa.

                          IF NOT v_taxa IS INITIAL.

                            v_tfre = v_tfre / v_taxa.

                          ENDIF.

                        ELSE.

                          v_tfre = /pws/zycie442-vlfre.

                        ENDIF.

                        v_vtot = /pws/zycie442-vlfob + v_tfre  + v_tseg.

                        itab_zycit036_aux-vlreal =

                        ( itab_zycit003-vlreal * itab_zycit003-qtd_iten

                           / v_tot_vlreal  ) * itab_despesa-netpr .

                      ENDIF.

                    ELSE.

                        itab_zycit036_aux-vlreal =

                        ( itab_zycit003-vlreal * itab_zycit003-qtd_iten

                           / v_tot_vlreal  ) * itab_despesa-netpr .

                      itab_zycit036_aux-waers_real = itab_despesa-waers.

                    ENDIF.

                  ELSE.

                    IF NOT itab_zycit003-qtd_itend IS INITIAL.

                     itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *

                                  itab_zycit003-qtd_itend / v_tot ) *

                                  itab_despesa-netpr.

                    ELSE.

                     itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *

                                 itab_zycit003-qtd_iten / v_tot ) *

                                 itab_despesa-netpr.

                    ENDIF.

                    itab_zycit036_aux-waers_real = itab_despesa-waers.

                  ENDIF.

                ENDIF.

                IF NOT itab_despesa-waers IS INITIAL.

                  itab_zycit036_aux-waers_real = itab_despesa-waers.

                ELSE.

                  itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

                ENDIF.

              ENDIF.

            ENDIF.

         else.

* << Fim da inclusão

            IF v_linha = v_index.

              IF NOT itab_despesa-waers IS INITIAL.

                itab_zycit036_aux-waers_real = itab_despesa-waers.

              ELSE.

                itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

              ENDIF.

              IF ( /pws/zycit019-codigo EQ 'II'     OR

                   /pws/zycit019-codigo EQ 'IPI'    OR

                   /pws/zycit019-codigo EQ 'ICMS'   OR

                   /pws/zycit019-codigo EQ 'COFINS' OR

...

 

...

                    land1 EQ t001-land1.

                  IF sy-subrc NE 0.

                    SELECT SINGLE * FROM /pws/zycit020 WHERE

                      regio = space AND

                      codigo = /pws/zycit019-codigo AND

                      baseicms EQ 'X'  AND

                      land1 EQ t001-land1.

                  ENDIF.

                  IF /pws/zycit020-baseicms EQ 'X'.

                    IF /pws/zycit062-bs_rat_icms EQ 'CIF' .

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

                      DATA: v_vfre LIKE /pws/zycie085-vlfre,

                            v_tfre LIKE /pws/zycie085-vlfre,

                            v_vseg LIKE /pws/zycie085-vlseg,

                            v_vfob LIKE /pws/zycie085-vlfob,

                            v_vtot LIKE /pws/zycie085-vlfob.

* << Fim da exclusão

                      READ TABLE itab_zycit100a WITH KEY

                                ebeln = itab_zycit003-ebeln

                                ebelp = itab_zycit003-ebelp.

                      IF sy-subrc EQ 0.

                    PERFORM taxa_converte USING  /pws/zycie085-waersfob

                                                    /pws/zycie085-dttax

                                                             t001-land1

                                                       CHANGING  v_taxa.

                        IF NOT v_taxa IS INITIAL.

                          v_vfre = itab_zycit100a-vlfre / v_taxa.

...

 

...

                                 itab_zycit003-qtd_iten / v_tot ) *

                                 itab_despesa-netpr.

                    ENDIF.

                    itab_zycit036_aux-waers_real = itab_despesa-waers.

                  ENDIF.

                ENDIF.

                IF NOT itab_despesa-waers IS INITIAL.

                  itab_zycit036_aux-waers_real = itab_despesa-waers.

                ELSE.

                  itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.

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

                ENDIF.

* << Fim da inclusão

                ENDIF.

              ENDIF.

            ENDIF.

            APPEND itab_zycit036_aux.

            v_tot_desp = v_tot_desp + itab_zycit036_aux-vlreal.

          ENDIF.

        ENDIF.

      ENDLOOP.

 

...

 

 

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

Modificações efetuadas em REPS /PWS/LZYCIGF2TOP

 

...

 

* >> Início da inclusão:

 tables       /pws/zycie442.

* << Fim da inclusão

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI006F01

 

...

  IF NOT /pws/zycie008-dtincl IS INITIAL AND NOT /pws/zycie008-vlmi IS

 INITIAL.

    IF NOT it_despesa[] IS INITIAL.

      SELECT * FROM /pws/zycit016

             INTO TABLE it_zycit016

             FOR ALL ENTRIES IN it_despesa

             WHERE tpdesp = it_despesa-tpdesp

               AND nradto = /pws/zycie008-nradto.

    ENDIF.

  ENDIF.

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

  select single * from /pws/zycit001 where nrseq = /pws/zycie008-nrseq.

* << Fim da inclusão

  SELECT *  FROM /pws/zycit100 INTO TABLE itab_zycit100

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

       WHERE nrseq = /pws/zycie008-nrseq.

   if /pws/zycit001-regime = '04'.

      SELECT *  FROM /pws/zycit443 INTO TABLE itab_zycit443

* << Fim da inclusão

       WHERE nrseq = /pws/zycie008-nrseq.

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

   endif.

* << Fim da inclusão

ENDFORM.

...

 

...

  DATA: v_vlicms    LIKE /pws/zycit016-vldp,

        v_vlipi     LIKE /pws/zycit016-vldp,

        v_vlii      LIKE /pws/zycit016-vldp,

        v_vlpis     LIKE /pws/zycit016-vldp,

        v_vlcofins  LIKE /pws/zycit016-vldp,

        v_line      TYPE i                 .

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

  if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

    loop at itab_zycit443.

      if not '35' ca itab_zycit443-codregtriicms.

          v_dpicms    = v_dpicms   + itab_zycit443-vlicms  .

      endif.

      IF itab_zycit443-codregtriipi NE '1' AND

         itab_zycit443-codregtriipi NE '5'.

        v_dpipi     = v_dpipi     + itab_zycit443-vlipi   .

      ENDIF.

      IF itab_zycit443-codregtri NE '3' AND

         itab_zycit443-codregtri NE '5'.

        v_dpii      = v_dpii     + itab_zycit443-vlii    .

      ENDIF.

      IF ( itab_zycit443-codregtripiscofi  NE '3' AND

           itab_zycit443-codregtripiscofi NE '5' ) .

        v_dppis     = v_dppis    + itab_zycit443-vlpis   .

        v_dpcofins  = v_dpcofins + itab_zycit443-vlcofins.

      ENDIF.

    endloop.

  else.

* << Fim da inclusão

  LOOP AT itab_zycit100.

    if not '35' ca itab_zycit100-codregtriicms.

        v_dpicms    = v_dpicms   + itab_zycit100-vlicms  .

    endif.

    IF itab_zycit100-codregtriipi NE '1' AND

       itab_zycit100-codregtriipi NE '5'.

      v_dpipi     = v_dpipi     + itab_zycit100-vlipi   .

    ENDIF.

    IF itab_zycit100-codregtri NE '3' AND

       itab_zycit100-codregtri NE '5'.

      v_dpii      = v_dpii     + itab_zycit100-vlii    .

    ENDIF.

    IF ( itab_zycit100-codregtripiscofi  NE '3' AND

         itab_zycit100-codregtripiscofi NE '5' ) .

      v_dppis     = v_dppis    + itab_zycit100-vlpis   .

      v_dpcofins  = v_dpcofins + itab_zycit100-vlcofins.

    ENDIF.

  ENDLOOP.

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

  endif.

* << Fim da inclusão

 v_vlicms   =  v_dpicms   .

 v_vlipi    =  v_dpipi    .

 v_vlii     =  v_dpii     .

 v_vlpis    =  v_dppis    .

 v_vlcofins =  v_dpcofins .

  CHECK sy-subrc EQ 0.

  SELECT SINGLE *

    FROM t001

    INTO t001

    WHERE bukrs EQ /pws/zycie008-bukrs.

...

 

...

    ENDIF.

  ENDIF.

  LOOP AT it_zycit016_aux.

    IF it_zycit016_aux-tpdesp EQ '001'.

      MOVE v_vlipi  TO it_zycit016_aux-vldp.

    ELSEIF it_zycit016_aux-tpdesp EQ '002'.

      MOVE v_vlicms TO it_zycit016_aux-vldp.

    ELSEIF it_zycit016_aux-tpdesp EQ '003'.

      MOVE v_vlii   TO it_zycit016_aux-vldp.

    ELSEIF it_zycit016_aux-tpdesp EQ /pws/zycit000-cod_sisc.

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

     if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

      SORT itab_zycit443 BY adicao.

      MOVE itab_zycit443[] TO itab_zycit443_aux[].

      DELETE ADJACENT DUPLICATES FROM itab_zycit443_aux

             COMPARING adicao.

      DESCRIBE TABLE itab_zycit443_aux LINES v_line.

     else.

* << Fim da inclusão

      SORT itab_zycit100 BY adicao.

      MOVE itab_zycit100[] TO itab_zycit100_aux[].

      DELETE ADJACENT DUPLICATES FROM itab_zycit100_aux

             COMPARING adicao.

      DESCRIBE TABLE itab_zycit100_aux LINES v_line.

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

      endif.

* << Fim da inclusão

      v_adics = v_line.

      s_wsisco = /pws/zycit000-txsis_fix.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI006TOP

 

...

 

* >> Início da inclusão:

DATA BEGIN OF itab_zycit443 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit443.

DATA END OF itab_zycit443.

DATA BEGIN OF itab_zycit443_aux OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit443.

DATA END OF itab_zycit443_aux.

* << Fim da inclusão

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI007F01

 

...

 

  LOOP AT it_zycit027_aux

       WHERE ( tpdesp = '001' OR tpdesp = '002' OR

               tpdesp = '003' OR tpdesp = /pws/zycit000-cod_sisc

               OR tpdesp = /pws/zycit000-cod_pis

               OR tpdesp = /pws/zycit000-cod_cofins ) AND vldp > 0.

  ENDLOOP.

  IF sy-subrc = 0.

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

    if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

    SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443

           WHERE nrseq = /pws/zycie026-nrseq.

    IF sy-subrc NE 0.

      MESSAGE e015 WITH text-083 text-084.

    else.

      CLEAR: v_tot_ii, v_tot_ipi, v_tot_icms, v_tot_pis, v_tot_cofins.

      LOOP AT itab_zycit443.

        v_tot_ii   = itab_zycit443-vlii + v_tot_ii.

        v_tot_ipi  = itab_zycit443-vlipi + v_tot_ipi.

        v_tot_icms = itab_zycit443-vlicms + v_tot_icms.

        v_tot_pis   = itab_zycit443-vlpis + v_tot_pis.

        v_tot_cofins = itab_zycit443-vlcofins + v_tot_cofins.

      ENDLOOP.

      IF NOT itab_zycit443[] IS INITIAL.

        SELECT * FROM /pws/zycit451 INTO TABLE itab_zycit451

               FOR ALL ENTRIES IN itab_zycit443

               WHERE nrseqda = itab_zycit443-nrseqda.

      ENDIF.

      LOOP AT itab_zycit451.

        LOOP AT itab_zycit443 WHERE adicao = itab_zycit451-adicao.

          itab_zycit451-nr_itens = itab_zycit451-nr_itens + 1.

        ENDLOOP.

        MODIFY itab_zycit451.

      ENDLOOP.

      READ TABLE it_zycit027_aux

                               WITH KEY tpdesp = /pws/zycit000-cod_sisc.

      IF sy-subrc = 0 AND it_zycit027_aux-vldp > 0.

        DESCRIBE TABLE itab_zycit451 LINES v_line.

        v_sisco1 = ( it_zycit027_aux-vldp -

                                     /pws/zycit000-txsis_fix ) / v_line.

        v_sisco2 = /pws/zycit000-txsis_fix / v_line.

        v_sisco3 = v_sisco1 + v_sisco2.

        LOOP AT itab_zycit451.

          CLEAR: v_lines, v_sisco_tot.

          v_sisco_item = v_sisco3 / itab_zycit116-nr_itens.

          LOOP AT itab_zycit443 WHERE adicao = itab_zycit451-adicao.

            v_lines = v_lines + 1.

            IF v_lines = itab_zycit451-nr_itens.

              itab_zycit443-vl_sisco = v_sisco3 - v_sisco_tot.

            ELSE.

              itab_zycit443-vl_sisco = v_sisco_item.

              v_sisco_tot = v_sisco_tot + v_sisco_item.

            ENDIF.

            MODIFY itab_zycit443.

          ENDLOOP.

        ENDLOOP.

      ENDIF.

      endif.

    else.

* << Fim da inclusão

    SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100

           WHERE nrseq = /pws/zycie026-nrseq.

    IF sy-subrc NE 0.

      MESSAGE e015 WITH text-083 text-084.

    ELSE.

      CLEAR: v_tot_ii, v_tot_ipi, v_tot_icms, v_tot_pis, v_tot_cofins.

      LOOP AT itab_zycit100.

        v_tot_ii   = itab_zycit100-vlii + v_tot_ii.

        v_tot_ipi  = itab_zycit100-vlipi + v_tot_ipi.

        v_tot_icms = itab_zycit100-vlicms + v_tot_icms.

...

 

...

 

          ENDLOOP.

        ENDLOOP.

      ENDIF.

    ENDIF.

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

    endif.

* << Fim da inclusão

  ENDIF.

  CLEAR: v_tot_ntgew, v_tot_real.

  LOOP AT it_zycit003 WHERE nrseq = /pws/zycie026-nrseq.

    v_tot = v_tot + ( it_zycit003-netpr * it_zycit003-qtd_iten ).

    v_tot_ntgew = v_tot_ntgew + it_zycit003-ntgew.

    v_tot_real = v_tot_real +

           ( it_zycit003-vlreal * it_zycit003-qtd_iten ).

  ENDLOOP.

  LOOP AT it_zycit003 WHERE nrseq = /pws/zycie026-nrseq.

    READ TABLE it_ekpo WITH KEY ebeln = it_zycit003-ebeln

...

 

...

        it_lanca-matuse = it_item-matuse.

        it_lanca-vlitem = it_item-vlitem.

        it_lanca-bklas  = it_item-bklas .

        it_lanca-knttp  = it_item-knttp .

        it_lanca-ebeln  = it_item-ebeln .

        it_lanca-ebelp  = it_item-ebelp .

        IF it_item-matuse EQ '3'.

          it_lanca-ps_psp_pnr = it_item-ps_psp_pnr.

          it_lanca-aufnr      = it_item-aufnr     .

        ENDIF.

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

        CLEAR: itab_zycit100,  itab_zycit443.

* << Fim da inclusão

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

        CLEAR itab_zycit100.

* << Fim da exclusão

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

        if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

        READ TABLE itab_zycit443 WITH KEY nrseq = it_item-nrseq

                                          ebeln = it_item-ebeln

                                          ebelp = it_item-ebelp.

        else.

* << Fim da inclusão

        READ TABLE itab_zycit100 WITH KEY nrseq = it_item-nrseq

                                          ebeln = it_item-ebeln

                                          ebelp = it_item-ebelp.

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

        endif.

* << Fim da inclusão

        it_lanca-tpdesp = it_zycit027_aux-tpdesp.

        IF it_zycit027_aux-tpdesp = '001'.

          IF v_index = v_lines.

            it_lanca-lancamento = it_zycit027_aux-vldp - v_total.

            CLEAR v_total.

          ELSE.

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

        if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

            vl_imp = itab_zycit443-vlipi / v_tot_ipi.

            it_lanca-porcent = vl_imp.

            it_lanca-lancamento = ( it_zycit027_aux-vldp *

                                      itab_zycit443-vlipi / v_tot_ipi ).

        else.

* << Fim da inclusão

            vl_imp = itab_zycit100-vlipi / v_tot_ipi.

            it_lanca-porcent = vl_imp.

            it_lanca-lancamento = ( it_zycit027_aux-vldp *

                                      itab_zycit100-vlipi / v_tot_ipi ).

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

        endif.

* << Fim da inclusão

            v_total = v_total + it_lanca-lancamento.

          ENDIF.

        ELSEIF it_zycit027_aux-tpdesp = '002'.

          IF v_index = v_lines.

            it_lanca-lancamento = it_zycit027_aux-vldp - v_total.

            CLEAR v_total.

          ELSE.

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

        if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

            vl_imp = itab_zycit443-vlicms / v_tot_icms.

            it_lanca-porcent = vl_imp.

            it_lanca-lancamento = ( it_zycit027_aux-vldp *

                                    itab_zycit443-vlicms / v_tot_icms ).

        else.

* << Fim da inclusão

            vl_imp = itab_zycit100-vlicms / v_tot_icms.

            it_lanca-porcent = vl_imp.

            it_lanca-lancamento = ( it_zycit027_aux-vldp *

                                    itab_zycit100-vlicms / v_tot_icms ).

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

       endif.

* << Fim da inclusão

            v_total = v_total + it_lanca-lancamento.

          ENDIF.

        ELSEIF it_zycit027_aux-tpdesp = '003'.

          IF v_index = v_lines.

            it_lanca-lancamento = it_zycit027_aux-vldp - v_total.

            CLEAR v_total.

          ELSE.

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

        if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

            vl_imp = itab_zycit443-vlii / v_tot_ii.

            it_lanca-porcent = vl_imp.

            it_lanca-lancamento = ( it_zycit027_aux-vldp *

                                        itab_zycit443-vlii / v_tot_ii ).

        else.

* << Fim da inclusão

            vl_imp = itab_zycit100-vlii / v_tot_ii.

            it_lanca-porcent = vl_imp.

            it_lanca-lancamento = ( it_zycit027_aux-vldp *

                                        itab_zycit100-vlii / v_tot_ii ).

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

          endif.

* << Fim da inclusão

            v_total = v_total + it_lanca-lancamento.

          ENDIF.

        ELSEIF it_zycit027_aux-tpdesp = /pws/zycit000-cod_sisc AND

               NOT /pws/zycit000-flag_txsisc IS INITIAL.

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

        if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

          it_lanca-lancamento = itab_zycit443-vl_sisco.

          IF v_sisco_tot NE 0.

            it_lanca-porcent = itab_zycit443-vl_sisco / v_sisco_tot.

          ELSE.

            it_lanca-porcent =

                          itab_zycit443-vl_sisco / it_zycit027_aux-vldp.

          ENDIF.

        else.

* << Fim da inclusão

          it_lanca-lancamento = itab_zycit100-vl_sisco.

          IF v_sisco_tot NE 0.

            it_lanca-porcent = itab_zycit100-vl_sisco / v_sisco_tot.

          ELSE.

            it_lanca-porcent =

                          itab_zycit100-vl_sisco / it_zycit027_aux-vldp.

          ENDIF.

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

        endif.

* << Fim da inclusão

        ELSEIF it_zycit027_aux-tpdesp = /pws/zycit000-cod_pis.

          IF v_index = v_lines.

            it_lanca-lancamento = it_zycit027_aux-vldp - v_total.

            CLEAR v_total.

          ELSE.

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

        if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

            vl_imp = itab_zycit443-vlpis / v_tot_pis.

            it_lanca-porcent = vl_imp.

            it_lanca-lancamento = ( it_zycit027_aux-vldp *

                                    itab_zycit443-vlpis / v_tot_pis ).

        else.

* << Fim da inclusão

            vl_imp = itab_zycit100-vlpis / v_tot_pis.

            it_lanca-porcent = vl_imp.

            it_lanca-lancamento = ( it_zycit027_aux-vldp *

                                    itab_zycit100-vlpis / v_tot_pis ).

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

        endif.

* << Fim da inclusão

            v_total = v_total + it_lanca-lancamento.

          ENDIF.

        ELSEIF it_zycit027_aux-tpdesp = /pws/zycit000-cod_cofins.

          IF v_index = v_lines.

            it_lanca-lancamento = it_zycit027_aux-vldp - v_total.

            CLEAR v_total.

          ELSE.

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

        if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

            vl_imp = itab_zycit443-vlcofins / v_tot_cofins.

            it_lanca-porcent = vl_imp.

            it_lanca-lancamento = ( it_zycit027_aux-vldp *

                               itab_zycit443-vlcofins / v_tot_cofins ).

        else.

* << Fim da inclusão

            vl_imp = itab_zycit100-vlcofins / v_tot_cofins.

            it_lanca-porcent = vl_imp.

            it_lanca-lancamento = ( it_zycit027_aux-vldp *

                               itab_zycit100-vlcofins / v_tot_cofins ).

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

        endif.

* << Fim da inclusão

            v_total = v_total + it_lanca-lancamento.

          ENDIF.

        ELSE.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI007F02

 

...

  SELECT SINGLE codigo FROM /pws/zycit019 INTO v_cod_sisc

         WHERE tpdesp = /pws/zycit000-cod_sisc AND

               land1 EQ t001-land1.

  LOOP AT itab_despesa_custo.

    IF ( itab_despesa_custo-codigo = v_cod_sisc    AND

          NOT /pws/zycit000-flag_txsisc IS INITIAL AND

          /pws/zycit001-tpdecl = 'DI' )             OR

       itab_despesa_custo-codigo = 'II'             OR

       itab_despesa_custo-codigo = 'IPI'            OR

       itab_despesa_custo-codigo = 'ICMS'.

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

      IF /pws/zycit001-regime = '04'.

        SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443

               WHERE nrseq = /pws/zycie026-nrseq.

        IF NOT itab_zycit443[] IS INITIAL.

          SELECT * FROM /pws/zycit451 INTO TABLE itab_zycit451

                 FOR ALL ENTRIES IN itab_zycit443

                 WHERE nrseqda = itab_zycit443-nrseqda.

        ENDIF.

        CLEAR: v_tot_ii, v_tot_ipi, v_tot_icms.

        LOOP AT itab_zycit443.

          v_tot_ii   = itab_zycit443-vlii + v_tot_ii.

          v_tot_ipi  = itab_zycit443-vlipi + v_tot_ipi.

          v_tot_icms = itab_zycit443-vlicms + v_tot_icms.

        ENDLOOP.

      ELSE.

* << Fim da inclusão

      SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100

             WHERE nrseq = /pws/zycie026-nrseq.

      IF NOT itab_zycit100[] IS INITIAL.

        SELECT * FROM /pws/zycit116 INTO TABLE itab_zycit116

               FOR ALL ENTRIES IN itab_zycit100

               WHERE nrseqdi = itab_zycit100-nrseqdi.

      ENDIF.

      CLEAR: v_tot_ii, v_tot_ipi, v_tot_icms.

      LOOP AT itab_zycit100.

        v_tot_ii   = itab_zycit100-vlii + v_tot_ii.

        v_tot_ipi  = itab_zycit100-vlipi + v_tot_ipi.

        v_tot_icms = itab_zycit100-vlicms + v_tot_icms.

      ENDLOOP.

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

      ENDIF.

* << Fim da inclusão

      IF itab_despesa_custo-codigo = v_cod_sisc.

        PERFORM rateio_sisco.

      ELSEIF itab_despesa_custo-codigo = 'IPI'.

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

  IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.

* << Fim da inclusão

        PERFORM rateio_imposto USING v_tot_ipi

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

                                    itab_zycit443-vlipi.

  else.

        PERFORM rateio_imposto USING v_tot_ipi

* << Fim da inclusão

                                    itab_zycit100-vlipi.

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

        endif.

* << Fim da inclusão

      ELSEIF itab_despesa_custo-codigo = 'ICMS'.

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

  IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.

        PERFORM rateio_imposto USING v_tot_icms

                                     itab_zycit443-vlicms.

  else.

* << Fim da inclusão

        PERFORM rateio_imposto USING v_tot_icms

                                     itab_zycit100-vlicms.

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

endif.

* << Fim da inclusão

      ELSEIF itab_despesa_custo-codigo = 'II'.

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

  IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.

          PERFORM rateio_imposto USING v_tot_ii

                                     itab_zycit443-vlii.

  else.

* << Fim da inclusão

        PERFORM rateio_imposto USING v_tot_ii

                                     itab_zycit100-vlii.

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

  endif.

* << Fim da inclusão

      ENDIF.

    ELSE.

      DESCRIBE TABLE it_zycit003 LINES v_lines.

      CLEAR itab_zycit039.

      READ TABLE itab_zycit039 WITH KEY

...

 

...

  DATA: v_tot LIKE /pws/zycie003-netpr.

  CLEAR: v_tot_ntgew, v_tot_real.

  LOOP AT it_zycit003.

    v_tot = v_tot + ( it_zycit003-netpr * it_zycit003-qtd_iten ).

    v_tot_ntgew = v_tot_ntgew + it_zycit003-ntgew.

    v_tot_real = v_tot_real +

       ( it_zycit003-vlreal * it_zycit003-qtd_iten ).

  ENDLOOP.

  DESCRIBE TABLE it_zycit003 LINES v_line.

  LOOP AT itab_despesa_custo.

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

    IF ( itab_despesa_custo-codigo = v_cod_sisc

* << Fim da exclusão

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

    IF ( ( itab_despesa_custo-codigo = v_cod_sisc

* << Fim da inclusão

       AND NOT /pws/zycit000-flag_txsisc IS INITIAL ) OR

         itab_despesa_custo-codigo EQ 'IPI'      OR

         itab_despesa_custo-codigo EQ 'ICMS'     OR

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

         itab_despesa_custo-codigo EQ 'II'.

* << Fim da exclusão

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

         itab_despesa_custo-codigo EQ 'II' ) and

         /pws/zycit001-regime ne '04'.

* << Fim da inclusão

      SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100

        WHERE nrseq = /pws/zycie026-nrseq.

      IF NOT itab_zycit100[] IS INITIAL.

        SELECT * FROM /pws/zycit116 INTO TABLE itab_zycit116

          FOR ALL ENTRIES IN itab_zycit100

          WHERE nrseqdi = itab_zycit100-nrseqdi.

      ENDIF.

      CLEAR: v_tot_ii,

             v_tot_ipi,

             v_tot_icms.

...

 

...

                     ebeln  = itab_zycit036-ebeln  AND

                     ebelp  = itab_zycit036-ebelp  AND

                     codigo = itab_zycit036-codigo AND

                     origem = itab_zycit036-origem.

            ELSE.

              MODIFY /pws/zycit036 FROM itab_zycit036.

            ENDIF.

          ENDIF.

        ENDLOOP.

      ENDIF.

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

    ELSE.

* << Fim da exclusão

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

    ELSEif /pws/zycit001-regime ne '04'.

* << Fim da inclusão

      READ TABLE itab_zycit039 WITH KEY

           codigo = itab_despesa_custo-codigo.

      CLEAR v_vldp_est.

      LOOP AT it_zycit003.

        v_tabix = sy-tabix.

        READ TABLE itab_zycit036 WITH KEY

             nrseq  = it_zycit003-nrseq

             ebeln  = it_zycit003-ebeln

             ebelp  = it_zycit003-ebelp

             codigo = itab_despesa_custo-codigo.

...

 

...

          ELSEIF itab_zycit039-proporplan EQ 'X'.

            v_vlrc = it_zycit003-netpr * it_zycit003-qtd_iten

                    / v_tot          * itab_despesa_custo-vldp.

          ELSE.

            v_vlrc = it_zycit003-vlreal * it_zycit003-qtd_iten

                    / v_tot_real       * itab_despesa_custo-vldp.

          ENDIF.

          v_vldp_est = v_vldp_est + v_vlrc.

        ENDIF.

        /pws/zycie036-vlreal = /pws/zycie036-vlreal - v_vlrc.

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

        SELECT SINGLE congelamov FROM /pws/zycit036 INTO v_congelamov

            WHERE nrseq  = /pws/zycie036-nrseq  AND

                  ebeln  = /pws/zycie036-ebeln  AND

                  ebelp  = /pws/zycie036-ebelp  AND

                  congelamov = 'X'.

        IF /pws/zycie036-vlreal IS INITIAL AND v_congelamov NE 'X'.

          DELETE FROM /pws/zycit036 WHERE

                 nrseq  = /pws/zycie036-nrseq  AND

                 ebeln  = /pws/zycie036-ebeln  AND

                 ebelp  = /pws/zycie036-ebelp  AND

                 codigo = /pws/zycie036-codigo AND

                 origem = /pws/zycie036-origem.

        ELSE.

          MODIFY /pws/zycit036 FROM /pws/zycie036.

        ENDIF.

      ENDLOOP.

    else.

      READ TABLE itab_zycit039 WITH KEY

           codigo = itab_despesa_custo-codigo.

      CLEAR v_vldp_est.

      LOOP AT it_zycit003.

        v_tabix = sy-tabix.

        READ TABLE itab_zycit036 WITH KEY

             nrseq  = it_zycit003-nrseq

             ebeln  = it_zycit003-ebeln

             ebelp  = it_zycit003-ebelp

             codigo = itab_despesa_custo-codigo.

        MOVE itab_zycit036 TO /pws/zycie036.

        clear /pws/zycie036-vlreal .

* << Fim da inclusão

        SELECT SINGLE congelamov FROM /pws/zycit036 INTO v_congelamov

            WHERE nrseq  = /pws/zycie036-nrseq  AND

                  ebeln  = /pws/zycie036-ebeln  AND

                  ebelp  = /pws/zycie036-ebelp  AND

                  congelamov = 'X'.

        IF /pws/zycie036-vlreal IS INITIAL AND v_congelamov NE 'X'.

          DELETE FROM /pws/zycit036 WHERE

                 nrseq  = /pws/zycie036-nrseq  AND

                 ebeln  = /pws/zycie036-ebeln  AND

                 ebelp  = /pws/zycie036-ebelp  AND

...

 

...

 

 

  CLEAR v_tot_vldp.

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

  IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.

  DESCRIBE TABLE itab_zycit443 LINES v_idx_imp.

  LOOP AT itab_zycit443.

    v_idx_imp2 = v_idx_imp2 + 1.

    READ TABLE itab_zycit036 WITH KEY nrseq  = itab_zycit443-nrseq

                                      ebeln  = itab_zycit443-ebeln

                                      ebelp  = itab_zycit443-ebelp

                                 codigo = itab_despesa_custo-codigo

                                   origem = 'PC'.

    v_idx_aux = sy-index.

    IF sy-subrc NE 0.

      /pws/zycie036-nrseq      = itab_zycit443-nrseq.

      /pws/zycie036-ebeln      = itab_zycit443-ebeln.

      /pws/zycie036-ebelp      = itab_zycit443-ebelp.

      /pws/zycie036-codigo     = itab_despesa_custo-codigo.

      /pws/zycie036-waers_real = /pws/zycbt007-waersb.

      /pws/zycie036-bukrs      = /pws/zycie026-bukrs.

      /pws/zycie036-werks      = /pws/zycie026-werks.

      /pws/zycie036-embarca    = /pws/zycie026-embarca.

      /pws/zycie036-origem     = 'PC'.

      /pws/zycie036-codmod     = 'D'.

      /pws/zycie036-status     = 'M'.

      /pws/zycie036-vlreal_emb = itab_despesa_custo-vldp.

      /pws/zycie036-waers_emb  = /pws/zycbt007-waersb.

      /pws/zycie036-vlreal = itab_despesa_custo-vldp *

                        ( v_unit / v_tot ).

      v_tot_imp = v_tot_imp + /pws/zycie036-vlreal.

      IF v_idx_imp2 EQ v_idx_imp.

        v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.

        IF v_dif_imp NE 0.

          /pws/zycie036-vlreal = /pws/zycie036-vlreal - v_dif_imp.

        ENDIF.

      ENDIF.

      CLEAR: /pws/zycie036-vlmov.

      MODIFY /pws/zycit036 FROM /pws/zycie036.

    ELSE.

      itab_zycit036-vlreal_emb = itab_zycit036-vlreal_emb +

        itab_despesa_custo-vldp.

      itab_zycit036-vlreal = itab_zycit036-vlreal +

        ( itab_despesa_custo-vldp * ( v_unit / v_tot ) ).

      v_tot_imp = v_tot_imp + /pws/zycie036-vlreal.

      IF v_idx_imp2 EQ v_idx_imp.

        v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.

        IF v_dif_imp NE 0.

          /pws/zycie036-vlreal = /pws/zycie036-vlreal - v_dif_imp.

        ENDIF.

      ENDIF.

      MODIFY itab_zycit036 INDEX v_idx_aux.

      MODIFY /pws/zycit036 FROM itab_zycit036.

    ENDIF.

  ENDLOOP.

  else.

* << Fim da inclusão

  DESCRIBE TABLE itab_zycit100 LINES v_idx_imp.

  LOOP AT itab_zycit100.

    v_idx_imp2 = v_idx_imp2 + 1.

    READ TABLE itab_zycit036 WITH KEY nrseq  = itab_zycit100-nrseq

                                      ebeln  = itab_zycit100-ebeln

                                      ebelp  = itab_zycit100-ebelp

                                 codigo = itab_despesa_custo-codigo

                                   origem = 'PC'.

    v_idx_aux = sy-index.

    IF sy-subrc NE 0.

...

 

...

      IF v_idx_imp2 EQ v_idx_imp.

        v_dif_imp = v_tot_imp - itab_despesa_custo-vldp.

        IF v_dif_imp NE 0.

          /pws/zycie036-vlreal = /pws/zycie036-vlreal - v_dif_imp.

        ENDIF.

      ENDIF.

      MODIFY itab_zycit036 INDEX v_idx_aux.

      MODIFY /pws/zycit036 FROM itab_zycit036.

    ENDIF.

  ENDLOOP.

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

  endif.

* << Fim da inclusão

ENDFORM.

FORM rateio_sisco.

  DATA: v_idx2 LIKE sy-tabix.

  CLEAR: v_sisco_acum,

         v_sisco_dif .

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

  IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.

    LOOP AT itab_zycit451.

      LOOP AT itab_zycit443 WHERE adicao = itab_zycit451-adicao.

        itab_zycit451-nr_itens = itab_zycit451-nr_itens + 1.

      ENDLOOP.

      MODIFY itab_zycit451.

    ENDLOOP.

    DESCRIBE TABLE itab_zycit451 LINES v_lines.

    v_sisco1 = ( itab_despesa_custo-vldp -

                 /pws/zycit000-txsis_fix ) / v_lines.

    v_sisco2 =   /pws/zycit000-txsis_fix / v_lines.

    v_sisco3 = v_sisco1 + v_sisco2.

    LOOP AT itab_zycit451.

      CLEAR: v_lines, v_sisco_tot.

      v_sisco_item = v_sisco3 / itab_zycit116-nr_itens.

      LOOP AT itab_zycit443 WHERE adicao = itab_zycit451-adicao.

        v_lines = v_lines + 1.

        IF v_lines = itab_zycit451-nr_itens.

          itab_zycit443-vl_sisco = v_sisco3 - v_sisco_tot.

        ELSE.

          itab_zycit443-vl_sisco = v_sisco_item.

          v_sisco_tot = v_sisco_tot + v_sisco_item.

        ENDIF.

        v_sisco_acum = v_sisco_acum + itab_zycit443-vl_sisco.

        MODIFY itab_zycit443.

      ENDLOOP.

    ENDLOOP.

    DESCRIBE TABLE itab_zycit443 LINES v_idx2.

    READ TABLE itab_zycit443 INDEX v_idx2.

    v_sisco_dif = v_sisco_acum - itab_despesa_custo-vldp.

    IF v_sisco_dif NE 0.

      itab_zycit443-vl_sisco = itab_zycit443-vl_sisco - v_sisco_dif.

      MODIFY itab_zycit443 INDEX v_idx2 TRANSPORTING vl_sisco.

    ENDIF.

    LOOP AT itab_zycit443.

      READ TABLE itab_zycit036 WITH KEY nrseq  = itab_zycit443-nrseq

                                        ebeln  = itab_zycit443-ebeln

                                        ebelp  = itab_zycit443-ebelp

                                   codigo = itab_despesa_custo-codigo

                                     origem = 'PC'.

      IF sy-subrc NE 0.

        /pws/zycie036-nrseq      = itab_zycit443-nrseq.

        /pws/zycie036-ebeln      = itab_zycit443-ebeln.

        /pws/zycie036-ebelp      = itab_zycit443-ebelp.

        /pws/zycie036-codigo     = itab_despesa_custo-codigo.

        /pws/zycie036-waers_real = /pws/zycbt007-waersb.

        /pws/zycie036-bukrs      = /pws/zycie026-bukrs.

        /pws/zycie036-werks      = /pws/zycie026-werks.

        /pws/zycie036-embarca    = /pws/zycie026-embarca.

        /pws/zycie036-origem     = 'PC'.

        /pws/zycie036-codmod     = 'D'.

        /pws/zycie036-status     = 'M'.

        /pws/zycie036-vlreal_emb = itab_despesa_custo-vldp.

        /pws/zycie036-waers_emb  = /pws/zycbt007-waersb.

        /pws/zycie036-vlreal     = itab_zycit443-vl_sisco.

        CLEAR: /pws/zycie036-vlmov.

        MODIFY /pws/zycit036 FROM /pws/zycie036.

      ELSE.

        itab_zycit036-vlreal_emb = itab_zycit036-vlreal_emb +

          itab_zycit443-vl_sisco.

        itab_zycit036-vlreal = itab_zycit036-vlreal +

          itab_zycit443-vl_sisco.

        MODIFY /pws/zycit036 FROM itab_zycit036.

      ENDIF.

    ENDLOOP.

  ELSE.

* << Fim da inclusão

  LOOP AT itab_zycit116.

    LOOP AT itab_zycit100 WHERE adicao = itab_zycit116-adicao.

      itab_zycit116-nr_itens = itab_zycit116-nr_itens + 1.

    ENDLOOP.

    MODIFY itab_zycit116.

  ENDLOOP.

  DESCRIBE TABLE itab_zycit116 LINES v_lines.

  v_sisco1 = ( itab_despesa_custo-vldp -

               /pws/zycit000-txsis_fix ) / v_lines.

  v_sisco2 =   /pws/zycit000-txsis_fix / v_lines.

...

 

...

      CLEAR: /pws/zycie036-vlmov.

      MODIFY /pws/zycit036 FROM /pws/zycie036.

    ELSE.

      itab_zycit036-vlreal_emb = itab_zycit036-vlreal_emb +

        itab_zycit100-vl_sisco.

      itab_zycit036-vlreal = itab_zycit036-vlreal +

        itab_zycit100-vl_sisco.

      MODIFY /pws/zycit036 FROM itab_zycit036.

    ENDIF.

  ENDLOOP.

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

  ENDIF.

* << Fim da inclusão

ENDFORM.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI007TOP

 

...

 

* >> Início da inclusão:

DATA: BEGIN OF itab_zycit443 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit443.

DATA vl_sisco LIKE /pws/zycit049-vldp.

DATA: END OF itab_zycit443.

DATA: BEGIN OF itab_zycit451 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit451.

DATA nr_itens TYPE i.

DATA: END OF itab_zycit451.

* << Fim da inclusão

 

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI013F01

 

...

        IF sy-subrc EQ 0 AND NOT /pws/zyglt217-msgtp IS INITIAL.

          MESSAGE ID '/PWS/ZYCIM' TYPE /pws/zyglt217-msgtp NUMBER '133'.

        ENDIF.

      ENDIF.

    ELSE.

      SELECT SINGLE *

             FROM  /pws/zycit443

             WHERE nrseq EQ /pws/zycie008-nrseq.

      IF NOT sy-subrc IS INITIAL.

        MESSAGE w013 WITH text-110.

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

      ELSE.

        SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443

             WHERE nrseq EQ /pws/zycie008-nrseq.

      ENDIF.

    ENDIF.

    CLEAR: v_tot_ii, v_tot_ipi, v_tot_icms, v_tot_pis, v_tot_cofins.

    IF /pws/zycit001-regime EQ '04'.

      LOOP AT itab_zycit443.

        IF ( itab_zycit100-codregtri  NE '3' AND

             itab_zycit100-codregtri NE '5' ) .

          v_tot_ii     = itab_zycit443-vlii     + v_tot_ii    .

        ENDIF.

        IF ( itab_zycit100-codregtriicms  NE '3' AND

             itab_zycit100-codregtriicms NE '5' ) .

          v_tot_icms   = itab_zycit443-vlicms   + v_tot_icms  .

* << Fim da inclusão

      ENDIF.

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

        IF ( itab_zycit100-codregtriipi  NE '1' AND

             itab_zycit100-codregtriipi NE '5' ) .

          v_tot_ipi    = itab_zycit100-vlipi    + v_tot_ipi   .

* << Fim da inclusão

    ENDIF.

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

        IF ( itab_zycit100-codregtripiscofi  NE '3' AND

             itab_zycit100-codregtripiscofi NE '5' ) .

* << Fim da inclusão

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

    CLEAR: v_tot_ii, v_tot_ipi, v_tot_icms, v_tot_pis, v_tot_cofins.

* << Fim da exclusão

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

          v_tot_pis    = itab_zycit100-vlpis    + v_tot_pis   .

          v_tot_cofins = itab_zycit100-vlcofins + v_tot_cofins.

        ENDIF.

      ENDLOOP.

    ELSE.

* << Fim da inclusão

    LOOP AT itab_zycit100.

      v_tot_ii     = itab_zycit100-vlii     + v_tot_ii    .

      v_tot_icms   = itab_zycit100-vlicms   + v_tot_icms  .

      IF ( itab_zycit100-codregtriipi  NE '1' AND

           itab_zycit100-codregtriipi NE '5' ) .

        v_tot_ipi    = itab_zycit100-vlipi    + v_tot_ipi   .

      ENDIF.

      IF ( itab_zycit100-codregtripiscofi  NE '3' AND

           itab_zycit100-codregtripiscofi NE '5' ) .

        v_tot_pis    = itab_zycit100-vlpis    + v_tot_pis   .

        v_tot_cofins = itab_zycit100-vlcofins + v_tot_cofins.

      ENDIF.

    ENDLOOP.

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

    ENDIF.

* << Fim da inclusão

    IF sy-subrc EQ 0.

      CLEAR /pws/zyglt217.

      SELECT SINGLE *

        FROM /pws/zyglt217

        WHERE arbgb EQ '/PWS/ZYCIM' AND

              msgnr EQ '134'.

      IF /pws/zyglt217-msgtp EQ 'E'.

        CLEAR ok_code.

      ENDIF.

      READ TABLE it_tbcontrol WITH KEY tpdesp = '003'

...

 

...

      IF v_tot_cofins IS INITIAL AND sy-subrc EQ 0.

        SELECT SINGLE *

          FROM /pws/zyglt217

          WHERE arbgb EQ '/PWS/ZYCIM' AND

                msgnr EQ '134'.

        IF sy-subrc EQ 0 AND NOT /pws/zyglt217-msgtp IS INITIAL.

          MESSAGE ID '/PWS/ZYCIM' TYPE /pws/zyglt217-msgtp NUMBER '134'

              WITH it_tbcontrol-descr.

        ENDIF.

      ENDIF .

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

    ENDIF.

    IF /pws/zycit001-regime EQ '04'.

      IF NOT itab_zycit443[] IS INITIAL.

        SELECT * FROM /pws/zycit451 INTO TABLE itab_zycit451

            FOR ALL ENTRIES IN itab_zycit443

            WHERE nrseqda = itab_zycit443-nrseqda.

* << Fim da inclusão

    ENDIF.

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

      IF NOT /pws/zycit000-flag_txsisc IS INITIAL AND

         NOT itab_zycit451[] IS INITIAL.

        LOOP AT itab_zycit451.

          LOOP AT itab_zycit443 WHERE adicao = itab_zycit451-adicao.

            itab_zycit451-nr_itens = itab_zycit451-nr_itens + 1.

          ENDLOOP.

          MODIFY itab_zycit451.

        ENDLOOP.

        READ TABLE it_tbcontrol

             WITH KEY tpdesp = /pws/zycit000-cod_sisc.

        IF sy-subrc = 0 AND it_tbcontrol-vldp > 0.

          DESCRIBE TABLE itab_zycit451 LINES v_line.

          v_sisco1 = ( it_tbcontrol-vldp -

                  /pws/zycit000-txsis_fix ) / v_line.

          v_sisco2 =   /pws/zycit000-txsis_fix / v_line.

          v_sisco3 = v_sisco1 + v_sisco2.

          LOOP AT itab_zycit451.

            CLEAR: v_lines, v_sisco_tot.

            v_sisco_item = v_sisco3 / itab_zycit451-nr_itens.

            LOOP AT itab_zycit443 WHERE adicao = itab_zycit451-adicao.

              v_lines = v_lines + 1.

              IF v_lines = itab_zycit451-nr_itens.

                itab_zycit443-vl_sisco = v_sisco3 - v_sisco_tot.

              ELSE.

                itab_zycit443-vl_sisco = v_sisco_item.

                v_sisco_tot = v_sisco_tot + v_sisco_item.

              ENDIF.

              MODIFY itab_zycit443.

            ENDLOOP.

          ENDLOOP.

        ENDIF.

      ENDIF.

    ENDIF.

  ELSE.

* << Fim da inclusão

    IF NOT itab_zycit100[] IS INITIAL.

      SELECT * FROM /pws/zycit116 INTO TABLE itab_zycit116

          FOR ALL ENTRIES IN itab_zycit100

          WHERE nrseqdi = itab_zycit100-nrseqdi.

    ENDIF.

    IF NOT /pws/zycit000-flag_txsisc IS INITIAL AND

       NOT itab_zycit116[] IS INITIAL.

      LOOP AT itab_zycit116.

        LOOP AT itab_zycit100 WHERE adicao = itab_zycit116-adicao.

          itab_zycit116-nr_itens = itab_zycit116-nr_itens + 1.

...

 

...

    SELECT ebeln ebelp kostl kokrs aufnr ps_psp_pnr prctr FROM ekkn

           INTO TABLE itab_ekkn

           FOR ALL ENTRIES IN it_zycit003

           WHERE ebeln EQ it_zycit003-ebeln

             AND ebelp EQ it_zycit003-ebelp.

    SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100

      FOR ALL ENTRIES IN it_zycit003

      WHERE nrseq = it_zycit003-nrseq AND

            ebeln = it_zycit003-ebeln AND

            ebelp = it_zycit003-ebelp.

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

    if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = ' DI'.

    SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443

      FOR ALL ENTRIES IN it_zycit003

      WHERE nrseq = it_zycit003-nrseq AND

            ebeln = it_zycit003-ebeln AND

            ebelp = it_zycit003-ebelp.

    endif.

* << Fim da inclusão

    SELECT ebeln ebelp matnr bwtar j_1bmatuse knttp werks

           FROM ekpo INTO TABLE it_ekpo

           FOR ALL ENTRIES IN it_zycit003

           WHERE ebeln  =  it_zycit003-ebeln

             AND ebelp  =  it_zycit003-ebelp.

  ENDIF.

  CLEAR:   itab_classe_aval ,

           itab_param_classe.

  REFRESH: itab_classe_aval ,

           itab_param_classe.

...

 

...

  CLEAR: v_tot, v_tot_ntgew, v_tot_real, v_total.

  LOOP AT it_zycit003 WHERE servico EQ space.

    v_tot = v_tot + ( it_zycit003-netpr * it_zycit003-qtd_iten ).

    v_tot_ntgew = v_tot_ntgew + it_zycit003-ntgew.

    v_tot_real = v_tot_real +

          ( it_zycit003-vlreal * it_zycit003-qtd_iten ).

  ENDLOOP.

  DATA: it_zycit003_aux LIKE it_zycit003 OCCURS 0 WITH HEADER LINE.

  MOVE it_zycit003[] TO it_zycit003_aux[].

  DELETE it_zycit003 WHERE servico = 'X'.

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

  IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.

    DESCRIBE TABLE it_zycit003 LINES v_linha.

    DESCRIBE TABLE itab_zycit443 LINES v_lines.

  ELSE.

* << Fim da inclusão

  DESCRIBE TABLE it_zycit003 LINES v_linha.

  DESCRIBE TABLE itab_zycit100 LINES v_lines.

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

  ENDIF.

* << Fim da inclusão

  IF NOT it_zycit003[] IS INITIAL.

    IF ( it_tbcontrol-tpdesp EQ '001' OR

          it_tbcontrol-tpdesp EQ '002' OR

          it_tbcontrol-tpdesp EQ /pws/zycit000-cod_pis OR

          it_tbcontrol-tpdesp EQ /pws/zycit000-cod_cofins ).

      LOOP AT it_zycit003 WHERE servico EQ space.

        v_index = sy-tabix.

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

        IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.

          READ TABLE itab_zycit443 WITH KEY

                   nrseq = it_zycit003-nrseq

                   ebeln = it_zycit003-ebeln

                   ebelp = it_zycit003-ebelp.

          IF sy-subrc EQ 0.

            IF ( it_tbcontrol-tpdesp EQ '001' AND

              ( itab_zycit443-codregtriipi  EQ '1' OR

                 itab_zycit443-codregtriipi EQ '5' ) )

                 OR

              ( ( it_tbcontrol-tpdesp EQ /pws/zycit000-cod_pis OR

                  it_tbcontrol-tpdesp EQ /pws/zycit000-cod_cofins ) AND

                   ( itab_zycit443-codregtripiscofi  EQ '3' OR

                     itab_zycit443-codregtripiscofi EQ '5' )  ).

              CONTINUE.

            ENDIF.

            CLEAR: it_ekpo, v_tot_itens2.

            READ TABLE it_ekpo WITH KEY ebeln = it_zycit003-ebeln

                                        ebelp = it_zycit003-ebelp.

            READ TABLE itab_ekkn WITH KEY ebeln = it_zycit003-ebeln

                                        ebelp = it_zycit003-ebelp.

            IF it_ekpo-knttp IS INITIAL.

              CLEAR: itab_classe_aval.

              READ TABLE itab_classe_aval WITH KEY

                                               matnr = it_ekpo-matnr

                                              bwkey = it_zycit003-werks

                                               bwtar = it_ekpo-bwtar.

              IF sy-subrc EQ 0.

                CLEAR: itab_param_classe.

                READ TABLE itab_param_classe WITH KEY

                                        bklas = itab_classe_aval-bklas.

                IF sy-subrc EQ 0.

                  MOVE: it_ekpo-j_1bmatuse     TO it_contabil-matuse,

                        itab_classe_aval-bklas TO it_contabil-bklas .

                ELSE.

                  MOVE: it_ekpo-j_1bmatuse TO it_contabil-matuse,

                        space              TO it_contabil-bklas .

                ENDIF.

              ELSE.

                MOVE: it_ekpo-j_1bmatuse TO it_contabil-matuse,

                      space              TO it_contabil-bklas .

              ENDIF.

            ELSE.

              MOVE: it_ekpo-j_1bmatuse TO it_contabil-matuse,

                    space              TO it_contabil-bklas .

            ENDIF.

            CALL CUSTOMER-FUNCTION '001'

                 EXPORTING

                    v_parametro    = '01'

                    ebeln          = it_zycit003-ebeln

                    ebelp          = it_zycit003-ebelp

                    matuse         = it_contabil-matuse

                 IMPORTING

                    v_ebeln        = it_contabil-ebeln

                    v_ebelp        = it_contabil-ebelp.

            IF /pws/zycit000-clucro_ia = 'X'.

              READ TABLE it_ekpo WITH KEY ebeln = it_zycit003-ebeln

                                          ebelp = it_zycit003-ebelp.

              READ TABLE itab_ekkn WITH KEY ebeln = it_zycit003-ebeln

                                            ebelp = it_zycit003-ebelp.

              PERFORM verifica_centro_l.

              it_contabil-prctr = it_zycbe035-d_prctr.

            ENDIF.

            MOVE: it_tbcontrol-nrseq  TO it_contabil-nrseq,

                  it_tbcontrol-nradto TO it_contabil-nradto,

                  it_tbcontrol-tpdesp TO it_contabil-tpdesp,

                  it_tbcontrol-descr  TO it_contabil-descr,

                  it_tbcontrol-dtdeb  TO it_contabil-dtvencto,

                  it_tbcontrol-banco  TO it_contabil-banco,

                  it_tbcontrol-agrup  TO it_contabil-agrup,

                  it_tbcontrol-waers  TO it_contabil-waers,

                  itab_ekkn-aufnr     TO it_contabil-aufnr,

                  it_zycit003-gsber   TO it_contabil-gsber,

                  itab_ekkn-aufnr     TO it_contabil-ps_psp_pnr,

                  it_zycit003-gsber   TO it_contabil-gsber,

                  it_zycit003-ebeln   TO it_contabil-ebeln,

                  it_zycit003-ebelp   TO it_contabil-ebelp.

            IF it_tbcontrol-tpdesp = '001'.

              CLEAR: v_frac, v_dec, v_frac2, v_dec2, v_wrbtr.

              IF v_index = v_lines.

                IF itab_zycit443-vlipi IS INITIAL.

                  CLEAR: it_contabil-vldp.

                  COLLECT it_contabil.

                  LOOP AT it_contabil

                                  WHERE tpdesp = it_contabil-tpdesp

                                    AND vldp > 0.

                    it_contabil-vldp = it_contabil-vldp +

                                        ( it_tbcontrol-vldp - v_total ).

                    MODIFY it_contabil .

                    EXIT.

                  ENDLOOP .

                  CONTINUE.

                ELSE.

                  it_contabil-vldp = it_tbcontrol-vldp - v_total.

                ENDIF.

                CLEAR v_total.

              ELSE.

                v_wrbtr = ( itab_zycit443-vlipi /

                            v_tot_ipi ) * it_tbcontrol-vldp.

                it_contabil-vldp     = v_wrbtr.

                v_total = v_total + it_contabil-vldp.

              ENDIF.

            ELSEIF it_tbcontrol-tpdesp = '002'.

              CLEAR: v_frac, v_dec, v_frac2, v_dec2, v_wrbtr.

              IF v_index = v_lines.

                IF itab_zycit443-vlicms IS INITIAL.

                  CLEAR: it_contabil-vldp.

                  COLLECT it_contabil.

                  LOOP AT it_contabil

                                  WHERE tpdesp = it_contabil-tpdesp

                                    AND vldp > 0.

                    it_contabil-vldp = it_contabil-vldp +

                                        ( it_tbcontrol-vldp - v_total ).

                    MODIFY it_contabil .

                    EXIT.

                  ENDLOOP .

                  CONTINUE.

                ELSE.

                  it_contabil-vldp = it_tbcontrol-vldp - v_total.

                ENDIF.

                CLEAR v_total.

              ELSE.

                v_wrbtr = ( itab_zycit443-vlicms /

                            v_tot_icms ) * it_tbcontrol-vldp.

                it_contabil-vldp     = v_wrbtr.

                v_total = v_total + it_contabil-vldp.

              ENDIF.

            ELSEIF it_tbcontrol-tpdesp = /pws/zycit000-cod_pis.

              CLEAR: v_frac, v_dec, v_frac2, v_dec2, v_wrbtr.

              IF v_index = v_lines.

                IF itab_zycit443-vlpis IS INITIAL.

                  CLEAR: it_contabil-vldp.

                  COLLECT it_contabil.

                  LOOP AT it_contabil

                                  WHERE tpdesp = it_contabil-tpdesp

                                    AND vldp > 0.

                    it_contabil-vldp = it_contabil-vldp +

                                        ( it_tbcontrol-vldp - v_total ).

                    MODIFY it_contabil .

                    EXIT.

                  ENDLOOP .

                  CONTINUE.

                ELSE.

                  it_contabil-vldp = it_tbcontrol-vldp - v_total.

                ENDIF.

                CLEAR v_total.

              ELSE.

                v_wrbtr = ( itab_zycit443-vlpis /

                            v_tot_pis ) * it_tbcontrol-vldp.

                it_contabil-vldp     = v_wrbtr.

                v_total = v_total + it_contabil-vldp.

              ENDIF.

          ELSEIF it_tbcontrol-tpdesp = /pws/zycit000-cod_cofins.

              CLEAR: v_frac, v_dec, v_frac2, v_dec2, v_wrbtr.

              IF v_index = v_lines.

                IF itab_zycit443-vlcofins IS INITIAL.

                  CLEAR: it_contabil-vldp.

                  COLLECT it_contabil.

                  LOOP AT it_contabil

                            WHERE tpdesp = it_contabil-tpdesp

                              AND vldp > 0.

                    it_contabil-vldp = it_contabil-vldp +

                                        ( it_tbcontrol-vldp - v_total ).

                    MODIFY it_contabil .

                    EXIT.

                  ENDLOOP .

                  CONTINUE.

                ELSE.

                  it_contabil-vldp = it_tbcontrol-vldp - v_total.

                ENDIF.

                CLEAR v_total.

              ELSE.

                v_wrbtr = ( itab_zycit443-vlcofins /

                            v_tot_cofins ) * it_tbcontrol-vldp.

                it_contabil-vldp     = v_wrbtr.

                v_total = v_total + it_contabil-vldp.

              ENDIF.

            ENDIF.

            COLLECT it_contabil.

          ELSE.

            PERFORM: verifica_di.

            IF v_stop EQ 'X'.

              CONTINUE. CLEAR v_stop.

            ENDIF.

            CLEAR: it_ekpo, v_tot_itens2.

            READ TABLE it_ekpo WITH KEY ebeln = it_zycit003-ebeln

                                        ebelp = it_zycit003-ebelp.

            READ TABLE itab_ekkn WITH KEY ebeln = it_zycit003-ebeln

                                        ebelp = it_zycit003-ebelp.

            IF it_ekpo-knttp IS INITIAL.

              CLEAR: itab_classe_aval.

              READ TABLE itab_classe_aval WITH KEY

                                               matnr = it_ekpo-matnr

                                              bwkey = it_zycit003-werks

                                               bwtar = it_ekpo-bwtar.

              IF sy-subrc EQ 0.

                CLEAR: itab_param_classe.

                READ TABLE itab_param_classe WITH KEY

                                        bklas = itab_classe_aval-bklas.

                IF sy-subrc EQ 0.

                  MOVE: it_ekpo-j_1bmatuse     TO it_contabil-matuse,

                        itab_classe_aval-bklas TO it_contabil-bklas .

                ELSE.

                  MOVE: it_ekpo-j_1bmatuse TO it_contabil-matuse,

                        space              TO it_contabil-bklas .

                ENDIF.

              ELSE.

                MOVE: it_ekpo-j_1bmatuse TO it_contabil-matuse,

                      space              TO it_contabil-bklas .

              ENDIF.

            ELSE.

              MOVE: it_ekpo-j_1bmatuse TO it_contabil-matuse,

                    space              TO it_contabil-bklas .

            ENDIF.

            CALL CUSTOMER-FUNCTION '001'

                 EXPORTING

                    v_parametro    = '01'

                    ebeln          = it_zycit003-ebeln

                    ebelp          = it_zycit003-ebelp

                    matuse         = it_contabil-matuse

                 IMPORTING

                    v_ebeln        = it_contabil-ebeln

                    v_ebelp        = it_contabil-ebelp.

            IF /pws/zycit000-clucro_ia = 'X'.

              READ TABLE it_ekpo WITH KEY ebeln = it_zycit003-ebeln

                                          ebelp = it_zycit003-ebelp.

              READ TABLE itab_ekkn WITH KEY ebeln = it_zycit003-ebeln

                                            ebelp = it_zycit003-ebelp.

              PERFORM verifica_centro_l.

              it_contabil-prctr = it_zycbe035-d_prctr.

            ENDIF.

            IF v_index = v_linha.

              it_contabil-vldp = it_tbcontrol-vldp - v_total.

              CLEAR v_total.

            ELSE.

              IF /pws/zycit039-divabs EQ 'X'.

                it_contabil-vldp   = it_tbcontrol-vldp / v_linha.

              ELSEIF /pws/zycit039-peso EQ 'X'.

                it_contabil-vldp   = it_tbcontrol-vldp *

                                     it_zycit003-ntgew /

                                     v_tot_ntgew.

              ELSEIF /pws/zycit039-proporplan EQ 'X'.

                it_contabil-vldp   = it_zycit003-netpr *

                                     it_zycit003-qtd_iten /

                                     v_tot * it_tbcontrol-vldp.

              ELSE.

                it_contabil-vldp   = it_zycit003-vlreal *

                                     it_zycit003-qtd_iten /

                                     v_tot_real * it_tbcontrol-vldp.

              ENDIF.

              v_total = v_total + it_contabil-vldp.

            ENDIF.

            MOVE: it_tbcontrol-nrseq  TO it_contabil-nrseq,

                  it_tbcontrol-nradto TO it_contabil-nradto,

                  it_tbcontrol-tpdesp TO it_contabil-tpdesp,

                  it_tbcontrol-descr  TO it_contabil-descr,

                  it_tbcontrol-dtdeb  TO it_contabil-dtvencto,

                  it_tbcontrol-banco  TO it_contabil-banco,

                  it_tbcontrol-agrup  TO it_contabil-agrup,

                  it_tbcontrol-waers  TO it_contabil-waers,

                  itab_ekkn-aufnr     TO it_contabil-aufnr,

                  itab_ekkn-aufnr     TO it_contabil-ps_psp_pnr,

                  it_zycit003-gsber   TO it_contabil-gsber,

                  it_zycit003-ebeln   TO it_contabil-ebeln,

                  it_zycit003-ebelp   TO it_contabil-ebelp.

            COLLECT it_contabil.

          ENDIF.

        ELSE.

* << Fim da inclusão

        READ TABLE itab_zycit100 WITH KEY

                 nrseq = it_zycit003-nrseq

                 ebeln = it_zycit003-ebeln

                 ebelp = it_zycit003-ebelp.

        IF sy-subrc EQ 0.

          IF ( it_tbcontrol-tpdesp EQ '001' AND

            ( itab_zycit100-codregtriipi  EQ '1' OR

               itab_zycit100-codregtriipi EQ '5' ) )

               OR

            ( ( it_tbcontrol-tpdesp EQ /pws/zycit000-cod_pis OR

...

 

...

                it_tbcontrol-dtdeb  TO it_contabil-dtvencto,

                it_tbcontrol-banco  TO it_contabil-banco,

                it_tbcontrol-agrup  TO it_contabil-agrup,

                it_tbcontrol-waers  TO it_contabil-waers,

                itab_ekkn-aufnr     TO it_contabil-aufnr,

                itab_ekkn-aufnr     TO it_contabil-ps_psp_pnr,

                it_zycit003-gsber   TO it_contabil-gsber,

                it_zycit003-ebeln   TO it_contabil-ebeln,

                it_zycit003-ebelp   TO it_contabil-ebelp.

          COLLECT it_contabil.

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

          ENDIF.

* << Fim da inclusão

        ENDIF.

      ENDLOOP.

    ELSE.

      MOVE: it_tbcontrol-nrseq  TO it_contabil-nrseq,

            it_tbcontrol-nradto TO it_contabil-nradto,

            it_tbcontrol-tpdesp TO it_contabil-tpdesp,

            it_tbcontrol-descr  TO it_contabil-descr,

            it_tbcontrol-vldp   TO it_contabil-vldp,

            it_tbcontrol-dtdeb  TO it_contabil-dtvencto,

            it_tbcontrol-banco  TO it_contabil-banco,

...

 

...

  LOOP AT it_zycit003.

    v_tot = v_tot + ( it_zycit003-netpr * it_zycit003-qtd_iten ).

    v_tot_ntgew = v_tot_ntgew + it_zycit003-ntgew.

    v_tot_real = v_tot_real +

          ( it_zycit003-vlreal * it_zycit003-qtd_iten ).

  ENDLOOP.

  READ TABLE it_tbcontrol WITH KEY tpdesp = p_tpdesp.

  CLEAR v_tot_vldp.

  IF p_tpdesp = /pws/zycit000-cod_sisc AND

     NOT /pws/zycit000-flag_txsisc IS INITIAL AND /pws/zycit001-tpdecl =

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

 'DI'.

* << Fim da exclusão

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

 'DI' and /pws/zycit001-regime ne '04'.

* << Fim da inclusão

    SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100

      WHERE nrseq = /pws/zycie008-nrseq.

    IF NOT itab_zycit100[] IS INITIAL.

      SELECT * FROM /pws/zycit116 INTO TABLE itab_zycit116

        FOR ALL ENTRIES IN itab_zycit100

        WHERE nrseqdi = itab_zycit100-nrseqdi.

    ENDIF.

    IF NOT /pws/zycit000-flag_txsisc IS INITIAL.

      LOOP AT itab_zycit116.

        LOOP AT itab_zycit100 WHERE adicao = itab_zycit116-adicao.

...

 

...

           AND land1 EQ t001-land1.

  ENDSELECT.

  CLEAR: v_tot_ntgew , v_tot_real.

  LOOP AT it_zycit003.

    v_tot_ntgew = v_tot_ntgew + it_zycit003-ntgew.

    v_tot_real = v_tot_real +

         ( it_zycit003-vlreal * it_zycit003-qtd_iten ).

  ENDLOOP.

  SELECT SINGLE * FROM /pws/zycit000 WHERE land1 EQ t001-land1.

  IF it_tbcontrol_aux2-tpdesp = /pws/zycit000-cod_sisc AND

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

     NOT /pws/zycit000-flag_txsisc IS INITIAL.

* << Fim da exclusão

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

     NOT /pws/zycit000-flag_txsisc IS INITIAL and

     not /pws/zycit001-regime  = '04'.

* << Fim da inclusão

    SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100

      WHERE nrseq = /pws/zycie008-nrseq.

    IF NOT itab_zycit100[] IS INITIAL.

      SELECT * FROM /pws/zycit116 INTO TABLE itab_zycit116

        FOR ALL ENTRIES IN itab_zycit100

        WHERE nrseqdi = itab_zycit100-nrseqdi.

    ENDIF.

    IF NOT /pws/zycit000-flag_txsisc IS INITIAL.

      LOOP AT itab_zycit116.

        LOOP AT itab_zycit100 WHERE adicao = itab_zycit116-adicao.

...

 

...

    WHERE addrnumber = j_1bbranch-adrnr.

  SELECT * FROM /pws/zycit019

           INTO TABLE itab_zycit019

           WHERE regio = adrc-region AND

                     land1 EQ t001-land1.

  IF sy-subrc NE 0.

    SELECT * FROM /pws/zycit019

             INTO TABLE itab_zycit019

             WHERE regio EQ space AND

                  land1 EQ t001-land1.

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

  ENDIF.

  IF /pws/zycit001-regime = '04' AND /pws/zycit001-tpdecl = 'DI'.

    IF NOT it_zycit003[] IS INITIAL AND itab_zycit443[] IS INITIAL.

      SELECT *

      FROM /pws/zycit443

      INTO TABLE itab_zycit443

      FOR ALL ENTRIES IN it_zycit003

      WHERE nrseq EQ it_zycit003-nrseq

        AND ebeln EQ it_zycit003-ebeln

        AND ebelp EQ it_zycit003-ebelp.

      IF sy-subrc EQ 0.

        CLEAR: v_tot_ii, v_tot_ipi, v_tot_icms, v_tot_pis, v_tot_cofins.

        LOOP AT itab_zycit443.

          v_tot_ii     = itab_zycit443-vlii     + v_tot_ii    .

          v_tot_ipi    = itab_zycit443-vlipi    + v_tot_ipi   .

          v_tot_icms   = itab_zycit443-vlicms   + v_tot_icms  .

          v_tot_pis    = itab_zycit443-vlpis    + v_tot_pis   .

          v_tot_cofins = itab_zycit443-vlcofins + v_tot_cofins.

        ENDLOOP.

* << Fim da inclusão

  ENDIF.

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

    ENDIF.

  ELSE.

* << Fim da inclusão

  IF NOT it_zycit003[] IS INITIAL AND itab_zycit100[] IS INITIAL.

    SELECT *

    FROM /pws/zycit100

    INTO TABLE itab_zycit100

    FOR ALL ENTRIES IN it_zycit003

...

 

...

      AND ebelp EQ it_zycit003-ebelp.

    IF sy-subrc EQ 0.

      CLEAR: v_tot_ii, v_tot_ipi, v_tot_icms, v_tot_pis, v_tot_cofins.

      LOOP AT itab_zycit100.

        v_tot_ii     = itab_zycit100-vlii     + v_tot_ii    .

        v_tot_ipi    = itab_zycit100-vlipi    + v_tot_ipi   .

        v_tot_icms   = itab_zycit100-vlicms   + v_tot_icms  .

        v_tot_pis    = itab_zycit100-vlpis    + v_tot_pis   .

        v_tot_cofins = itab_zycit100-vlcofins + v_tot_cofins.

      ENDLOOP.

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

      ENDIF.

* << Fim da inclusão

    ENDIF.

  ENDIF.

  CLEAR:  it_contabil. FREE it_contabil.

  LOOP AT it_tbcontrol WHERE mark = 'X'.

    PERFORM atualiza_tabela.

  ENDLOOP.

  IF sy-subrc = 0.

    CLEAR:  itab_desp_funcao, itab_item_funcao, itab_zycit036.

    FREE::  itab_desp_funcao, itab_item_funcao, itab_zycit036.

    LOOP AT it_contabil.

...

 

...

 

FORM verifica_di.

  DATA: v_conta       LIKE /pws/zyglt316-konts.

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

  if /pws/zycit001-regime = '04' and /pws/zycit001-tpdecl = 'DI'.

  SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443

       WHERE nrseq = /pws/zycie008-nrseq.

  else.

* << Fim da inclusão

  SELECT * FROM /pws/zycit100 INTO TABLE itab_zycit100

       WHERE nrseq = /pws/zycie008-nrseq.

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

   endif.

* << Fim da inclusão

  IF sy-subrc NE 0.

    CLEAR: itab_zycit039, itab_zycit019.

    READ TABLE itab_zycit019 WITH KEY tpdesp = it_tbcontrol-tpdesp.

    SELECT * FROM /pws/zyglt316 INTO TABLE itab_zyglt316

     WHERE bukrs   EQ /pws/zycie008-bukrs

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI013X01

 

...

DATA: BEGIN OF common part.

* >> Início da inclusão:

DATA: BEGIN OF itab_zycit443 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit443.

DATA vl_sisco LIKE /pws/zycit049-vldp.

DATA: END OF itab_zycit443.

DATA: BEGIN OF itab_zycit451 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit451.

DATA nr_itens TYPE i.

DATA: END OF itab_zycit451.

* << Fim da inclusão

 

...