Módulo: DOC. IMPORTAÇÃO
Funcionalidade: DSI
Data/Hora da Publicação: 22/06/2007 00:00:00
Data/Hora Última Alteração: 22/02/2011 14:57:26
Descrição da Nota: CORREÇÃO NO CALCULO DA BASE DE CÁLCULO AO ENTRAR DO DETALHE DO ITEM
Sintoma
Quando entra na DSI pela primeira vez, no detalhe do ítem pasta carga 3, os valores das bases dos
impostos e dos valores a recolher dos impostos estão errados. Não estão somando as despesas base de
impostos. Somente quando sai do detalhe do item e entra novamente que atualiza, mas quando saímos da
DSI e entramos novamente o erro continua.
O valor da base de cálculo e o valor a recolher do ICMS ficam errados no momento que entra na DSI.
É necessário sair do detalhe do item e entrar novamente para atualizar os valores
Solução
Ajuste feito na DSI para calcular corretamente ao entrar na DSI
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04019 Data: 22/06/2007 Hora: 14:58:39
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04019
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00001
Agrupamento : 00171
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
00185 - 00001 - 6.0 - 00021 - INCLUIR PERDA DA VALIDADE DA MP252 NA TABELA DE PARÂMETROS /PWS/Z
02022 - 00002 - 6.0 - 00024 - AJUSTES DSI MUNDANÇA SISCOMEX
02718 - 00003 - 6.0 - 00025 - DSI VALORES SE MODIFICAM TODA ATUALIZAÇÃO
----------------------------------------------------------------------------------------------------
CORREÇÃO NO CALCULO DA BASE DE CÁLCULO AO ENTRAR DO DETALHE DO ITEM
----------------------------------------------------------------------------------------------------
Palavras Chave:
PROPOE_ADVAL, ITAB_IT, /PWS/ZYCBT007, V_TOT_REAL
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI058F01
REPS /PWS/MZYCI058F03
REPS /PWS/MZYCI058I01
REPS /PWS/MZYCI058O01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI058F01
...
IF NOT v_tcfr IS INITIAL.
t_ivseg = itab_it-vlseg = ( v_cfr / ( v_tcfr ) ) * s_stvr.
v_tot_seg = ( v_cfr / ( v_tcfr ) ) * v_sgtofat.
ENDIF.
IF p_tipo = 'I'.
s_stvr_aux = s_stvr_aux + t_ivseg.
s_stvr_aux1 = s_stvr_aux1 + v_tot_seg.
ENDIF.
CLEAR: t_ivdesp.
LOOP AT itab_zycit049 WHERE baseii EQ 'X' AND NOT vlreal IS initial.
* >> Início da exclusão: FORM LOAD_ITAX
IF v_idx EQ v_ipt AND v_ipt NE 1.
* << Fim da exclusão
IF itab_zycit049-divabs = 'X'.
IF NOT v_ipt IS INITIAL.
t_ivdes2 = ( 1 / v_ipt ) * itab_zycit049-vlreal.
ENDIF.
ELSEIF itab_zycit049-peso = 'X'.
IF NOT v_tntgew IS INITIAL.
t_ivdes2 = ( wa_it-ntgew / v_tntgew ) *
itab_zycit049-vlreal.
ENDIF.
ELSEIF itab_zycit049-proporplan = 'X'.
IF NOT v_tot_plan IS INITIAL.
t_ivdes2 = ( v_it_plan / v_tot_plan ) * itab_zycit049-vlreal.
ENDIF.
ELSE.
* >> Início da exclusão: FORM LOAD_ITAX
IF NOT v_tot_plan IS INITIAL.
t_ivdes2 = ( v_it_plan / v_tot_plan ) * itab_zycit049-vlreal.
* << Fim da exclusão
* >> Início da inclusão: FORM LOAD_ITAX
IF NOT v_tot_real IS INITIAL.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_it-nrseq
ebeln = itab_it-ebeln
ebelp = itab_it-ebelp.
IF sy-subrc EQ 0.
t_ivdes2 = ( itab_zycit003-vlreal *
itab_zycit003-qtd_iten
/ v_tot_real ) * itab_zycit049-vlreal.
* << Fim da inclusão
ENDIF.
ENDIF.
* >> Início da exclusão: FORM LOAD_ITAX
IF p_tipo = 'I'.
itab_zycit049-vldp_aux = itab_zycit049-vldp_aux + t_ivdes2.
MODIFY itab_zycit049 INDEX sy-tabix TRANSPORTING vldp_aux.
ENDIF.
ELSE.
IF itab_zycit049-divabs = 'X'.
IF NOT v_ipt IS INITIAL.
t_ivdes2 = ( 1 / v_ipt ) * itab_zycit049-vlreal.
ENDIF.
ELSEIF itab_zycit049-peso = 'X'.
IF NOT v_tntgew IS INITIAL.
t_ivdes2 = ( wa_it-ntgew / v_tntgew ) *
itab_zycit049-vlreal.
ENDIF.
ELSEIF itab_zycit049-proporplan = 'X'.
IF NOT v_tot_plan IS INITIAL.
t_ivdes2 = ( v_it_plan / v_tot_plan ) * itab_zycit049-vlreal.
ENDIF.
ELSE.
IF NOT v_tot_plan IS INITIAL.
t_ivdes2 = ( v_it_plan / v_tot_plan ) * itab_zycit049-vlreal.
ENDIF.
* << Fim da exclusão
ENDIF.
IF p_tipo = 'I'.
itab_zycit049-vldp_aux = itab_zycit049-vldp_aux + t_ivdes2.
MODIFY itab_zycit049 INDEX sy-tabix TRANSPORTING vldp_aux.
ENDIF.
* >> Início da exclusão: FORM LOAD_ITAX
ENDIF.
IF itab_zycit049-divabs = 'X'.
IF NOT v_ipt IS INITIAL.
t_ivdes3 = ( 1 / v_ipt ) * itab_zycit049-vldp.
ENDIF.
ELSEIF itab_zycit049-peso = 'X'.
IF NOT v_tntgew IS INITIAL.
t_ivdes3 = ( wa_it-ntgew / v_tntgew ) * itab_zycit049-vldp.
ENDIF.
ELSEIF itab_zycit049-proporplan = 'X'.
IF NOT v_tot_plan IS INITIAL.
t_ivdes3 = ( v_it_plan / v_tot_plan ) * itab_zycit049-vlreal.
ENDIF.
ELSE.
IF NOT v_tot_plan IS INITIAL.
t_ivdes3 = ( v_it_plan / v_tot_plan ) * itab_zycit049-vldp.
ENDIF.
ENDIF.
IF itab_zycit049-tipo = 'D'.
t_ivdes2 = t_ivdes2 * -1.
t_ivdes3 = t_ivdes3 * -1.
ENDIF.
* << Fim da exclusão
IF t_ivdes2 > 0.
t_ivdesp = t_ivdesp + t_ivdes2.
ENDIF.
* >> Início da exclusão: FORM LOAD_ITAX
IF p_tipo = 'I'.
IF /pws/zycie085-mdadicao = 'S'.
IF /pws/zycie085-waersfob EQ itab_zycit049-waers.
ENDIF.
ENDIF.
IF itab_zycit049-tipo = 'D'.
CLEAR s_fbvr_s_d.
IF t_ivdes2 LT 0.
s_fbvr_s_d = s_fbvr.
ELSE.
s_fbvr_s_d = s_fbvr.
ENDIF.
ELSEIF itab_zycit049-tipo = 'A'.
ENDIF.
ELSEIF p_tipo = 'A'.
IF itab_zycit049-tipo = 'A'.
READ TABLE itab_zycit049b WITH KEY
coddesp = itab_zycit049-coddesp.
IF sy-subrc EQ 0.
itab_zycit049b-vlreal = itab_zycit049b-vlreal + t_ivdes2.
itab_zycit049b-vldp = itab_zycit049b-vldp + t_ivdes3.
MODIFY itab_zycit049b INDEX sy-tabix TRANSPORTING
vldp vlreal.
ENDIF.
ELSEIF itab_zycit049-tipo = 'D'.
READ TABLE itab_zycit049c WITH KEY
coddesp = itab_zycit049-coddesp.
IF sy-subrc EQ 0.
itab_zycit049c-vlreal = itab_zycit049c-vlreal + t_ivdes2.
itab_zycit049c-vldp = itab_zycit049c-vldp + t_ivdes3.
MODIFY itab_zycit049c INDEX sy-tabix TRANSPORTING
vldp vlreal.
ENDIF.
ENDIF.
ENDIF.
* << Fim da exclusão
ENDLOOP.
CASE s_inco1_ci.
WHEN 'CIF'.
t_dif_seg = v_tsegfat - v_sgtofat.
t_dif_seg = ( v_cfr / ( v_tcfr ) ) * t_dif_seg.
ENDCASE.
CASE s_inco1_ci.
WHEN 'FOB'.
* >> Início da exclusão: FORM LOAD_ITAX
t_ivadu = t_ivmle.
* << Fim da exclusão
* >> Início da inclusão: FORM LOAD_ITAX
t_ivadu = t_ivmle + t_ivseg + t_ivfre + t_ivdesp.
* << Fim da inclusão
WHEN 'C&F'.
t_ivmle = t_ivmle.
t_vmle = t_vmle + v_tot_fre.
t_vmle_d2 = t_vmle.
t_ivmle_d2 = t_vmle_d2 * /pws/zycie100a-dttaxbem.
t_ivadu = t_ivmle + t_ivseg + t_ivdesp + t_ivfre.
t_vmle2 = t_vmle.
WHEN 'CIF'.
t_ivmle = t_ivmle + ( t_dif_seg * /pws/zycie085-ukursseg ).
t_ivmle_d2 = t_ivmle + t_ivfre + t_ivseg .
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI058F03
FORM calc_init USING p_tipo.
DATA: v_qtd_iten LIKE /pws/zycie003-qtd_iten,
v_ntgew LIKE /pws/zycit003-ntgew.
* >> Início da inclusão: FORM CALC_INIT
clear v_tot_real.
* << Fim da inclusão
IF itab_zycit049[] IS INITIAL.
SELECT * FROM /pws/zycit049 INTO TABLE itab_zycit049
WHERE nrseq = /pws/zycie085-nrseqdi.
ENDIF.
IF p_tipo = 'I'.
LOOP AT itab_zycit049.
CLEAR itab_zycit049-vldp_aux.
MODIFY itab_zycit049 INDEX sy-tabix TRANSPORTING vldp_aux.
ENDLOOP.
PERFORM data_sort.
...
...
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_it-nrseq
ebeln = itab_it-ebeln
ebelp = itab_it-ebelp.
IF itab_it-qtd_itend NE '' AND v_dit = 'N'
AND itab_it-vlreald IS INITIAL.
itab_it-vlreald = itab_it-vlreal + ( ( v_tdif *
itab_zycit003-ntgew / v_ntgew ) / itab_zycit003-qtd_iten ).
MODIFY itab_it.
ENDIF.
* >> Início da inclusão: FORM CALC_INIT
v_tot_real = v_tot_real +
( itab_zycit003-vlreal * itab_zycit003-qtd_iten ).
v_tot_plan = v_tot_plan +
( itab_zycit003-qtd_iten * itab_zycit003-netpr ).
* << Fim da inclusão
ENDLOOP.
LOOP AT itab_it.
IF NOT itab_it-vlreald IS INITIAL.
itab_it-vlreal = itab_it-vlreald.
ENDIF.
CLEAR: v_tvaln, v_qtd_iten.
v_qtd_iten = itab_it-qtd_iten.
v_tntgew = v_tntgew + itab_it-ntgew.
* >> Início da exclusão: FORM CALC_INIT
v_tot_plan = v_tot_plan + ( v_qtd_iten * itab_it-netpr ).
* << Fim da exclusão
v_tmle = v_tmle + ( ( v_qtd_iten * itab_it-vlreal ) *
itab_it-dttaxbem ).
v_tfrefat = v_tfrefat + itab_it-vlfre_fat.
v_rfrefat = v_rfrefat + ( itab_it-vlfre_fat * itab_it-dttaxbem ).
v_tsegfat = v_tsegfat + itab_it-vlseg_fat.
v_rsegfat = v_rsegfat + ( itab_it-vlseg_fat * itab_it-dttaxbem ).
IF p_tipo = 'I'.
itab_it-seq = sy-tabix.
MODIFY itab_it INDEX sy-tabix TRANSPORTING seq vlreal.
ENDIF.
...
...
WHERE regio = ' '
AND lei = 'MP255'.
ENDIF.
CLEAR v_nova.
IF /pws/zycie085-dtuserc IS INITIAL.
/pws/zycie085-dtuserc = sy-datum.
ENDIF.
LOOP AT itab_zycit049 WHERE baseicms EQ 'X' AND NOT vlreal IS initial.
IF /pws/zycit000-flag_txsisc IS INITIAL OR
wa_it000-cod_sisc NE itab_zycit049-tpdesp.
* >> Início da exclusão: FORM LOAD_IICMS
IF v_idx EQ v_ipt AND v_ipt NE 1.
t_ivdes2 = itab_zycit049-vlreal - itab_zycit049-vldp_aux.
ELSE.
* << Fim da exclusão
IF itab_zycit049-divabs EQ 'X'.
t_ivdes2 = ( 1 / v_ipt ) * itab_zycit049-vlreal.
ELSEIF itab_zycit049-peso EQ 'X'.
t_ivdes2 = ( wa_it-ntgew / v_tntgew ) * itab_zycit049-vlreal.
ELSEIF itab_zycit049-proporplan EQ 'X'.
t_ivdes2 = ( v_it_plan / v_tot_plan ) * itab_zycit049-vlreal.
ELSE.
* >> Início da exclusão: FORM LOAD_IICMS
t_ivdes2 = ( v_it_plan / v_tot_plan ) * itab_zycit049-vlreal.
* << Fim da exclusão
* >> Início da inclusão: FORM LOAD_IICMS
IF NOT v_tot_real IS INITIAL.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_it-nrseq
ebeln = itab_it-ebeln
ebelp = itab_it-ebelp.
IF sy-subrc EQ 0.
t_ivdes2 = ( itab_zycit003-vlreal *
itab_zycit003-qtd_iten
/ v_tot_real ) * itab_zycit049-vlreal.
ENDIF.
* << Fim da inclusão
ENDIF.
IF p_tipo = 'I'.
itab_zycit049-vldp_aux = itab_zycit049-vldp_aux + t_ivdes2.
MODIFY itab_zycit049 INDEX sy-tabix TRANSPORTING vldp_aux.
ENDIF.
ENDIF.
t_ivdesp = t_ivdesp + t_ivdes2.
ENDIF.
ENDLOOP.
CLEAR: v_nr_itens, v_desp. CLEAR: itab_zycit100_temp.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI058I01
...
ENDCASE.
CLEAR: sy-ucomm.
ENDMODULE.
MODULE modi_data049 INPUT.
itab_zycit049-tpdesp = /pws/zycie049-tpdesp.
itab_zycit049-descr = /pws/zycie049-descr.
itab_zycit049-vldp = /pws/zycie049-vldp.
itab_zycit049-waers = /pws/zycie049-waers.
IF NOT itab_zycit049-vldp IS INITIAL.
if /pws/zycbt007-waersb is initial.
* >> Início da exclusão: MODULE MODI_DATA049
SELECT SINGLE * FROM /pws/zycbt007 INTO wa_zycbt007
* << Fim da exclusão
* >> Início da inclusão: MODULE MODI_DATA049
SELECT SINGLE *
FROM /pws/zycbt007
* << Fim da inclusão
WHERE bukrs EQ /pws/zycie085-bukrs.
endif.
IF itab_zycit049-waers NE /pws/zycbt007-waersb.
PERFORM taxa_converte USING /pws/zycie049-waers
/pws/zycie085-dttax
CHANGING s_tax.
itab_zycit049-vlreal = itab_zycit049-vldp * s_tax.
ELSE.
itab_zycit049-vlreal = itab_zycit049-vldp.
ENDIF.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI058O01
...
ENDMODULE.
MODULE fill_consist OUTPUT.
PERFORM fill_codfun.
PERFORM fill_clas.
ENDMODULE.
MODULE medida_estatistica OUTPUT.
v_medida = /pws/zycie003-meinsest.
ENDMODULE.
MODULE propoe_adval OUTPUT.
IF v_propoe IS INITIAL.
* >> Início da exclusão: MODULE PROPOE_ADVAL
IF v_dit = 'S'.
* << Fim da exclusão
LOOP AT itab_it.
IF sy-tcode = '/PWS/ZYCI058_C'.
SELECT SINGLE * FROM t001 WHERE bukrs = /pws/zycie085-bukrs.
SELECT SINGLE * FROM lfa1 WHERE lifnr = /pws/zycie003-lifnr
AND land1 = t001-land1.
IF sy-subrc EQ 0.
SELECT SINGLE * FROM j_1btregc INTO j_1btregc
WHERE land1 = 'BR'
AND country = lfa1-land1.
SELECT SINGLE * FROM /pws/zycit107
INTO /pws/zycit107
WHERE land1 = lfa1-land1
AND mercosul = 'X'.
IF sy-subrc = 0.
CLEAR /pws/zycie003-advalii.
ELSE.
/pws/zycie003-advalii = itab_it-aliqii.
ENDIF.
ENDIF.
ENDIF.
* >> Início da exclusão: MODULE PROPOE_ADVAL
IF sy-tcode = '/PWS/ZYCI058_C'
AND NOT itab_it-aliqipi IS INITIAL.
/pws/zycie003-advalipi = itab_it-aliqipi.
ENDIF.
IF sy-tcode = '/PWS/ZYCI058_C'.
/pws/zycie003-advalicms = itab_it-aliqicms.
ENDIF.
* << Fim da exclusão
MODIFY itab_it.
ENDLOOP.
* >> Início da exclusão: MODULE PROPOE_ADVAL
ELSEIF v_dit = 'N'.
IF sy-tcode = '/PWS/ZYCI023_C' AND /pws/zycie003-advalii IS
INITIAL.
SELECT SINGLE * FROM t001 WHERE bukrs = /pws/zycie085-bukrs.
SELECT SINGLE * FROM lfa1 WHERE lifnr = /pws/zycie003-lifnr
AND land1 = t001-land1.
IF sy-subrc EQ 0.
SELECT SINGLE * FROM j_1btregc INTO j_1btregc
WHERE land1 = 'BR'
AND country = lfa1-land1.
SELECT SINGLE * FROM /pws/zycit107
INTO /pws/zycit107
WHERE land1 = lfa1-land1
AND mercosul = 'X'.
IF sy-subrc = 0.
CLEAR /pws/zycie003-advalii.
ELSE.
/pws/zycie003-advalii = /pws/zycie003-aliqii.
ENDIF.
ENDIF.
ENDIF.
IF sy-tcode = '/PWS/ZYCI023_C' AND /pws/zycie003-advalipi IS
INITIAL.
/pws/zycie003-advalipi = /pws/zycie003-aliqipi.
ENDIF.
IF sy-tcode = '/PWS/ZYCI023_C' AND /pws/zycie003-advalicms IS
INITIAL.
/pws/zycie003-advalicms = /pws/zycie003-aliqicms.
ENDIF.
ENDIF.
* << Fim da exclusão
ENDIF.
v_propoe = 'X'.
IF NOT wa_it-ebeln IS INITIAL AND NOT wa_it-ebelp IS INITIAL.
READ TABLE itab_it WITH KEY ebelp = wa_it-ebelp
ebeln = wa_it-ebeln.
IF sy-subrc EQ 0.
IF itab_it-advalii NE /pws/zycie003-advalii.
itab_it-advalii = /pws/zycie003-advalii.
MODIFY itab_it INDEX sy-tabix.
ENDIF.
...