Wednesday, 22 June 2011

Basic Steps Related To AME Implementation


AME Steps with an example:
-----------------------------
Responsibility : Approvals Management Business Analyst
---------------
*Rule   
*Name         : XXTEST_LEAVE_SUPERVISOR_APPROVAL
*Rule Type   : List Creation
Catagory      : Approver/FYI
*Priority       : 1
*Start Date   :
*End Date    :

## Setup
  I. Attributes
   ===========
     Name      : XXTEST_IS_EMPLOYEE_INITAITED_TXN
     Item Class    : Header
     Description   : This will check if the transaction is initiated by an employee.
     Data Type     : String
     Approver Type : None
     Usage Type    : Dynamic
     Value Set     :
     Value      : select 'YES' from hr_api_transactions
         where creator_person_id=selected_person_id
         and transaction_id=:transactionId
        
         union all
        
         select 'NO' from hr_api_transactions
         where creator_person_id !=selected_person_id
         and transaction_id=:transactionId
        
         union all
         select 'NO' from dual
         where not exists ( select 1 from hr_api_transactions where transaction_id=:transactionId )
     Category    : Others
     Action Types : None

  
  II.  Conditions
  ==========
    1. Condition Type : Ordinary
     Item Class     : Header
     Attribute Name : XXTEST_IS_EMPLOYEE_INITAITED_TXN
     Data Type      : String
     Condition      : XXTEST_IS_EMPLOYEE_INITAITED_TXN in (YES)
   
    2.  WORKFLOW_PROCESS_NAME in (HR_GENERIC_APPROVAL_PRC)
   
 III. Action Types
 ============
     approval-group chain of authority
    
 IV. Approver Groups
 ===============
     Name     : XXTEST_LEAVE_SUPERVISOR_APPROVER
     Description     : This will fetch the supervisor.
     Usage Type   : Dynamic
     Order Number   : 1
     Voting Method   : Serial
    
     Query     :   select 'person_id:'||supervisor_id
          from per_assignments_f paf,
            hr_api_transactions hat
          where hat.transaction_id=:transactionId
          and hat.selected_person_id=paf.person_id
          and trunc(sysdate) between effective_start_date and effective_end_date
          and primary_flag='Y'
     

Very useful Concepts of HRMS

Tuesday, 21 June 2011

How to call a Concurrent Programe From PL/SQL

  DECLARE
  L_RQST_ID  NUMBER;
  BEGIN
     SELECT * FROM FND_USER;
     SELECT * FROM FND_RESPONSIBILITY ;
     SELECT * FROM FND_APPLICATION;
     SELECT * FROM FND_SECURITY_GROUPS;
         
     /*1st parameter is Userid,
     2nd  parameter responsibility id,
     3rd parameter responsibility application id,
     4th parameter security profile id
    */
    fnd_global.APPS_INITIALIZE(V_USER_ID,V_RESP_ID,V_APP_ID,V_SEQ_GR_ID);     
  
       
    L_RQST_ID := FND_REQUEST.SUBMIT_REQUEST (
                         application => 'XXHCM',                                              -- Application Short Name
                         program     => 'XXHCM_APPRAISAL_TEST',  -- Program Name
                         description =>  NULL,
                         start_time  =>  TRUNC(sysdate),
                         sub_request =>  FALSE,
                         argument1   =>  P_PLAN_NAME,                    -- Parameter 1 for Concurrent Prog
                         argument2   =>  P_PLAN_ID                             -- Parameter 2 for Concurrent Prog
       -------
                        );
    COMMIT;
     IF L_RQST_ID=0 THEN
     FND_FILE.PUT_LINE(FND_FILE.LOG,'Standard Program is Not Submitted');
     ELSE
     FND_FILE.PUT_LINE(FND_FILE.LOG,'Request ID :'||L_RQST_ID);
     END IF;
END;
==============================================================
Note: V_USER_ID   :=FND_PROFILE.VALUE('USER_ID');
          V_RESP_ID   :=FND_PROFILE.VALUE('RESP_ID');
          V_APP_ID    :=FND_PROFILE.VALUE('APPLICATION_ID');
          V_SEQ_GR_ID :=FND_PROFILE.VALUE('SECURITY_GROUP_ID');

Oracle PL/SQL Question and Answers