Módulo: CÂMBIO IMPORTAÇÃO
Funcionalidade: Associação
Data/Hora da Publicação: 04/03/2008 00:00:00
Data/Hora Última Alteração: 18/02/2011 09:54:50
Descrição da Nota: ASSOCIAÇÃO DE FINANCIAMENTO - ARBITRAGEM
Sintoma
O programa não faz o clearing da associação quando existe arbitragem.
Solução
Ajustada a busca e calculo das taxas.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 06105 Data: 04/03/2008 Hora: 22:06:04
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 06105
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00004
Agrupamento : 00037
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
04552 - 00001 - 7.0 - 00002 - ASSOCIAÇÃO DE FATURAS - MOEDAS DIFERENTES - DIFERENÇA EM REAIS
04588 - 00002 - 7.0 - 00002 - ASSOCIAÇÃO DE FATURAS - ATUALIZAÇÃO INCORRETA DATA E DOCTO DE ASS
----------------------------------------------------------------------------------------------------
ASSOCIAÇÃO DE FINANCIAMENTO - ARBITRAGEM
----------------------------------------------------------------------------------------------------
Palavras Chave:
ASSOCIAÇÃO DE FINANCIAMENTO - ARBITRAGEM
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/LZYCMGF2F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYCMGF2F01
...
v_ok = ' '.
ENDIF.
ENDIF.
CLEAR: v_sempartida, v_saldototal.
ENDFORM.
FORM calcula_diferenca_reais.
DATA :
v_wrbtr(16) TYPE p,
v_wrbtr_c(16) TYPE c,
v_budat TYPE bkpf-budat,
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
v_codeven LIKE /pws/zycbt011-codeven,
* << Fim da inclusão
v_reais_fi LIKE /pws/zycbt112-vlme,
v_reais_fa LIKE /pws/zycbt112-vlme.
CLEAR: t001a, v_reais_fi_rateio, v_reais_fi, v_wrbtr, v_wrbtr_c.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
CONCATENATE '001' /pws/zycbe112-codint INTO v_codeven.
CLEAR /pws/zycbt011-agums.
SELECT SINGLE * FROM /pws/zycbt011
INTO /pws/zycbt011
WHERE codeven EQ v_codeven
AND codmod EQ 'I'.
IF /pws/zycbe112-bco_forn IS INITIAL.
CLEAR lfb1.
SELECT SINGLE akont FROM lfb1
INTO lfb1-akont
WHERE lifnr EQ /pws/zycbe112-lifnr
AND bukrs EQ /pws/zycbe112-bukrs.
ELSE.
CLEAR lfb1.
SELECT SINGLE akont FROM lfb1
INTO lfb1-akont
WHERE lifnr EQ /pws/zycbe112-bcofinan
AND bukrs EQ /pws/zycbe112-bukrs.
ENDIF.
CLEAR t074.
SELECT SINGLE skont FROM t074
INTO t074-skont
WHERE ktopl EQ wa_zycbt007-plcontas
AND koart EQ 'K'
AND umskz EQ /pws/zycbt011-agums
AND hkont EQ lfb1-akont.
CLEAR skb1.
SELECT SINGLE xsalh FROM skb1
INTO skb1-xsalh
WHERE bukrs EQ /pws/zycbe112-bukrs
AND saknr EQ t074-skont.
CLEAR t001a.
SELECT SINGLE kurst FROM t003
INTO t001a-kurst
WHERE blart = /pws/zycbt011-blart.
IF t001a-kurst IS INITIAL.
* << Fim da inclusão
SELECT SINGLE kurst FROM t001a
INTO t001a-kurst
WHERE bukrs EQ /pws/zycbe112-bukrs.
* >> Início da exclusão: FORM CALCULA_DIFERENCA_REAIS
IF NOT itab_zycmt020[] IS INITIAL.
LOOP AT itab_zycmt020.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
ENDIF.
CLEAR t001.
SELECT SINGLE xslta FROM t001
INTO t001-xslta
WHERE bukrs = /pws/zycbe112-bukrs.
IF NOT skb1-xsalh IS INITIAL OR
NOT t001-xslta IS INITIAL.
CLEAR bkpf.
SELECT SINGLE kursf FROM bkpf
INTO bkpf-kursf
WHERE belnr EQ itab_zycbt131-belnr_rfin
AND bukrs EQ /pws/zycbe112-bukrs
AND gjahr EQ itab_zycbe033-budat(4).
IF NOT bkpf-kursf IS INITIAL AND
NOT bkpf-kursf EQ '0.00000'.
* << Fim da inclusão
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
date = itab_zycbe033-budat
* >> Início da exclusão: FORM CALCULA_DIFERENCA_REAIS
foreign_amount = itab_zycmt020-vlassoc
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
foreign_amount = itab_zycbt131-vlmefin
* << Fim da inclusão
foreign_currency = /pws/zycbe112-waers
local_currency = wa_zycbt007-waersb
* >> Início da exclusão: FORM CALCULA_DIFERENCA_REAIS
type_of_rate = t001a-kurst
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
rate = bkpf-kursf
* << Fim da inclusão
IMPORTING
local_amount = v_wrbtr.
* >> Início da exclusão: FORM CALCULA_DIFERENCA_REAIS
WRITE v_wrbtr TO v_wrbtr_c CURRENCY wa_zycbt007-waersb.
TRANSLATE v_wrbtr_c USING '. '.
CONDENSE v_wrbtr_c NO-GAPS.
TRANSLATE v_wrbtr_c USING ',.'.
v_reais_fi_rateio = v_wrbtr_c.
v_reais_fi = v_reais_fi + v_reais_fi_rateio.
CLEAR: v_wrbtr, v_wrbtr_c.
ENDLOOP.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
ENDIF.
* << Fim da inclusão
ELSE.
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
date = itab_zycbe033-budat
foreign_amount = itab_zycbt131-vlmefin
foreign_currency = /pws/zycbe112-waers
local_currency = wa_zycbt007-waersb
type_of_rate = t001a-kurst
IMPORTING
local_amount = v_wrbtr.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
ENDIF.
* << Fim da inclusão
WRITE v_wrbtr TO v_wrbtr_c CURRENCY wa_zycbt007-waersb.
TRANSLATE v_wrbtr_c USING '. '.
CONDENSE v_wrbtr_c NO-GAPS.
TRANSLATE v_wrbtr_c USING ',.'.
v_reais_fi = v_wrbtr_c.
* >> Início da exclusão: FORM CALCULA_DIFERENCA_REAIS
ENDIF.
CLEAR: t001a, v_reais_fa, v_wrbtr, v_wrbtr_c, v_budat.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
CLEAR lfb1.
SELECT SINGLE akont FROM lfb1
INTO lfb1-akont
WHERE lifnr EQ itab_zycbt108-lifnr
AND bukrs EQ /pws/zycbe112-bukrs.
CLEAR skb1.
SELECT SINGLE xsalh FROM skb1
INTO skb1-xsalh
WHERE bukrs EQ itab_zycbt108-bukrs
AND saknr EQ lfb1-akont.
IF t001a IS INITIAL.
* << Fim da inclusão
SELECT SINGLE kurst FROM t001a
INTO t001a-kurst
WHERE bukrs EQ itab_zycbt108-bukrs.
* >> Início da exclusão: FORM CALCULA_DIFERENCA_REAIS
IF NOT itab_zycbt108-dtassoc IS INITIAL.
v_budat = itab_zycbt108-dtassoc.
ELSEIF NOT itab_zycbt108-bldat IS INITIAL.
v_budat = itab_zycbt108-bldat.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
ENDIF.
CLEAR t001.
SELECT SINGLE xslta FROM t001
INTO t001-xslta
WHERE bukrs = itab_zycbt108-bukrs.
IF NOT skb1-xsalh IS INITIAL OR
NOT t001-xslta IS INITIAL.
CLEAR bkpf.
SELECT SINGLE kursf FROM bkpf
INTO bkpf-kursf
WHERE belnr EQ itab_zycbt131-belnr_rfat
AND bukrs EQ itab_zycbt108-bukrs
AND gjahr EQ itab_zycbe033-budat(4).
IF NOT bkpf-kursf IS INITIAL AND
NOT bkpf-kursf EQ '0.00000'.
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
date = itab_zycbe033-budat
foreign_amount = itab_zycbt131-vlme
foreign_currency = itab_zycbt108-waers
local_currency = wa_zycbt007-waersb
type_of_rate = t001a-kurst
rate = bkpf-kursf
IMPORTING
local_amount = v_wrbtr.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
ELSE.
* << Fim da inclusão
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
* >> Início da exclusão: FORM CALCULA_DIFERENCA_REAIS
date = v_budat
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
date = itab_zycbe033-budat
* << Fim da inclusão
foreign_amount = itab_zycbt131-vlme
foreign_currency = itab_zycbt108-waers
local_currency = wa_zycbt007-waersb
type_of_rate = t001a-kurst
IMPORTING
local_amount = v_wrbtr.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
ENDIF.
* << Fim da inclusão
WRITE v_wrbtr TO v_wrbtr_c CURRENCY wa_zycbt007-waersb.
...