#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. |
#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 |
#3
|
|||
|
|||
Calculo TIR
Wow, Excelente aporte, y sin duda me ha simplificado muchisimo mi busca para el calculo del CAT!!
Gracias !! |
Herramientas | Buscar en Tema |
Desplegado | |
|
|