CE PLUS - Nota 000803

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Capitalização de Juros

Data/Hora da Publicação: 03/02/2006 00:00:00

Data/Hora Última Alteração: 18/02/2011 14:53:46

Descrição da Nota: CAPITALIZAÇÃO DE JUROS - GRAVAÇÃO DO DOCTO CONTÁBIL NA /PWS/ZYCBT002

Sintoma

1) Foi criado um contrato de pré pagamento e para esse contrato já efetuei o pagamento da primeira

parcela de juros corretamente pela rotina de pagamento. Voltei ao contrato e recalculei o valor dos

juros para a segunda parcela.

2) Criei uma capitalização de juros de ACE utilizando a segunda parcela de juros do contrato de pré

pagamento acima. Gravei a capitalização e o programa gravou corretamente a data de pagamento na

tabela 002 para a parcela 002 do contrato de pré pagamento.

3) Entrei em captação - modificar para informar os dados da captação, preenchi todos os dados e

mandei gravar. A contabilização foi feita corretamente, porém o programa não gravou o documento

contábil gerado na captação (BELNR da tabela 001) no Campo BELNR da tabela 002 para a parcela de

juros 002, portanto quando eu entro no contrato de pré pagamento para tentar recalcular a 3ª parcela

de juros, o programa não permite, pois entende que a 2ª parcela ainda não foi paga.

Ao gravar a captação para um contrato de ACE de Capitalização de juros, o programa deverá gravar o

documento gerado (Campo BELNR da Tabela 001) também na tabela /pws/zycbt002 - Campo BELNR para a

parcela de juros utilizada na capitalização.

 

 

Solução

Análise, ajustes e testes efetuados para os cenários de: (1) forma de pagamento específica para tipo

de contrato; (2) criação de contrato de pré-pagamento prevendo erros nas contabilizações; (3)

capitalização de parcela de juros do contrato de pré-pagamento.

 

Versões Tratadas

6.0

Informações Complementares

----------------------------------------------------------------------------------------------------

Nota Número 00803 Data: 03/02/2006 Hora: 14:11:53

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 00803

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 6.0

Pacote                   : 00022

Agrupamento              : 00099

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

----------------------------------------------------------------------------------------------------

CAPITALIZAÇÃO DE JUROS - GRAVAÇÃO DO DOCTO CONTÁBIL NA /PWS/ZYCBT002

----------------------------------------------------------------------------------------------------

Palavras Chave:

CAPITALIZAÇÃO JUROS GRAVAÇÃO DOCUMENTO CONTÁBIL /PWS/ZYCBT002

 

----------------------------------------------------------------------------------------------------

Objetos da nota:

REPS /PWS/MZYCB001F01

REPS /PWS/MZYCB001F04

REPS /PWS/MZYCB001I01

REPT /PWS/SAPMZYCB001

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCB001F01

 

...

          ENDIF.

        ENDIF.

        IF /pws/zycbe001-tpcontr(1) EQ 'T'.

          /pws/zycbe001-belnr_tr = itab_zycbt032-belnr.

        ENDIF.

