how to create position hierarchy by using apis

Upload: rtagarra

Post on 30-Oct-2015

58 views

Category:

Documents


0 download

DESCRIPTION

How to Create Position Hierarchy by Using Apis

TRANSCRIPT

  • How to Create Position Hierarchy by

    Using APIs

    Oracle utilizes position as road map to determine how and where documents will

    be routed once the approval process has been initiated. Its always very difficult

    for functional consultant or application super user to create Position hierarchy

    manually specially for organization where they have more number of positions.

    This document contains the all script required to create position hierarchy in

    oracle application to be used by Purchasing and HRMS system .

    2010

    Ahmad Bilal

    1/25/2010

    Email: [email protected]

  • h t t p : / / o r a c l e e b u s i n e s s s u i t e . w o r d p r e s s . c o m / Page 2

    I. Create Temporary Table to Load Data

    CREATE TABLE RAW_POSIT ION_H_DATA(SLNO NUMBER , PARENT_POSIT ION_ ID NUMBER,

    CH ILD_POSIT ION_ ID NUMBER)

    II. UPLOAD DATA INTO RAW_POSITION_H_DATA BY USING SQLLDR

    DATA FORMAT W ILL BE L IKE THIS

    Sl No PARENT_POSITION_ID CHILD_POSITION_ID

    1 21165 21164

    2 21163 21162

    3 21164 21163

    III. Verify the Data in table

    SELECT *

    FROM RAW_POSIT ION_H_DATA H

    START W ITH H .PARENT_POSIT ION_ID = 21165 - - (TOP NODE POSIT ION ID L IKE CHAIRMAN OR C .E .O ))

    CONNECT BY PR IOR H .CH ILD_POSIT ION_ ID = H .PARENT_POSIT ION_ ID ;

    Da ta w i l l sh ow i n h i e r a r ch i ca l o rde r

    IV. Alter Table in Order to Capture the New Ids and exceptions

    ALTER TABLE APPS_APPLMGR .RAW_POSIT ION_H_DATA ADD (NEW_PARENT_POSIT ION_ ID NUMBER ,

    NEW_SUBORDINATE_POSIT ION_ID NUMBER, ERROR_MESSAGE VARCHAR2 (2000 ) , STATUS VARCHAR2 (3 ) ,

    OBJECT_VERSION_NUMBER NUMBER , POS_STRUCTURE_ELEMENT_ ID NUMBER);

    V. Create Procedure to Define Position Hierarchy Parent Record

  • h t t p : / / o r a c l e e b u s i n e s s s u i t e . w o r d p r e s s . c o m / Page 3

    CREATE OR REPLACE PROCEDURE CREATE_POSIT ION_H

    IS

    P_VAL IDATE BOOLEAN := SYS .D IUT IL . INT_TO_BOOL (0 ) ;

    P_POSIT ION_STRUCTURE_ ID NUMBER;

    P_OBJECT_VERSION_NUMBER NUMBER;

    P_EFFECTIVE_DATE DATE := TO_DATE ( ' 01 -01 -1990 ' , 'DD-MM-YYYY ' ) ; /* TH IS DATE SHOULD

    BE AFTER THE ALL POSIT ION EFFECTIVE START DATE * /

    P_NAME VARCHAR2 (240) := 'P os i t i on H i e ra r ch y By API ' ;

    BEGIN

    PER_POSIT ION_STRUCTURE_AP I .CREATE_POSIT ION_STRUCTURE

    (P_VAL IDATE => P_VAL IDATE ,

    P_EFFECTIVE_DATE => P_EFFECTIVE_DATE ,

    P_NAME => P_NAME,

    P_BUSINESS_GROUP_ ID => 0 ,

    P_COMMENTS => NULL ,

    P_ PR IMARY_POSIT ION_FLAG => 'N ' ,

    P_REQUEST_ ID => NULL ,

    P_ PROGRAM_APPL ICAT ION_ID => NULL ,

    P_ PROGRAM_ ID => NULL ,

    P_ PROGRAM_UPDATE_DATE => NULL ,

    P_ATTRIBUTE_CATEGORY => NULL ,

    P_ATTRIBUTE1 => NULL ,

    P_ATTRIBUTE2 => NULL ,

    P_ATTRIBUTE3 => NULL ,

    P_ATTRIBUTE4 => NULL ,

    P_ATTRIBUTE5 => NULL ,

    P_ATTRIBUTE6 => NULL ,

    P_ATTRIBUTE7 => NULL ,

    P_ATTRIBUTE8 => NULL ,

    P_ATTRIBUTE9 => NULL ,

    P_ATTRIBUTE10 => NULL ,

    P_ATTRIBUTE11 => NULL ,

    P_ATTRIBUTE12 => NULL ,

    P_ATTRIBUTE13 => NULL ,

    P_ATTRIBUTE14 => NULL ,

    P_ATTRIBUTE15 => NULL ,

    P_ATTRIBUTE16 => NULL ,

    P_ATTRIBUTE17 => NULL ,

    P_ATTRIBUTE18 => NULL ,

    P_ATTRIBUTE19 => NULL ,

    P_ATTRIBUTE20 => NULL ,

    P_ POSIT ION_STRUCTURE_ ID => P_POSIT ION_STRUCTURE_ ID ,

    P_OBJECT_VERSION_NUMBER => P_OBJECT_VERSION_NUMBER

    ) ;

    COMMIT ;

    END;

    /

    VI. Execute Procedure

    BEGIN

    CREATE_POSIT ION_H;

    COMMIT ;

    END;

    USE FOLLOWING QUERY TO VERIFY THAT POSIT ION HEADER IS CREATED

    SELECT POSIT ION_STRUCTURE_ID

  • h t t p : / / o r a c l e e b u s i n e s s s u i t e . w o r d p r e s s . c o m / Page 4

    FROM PER_POSIT ION_STRUCTURES PPS

    WHERE PPS.NAME = ' Pos i t i on H i e ra r ch y By AP I ' ;

    VII. Create Procedure to Define Hierarchy version

    CREATE OR REPLACE PROCEDURE CREATE_POSIT ION_H_VERSION

    IS

    P_VAL IDATE BOOLEAN := SYS.DIUT IL . INT_TO_BOOL (0 ) ;

    P_GAP_WARN ING BOOLEAN;

    P_POS_STRUCTURE_VERSION_ID NUMBER;

    P_OBJECT_VERSION_NUMBER NUMBER;

    P_DATE_FROM DATE := TO_DATE ( ' 01 -01 -1990 ' , ' DD -MM-YYYY ' ) ;

    /* TH IS DATE SHOULD BE AFTER THE ALL POSIT ION EFFECTIVE START DATE * /

    P_EFFECTIVE_DATE DATE := TO_DATE ( ' 01 -01 -1990 ' , ' DD -MM-YYYY ' ) ;

    /* TH IS DATE SHOULD BE AFTER THE ALL POSIT ION EFFECTIVE START DATE * /

    P_POSIT ION_STRUCTURE_ ID NUMBER;

    P_VERSION_NUMBER NUMBER := 1 ;

    BEGIN

    SELECT POSIT ION_STRUCTURE_ ID

    INTO P_POSIT ION_STRUCTURE_ ID

    FROM PER_POSIT ION_STRUCTURES PPS

    WHERE PPS.NAME = ' P os i t i on H i e r a r ch y By AP I ' ;

    PER_POS_STRUCTURE_VERSION_AP I .CREATE_POS_STRUCTURE_VERSION

    (P_VAL IDATE => P_VAL IDATE ,

    P_EFFECTIVE_DATE => P_EFFECT IVE_DATE ,

    P_POSIT ION_STRUCTURE_ID => P_POSIT ION_STRUCTURE_ ID,

    P_DATE_FROM => P_DATE_FROM ,

    P_VERSION_NUMBER => P_VERSION_NUMBER,

    P_COPY_STRUCTURE_VERSION_ ID => NULL ,

    P_DATE_TO => NULL ,

    P_REQUEST_ ID => NULL ,

    P_PROGRAM_APPL ICAT ION_ ID => NULL ,

    P_PROGRAM_ ID => NULL ,

    P_PROGRAM_UPDATE_DATE => NULL ,

    P_POS_STRUCTURE_VERSION_ ID => P_POS_STRUCTURE_VERSION_ID ,

    P_OBJECT_VERSION_NUMBER => P_OBJECT_VERSION_NUMBER ,

    P_GAP_WARNING => P_GAP_WARN ING

    ) ;

    COMMIT ;

    END;

    /

    VIII. Execute Procedure

    BEGIN

    CREATE_POSIT ION_H_VERSION;

    COMMIT ;

    END;

    Use Fo l l ow ing Que r y t o ve r i f y the Ve r s i on Crea ted

    SELECT POS_STRUCTURE_VERSION_ID INTO P_POS_STRUCTURE_VERSION_ ID FROM

    PER_POSIT ION_STRUCTURES PPS, PER_POS_STRUCTURE_VERSIONS PSV WHERE PPS .NAME = 'P os i t i on H i e ra r ch y

    By AP I ' AND PPS.POSIT ION_STRUCTURE_ ID = PSV.POSIT ION_STRUCTURE_ ID;

    IX. Create Procedure to Load Elements of Position hierarchy

    CREATE OR REPLACE PROCEDURE CREATE_POSIT ION_H IERARCHY_PRC

  • h t t p : / / o r a c l e e b u s i n e s s s u i t e . w o r d p r e s s . c o m / Page 5

    IS

    P_VAL IDATE BOOLEAN := SYS .D IUT IL . INT_TO_BOOL (0 ) ;

    P_POS_STRUCTURE_ELEMENT_ID NUMBER;

    P_POS_STRUCTURE_VERSION_ID NUMBER;

    P_OBJECT_VERSION_NUMBER NUMBER;

    P_EFFECTIVE_DATE DATE := TO_DATE ( ' 01 -01 -1990 ' , 'DD-MM-YYYY ' ) ; /* TH IS DATE SHOULD

    BE AFTER THE ALL POSIT ION EFFECTIVE START DATE * /

    P_ERROR VARCHAR2 (2000) ;

    VNEW_SUBORDINATE_POSIT ION_ID NUMBER;

    /* EXTRACT THE NEWHIERARCHY * /

    CURSOR CUR

    I S

    SELECT *

    FROM RAW_POSIT ION_H_DATA H

    START W ITH H .PARENT_POSIT ION_ID = 21165 - - (TOP NODE POSIT ION ID L IKE CHAIRMAN OR C .E .O ))

    CONNECT BY PR IOR H .CH ILD_POSIT ION_ ID = H .PARENT_POSIT ION_ ID ;

    BEGIN

    - - GET STURCTURE VERS ION ID

    SELECT POS_STRUCTURE_VERSION_ ID

    INTO P_POS_STRUCTURE_VERSION_ID

    FROM PER_POSIT ION_STRUCTURES PPS, PER_POS_STRUCTURE_VERSIONS PSV

    WHERE PPS.NAME = ' P os i t i on H i e r a r ch y By AP I '

    AND PPS .POSIT ION_STRUCTURE_ ID = PSV .POSIT ION_STRUCTURE_ID;

    FOR POS IN CUR

    LOOP

    BEG IN

    HR_POS_HIERARCHY_ELE_AP I .CREATE_POS_H IERARCHY_ELE

    (P_VAL IDATE => P_VAL IDATE ,

    P_PARENT_POSIT ION_ ID => POS .PARENT_POSIT ION_ ID ,

    P_POS_STRUCTURE_VERSION_ ID => P_POS_STRUCTURE_VERSION_ID ,

    P_SUBORDINATE_POSIT ION_ ID => POS .CHILD_POSIT ION_ ID ,

    P_BUSINESS_GROUP_ ID => 0 ,

    P_HR_INSTAL LED => NULL ,

    P_EFFECT IVE_DATE => P_EFFECT IVE_DATE ,

    P_POS_STRUCTURE_ELEMENT_ID => P_POS_STRUCTURE_ELEMENT_ID ,

    P_OBJECT_VERSION_NUMBER => P_OBJECT_VERSION_NUMBER

    ) ;

    UPDATE RAW_POSIT ION_H_DATA H

    SET H .POS_STRUCTURE_ELEMENT_ ID = P_POS_STRUCTURE_ELEMENT_ ID,

    H .OBJECT_VERSION_NUMBER = P_OBJECT_VERSION_NUMBER,

    STATUS = ' I '

    WHERE H .SLNO = POS .SLNO;

    COMMIT;

    EXCEPT ION

    WHEN OTHERS

    THEN

    P_ERROR := SQLERRM;

    UPDATE RAW_POSIT ION_H_DATA H

    SET H .STATUS = 'E ' ,

    ERROR_MESSAGE = P_ERROR

    WHERE H .SLNO = POS .SLNO;

    COMMIT;

    END;

    END LOOP;

    END;

    /

    X. Execute Procedure

  • h t t p : / / o r a c l e e b u s i n e s s s u i t e . w o r d p r e s s . c o m / Page 6

    BEGIN

    CREATE_POSIT ION_HIERARCHY_PRC;

    COMMIT ;

    END;

    Ver i f y P os i t i on H i e ra r ch y by us i ng f o l l ow in g que r y

    SELECT LPAD ( ' ' , 5 * LEVEL )

    | |HAS.NAME H IERARCHY ,

    LEVEL ,

    HAP .NAME PARENT_NAME,

    PSE . PARENT_POSIT ION_ID ,

    HAS .NAME CH ILD_NAME ,

    PSE .SUBORDINATE_POSIT ION_ ID

    FROM (SELECT NAME ,

    POS IT ION_ID

    FROM HR_ALL_POSIT IONS_F_TL

    WHERE LANGUAGE = USERENV ( ' LANG ' ) ) HAP ,

    ( SELECT NAME ,

    POS IT ION_ID

    FROM HR_ALL_POSIT IONS_F_TL

    WHERE LANGUAGE = USERENV ( ' LANG ' ) ) HAS ,

    PER_POS_STRUCTURE_ELEMENTS PSE

    WHERE PSE .BUSINESS_GROUP_ ID = 0

    AND HAP .POSIT ION_ID = PSE .PARENT_POSIT ION_ID

    AND HAS .POSIT ION_ ID = PSE .SUBORDINATE_POSIT ION_ID

    AND PSE .POS_STRUCTURE_VERSION_ID IN ( SELECT POS_STRUCTURE_VERSION_ ID

    FROM PER_POSIT ION_STRUCTURES PPS , PER_POS_STRUCTURE_VERSIONS PSV

    WHERE PPS.NAME = ' P os i t i on H i e r a r ch y By AP I '

    AND PPS .POSIT ION_STRUCTURE_ ID = PSV .POSIT ION_STRUCTURE_ID)

    START W ITH PSE .PARENT_POSIT ION_ ID = 21165 - - (TOP NODE POSIT ION ID L IKE CHAIRMAN OR C .E .O ))

    CONNECT BY PR IOR PSE .SUBORDINATE_POSIT ION_ ID = PSE .PARENT_POSIT ION_ID

    AND PRIOR PSE .POS_STRUCTURE_VERSION_ ID =PSE .POS_STRUCTURE_VERSION_ ID

    AND PRIOR PSE .BUSINESS_GROUP_ ID = PSE .BUSINESS_GROUP_ ID