CE PLUS - Nota 006105

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.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

ASSOCIAÇÃO DE FATURAS - MOEDAS DIFERENTES - DIFERENÇA EM REAIS

ASSOCIAÇÃO DE FATURAS - ATUALIZAÇÃO INCORRETA DATA E DOCTO DE ASSOCIAÇÃO

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.

...