* >> Início da inclusão: FORM FILL_DATE1_F02

        IF /pws/zycbe001-capital EQ 'X' AND

           /pws/zycbe001-tpcontr EQ 'E'.

          UPDATE /pws/zycbt217 SET nrcontr  = /pws/zycbe001-nrcontr

                                      bukrs = /pws/zycbe001-bukrs

                                    tpcontr = /pws/zycbe001-tpcontr

                                       vlme = /pws/zycbe001-vlme

                                      waers = /pws/zycbe001-waers

                            dtcapitalizacao = /pws/zycbe001-dtdesem

                                     dtent  = /pws/zycbe001-dtentr

                                  dtliquid  = /pws/zycbe001-dtliquid

                                      nrca  = /pws/zycbe001-nrca

                                WHERE nrseq = /pws/zycbe001-nrseqc.

          UPDATE /pws/zycbt218 SET belnr  = itab_zycbt032-belnr

                             WHERE nrseq  = /pws/zycbe001-nrseqc.

          SELECT * FROM /pws/zycbt218

             INTO TABLE itab_zycbt218

             WHERE nrseq = /pws/zycbe001-nrseqc.

          IF NOT itab_zycbt218[] IS INITIAL.

            SELECT * FROM /pws/zycbt002

               INTO TABLE itab_zycbt002_cap

               FOR ALL ENTRIES IN itab_zycbt218

               WHERE nrseqc = itab_zycbt218-nrseqc

                AND  nrparc = itab_zycbt218-nrparc

                AND  tpparc = itab_zycbt218-tpparc.

            IF NOT itab_zycbt002_cap[] IS INITIAL.

              LOOP AT itab_zycbt002_cap.

                itab_zycbt002_cap-belnr = itab_zycbt032-belnr.

                MODIFY itab_zycbt002_cap.

              ENDLOOP.

              MODIFY /pws/zycbt002 FROM TABLE itab_zycbt002_cap.

            ENDIF.

            SELECT * FROM /pws/zycbt004

                 INTO TABLE itab_zycbt004_cap

                 FOR ALL ENTRIES IN itab_zycbt218

                 WHERE nrseqc  = itab_zycbt218-nrseqc

                  AND  tpdesp  = 'J'

                  AND  nrparc  = itab_zycbt218-nrparc.

            IF NOT itab_zycbt004_cap[] IS INITIAL.

              LOOP AT itab_zycbt004_cap.

                itab_zycbt004_cap-belnr = itab_zycbt032-belnr.

                MODIFY itab_zycbt004_cap.

              ENDLOOP.

              MODIFY /pws/zycbt004 FROM TABLE itab_zycbt004_cap.

            ENDIF.

          ENDIF.

        ENDIF.

* << Fim da inclusão

        IF /pws/zycbe001-tpcontr(1) EQ 'C' OR

          /pws/zycbe001-tpcontr(1) EQ 'E'.

          SELECT * UP TO 1 ROWS

            FROM /pws/zycbt005

            WHERE nrseqc EQ /pws/zycbe001-nrseqc.

...

 

...

  PERFORM seleciona_zycbt002.

  LOOP AT itab_zycbt002p_ant.

    READ TABLE itab_zycbt002p WITH KEY

        belnr = itab_zycbt002p_ant-belnr.

    IF sy-subrc = 0.

* >> Início da exclusão: FORM SAVE_ZYCBT001_PRE

      IF itab_zycbt002p_ant-vlme NE itab_zycbt002p-vlme.

* << Fim da exclusão

* >> Início da inclusão: FORM SAVE_ZYCBT001_PRE

      IF itab_zycbt002p_ant-vlme NE itab_zycbt002p-vlme

        or itab_zycbt002p_ant-belnr is initial.

* << Fim da inclusão

        itab_zycbt002p-v_flag = 'A'.

        v_estorna = 'S'.

      ELSE.

        itab_zycbt002p-v_flag = 'O'.

      ENDIF.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCB001F04

 

...

ENDFORM.

FORM abre_parcelas_princ USING p_belnr.

  v_belnr_pt = p_belnr.

  CLEAR itab_contabil.

  REFRESH itab_contabil.

* >> Início da inclusão: FORM ABRE_PARCELAS_PRINC

  CLEAR v_erro_bi.

* << Fim da inclusão

  LOOP AT itab_zycbt002p.

* >> Início da inclusão: FORM ABRE_PARCELAS_PRINC

    CHECK v_erro_bi IS INITIAL.

* << Fim da inclusão

    PERFORM fill_date_1_f30.

...

 

...

                                    tpmsg  = 'E'.

          MESSAGE i015 WITH itab_zycbt032-msg+0(50)

                           itab_zycbt032-msg+50(50).

        ENDLOOP.

        MESSAGE i300 WITH itab_zycbt002p-nrseqc.

* >> Início da inclusão: FORM FILL_DATE_1_F30

        v_erro_bi = 'X'.

* << Fim da inclusão

      ENDIF.

    ELSE.

      LOOP AT itab_zycbt032 WHERE tcode  = 'F-30' AND

                                  tabela = '/PWS/ZYCBT002' AND

                               cpochv = /pws/zycbe001-nrseqc AND

                                  tpmsg  = 'E'.

        MESSAGE i015 WITH itab_zycbt032-msg+0(50)

                         itab_zycbt032-msg+50(50).

      ENDLOOP.

      MESSAGE i300 WITH itab_zycbt002p-nrseqc.

