FI Funcion para calcular TIR.

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • alegg
    Junior Member
    • mar
    • 2

    #1

    FI Funcion para calcular TIR.

    Estimados, acudo a su sabiduria, estoy trabajando en un reporte que debe calcular la TIR ( tasa interna de rendimiento). alguien conoce un funcion que haga este calculo?
    Gracias.
  • cpozo
    Junior Member
    • nov
    • 3

    #2
    Tir

    te adjunto el codigo

    FUNCTION ZCALCULATE_TIR .
    *"----------------------------------------------------------------------
    *"*"Interfase local
    *" EXPORTING
    *" VALUE(C_TIR) TYPE CHAR20
    *" TABLES
    *" VALORES STRUCTURE ZTIR
    *"----------------------------------------------------------------------
    ************************************************** *********************
    *****
    ***** Tabla ZTIR con la siguientes definición:
    ***** Campo Clave Not Null Tipo Campo
    ***** ISUBN X X /AIN/DM_QUANTITY
    *****
    ************************************************** **********************

    DATA: R TYPE /AIN/DM_QUANTITY VALUE 1,
    R0 TYPE /AIN/DM_QUANTITY VALUE 0,
    R1 TYPE /AIN/DM_QUANTITY VALUE 1.

    DATA: TIR TYPE /AIN/DM_ACT_QUANTITY.

    R0 = ( 1 / 99999999999999 ).
    TOLERANCIA = R0.
    PERFORM CALC_TIR TABLES VALORES CHANGING TIR R0 R1.

    *****
    R0 = ( 1 / 99999999999999 ).
    IF TIR = R0.
    R0 = R0 * -1. " 0.00000000000001-
    R1 = ( 1 - ( 1 / 10 ) ) * -1. " 0.90000000000000-
    PERFORM CALC_TIR TABLES VALORES CHANGING TIR R0 R1.
    ENDIF.
    WRITE TIR TO C_TIR.

    ENDFUNCTION.




    *******Include: LZCALCULATE_TIRTOP

    FUNCTION-POOL ZCALCULATE_TIR. "MESSAGE-ID ..

    DATA: F_EXIT(1),
    TOLERANCIA TYPE /AIN/DM_QUANTITY.




    ********Include: LZCALCULATE_TIRF01

    *----------------------------------------------------------------------*
    ***INCLUDE LZCALCULATE_TIR2F01 .
    *----------------------------------------------------------------------*
    *&---------------------------------------------------------------------*
    *& Form CALC_TIR
    *&---------------------------------------------------------------------*
    FORM CALC_TIR TABLES VALORES STRUCTURE ZTIR
    CHANGING R
    R0
    R1.

    DATA: EXP TYPE I.

    DATA: M0 TYPE /AIN/DM_QUANTITY.
    DATA: M1 TYPE /AIN/DM_QUANTITY.
    DATA: DIF TYPE /AIN/DM_QUANTITY.

    EXP = 0.
    LOOP AT VALORES.
    M0 = M0 + ( VALORES-ISUBN / ( ( 1 + R0 ) ** EXP ) ).
    EXP = EXP + 1.
    ENDLOOP.
    M0 = ABS( M0 ).

    EXP = 0.
    LOOP AT VALORES.
    M1 = M1 + ( VALORES-ISUBN / ( ( 1 + R1 ) ** EXP ) ).
    EXP = EXP + 1.
    ENDLOOP.
    M1 = ABS( M1 ).

    DIF = ABS( ABS( R0 ) - ABS( R1 ) ).
    IF DIF > TOLERANCIA.
    IF M1 < M0.
    R0 = ( ( R1 - R0 ) / 3 ) + R0.
    R1 = R1.
    ELSE.
    R1 = R1 - ( ( R1 - R0 ) / 3 ).
    R0 = R0.

    ENDIF.
    PERFORM CALC_TIR TABLES VALORES CHANGING R R0 R1.
    IF F_EXIT = 'X'.
    EXIT.
    ENDIF.
    ELSE.
    R = R0.
    F_EXIT = 'X'.
    ENDIF.
    ENDFORM. " CALC_TIR

    Comentario

    • Jaya
      Junior Member
      • ago
      • 5

      #3
      Calculo TIR

      Wow, Excelente aporte, y sin duda me ha simplificado muchisimo mi busca para el calculo del CAT!!

      Gracias !!

      Comentario

      Trabajando...