MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   FI Funcion para calcular TIR. (foro/showthread.php?t=15957)

alegg 27/08/08 20:45:26

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 04/09/08 19:51:07

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

Jaya 28/01/11 15:01:59

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

Gracias !!


Husos Horarios son GMT. La hora en este momento es 20:57:06.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web