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.
7.0
Produto:
Nota
Descrição
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
...