* >> Início da inclusão: FORM FILL_DATE_1_F30

      v_erro_bi = 'X'.

* << Fim da inclusão

    ENDIF.

* >> Início da inclusão: FORM FILL_DATE_1_F30

  ELSE.

    v_erro_bi = 'X'.

* << Fim da inclusão

  ENDIF.

ENDFORM.

FORM altera_cab_pt.

  DATA: v_prazo(4),

        v_gjahr      LIKE bsid-gjahr,

...

 

...

  CLEAR v_valor.

  PERFORM clear_date_batch.

  PERFORM get_parameters_001.

  FREE itab_partidas.

  PERFORM fill_date_f30_pt.

* >> Início da inclusão: FORM ALTERA_PARC_PT

  CLEAR: v_erro_bi, v_nrparc.

* << Fim da inclusão

  LOOP AT itab_zycbt002p WHERE v_flag = 'A'.

* >> Início da inclusão: FORM ALTERA_PARC_PT

    IF v_nrparc IS INITIAL.

      v_nrparc = itab_zycbt002p-nrparc.

    ENDIF.

* << Fim da inclusão

    READ TABLE itab_zycbt002p_ant WITH KEY

        belnr = itab_zycbt002p-belnr.

* >> Início da inclusão: FORM ALTERA_PARC_PT

    IF sy-subrc NE 0 OR itab_zycbt002p-belnr IS INITIAL.

      LOOP AT itab_zycbt002p_ant WHERE nrparc < itab_zycbt002p-nrparc.

      ENDLOOP.

    ENDIF.

* << Fim da inclusão

    v_valor = v_valor + itab_zycbt002p_ant-vlme.

    itab_partidas-tcode   = 'F-30'.

    itab_partidas-tabela  = '/PWS/ZYCBT002'.

    itab_partidas-cpochv  = itab_zycbe033-cpochv.

* >> Início da exclusão: FORM ALTERA_PARC_PT

    IF itab_zycbt002p-belnr2 IS INITIAL.

* << Fim da exclusão

* >> Início da inclusão: FORM ALTERA_PARC_PT

    IF     NOT itab_zycbt002p-belnr2 IS INITIAL.

      itab_partidas-belnr   = itab_zycbt002p-belnr2.

    ELSEIF NOT itab_zycbt002p-belnr IS INITIAL.

* << Fim da inclusão

      itab_partidas-belnr   = itab_zycbt002p-belnr.

* >> Início da inclusão: FORM ALTERA_PARC_PT

    ELSEIF NOT itab_zycbt002p_ant-belnr2 IS INITIAL.

      itab_partidas-belnr   = itab_zycbt002p_ant-belnr2.

    ELSEIF NOT itab_zycbt002p_ant-belnr IS INITIAL.

      itab_partidas-belnr   = itab_zycbt002p_ant-belnr.

    ELSEIF NOT /pws/zycbe001-belnr IS INITIAL.

      itab_partidas-belnr   = /pws/zycbe001-belnr.

    ENDIF.

    IF v_nrparc = '00001' AND itab_zycbt002p-belnr IS INITIAL.

      IF v_nrdias <= wa_zyglt009-nrdias_cp.

        v_prazo = 'S'.

* << Fim da inclusão

    ELSE.

* >> Início da exclusão: FORM ALTERA_PARC_PT

      itab_partidas-belnr   = itab_zycbt002p-belnr2.

* << Fim da exclusão

* >> Início da inclusão: FORM ALTERA_PARC_PT

        v_prazo = 'L'.

* << Fim da inclusão

    ENDIF.

    CONCATENATE /pws/zycbe001-tpcontr

* >> Início da inclusão: FORM ALTERA_PARC_PT

                  v_prazo INTO v_prazo

                        SEPARATED BY space.

    ELSE.

      CONCATENATE /pws/zycbe001-tpcontr

* << Fim da inclusão

                itab_zycbt002p_ant-przcontr INTO v_prazo

                      SEPARATED BY space.

* >> Início da inclusão: FORM ALTERA_PARC_PT

    ENDIF.

