Módulo: CÂMBIO IMPORTAÇÃO
Funcionalidade: Rotina de Pagamento
Data/Hora da Publicação: 30/03/2007 00:00:00
Data/Hora Última Alteração: 04/03/2010 13:40:50
Descrição da Nota: PROCESSAR BOLETO - DESPESAS - VALOR MI - JPY
Sintoma
Ao efetuar a Saída de Pagamento de um boleto de despesa-importação-regime caixa-fecha câmbio não, o
valor MI esta diferente do documento de origem, gerando variação cambial.
Solução
Fazer o cálculo do valor MI considerando fator de conversão, categoria da moeda e passar o mesmo ao
batch-input, gravando na tabela /pws/zycbt031, campo vlmi.
6.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 03371 Data: 30/03/2007 Hora: 17:56:21
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 03371
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00026
Agrupamento : 00156
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
PROCESSAR BOLETO - DESPESAS - VALOR MI - JPY
----------------------------------------------------------------------------------------------------
Palavras Chave:
PROCESSAR BOLETO DESPESAS VALOR MI SAÍDA DE PAGAMENTO
VARIAÇÃO CAMBIAL DIFERENÇA REAIS JPY
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/ZYCBN102
REPS /PWS/ZYCBR102
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCBN102
...
/pws/zycbt031-belnr_p = /pws/zycbt004-belnr.
/pws/zycbt031-dtcredpr = /pws/zycbt004-dtvencto.
IF NOT /pws/zycbt004-txcneg IS INITIAL.
/pws/zycbt031-kursf = /pws/zycbt004-txcneg.
ENDIF.
PERFORM calcula_vlmi
USING
/pws/zycbt004-vlme
/pws/zycbt004-waers
/pws/zycbt031-kursf
* >> Início da inclusão: FORM DADOS_BATCH_DESPESA
'M'
sy-datum
* << Fim da inclusão
CHANGING
/pws/zycbt031-vlmi.
SELECT SINGLE * FROM bkpf
WHERE belnr = /pws/zycbt004-belnr
AND bukrs = /pws/zycbt004-bukrs
AND gjahr = /pws/zycbt004-dtincl(4).
IF sy-subrc = 0.
IF bkpf-bstat = 'V'.
/pws/zycbt031-statusp = 'P'.
ELSEIF bkpf-bstat = ' '.
...
...
/pws/zycbt031-belnr_p = wa_despesa-belnr.
/pws/zycbt031-dtcredpr = wa_despesa-dtincl.
IF NOT wa_despesa-txcneg IS INITIAL.
/pws/zycbt031-kursf = wa_despesa-txcneg.
ENDIF.
PERFORM calcula_vlmi
USING
wa_despesa-vlme
wa_despesa-waers
/pws/zycbt031-kursf
* >> Início da inclusão: FORM DADOS_BATCH_DESPESA
'M'
sy-datum
* << Fim da inclusão
CHANGING
/pws/zycbt031-vlmi.
SELECT SINGLE * FROM bkpf
WHERE belnr = wa_despesa-belnr
AND bukrs = wa_despesa-bukrs
AND gjahr = wa_despesa-dtincl(4).
IF sy-subrc = 0.
IF bkpf-bstat = 'V'.
/pws/zycbt031-statusp = 'P'.
ELSEIF bkpf-bstat = ' '.
...
...
v_datalanc
p_wa_despesa-txcneg
wa_zycbt011-bukrs
CHANGING v_taxa
v_sai.
IF v_sai EQ 'X'.
EXIT.
ENDIF.
itab_zycbe033-kursf = v_taxa.
v_taxacambial = v_taxa.
* >> Início da inclusão: FORM DADOS_BATCH_DESPESA
v_ftaxa = wa_zycbt011-ctmoed.
* << Fim da inclusão
ELSE.
SELECT SINGLE * FROM /pws/zycbt009
WHERE codpadr EQ p_wa_despesa-ftaxa.
v_ftaxa = /pws/zycbt009-kurst.
PERFORM obtem_taxa_cambial.
itab_zycbe033-kursf = v_taxacambial.
* >> Início da inclusão: FORM DADOS_BATCH_DESPESA
v_ftaxa = p_wa_despesa-ftaxa.
* << Fim da inclusão
ENDIF.
...
...
v_datalanc
p_wa_despesa-kursf
wa_zycbt011-bukrs
CHANGING v_taxa
v_sai.
IF v_sai EQ 'X'.
EXIT.
ENDIF.
itab_zycbe033-kursf = v_taxa.
v_taxacambial = v_taxa.
* >> Início da inclusão: FORM DADOS_BATCH_DESPESA
v_ftaxa = wa_zycbt011-ctmoed.
* << Fim da inclusão
ELSE.
SELECT SINGLE * FROM /pws/zycbt009
WHERE codpadr EQ p_wa_despesa-ftaxa.
v_ftaxa = /pws/zycbt009-kurst.
PERFORM obtem_taxa_cambial.
itab_zycbe033-kursf = v_taxacambial.
* >> Início da inclusão: FORM DADOS_BATCH_DESPESA
v_ftaxa = p_wa_despesa-ftaxa.
* << Fim da inclusão
ENDIF.
...
...
itab_zycbe033-d_kostl = p_wa_despesa-kostl.
itab_zycbe033-d_prctr = p_wa_despesa-prctr.
itab_zycbe033-d_fipos = p_wa_despesa-fipos.
itab_zycbe033-d_fictr = p_wa_despesa-fictr.
itab_zycbe033-c_gsber = p_wa_despesa-gsber.
itab_zycbe033-c_kostl = p_wa_despesa-kostl.
itab_zycbe033-c_prctr = p_wa_despesa-prctr.
itab_zycbe033-c_fipos = p_wa_despesa-fipos.
itab_zycbe033-c_fictr = p_wa_despesa-fictr.
itab_zycbe033-werks = p_wa_despesa-werks.
* >> Início da inclusão: FORM DADOS_BATCH_DESPESA
clear bkpf.
IF itab_selreg_aux-frpagto EQ 'C' AND
( itab_selreg_aux-fmd EQ 'ID' OR
itab_selreg_aux-fmd EQ 'CD' ).
SELECT SINGLE * FROM bkpf
WHERE belnr = wa_despesa-belnrdesp
AND bukrs = wa_despesa-bukrs
AND gjahr = wa_despesa-dtincl(4).
IF sy-subrc = 0.
itab_zycbe033-kursf = bkpf-kursf.
ENDIF.
ENDIF.
PERFORM calcula_vlmi
USING
itab_zycbe033-wrbtr
itab_zycbe033-waers
itab_zycbe033-kursf
v_ftaxa
v_datalanc
CHANGING
itab_zycbe033-dmbtr.
* << Fim da inclusão
APPEND itab_zycbe033.
IF itab_selreg_aux-frpagto = 'C'.
CLEAR itab_zycbt034.
ENDIF.
IF /pws/zycbt031-frgzu = '2'.
LOOP AT itab_zycbt034.
MESSAGE i016 WITH itab_zycbt034-descricao.
PERFORM limpa_selreg.
PERFORM retorna_flag.
ENDLOOP.
...
...
tpmsg = 'S'.
IF sy-subrc = 0.
PERFORM get_zycbt031.
/pws/zycbt031-belnr_p = itab_zycbt032-belnr.
/pws/zycbt031-statusp = 'C'.
IF /pws/zycbt031-dtcredpr = '00000000' OR
/pws/zycbt031-dtcredpr = ' '.
/pws/zycbt031-dtcredpr = wa_despesa-dtincl.
ENDIF.
/pws/zycbt031-kursf = itab_zycbe033-kursf.
* >> Início da exclusão: FORM DADOS_BATCH_DESPESA
/pws/zycbt031-vlmi = itab_zycbe033-wrbtr *
itab_zycbe033-kursf.
* << Fim da exclusão
* >> Início da inclusão: FORM DADOS_BATCH_DESPESA
/pws/zycbt031-vlmi = itab_zycbe033-dmbtr.
* << Fim da inclusão
MODIFY /pws/zycbt031 FROM /pws/zycbt031.
IF sy-subrc = 0.
MESSAGE i061 WITH text-109 /pws/zycbe031-nrseq
text-107.
IF NOT sy-binpt IS INITIAL.
IMPORT itab_boleto[] FROM MEMORY ID 'AGIL'.
itab_boleto-nrseq = /pws/zycbt031-nrseq.
APPEND itab_boleto.
EXPORT itab_boleto[] TO MEMORY ID 'AGIL'.
ENDIF.
...
...
PERFORM limpa_selreg.
PERFORM retorna_flag.
ENDIF.
ELSE.
PERFORM get_zycbt031.
IF /pws/zycbt031-dtcredpr = '00000000' OR
/pws/zycbt031-dtcredpr = ' '.
/pws/zycbt031-dtcredpr = wa_despesa-dtincl.
ENDIF.
/pws/zycbt031-kursf = itab_zycbe033-kursf.
* >> Início da exclusão: FORM DADOS_BATCH_DESPESA
/pws/zycbt031-vlmi = itab_zycbe033-wrbtr *
itab_zycbe033-kursf.
* << Fim da exclusão
* >> Início da inclusão: FORM DADOS_BATCH_DESPESA
/pws/zycbt031-vlmi = itab_zycbe033-dmbtr.
* << Fim da inclusão
MODIFY /pws/zycbt031 FROM /pws/zycbt031.
IF sy-subrc = 0.
MESSAGE i061 WITH text-109 /pws/zycbe031-nrseq text-107.
IF NOT sy-binpt IS INITIAL.
IMPORT itab_boleto[] FROM MEMORY ID 'AGIL'.
itab_boleto-nrseq = /pws/zycbt031-nrseq.
APPEND itab_boleto.
EXPORT itab_boleto[] TO MEMORY ID 'AGIL'.
ENDIF.
ENDIF.
...
...
( itab_selreg_aux-fmd EQ 'ID' OR
itab_selreg_aux-fmd EQ 'CD' ).
/pws/zycbt118-belnr_p = wa_despesa-belnrdesp.
/pws/zycbt118-dtpagto = v_datalanc.
UPDATE /pws/zycbt118 SET statusp = /pws/zycbt118-statusp
belnr_p = /pws/zycbt118-belnr_p
dtpagto = /pws/zycbt118-dtpagto
WHERE nrseq = itab_selreg_aux-nrchave.
PERFORM get_zycbt031.
/pws/zycbt031-belnr_p = wa_despesa-belnrdesp.
* >> Início da exclusão: FORM DADOS_BATCH_DESPESA
SELECT SINGLE * FROM bkpf
WHERE belnr = wa_despesa-belnrdesp
AND bukrs = wa_despesa-bukrs
AND gjahr = wa_despesa-dtincl(4).
IF sy-subrc = 0.
* << Fim da exclusão
* >> Início da inclusão: FORM DADOS_BATCH_DESPESA
if not bkpf is initial.
* << Fim da inclusão
IF bkpf-bstat = 'V'.
/pws/zycbt031-statusp = 'P'.
ELSEIF bkpf-bstat = ' '.
/pws/zycbt031-statusp = 'C'.
ENDIF.
IF /pws/zycbt031-dtcredpr = '00000000' OR
/pws/zycbt031-dtcredpr = ' '.
/pws/zycbt031-dtcredpr = wa_despesa-dtincl.
ENDIF.
/pws/zycbt031-kursf = bkpf-kursf.
* >> Início da exclusão: FORM DADOS_BATCH_DESPESA
/pws/zycbt031-vlmi = itab_zycbe033-wrbtr *
bkpf-kursf.
* << Fim da exclusão
* >> Início da inclusão: FORM DADOS_BATCH_DESPESA
/pws/zycbt031-vlmi = itab_zycbe033-dmbtr.
* << Fim da inclusão
ENDIF.
MODIFY /pws/zycbt031 FROM /pws/zycbt031.
v_boleto = /pws/zycbe031-nrseq.
IF sy-subrc = 0.
MESSAGE i061 WITH text-109 v_boleto text-107.
IF NOT sy-binpt IS INITIAL.
IMPORT itab_boleto[] FROM MEMORY ID 'AGIL'.
itab_boleto-nrseq = /pws/zycbt031-nrseq.
APPEND itab_boleto.
EXPORT itab_boleto[] TO MEMORY ID 'AGIL'.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCBR102
...
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
FORM calcula_vlmi
USING
value(p_vlme) TYPE /pws/zycbt031-vlme
value(p_waers) TYPE /pws/zycbt031-waers
value(p_taxa) TYPE /pws/zycbt031-kursf
* >> Início da inclusão: FORM CALCULA_VLMI
value(p_ctmoeda) TYPE /pws/zycbt011-ctmoed
value(p_data) type sy-datum
* << Fim da inclusão
CHANGING p_vlmi TYPE /pws/zycbt031-vlmi.
DATA: v_vlmeaux TYPE /pws/zycbt031-vlme,
v_ctmoed TYPE /pws/zycbt011-ctmoed,
v_dfact TYPE tcurr-ffact,
v_pfact TYPE tcurr-ffact,
v_currdec TYPE tcurx-currdec.
* >> Início da exclusão: FORM CALCULA_VLMI
v_ctmoed = 'M'.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_VLMI
SELECT SINGLE kurst FROM /pws/zycbt009 INTO v_ctmoed
WHERE codpadr = p_ctmoeda.
IF sy-subrc NE 0 OR v_ctmoed IS INITIAL.
v_ctmoed = p_ctmoeda.
ENDIF.
* << Fim da inclusão
CALL FUNCTION '/PWS/ZYCB_MONTANTE_CONVERTE'
EXPORTING
i_montante = p_vlme
i_demoeda = p_waers
i_paramoeda = /pws/zycbt007-waersb
i_ctmoeda = v_ctmoed
* >> Início da exclusão: FORM CALCULA_VLMI
i_dtbase = sy-datum
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_VLMI
i_dtbase = p_data
* << Fim da inclusão
IMPORTING
e_defator = v_dfact
e_parafator = v_pfact
TABLES
t_ctgmoeda = itab_zycbt009
EXCEPTIONS
i_demoeda_nao_encontrado = 1
i_paramoeda_nao_encontrado = 2
fator_nao_encontrado = 3
i_ctmoeda_nao_encontrado = 4
...