Tuesday, June 10, 2008

There is an error in external function HR FastFormula

well, how Fastformula works?


1. Logon using US Super User HRSM Manager.

2. Go to Other Definitions > Formula Function.

And look for the function with the problem.


Definition is the actual Database Package name and the function.

3. Describe the code:
FUNCTION get_plan_year
( -- Input values --
p_date_earned IN DATE
)
RETURN DATE
IS
--
l_out_date DATE;
--
BEGIN
select start_date
i nto l_out_date
from BEN_YR_PERD
where p_date_earned between start_date and end_date;
RETURN l_out_date;
END get_plan_year;
-----------------------------------------------------------
END amri_ff_ben;


4. To see the register parameters for that function click in the button Context Usages:


also using next query we can see the parameter in the back end:
SELECT context_id
,context_name
,data_type
,fl.meaning
FROM ff_contexts, hr_lookups fl
WHERE fl.lookup_code = data_type
AND fl.lookup_type = 'DATA_TYPE'
and context_name = 'DATE_EARNED'


Parameters button do not have anything define in this case, because there are not any user defined parameter.


5. Find the Fast Formula definition.


Total Compensation > Basic > Write Formulas > query up formula you need.






6. Press Edit button. (sample script)

/************************************************************************

FORMULA NAME: AGE_AS_OF_PLAN_YEAR

FORMULA TYPE : Age Determination Date

DESCRIPTION : The Age determination date is 01-MAR-YYYY.

*************************************************************************

Change History:Name Date Description

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

Initial Version

**************************************************************************

FORMULA TEXT: Logic in simple terms.*

***************************************************************************/

/*=========== DATABASE ITEM DEFAULTS BEGIN =========*/

/*=========== DATABASE ITEM DEFAULTS ENDS==========*/

/*============ INPUT VALUES DEFAULT BEGIN ===========*/

/*============== INPUT VALUES DEFAUT ENDS ==========*/

/*================= INPUTS SECTION BEGIN =============*/

/*================== INPUTS SECTION ENDS ============*/

/*================ FORMULA SECTION BEGIN ============*/

DEFAULT FOR l_plan_date is '01-JAN-1951'(date)
l_plan_date = GET_PLAN_YEAR() /*this is the call to the external function*/
return l_plan_date

/*================ FORMULA SECTION END ==============*/



7. if you change the PLSQL, then you have to compile the formula.

to find the invalid plsql use following query:


sELECT object_type, object_name, status, last_ddl_time
FROM all_objects
WHERE owner = 'APPS'
and status != 'VALID'
AND object_type LIKE 'PACKA%%'
AND object_name LIKE 'FFP_%'
--OR object_name LIKE 'FFW_%'

but do not compile using sql*plus instea use the program:

$FF_TOP/bin/FFXBCP apps/apps 0 Y %% %%

or

$FF_TOP/bin/FFXBCP apps/apps 0 Y %% %formula_group%

or

Processes and Reports -> Submit Processes and Reports and Select Bulk Compile of Formulas

good luck.