* << Fim da inclusão

    CALL FUNCTION '/PWS/ZYGL_READ_ACCOUNT_NUMBER'

         EXPORTING

              bukrs           = /pws/zycbe001-bukrs

              ktosl           = 'CPT'

              codaux1         = v_prazo

...

 

...

      READ TABLE itab_zycbt032 WITH KEY tcode  = 'F-30'

                                        tabela = '/PWS/ZYCBT002'

                                        cpochv = itab_zycbe033-cpochv

                                        tpmsg  = 'S'.

      IF sy-subrc EQ 0.

* >> Início da inclusão: FORM ALTERA_PARC_PT

        itab_zycbt002p-belnr  = itab_zycbt032-belnr.

        CLEAR itab_zycbt002p-belnr2.

        itab_zycbt002p-slvinc = itab_zycbt002p-vlme.

        MOVE: itab_zycbt032-belnr   TO itab_contabil-belnr,

              itab_zycbt002p-nrparc TO itab_contabil-nrparc,

              itab_zycbt002p-vlme   TO itab_contabil-vlme.

        APPEND itab_contabil.

        IF v_fechado = 'X' AND v_answer = 'J'.

          itab_zycbt002p-dtvincul  = sy-datum.

          IF itab_zycbt002p-dtcont IS INITIAL.

            itab_zycbt002p-dtcont  = sy-datum.

          ENDIF.

        ENDIF.

        itab_zycbt002p-v_flag = 'O'.

        MODIFY itab_zycbt002p

          TRANSPORTING slvinc belnr belnr2 dtvincul v_flag

          WHERE nrseqc = itab_zycbt002p-nrseqc

            AND nrparc = v_nrparc

            AND tpparc = itab_zycbt002p-tpparc.

* << Fim da inclusão

        PERFORM abre_parcelas_princ_alt USING itab_zycbt032-belnr.

      ELSE.

        LOOP AT itab_zycbt032 WHERE tcode  = 'F-30' AND

                                    tabela = '/PWS/ZYCBT002' AND

                                 cpochv = /pws/zycbe001-nrseqc AND

...

 

...

ENDFORM.

FORM abre_parcelas_princ_alt USING p_belnr.

  v_belnr_pt = p_belnr.

  LOOP AT itab_zycbt002p WHERE v_flag = 'A'

                            OR v_flag = 'I'.

* >> Início da inclusão: FORM ABRE_PARCELAS_PRINC_ALT

    CHECK v_erro_bi IS INITIAL.

* << Fim da inclusão

    PERFORM fill_date_1_f30.

  ENDLOOP.

ENDFORM.

FORM verifica_estrategia_liberacao.

  DATA: v_frgzu   LIKE /pws/zycbt031-frgzu,

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCB001I01

 

...

      DELETE itab_zycbt002p.

    ENDIF.

  ENDLOOP.

ENDMODULE.

MODULE juros_dp INPUT.

* >> Início da inclusão: MODULE JUROS_DP

  IF NOT /pws/zycbe001-ffrcalc  IS INITIAL               AND

     ( v_status_s = '1' OR sy-tcode = '/PWS/ZYCB001_C' ) AND

     ( ( ( /pws/zycbe001-tpcontr(1) EQ 'P'     OR

           /pws/zycbe001-tpcontr(1) EQ 'S' )   AND

           /pws/zycbe001-ffrcalc    NE 'L'     AND

           /pws/zycbe001-ffrcalc    NE 'C' )   OR

       ( /pws/zycbe001-tpcontr(1)   NE 'P'     AND

         /pws/zycbe001-tpcontr(1)   NE 'S'     AND

         /pws/zycbe001-ffrcalc      NE 'S' ) ).

    MESSAGE e061 WITH text-450 text-060 '.'.

  ENDIF.

* << Fim da inclusão

  CHECK /pws/zycbe001-tpcontr(1) EQ 'D'.

  CHECK NOT /pws/zycbe001-ffrcalc CA 'SV'.

  CLEAR:   itab_zycbt002.

  REFRESH: itab_zycbt002.

ENDMODULE.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPT /PWS/SAPMZYCB001

 

Texto INSERIDO:

 

      Chave: 450

Comprimento: 48

      Texto: Forma de Cálculo não permitida para este tipo de

      Texto: Forma de Cálculo não permitida para este tipo de