CE PLUS - Nota 003390

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Liquidação de Contrato

Data/Hora da Publicação: 03/04/2007 00:00:00

Data/Hora Última Alteração: 10/03/2010 14:40:34

Descrição da Nota: LIQ. ACC COM PRÉ - CÁLCULO DE JUROS

Sintoma

 

Mudança na forma de cálculo de juros e bloqueio de campos em tela.

 

Solução

 

O programa foi ajustado conforme aditivo a especificação.

Versões Tratadas

7.0

Informações Complementares

 

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

Nota Número 03390 Data: 03/04/2007 Hora: 14:30:48

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

 

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

Nota Número              : 03390

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00027

Agrupamento              : 00160

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

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

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

LIQ. ACC COM PRÉ - CÁLCULO DE JUROS

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

Palavras Chave:

LIQUIDAÇÃO ACC COM PRÉ-PAGAMENTO PT CÁLCULO JUROS

 

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

Objetos da nota:

DYNP /PWS/SAPMZYCB014                        0200

REPS /PWS/MZYCB014F01

 

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

Modificações efetuadas em DYNP /PWS/SAPMZYCB014                        0200

 

Atualizar o grupo 1 no screen painter dos campos /PWS/ZYCBE062-TXJFIXA, /PWS/ZYCBE062-TXJVAR,

/PWS/ZYCBE062-TXJTOTAL e /PWS/ZYCBE062-TPTXJUR para ALT.

 

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

Modificações efetuadas em REPS /PWS/MZYCB014F01

 

...

    ELSEIF sy-tcode = '/PWS/ZYCB014_E' OR v_exibe = 'YES'.

      v_nrseq = /pws/zycbe060-nrseq.

      SET PARAMETER ID  '/PWS/ZYCBP019' FIELD v_nrseq.

      CALL TRANSACTION '/PWS/ZYCB001_E' AND SKIP FIRST SCREEN.

    ENDIF.

  ELSE.

    MESSAGE i015 WITH text-001 text-052.

  ENDIF.

ENDFORM.

FORM calculos_itab_zycbt062.

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

  SELECT * FROM /pws/zycbt010 INTO TABLE itab_zycbt010.

  v_index = 0.

  CLEAR itab_zycbt062.

  LOOP AT itab_zycbt062.

    v_index = v_index + 1.

    IF sy-dynnr = '0100'.

      SELECT SINGLE * FROM /pws/zycbt002

* << Fim da exclusão

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

  TYPES:

    BEGIN OF t_s_zycbt010,

      tptxjur TYPE /pws/zycbt010-tptxjur,

      nrdias  TYPE /pws/zycbt010-nrdias,

    END OF t_s_zycbt010,

    t_t_zycbt010 TYPE SORTED TABLE OF t_s_zycbt010

      WITH UNIQUE KEY tptxjur,

    BEGIN OF t_s_zycbt001,

      nrseqc    TYPE /pws/zycbt001-nrseqc,

      tpcalcjur TYPE /pws/zycbt001-tpcalcjur,

    END OF t_s_zycbt001,

    t_t_zycbt001 TYPE SORTED TABLE OF t_s_zycbt001

      WITH UNIQUE KEY nrseqc,

    BEGIN OF t_s_zycbt002,

      nrseqc   TYPE /pws/zycbt002-nrseqc,

      nrdias   TYPE /pws/zycbt002-nrdias,

      dtinicio TYPE /pws/zycbt002-dtinicio,

      dtfinal  TYPE /pws/zycbt002-dtfinal,

      txjfixa  TYPE /pws/zycbt002-txjfixa,

      txjvar   TYPE /pws/zycbt002-txjvar,

      txjtotal TYPE /pws/zycbt002-txjtotal,

      tptxjur  TYPE /pws/zycbt002-tptxjur,

    END OF t_s_zycbt002,

    t_t_zycbt002 TYPE SORTED TABLE OF t_s_zycbt002

      WITH UNIQUE KEY nrseqc dtinicio.

  CONSTANTS

    c_multiplo TYPE /pws/zycbt001-tpcalcjur VALUE space.

  DATA:

    itab_zycbt001   TYPE t_t_zycbt001,

    itab_zycbt002   TYPE t_t_zycbt002,

    itab_zycbt010   TYPE t_t_zycbt010,

    v_nrdias_desemb TYPE i,

    v_nrdias_juros  TYPE i,

    v_nrdias        TYPE i.

  FIELD-SYMBOLS:

    <fs_zycbt001> LIKE LINE OF itab_zycbt001,

    <fs_zycbt002> LIKE LINE OF itab_zycbt002,

    <fs_zycbt010> LIKE LINE OF itab_zycbt010,

    <fs_zycbt062> LIKE LINE OF itab_zycbt062,

    <fs_nrdias>   TYPE i.

  CHECK sy-dynnr = '0100'.

  SELECT tptxjur nrdias FROM /pws/zycbt010 INTO TABLE itab_zycbt010.

  SELECT nrseqc tpcalcjur FROM /pws/zycbt001 INTO TABLE itab_zycbt001

    FOR ALL ENTRIES IN itab_zycbt062

* << Fim da inclusão

          WHERE nrseqc = itab_zycbt062-nrseq_c.

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

      IF sy-subrc = 0.

        MOVE:  /pws/zycbt002-txjfixa     TO itab_zycbt062-txjfixa,

               /pws/zycbt002-txjvar      TO itab_zycbt062-txjvar,

               /pws/zycbt002-txjtotal    TO itab_zycbt062-txjtotal,

               /pws/zycbt002-tptxjur     TO itab_zycbt062-tptxjur.

