Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Nota Fiscal
Data/Hora da Publicação: 17/12/2007 00:00:00
Data/Hora Última Alteração: 23/02/2011 09:15:54
Descrição da Nota: AJUST. DO RATEIO DAS DESPESAS NA NF E A GRAVAÇÃO DO FRETE NA DSI
Sintoma
O rateio das despesas na nota fisccal está diferente da DI.
A nota fiscal está lançando o valor do frete negativo o ultimo item.
Solução
Corrigir rateio para converter o valor de todos os itens para a mesma moeda para efetuar o rateio
das despesas.
Corrir DSI para gravar o valor correto na tabela /pws/zycit085
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 05481 Data: 17/12/2007 Hora: 15:35:15
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 05481
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00003
Agrupamento : 00028
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
01848 - 00001 - 6.0 - 00024 - NA NOTA FISCAL TEXTO MENSAGEM NÃO ESTÁ LEVANDO A TAXA SISCOMEX E
02972 - 00002 - 6.0 - 00026 - APRESENTAR MENSAGEM NA NOTA FISCAL DE "VALOR ICMS: DIFERIDO"
03638 - 00003 - 7.0 - 00001 - RATEIO DO FRETE DA DI NO CUSTO EFETIVO E NA CRIAÇÃO DA NOTA FISCA
05011 - 00004 - 7.0 - 00003 - ERRO NO RATEIO DE DESPESAS DA DI AO FAZER A NF
05435 - 00005 - 7.0 - 00003 - AJUSTE NO RATEIO DAS DESPESAS COM GRANEL
----------------------------------------------------------------------------------------------------
AJUST. DO RATEIO DAS DESPESAS NA NF E A GRAVAÇÃO DO FRETE NA DSI
----------------------------------------------------------------------------------------------------
Palavras Chave:
RATEIO - DESPESAS - FRETE - NOTA - FISCAL - NF - DSI
/PWS/SAPMZYCI016 - /PWS/SAPMZYCI058 - /PWS/ZYCIR006
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI016F01
REPS /PWS/MZYCI058F01
REPS /PWS/ZYCIR006
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI016F01
...
v_valor_r TYPE /pws/zycit100-vlii,
v_ind TYPE i,
v_descr LIKE /pws/zycit027-descr,
v_vldp_x(15) TYPE c,
v_cont TYPE i,
v_vlpis LIKE /pws/zycit100-vlpis ,
v_vlcofins LIKE /pws/zycit100-vlcofins,
v_idx LIKE sy-tabix ,
v_vldp_aux LIKE /pws/zycit049-vldp ,
v_lin(3) ,
* >> Início da inclusão: FORM MENSAGENS_NF
v_taxa TYPE /pws/zycit085-ukursfob,
* << Fim da inclusão
v_lin2(3) ,
v_txtkey LIKE thead-tdname.
CLEAR v_icms_dif.
FREE it_zycee006.
SELECT SINGLE * FROM /pws/zycit001 INTO wa_zycit001
WHERE nrseq = itab_zycit042-nrseq.
SELECT SINGLE * FROM /pws/zycbt007
WHERE bukrs EQ wa_zycit001-bukrs.
CLEAR: v_nrdi, v_dtreg, v_landx, v_impim, v_despace, v_nrseqm.
IF itab_zycit085[] IS INITIAL.
...
...
AND codigo = itab_zycit020-codigo
AND land1 EQ t001-land1.
ENDIF.
CLEAR: v_tot_ntgew, v_tot_plan, v_tot_real.
LOOP AT itab_zycit003.
IF NOT itab_zycit003-qtd_itend IS INITIAL.
v_tot_ntgew = v_tot_ntgew + itab_zycit003-ntgew.
ELSE.
v_tot_ntgew = v_tot_ntgew + itab_zycit003-ntgew.
ENDIF.
* >> Início da inclusão: FORM MENSAGENS_NF
IF itab_zycit085-waersfob NE itab_zycit003-waers.
PERFORM taxa_converte USING itab_zycit003-waers
itab_zycit085-dttax
CHANGING v_taxa.
IF NOT v_taxa IS INITIAL.
itab_zycit003-vlreal = itab_zycit003-vlreal * v_taxa.
itab_zycit003-netpr = itab_zycit003-netpr * v_taxa.
ENDIF.
PERFORM taxa_converte USING itab_zycit085-waersfob
itab_zycit085-dttax
CHANGING v_taxa.
IF NOT v_taxa IS INITIAL.
itab_zycit003-netpr = itab_zycit003-netpr / v_taxa .
itab_zycit003-vlreal = itab_zycit003-vlreal / v_taxa .
ENDIF.
ENDIF.
* << Fim da inclusão
v_tot_plan = v_tot_plan +
( itab_zycit003-netpr * itab_zycit003-qtd_iten ).
v_tot_real = v_tot_real +
( itab_zycit003-vlreal * itab_zycit003-qtd_iten ).
ENDLOOP.
DESCRIBE TABLE itab_zycit042 LINES v_lines.
DESCRIBE TABLE itab_zycit003 LINES v_lin.
LOOP AT itab_zycit049_aux_r WHERE nrseq = v_nrseq AND
vldp NE 0.
it_zycee006-indice = v_ind.
...
...
itab_zycit049_aux_r-vldp.
PERFORM taxa_converte USING itab_zycit049_aux_r-waers
/pws/zycit085-dttax
CHANGING v_taxa_desp.
itab_zycit049_aux_r-vldp = itab_zycit049_aux_r-vldp *
v_taxa_desp.
ENDIF.
v_vldp_aux = itab_zycit049_aux_r-vldp.
LOOP AT itab_zycit003_mark.
v_idx = sy-tabix.
* >> Início da inclusão: FORM MENSAGENS_NF
IF itab_zycit085-waersfob NE itab_zycit003_mark-waers.
PERFORM taxa_converte USING itab_zycit003_mark-waers
itab_zycit085-dttax
CHANGING v_taxa.
IF NOT v_taxa IS INITIAL.
itab_zycit003_mark-vlreal =
itab_zycit003_mark-vlreal * v_taxa.
itab_zycit003_mark-netpr =
itab_zycit003_mark-netpr * v_taxa.
ENDIF.
PERFORM taxa_converte USING itab_zycit085-waersfob
itab_zycit085-dttax
CHANGING v_taxa.
IF NOT v_taxa IS INITIAL.
itab_zycit003_mark-netpr =
itab_zycit003_mark-netpr / v_taxa .
itab_zycit003_mark-vlreal =
itab_zycit003_mark-vlreal / v_taxa .
ENDIF.
ENDIF.
* << Fim da inclusão
CLEAR: itab_zycit039, itab_zycit020.
READ TABLE itab_zycit019 WITH KEY
tpdesp = itab_zycit049_aux_r-tpdesp.
IF sy-subrc EQ 0.
READ TABLE itab_zycit020 WITH KEY codigo = itab_zycit019-codigo
regio = itab_zycit019-regio.
READ TABLE itab_zycit039 WITH KEY
codigo = itab_zycit019-codigo.
IF sy-subrc EQ 0.
IF v_idx EQ v_lines.
...
...
LOOP AT it_zycet004.
MESSAGE i019 WITH it_zycet004-descricao.
ENDLOOP.
ENDIF.
CLEAR v_modo_bi.
ENDFORM.
FORM seleciona_despesas.
DATA:
v_vldp LIKE /pws/zycit049-vldp,
v_totitem LIKE /pws/zycit042-netpr,
* >> Início da inclusão: FORM SELECIONA_DESPESAS
v_taxa TYPE /pws/zycit085-ukursfob,
* << Fim da inclusão
v_tot_vldp LIKE /pws/zycit049-vldp,
v_tot_ntgew LIKE /pws/zycit003-ntgew.
DATA:
v_vlfre LIKE /pws/zycit085-vlfre,
v_vlseg LIKE /pws/zycit085-vlseg.
PERFORM verifica_filial.
IF t001 IS INITIAL OR /pws/zycit000 IS INITIAL.
SELECT SINGLE * FROM t001 WHERE bukrs = /pws/zycie041-bukrs.
SELECT SINGLE * FROM /pws/zycit000 WHERE land1 EQ t001-land1.
ENDIF.
...
...
IF NOT itab_zycit019[] IS INITIAL.
SELECT * FROM /pws/zycit049
INTO TABLE itab_zycit049_a
FOR ALL ENTRIES IN itab_zycit019
WHERE nrseq = /pws/zycie041-nrseq
AND vldp > 0
AND tpdesp = itab_zycit019-tpdesp.
ENDIF.
DESCRIBE TABLE itab_zycit042_d LINES v_lines.
CLEAR: v_tot_ntgew, v_tot_plan, v_tot_real.
* >> Início da inclusão: FORM SELECIONA_DESPESAS
READ TABLE itab_zycit085 INDEX 1.
* << Fim da inclusão
LOOP AT itab_zycit003.
v_tot_ntgew = v_tot_ntgew + itab_zycit003-ntgew.
* >> Início da inclusão: FORM SELECIONA_DESPESAS
IF itab_zycit085-waersfob NE itab_zycit003-waers.
PERFORM taxa_converte USING itab_zycit003-waers
itab_zycit085-dttax
CHANGING v_taxa.
IF NOT v_taxa IS INITIAL.
itab_zycit003-vlreal =
itab_zycit003-vlreal * v_taxa.
itab_zycit003-netpr =
itab_zycit003-netpr * v_taxa.
ENDIF.
PERFORM taxa_converte USING itab_zycit085-waersfob
itab_zycit085-dttax
CHANGING v_taxa.
IF NOT v_taxa IS INITIAL.
itab_zycit003-netpr =
itab_zycit003-netpr / v_taxa .
itab_zycit003-vlreal =
itab_zycit003-vlreal / v_taxa .
ENDIF.
ENDIF.
* << Fim da inclusão
v_tot_plan = v_tot_plan +
( itab_zycit003-netpr * itab_zycit003-qtd_iten ).
v_tot_real = v_tot_real +
( itab_zycit003-vlreal * itab_zycit003-qtd_iten ).
ENDLOOP.
LOOP AT itab_zycit049_a.
IF itab_zycit049_a-tpdesp NE /pws/zycit000-cod_sisc OR
/pws/zycit000-flag_txsisc IS INITIAL OR
/pws/zycit001-tpdecl = 'DSI'.
CLEAR: v_tot_vldp, v_vldp.
LOOP AT itab_zycit042_d.
MOVE sy-tabix TO v_tabix.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_zycit042_d-nrseq
ebeln = itab_zycit042_d-ebeln
ebelp = itab_zycit042_d-ebelp.
* >> Início da inclusão: FORM SELECIONA_DESPESAS
IF itab_zycit085-waersfob NE itab_zycit003-waers.
PERFORM taxa_converte USING itab_zycit003-waers
itab_zycit085-dttax
CHANGING v_taxa.
IF NOT v_taxa IS INITIAL.
itab_zycit003-vlreal =
itab_zycit003-vlreal * v_taxa.
itab_zycit003-netpr =
itab_zycit003-netpr * v_taxa.
ENDIF.
PERFORM taxa_converte USING itab_zycit085-waersfob
itab_zycit085-dttax
CHANGING v_taxa.
IF NOT v_taxa IS INITIAL.
itab_zycit003-netpr =
itab_zycit003-netpr / v_taxa .
itab_zycit003-vlreal =
itab_zycit003-vlreal / v_taxa .
ENDIF.
ENDIF.
* << Fim da inclusão
CLEAR: itab_zycit039, itab_zycit020, itab_zycit019.
READ TABLE itab_zycit019 WITH KEY
tpdesp = itab_zycit049_a-tpdesp.
IF itab_zycit019-tipo EQ 'A' OR
itab_zycit019-tipo IS INITIAL.
READ TABLE itab_zycit020 WITH KEY
codigo = itab_zycit019-codigo.
READ TABLE itab_zycit039 WITH KEY
codigo = itab_zycit020-codigo.
IF itab_zycit049_a-waers NE /pws/zycbt007-waersb.
...
...
IF itab_zycit049-tpdesp NE /pws/zycit000-cod_sisc OR
/pws/zycit000-flag_txsisc IS INITIAL OR
/pws/zycit001-tpdecl = 'DSI'.
CLEAR: v_tot_vldp, v_vldp.
LOOP AT itab_zycit042.
MOVE sy-tabix TO v_tabix.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_zycit042-nrseq
ebeln = itab_zycit042-ebeln
ebelp = itab_zycit042-ebelp.
* >> Início da inclusão: FORM SELECIONA_DESPESAS
IF itab_zycit085-waersfob NE itab_zycit003-waers.
PERFORM taxa_converte USING itab_zycit003-waers
itab_zycit085-dttax
CHANGING v_taxa.
IF NOT v_taxa IS INITIAL.
itab_zycit003-vlreal =
itab_zycit003-vlreal * v_taxa.
itab_zycit003-netpr =
itab_zycit003-netpr * v_taxa.
ENDIF.
PERFORM taxa_converte USING itab_zycit085-waersfob
itab_zycit085-dttax
CHANGING v_taxa.
IF NOT v_taxa IS INITIAL.
itab_zycit003-netpr =
itab_zycit003-netpr / v_taxa .
itab_zycit003-vlreal =
itab_zycit003-vlreal / v_taxa .
ENDIF.
ENDIF.
* << Fim da inclusão
CLEAR: itab_zycit039, itab_zycit020, itab_zycit019.
READ TABLE itab_zycit019 WITH KEY
tpdesp = itab_zycit049-tpdesp.
IF itab_zycit019-tipo EQ 'A' OR
itab_zycit019-tipo IS INITIAL.
READ TABLE itab_zycit020 WITH KEY
codigo = itab_zycit019-codigo.
READ TABLE itab_zycit039 WITH KEY
codigo = itab_zycit020-codigo.
IF itab_zycit049-waers NE /pws/zycbt007-waersb.
...
...
IF itab_zycit049-tpdesp NE /pws/zycit000-cod_sisc OR
/pws/zycit000-flag_txsisc IS INITIAL OR
/pws/zycit001-tpdecl = 'DSI'.
CLEAR: v_tot_vldp, v_vldp.
LOOP AT itab_zycit042_d.
MOVE sy-tabix TO v_tabix.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_zycit042_d-nrseq
ebeln = itab_zycit042_d-ebeln
ebelp = itab_zycit042_d-ebelp.
* >> Início da inclusão: FORM SELECIONA_DESPESAS
IF itab_zycit085-waersfob NE itab_zycit003-waers.
PERFORM taxa_converte USING itab_zycit003-waers
itab_zycit085-dttax
CHANGING v_taxa.
IF NOT v_taxa IS INITIAL.
itab_zycit003-vlreal =
itab_zycit003-vlreal * v_taxa.
itab_zycit003-netpr =
itab_zycit003-netpr * v_taxa.
ENDIF.
PERFORM taxa_converte USING itab_zycit085-waersfob
itab_zycit085-dttax
CHANGING v_taxa.
IF NOT v_taxa IS INITIAL.
itab_zycit003-netpr =
itab_zycit003-netpr / v_taxa .
itab_zycit003-vlreal =
itab_zycit003-vlreal / v_taxa .
ENDIF.
ENDIF.
* << Fim da inclusão
CLEAR: itab_zycit039, itab_zycit020, itab_zycit019.
READ TABLE itab_zycit019 WITH KEY
tpdesp = itab_zycit049-tpdesp.
IF itab_zycit019-tipo EQ 'A' OR
itab_zycit019-tipo IS INITIAL.
READ TABLE itab_zycit020 WITH KEY
codigo = itab_zycit019-codigo.
READ TABLE itab_zycit039 WITH KEY
codigo = itab_zycit020-codigo.
IF itab_zycit049-waers NE /pws/zycbt007-waersb.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI058F01
...
vlseg vlfre vlfob baseii vlii baseipi vlipi baseicms vlicms
vlfre_me vlseg_me vldiffob frn vlmerc_ad vlpis basepis
vlcofins basecofins.
ENDLOOP.
/pws/zycie085-vlfob = v_tval2.
/pws/zycie085-vlfobr = s_fbvr.
IF s_inco1_ci EQ 'FOB'.
/pws/zycie085-vlfre = v_bltofat.
ENDIF.
/pws/zycie085-waersfre = /pws/zycie093-waersfre.
* >> Início da exclusão: FORM CALC_ITAB
SELECT SINGLE * FROM tcurx WHERE currkey = /pws/zycie085-waersfre.
IF sy-subrc <> 0.
tcurx-currdec = 2.
ENDIF.
/pws/zycie085-vlfre = /pws/zycie085-vlfre * ( 10 ** ( tcurx-currdec -
2 ) ).
* << Fim da exclusão
IF v_dit = 'S' AND /pws/zycie093-meiotransp NE 'PS'.
t_vlii = /pws/zycie085-vlii.
t_vlipi = /pws/zycie085-vlipi.
t_vlicms = /pws/zycie085-vlicms.
ENDIF.
IF /pws/zycie100a-codregtri EQ '5'.
CLEAR: t_vlipi, t_tot.
ENDIF.
ENDFORM.
FORM adic_next.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCIR006
...
v_result LIKE /pws/zycit036-vldif,
v_resultf LIKE /pws/zycit036-vldif,
v_vlfre LIKE /pws/zycit085-vlfre,
v_ukursfre LIKE /pws/zycit085-ukursfre,
v_vlseg LIKE /pws/zycit085-vlseg,
v_ukursseg LIKE /pws/zycit085-ukursseg,
v_usd LIKE /pws/zycie085-ukursfob,
v_vl LIKE /pws/zycit036-netpr VALUE '0.01',
v_val_tot LIKE /pws/zycit036-vlreal ,
v_val_tot2 LIKE /pws/zycit036-vlreal ,
* >> Início da exclusão: FORM CALCULAR_OUTROS_CUSTOS
v_val_tots2 LIKE /pws/zycit036-vlreal ,
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULAR_OUTROS_CUSTOS
v_val_totf2 LIKE /pws/zycit100-vlfre ,
* << Fim da inclusão
v_val_tots LIKE /pws/zycit036-vlreal ,
v_linf TYPE i,
v_lins TYPE i,
v_ebeln TYPE /pws/zycit003-ebeln,
v_ebelp TYPE /pws/zycit003-ebelp,
v_tot_lins TYPE i,
v_tot_linf TYPE i,
v_valor_mi LIKE /pws/zycit036-vlreal,
v_val LIKE /pws/zycit100-vlseg ,
v_linha TYPE i.
...
...
LOOP AT itab_zycit036 WHERE nrseqori <> '9999999999' AND
codigo = itab_zycit140-codigo.
EXIT.
ENDLOOP.
IF sy-subrc = 0.
DELETE itab_zycit036 WHERE codigo = itab_zycit140-codigo AND
nrseqori = '9999999999'.
ENDIF.
ENDLOOP.
CLEAR: v_tot_linf, v_tot_lins, v_linf, v_lins.
* >> Início da inclusão: FORM CALCULAR_OUTROS_CUSTOS
CLEAR: v_val_totf2.
LOOP AT itab_zycit100.
v_val_totf2 = v_val_totf2 + itab_zycit100-vlfre.
ENDLOOP.
v_val_tot2 = v_val_totf2.
* << Fim da inclusão
SORT itab_zycit036 BY ebeln ebelp origem codigo.
LOOP AT itab_zycit036 WHERE codigo EQ 'FRETEI'
AND origem NE 'PED'.
READ TABLE itab_zycit140 WITH KEY codigo = itab_zycit036-codigo
origem = itab_zycit036-origem
custo = 'X'.
IF sy-subrc = 0.
v_tot_linf = v_tot_linf + 1.
IF itab_zycit036-origem = 'NF'.
v_ebeln = itab_zycit036-ebeln.
...
...
IF itab_zycit036-origem = 'NF'.
PERFORM retorna_decimais USING itab_zycit100-waersreal
CHANGING v_valor.
ELSE.
PERFORM retorna_decimais USING itab_zycit036-waers_real
CHANGING v_valor.
ENDIF.
IF itab_zycit036-origem = 'NF'
AND v_ebeln = itab_zycit036-ebeln
AND v_ebelp = itab_zycit036-ebelp.
* >> Início da exclusão: FORM CALCULAR_OUTROS_CUSTOS
IF itab_zycit036-origem = 'NF'.
v_val_tot2 = /pws/zycit085-vlfre * /pws/zycit085-ukursfre.
ENDIF.
* << Fim da exclusão
v_valor = v_val_tot2 - v_val_tot.
IF itab_zycit036-origem = 'NF'.
PERFORM retorna_decimais USING itab_zycit100-waersreal
CHANGING v_valor.
ELSE.
PERFORM retorna_decimais USING itab_zycit036-waers_real
CHANGING v_valor.
ENDIF.
ENDIF.
IF itab_zycit036-origem = 'NF'.
...