* << Fim da exclusão

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

  SELECT nrseqc nrdias dtinicio dtfinal txjfixa txjvar txjtotal tptxjur

    FROM /pws/zycbt002 INTO TABLE itab_zycbt002

    FOR ALL ENTRIES IN itab_zycbt062

    WHERE nrseqc = itab_zycbt062-nrseq_c AND tpparc = 'J'.

  LOOP AT itab_zycbt062 ASSIGNING <fs_zycbt062>.

    READ TABLE itab_zycbt001 WITH KEY nrseqc = <fs_zycbt062>-nrseq_c

      ASSIGNING <fs_zycbt001>.

    CHECK <fs_zycbt001> IS ASSIGNED.

    v_nrdias_desemb = /pws/zycbe060-dtdesemb - <fs_zycbt062>-dtinicio.

    CHECK v_nrdias_desemb > 0.

    IF <fs_zycbt001>-tpcalcjur = c_multiplo.

      CLEAR v_nrdias_juros.

      LOOP AT itab_zycbt002 ASSIGNING <fs_zycbt002>

        WHERE nrseqc = <fs_zycbt062>-nrseq_c.

        CHECK v_nrdias_juros < v_nrdias_desemb.

        v_nrdias_juros = v_nrdias_juros + <fs_zycbt002>-nrdias.

      ENDLOOP.

      CHECK sy-subrc = 0.

      <fs_zycbt062>-txjfixa  = <fs_zycbt002>-txjfixa.

      <fs_zycbt062>-txjvar   = <fs_zycbt002>-txjvar.

      <fs_zycbt062>-txjtotal = <fs_zycbt002>-txjtotal.

      <fs_zycbt062>-tptxjur  = <fs_zycbt002>-tptxjur.

      IF v_nrdias_desemb > v_nrdias_juros.

        ASSIGN v_nrdias_juros TO <fs_nrdias>.

      ELSE.

        ASSIGN v_nrdias_desemb TO <fs_nrdias>.

* << Fim da inclusão

      ENDIF.

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

      READ TABLE itab_zycbt010

        WITH TABLE KEY tptxjur = <fs_zycbt002>-tptxjur

        ASSIGNING <fs_zycbt010>.

      CHECK sy-subrc = 0.

      <fs_zycbt062>-vlmej = <fs_zycbt062>-vlme *

        <fs_zycbt062>-txjtotal / 100 / <fs_zycbt010>-nrdias *

        <fs_nrdias>.

    ELSE.

      CLEAR v_nrdias_juros.

      LOOP AT itab_zycbt002 ASSIGNING <fs_zycbt002>

        WHERE nrseqc = <fs_zycbt062>-nrseq_c.

        READ TABLE itab_zycbt010

          WITH TABLE KEY tptxjur = <fs_zycbt002>-tptxjur

          ASSIGNING <fs_zycbt010>.

        CHECK <fs_zycbt010> IS ASSIGNED.

        v_nrdias_juros = v_nrdias_juros + <fs_zycbt002>-nrdias.

        IF v_nrdias_juros < v_nrdias_desemb.

          v_nrdias = <fs_zycbt002>-nrdias.

        ELSE.

          v_nrdias = /pws/zycbe060-dtdesemb - <fs_zycbt002>-dtinicio.

* << Fim da inclusão

    ENDIF.

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

    READ TABLE itab_zycbt010 WITH KEY

         tptxjur = itab_zycbt062-tptxjur.

    itab_zycbt062-nrdias =

    /pws/zycbe060-dtdesemb - itab_zycbt062-dtinicio.

    IF /pws/zycbe060-dtdesemb LT itab_zycbt062-dtinicio.

      CLEAR itab_zycbt062-nrdias.

* << Fim da exclusão

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

       <fs_zycbt062>-vlmej = <fs_zycbt062>-vlmej + <fs_zycbt062>-vlme *

           <fs_zycbt002>-txjtotal / 100 / <fs_zycbt010>-nrdias *

           v_nrdias.

        UNASSIGN <fs_zycbt010>.

        IF v_nrdias_juros > v_nrdias_desemb.

          EXIT.

* << Fim da inclusão

    ENDIF.

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

    itab_zycbt062-qtddias = itab_zycbt062-nrdias.

    itab_zycbt062-txjtotal =

    itab_zycbt062-txjfixa + itab_zycbt062-txjvar.

    itab_zycbt062-vlmej  =

    ( itab_zycbt062-vlme * ( itab_zycbt062-txjtotal / 100 ) )

      /  itab_zycbt010-nrdias  * itab_zycbt062-nrdias .

    MODIFY itab_zycbt062 INDEX  v_index.

* << Fim da exclusão

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

      ENDLOOP.

      UNASSIGN <fs_zycbt002>.

    ENDIF.

    IF v_nrdias_desemb > v_nrdias_juros.

      <fs_zycbt062>-nrdias = v_nrdias_juros.

    ELSE.

      <fs_zycbt062>-nrdias = v_nrdias_desemb.

    ENDIF.

    <fs_zycbt062>-qtddias = <fs_zycbt062>-nrdias.

    UNASSIGN <fs_zycbt001>.

* << Fim da inclusão

  ENDLOOP.

ENDFORM.

FORM exibi_juros.

  DATA: v_linhas TYPE i.

  DESCRIBE TABLE itab_zycbt062 LINES v_linhas.

  tc_juros-lines = v_linhas.

  LOOP AT tc_juros-cols INTO wa_cols.

    wa_cols-screen-input = 0.

    MODIFY tc_juros-cols FROM wa_cols.

  ENDLOOP.

...