Monday, 2 May 2011

12 Steps for Enabling Flexfields in Oracle Report


12 Steps for Enabling Flexfields in Oracle Report


If any one want to use Flexfield in report, there is minimum steps you have to follow to make things Functional. These are the standard steps as per AOL guide.
Step 1 Define your Before Report Trigger
Here you suppose to call FND SRWINIT from the Before Report Trigger like :
SRW.USER_EXIT('FND SRWINIT');
This user exit sets up information for use by flexfields, user profiles, the concurrent manager, and other Oracle Applications features as discussed in one of previous post.
Step 2 Define your After Report Trigger
Next, is you need to call FND SRWEXIT from the After Report Trigger like :
SRW.USER_EXIT('FND SRWEXIT');
Step 3 Define your required parameters
In this step you need to define the parameters your report needs by using the Data Model Painter. You use these parameters in the user exit calls and SQL statements.
Lexical Parameters
  • P_CONC_REQUEST_ID
  • P_FLEXDATA
You must always create the P_CONC_REQUEST_ID lexical parameter. "FND SRWINIT" uses this parameter to retrieve information about the concurrent request that started this report.
The P_FLEXDATA parameter holds the SELECT fragment of the SQL query. The initial value is used to check the validity of a query containing this parameter and to determine the width of the column as specified by the column alias. Its initial value is some string that contains columns with a cumulative width more than the expected width required to hold the data. Make sure the width of this column is sufficient. If there are total 30 segments in the table then the safest initial value will be:
(SEGMENT1||'\n'||SEGMENT2||'\n'||SEGMENT3 ... SEGMENT30)
You determine the width by determining the length of that string. That length is roughly the number of characters in the table alias plus the length of the column name, times the number of segments your code combinations table contains, times the number of structures you expect, plus more for delimiter characters as shown in the string above.
Step 4 Define your rest other parameters
You define the rest of the parameters your report needs by using the Data Model Painter. You use these parameters in the user exit calls and SQL statements.
Step 5 Call FND FLEXSQL from your Before Report Trigger to populate P_FLEXDATA
Next, given that you want to display flexfield information like concatenated values and descriptions, and arrange them in order, you make one call to FND FLEXSQL from the Before Report Trigger specifying the lexical parameters. This call changes the value of the lexical parameter P_FLEXDATA at runtime to the SQL fragment that selects all flexfields value data. For example, the parameter changes to (SEGMENT1||'\n'||SEGMENT2||'\n'||SEGMENT3||'\n'||SEGMENT4).
When you incorporate this lexical parameter into the SELECT clause of a query, it enables the query to return the concatenated segment values that are needed as input to other AOL user exits. These exits then retrieve the actual flexfield information for display purposes.
Here is an example FND FLEXSQL call. Notice that the arguments are very similar to other flexfield routine calls; CODE= and NUM= designate the key flexfield and its structure, respectively. For a report on a different key flexfield (such as the System Items flexfield), you would use a different CODE and NUM.
SRW.REFERENCE(:P_STRUCT_NUM);
SRW.USER_EXIT('FND FLEXSQL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
OUTPUT=":P_FLEXDATA"
MODE="SELECT"
DISPLAY="ALL"');
You should always reference any source column/parameter that is used as a source for data retrieval in the user exit. This guarantees that this column/parameter will contain the latest value and is achieved by "SRW.REFERENCE" call as shown above.
Step 6 Call FND FLEXSQL from your Before Report Trigger to populate other parametersWhat you suppose ti do here is just need to call FND FLEXSQL once for every lexical parameter.
Step 7 Define your report query or queries
Define your report query Q_1:
SELECT &P_FLEXDATA C_FLEXDATA
FROM CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN
= &P_STRUCT_NUM
The query fetches the data required to be used as input for the FLEXIDVAL user exit later.
When the report runs, the call to FND FLEXSQL fills in the lexical parameters. As a result the second query would look something like:
SELECT (SEGMENT1||'-'||SEGMENT2||'-'||SEGMENT3||'-'||
SEGMENT4) C_FLEXDATA
FROM CODE_COMBINATIONS_TABLE
WHERE CODE_COMBINATIONS_TABLE.STRUCTURE_DEFINING_COLUMN = 101< /FONT >
Step 8 Create formula columns
Now create columns C_FLEXFIELD and C_DESC_ALL (and any others your report uses) corresponding to the values and descriptions displayed in the report. They all are in group G_1.
Step 9 Populate segment values formula column
Now you need to retrieve the concatenated flexfield segment values and description which you incorporate the flexfields user exits in these columns. In the column definition of C_FLEXFIELD, you incorporate the FND FLEXIDVAL user exit call in the formula field. You pass the concatenated segments along with other information to the user exit, and the user exit populates the concatenated values in this column as specified by the VALUE token. A typical call to populate segment values in this column looks as follows:
SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
VALUE=":C_FLEXFIELD"
DISPLAY="ALL"');
RETURN(:C_FLEXFIELD);
Step 10 Populate segment descriptions< /STRONG>

To populate the segment description use DESCRIPTION="C_DESC_ALL" instead of VALUE="C_FLEXFIELD" as in the previous call. The user exit call becomes:
SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE="GL#"
NUM=":P_STRUCT_NUM"
APPL_SHORT_NAME="SQLGL"
DATA=":C_FLEXDATA"
DESCRIPTION=":C_DESC_ALL"
DISPLAY="ALL"');
RETURN(:C_DESC_ALL);
You have created parameters and columns that are containers of all the values to be displayed. Now, in the following steps, you create the layout to display these values on the report.
Step 11 Create your default report layout
First choose Default Layout to generate the default layout. Deselect C_FLEXDATA. Specify a "Label" and a reasonable "Width" for the columns you want to display.
Step 12 Finish your report By adjusting report layout.

Quick note for Supplier in EBS


Quick note for Supplier in EBS


In Oracle supplier can be entered from three different place.These are the Setup required to perform for a suppliers.
  • Supplier Accounts
  • Taxes
  • Payments
  • Term Date Basis
  • Due Date Basis
  • Invoice Currency
  • Holds
In Oracle these are the important features through the screen:
  • Enter Suppliers
  • Enter employees as Suppliers
  • Merge duplicate Suppliers
redArrowSupplier Data Entry
vendors
redArrowOther Details
  • Classification Information (Significant for type and employee name)
  • Parent subsidiary relationship
  • Supplier bank information
  • Appropriate GL accounts information
  • Record tax information
  • Hold conditions to supplier site (rather than on individual invoices)
and these are the optional field
  • Tax payer ID
  • VAT registration number
  • Inactive date (to prevent invoice/PO entry after a certain date)
redArrowImportant Table that holds supplier
  • PO_VENDORS : this hold a suppliers information
Some important columns:
    • SEGMENT1 – SYSTEM GENERATED OR MANUALLY ENTERED NUMBER FOR SUPPLIER (PO_UNIQUE_IDENTIFIER_CONTROL)
    • VENDOR_ID – SYSTEM GENERATED UNIQUE NUMBER
    • CREDIT STATUS –GOOD/POOR
    • ORGANIZATION_TYPE_LOOKUP_CODE
    • VENDOR_TYPE_LOOKUP_CODE – VENDOR/EMPLOYEE (EMPLOYEE_ID)
    • ONE_TIME_FLAG
  • PO_VENDOR_SITES_ALL : This hold corresponding site information Contains Details of the site like Full Address/Work of site
    and its link with vendor_id.Important columns includes:
    • PURCHASING_SITE_FLAG, VENDOR_SITE_CODE, RFQ_ONLY_SITE_FLAG, PAY_SITE_FLAG,HOLD_ALL_PAYMENTS_FLAG, HOLD_FUTURE_PAYMENTS_FLAG, HOLD_UNMATCHED_INVOICES_FLAG
  • PO_VENDOR_CONTACTS : This hold supplier contact information for respective sites.
redArrowHow they connected
These are typically connected as:
vendorER
Take a note Segment1 is holding suppliers Number.
redArrow
Quick query for new babies
select * from po_vendors
where segment1 = '1001‘;
select *
from po_vendor_sites pvs,
po_vendors pov
where pov.segment1 = '1001'
and pov.vendor_id = pvs.vendor_id;

select *
from po_vendor_contacts pvc,
po_vendor_sites pvs,
po_vendors pov
where pov.segment1 = '1001'
and pov.vendor_id = pvs.vendor_id
and pvs.VENDOR_SITE_ID = pvc.vendor_site_id;
redArrowSupplier Interface
Yes, that was one of the enhancement in oracle 11.5.10 release. Prior to that version, there was no interface or Public exist for supplliers, thus it was a tricky to handle supplier. As we have already seen AP availability of AP some time back.
If you are having 11.5.10+ version,and if you have requirement to create supplier from your legacy data than use Supplier Interface, life will be easier. Is n't.

How we start
This consist in 2 steps process:
Step 1. Populate the new interface tables with data. This can be done via SQL*Loader or typically used to load data in a table.
  • AP_SUPPLIERS_INT
  • AP_SUPPLIER_SITES_INT
  • AP_SUP_SITE_CONTACT_INT
Step 2. Run the Supplier Open Interface Request Set (FNDRSSUB1703)
Alternatively, run the individual import programs to load one table at a time
  • Supplier Open Interface Import (APXSUIMP)
  • Supplier Sites Open Interface Import (APXSSIMP)
  • Supplier Site Contacts Open Interface Import (APXSCIMP)
Some important notes for suppliers Interface
  • When you load the data it should be 'NEW' initially. After the Supplier Sites Open Interface is run the status gets changed to PROCESSED'/'REJECTED'.
The entire flow can be shown as:
supplierIntrerafce
redArrowA Note with R12 for Suppliers
As we know in R12 Supplier is part of TCA , thus the link between PO_VENDORS and HZ_PARTIES is PO_VENDORS.party_id. The link between
PO_VENDOR_SITES_ALL and HZ_PARTY_SITES is PO_VENDOR_SITES_ALL.party_site_id.
When a Supplier is created Record will be Inserted in HZ_PARTIES. When the Supplier Site is created Record will be Inserted in HZ_PARTY_SITES. When Address is created it will be stored in HZ_LOCATIONS.

The world of Oracle API


The world of Oracle API


There are 3 types of APIs exist in EBS.
double-arrowPrivate APIs : Private API's are one which Oracle normally using internal, development purpose only. Details are not provided to anyone outside of the immediate development environment, nor are they intended for use by anyone outside of the e-Business Suite development environment.
double-arrowPublic APIs : These are designed for customers and Oracle consultants to integrate non-Oracle systems into Oracle e-Business Suite or to extend the functionality of the base products. Oracle does not support public APIs unless they are published in a reference manual.
double-arrowPublic, published APIs : These are one which Oracle guaranteed to remain valid from release to release, and patches will not alter the API behaviour. Public, published APIs are supported by Oracle to the same extent as released software.
Is there any way find out whether a standard API is PUBLIC or not in Oracle Application?
Yes, there is way, what you have do ,once you are able to find the information for API from irep, the next you have to find the file name and then you need to pull all information from specification header to know which one is public.
Take a simple case, you need to find API FND_USER_PKG which is defined in file AFSCUSRB.pls
logon to Unix box, and release this sort of command
grep -i public $FND_TOP/patch/115/sql/AFSCUSRB.pls
api's world
Based on the above result one can determine whether API is PUBLIC or not.
Simple example for checking AR Public APIs for finding the status
grep -i public $AR_TOP/patch/115/sql/ARXPRELB.pls
grep -i public $AR_TOP/patch/115/sql/ARXPRELS.pls
grep -i public $AR_TOP/patch/115/sql/ARXPRECS.pls
grep -i public $AR_TOP/patch/115/sql/ARXPRECB.pls
Important to Note:
For non-published APIs, Oracle expressly does not provide any guarantees regarding consistency of naming, usage, or behaviour of any API (public or private) between releases.
It Might be possible that a patch could alter any characteristic of any non-published e-Business Suite API.
Where are APIs located ?
For Oracle release 10.7, the APIs are located in the operating system directories such as:
$APPL_TOP/patchsc/107/sql
For Oracle release 11 and release 11i, the APIs are located in the operating system directories:
$APPL_TOP/patch/xxx/sql
where xxx represents the release 110 or 115.
Is there any tracking mechanism for API versions in different Applications releases?
As confirmed by some time back by Oracle support team , there is no such database object in Oracle Applications that keep such kind of information.
All APIs are owned and managed by different product groups within Oracle.
Normally each release comes with either product update notes, or and "About" note. You would need to review these documents for each E-Business Product.
The most comprehensive are the family pack "About" notes, as they in turn reference each individual product "About" note, which lists things like "Changes".

API’s or Open Interface


"Most of us are / have had worked with API’s & Open Interfaces. Both do the similar job, but have we ever wondered why would we use API’s when it can be done using Open Interface or vice versa? And, which is better" ?
....So, here you go.
..My dear friend, there is hardly any difference the way both is working,do check my previous post. Anyway here is back to basic :
OIT API






What are Open Interfaces?
The term Open Interfaces actually refers a programming interface, usually a database table, that automates the execution of Oracle APIs.
Open Interfaces provide a single, simple interface for a specified business procedure.
What are the Oracle APIs?
These are called as a collection of “Black Box” interfaces that provide programatic access into the Oracle ERP database.
The term API refers to stored procedure driven interfaces, where you call a stored procedure to perform an action within an Oracle Module, and the data from your external application is passed through the stored procedure’s parameters.
Why use Open Interfaces?
  • In EBS one Open Interface may run many API calls.
  • Open Interface run asynchronously.
  • The good is that if there is failure of record, they remain in the table until either fixed or purged.
  • They automate the interface into the APIs.
  • This requires less work and less code as few SQL DML would simply .
Why use APIs?
  • When there is no corresponding Open Interface.
  • Normally all Oracle APIs run synchronously, and provide immediate responses, therefore machism to be provided to handle such situation.
  • That requires custom error handling routine.
  • This may requires lot more effort as these need fine grain control approach.
Remember, the APIs are also used by the front end screens, and in the same way, will require all the appropriate prerequisites to be implemented.
Important to note, you cannot use APIs as an alternative to implementation.

Conversion is assumed as one time activity but never looks like small activity which can be performed with couple of day






Lifecycle

How conversion and interface differ?
There are good numbers of parameter on which they can be categorize. Take few of them:
  • Frequency
    • conversions are a one time event
    • interfaces are ongoing
  • Occurrence in the project timeline
    • conversions executed before production
    • interfaces executed during production
  • Manner of execution
    • conversions are batch
    • interfaces may be batch or real time
  • Complexity
    • Conversion does have very complex, its totally depends upon the data mapping activity.
    • coordinating with other systems make interfaces more complex
  • Maintenance
    • Maintence of interface is bit cost intensive task.
Interface Type
You have learned how interface is differ from Conversion/Migration. Now lets take few types of interfaces:
Normally in any system , there are two kinds of interface as:
Inbound Interfaces
  • An inbound interface receives data from one system (legacy) and inserts into Oracle open interface tables.
  • A typical inbound interface would follow these steps:
    1. Extract data from legacy system into a flat file.
    2. Use SQL*Loader or equivalent tool to upload information into a temporary table.
    3. Write a PL/SQL program to take data from the temp table and insert into the Open Interface Tables.
    4. Through the concurrent manager in Oracle Applications, run the standard Oracle Interface program to transform interface tables into Oracle data.
inbound
Outbound Interfaces
o An outbound interface takes data from Oracle tables and inserts it into an external system (via tables or flat file).
o A typical outbound interface would follow these steps:
- Write a PL/SQL program to extract data from Oracle base tables into a flat file.
- Use a custom program to read that data and post it into the legacy system
outbound
Do we have some other standard way to do interface?
  • Open Interface is a table based interface registered as a concurrent program
    • process records in batches.
    • spawned(Pro-C) or PL/SQL based programs.
  • API (Application Program Interface) is a parameter based stored procedure
    • directly impacts base database tables.
    • may be called from Oracle open interfaces,Forms, Reports.
  • EDI (Electronic Data Interchange) uses industry standard data definitions(US/ANSI/X.12) for transmission of documents such as PO's, Invoices, Sales Order, etc.Oracle provides some EDI transactions through EDI Gateway.(
  • Enterprise Application Integration (EAI) solutions are often used when complex integration requirements exist.
What Is An Open Interface Table (OIT)?
  • For inbound interfaces, the interface table is the intermediary table where data from the source application temporarily resides until it is validated and processed into an Oracle base table through a standard import concurrent program.
  • Open Interface Tables are standard Oracle tables.
    • Oracle uses OITs to provide a simple interface to Oracle base tables.
    • Oracle has list of all the open interface that oracle offered in there product.
Oracle Interface Program
  • Most Oracle modules have standard import programs (concurrent processes) to facilitate custom inbound interfaces. The specific processing performed varies by application.
  • These programs pull data from the open interface tables, validate the data, and then insert into one or more Oracle base tables.
  • Upon successful completion of processing, the program deletes the processed rows from the interface table or marks them as completed.
  • Depending on the import, errors can be viewed in various ways (exception reports, error tables, forms, etc…).
Examples of standard import programs:
  • GL: Journal Import
  • AP: Payables Open Interface
  • AR: Customer Interface
  • INV : Item Import
  • AR - Autoinvoice
Ok, thats is all about Conversion and Interfaces briefing. I will write some more for Tools used for Conversion/Interface and will discuss some granular details about a conversion/migration project and share some information about how and where AIM's documents fits into conversion and Migration projects. So watch out this space for some more stuff for conversions.. Till than..your comment and requset you to share some information relaeted to these areas


A single Query covering P2P life Cycle


A single Query covering P2P life Cycle


In Finance, transaction management processing is one of labor intensive task in ERP, as it requires extensive data entry , chance are very very high for duplication/re-entry. As we know Procure to Pay life cycle start itself from contract management till making payment.
As we know the efficient Procure to pay process have these sub processes;
  • Contract Management
  • Purchase Requisitions
  • Purchase Orders
  • Accounts Payable - Managing invoice
  • Supplier Payment
p2p
In real business world, many time when system is running external/internal auditor are more interested in scrutiny of:
  • Goods received / invoices received
  • Inaccurate or duplicate vendor & material master records
  • Discrepancies in payment terms
  • Delays / long processing times
  • Detect duplicate vendor
  • Unusually large or small payments
  • Unauthorized changes made to invoices
  • Detect Duplicate invoice
  • Detect Duplicate payment
  • Approval status
Therefore, it is Inhouse ISD/Finance IT or implementing company responsibility is to provide such kind of adhoc reporting for auditor so that they can satisfy the audit requirement.
A 'P2P' query that made Auditors happy
It was brought by ISD team , as part year end audit for a ERP system which went live 3 month back. It was a one of requirement to display data for a particular PO which covers data from there all 5 five phases, means a particular PO line consist of:
  1. Requisition Detail
  2. Purchase Order Details
  3. Receiving Details
  4. Invoicing Detail
  5. Payment Details
Therefore thought to share this query, hope this would be great help who have such kind of adhoc requirement from daily life.
Here is query:
SELECT
A.ORG_ID "ORG ID",
E.VENDOR_NAME "VENDOR NAME",
UPPER(E.VENDOR_TYPE_LOOKUP_CODE) "VENDOR TYPE",
F.VENDOR_SITE_CODE "VENDOR SITE",
F.ADDRESS_LINE1 "ADDRESS",
F.CITY "CITY",
F.COUNTRY "COUNTRY",
TO_CHAR(TRUNC(D.CREATION_DATE)) "PO DATE",
D.SEGMENT1 "PO NUMBER",
D.TYPE_LOOKUP_CODE "PO TYPE",
C.QUANTITY_ORDERED "QTY ORDERED",
C.QUANTITY_CANCELLED "QTY CANCALLED",
G.ITEM_DESCRIPTION "ITEM DESCRIPTION",
G.UNIT_PRICE "UNIT PRICE",
(NVL(C.QUANTITY_ORDERED,0)-NVL(C.QUANTITY_CANCELLED,0))*NVL(G.UNIT_PRICE,0) "PO Line Amount",
(SELECT
DECODE(PH.APPROVED_FLAG, 'Y', 'Approved')
FROM PO.PO_HEADERS_ALL PH
WHERE PH.PO_HEADER_ID = D.PO_HEADER_ID) "PO STATUS",
A.INVOICE_TYPE_LOOKUP_CODE "INVOICE TYPE",
A.INVOICE_AMOUNT "INVOICE AMOUNT",
TO_CHAR(TRUNC(A.INVOICE_DATE)) "INVOICE DATE",
A.INVOICE_NUM "INVOICE NUMBER",
(SELECT
DECODE(X.MATCH_STATUS_FLAG, 'A', 'Approved')
FROM AP.AP_INVOICE_DISTRIBUTIONS_ALL X
WHERE X.INVOICE_DISTRIBUTION_ID = B.INVOICE_DISTRIBUTION_ID)"Invoice Approved?",
A.AMOUNT_PAID,
H.AMOUNT,
I.CHECK_NUMBER "CHEQUE NUMBER",
TO_CHAR(TRUNC(I.CHECK_DATE)) "PAYMENT DATE"
FROM AP.AP_INVOICES_ALL A,
AP.AP_INVOICE_DISTRIBUTIONS_ALL B,
PO.PO_DISTRIBUTIONS_ALL C,
PO.PO_HEADERS_ALL D,
PO.PO_VENDORS E,
PO.PO_VENDOR_SITES_ALL F,
PO.PO_LINES_ALL G,
AP.AP_INVOICE_PAYMENTS_ALL H,
AP.AP_CHECKS_ALL I
WHERE A.INVOICE_ID = B.INVOICE_ID
AND B.PO_DISTRIBUTION_ID = C. PO_DISTRIBUTION_ID (+)
AND C.PO_HEADER_ID = D.PO_HEADER_ID (+)
AND E.VENDOR_ID (+) = D.VENDOR_ID
AND F.VENDOR_SITE_ID (+) = D.VENDOR_SITE_ID
AND D.PO_HEADER_ID = G.PO_HEADER_ID
AND C.PO_LINE_ID = G.PO_LINE_ID
AND A.INVOICE_ID = H.INVOICE_ID
AND H.CHECK_ID = I.CHECK_ID
AND F.VENDOR_SITE_ID = I.VENDOR_SITE_ID
AND C.PO_HEADER_ID IS NOT NULL
AND A.PAYMENT_STATUS_FLAG = 'Y'
AND D.TYPE_LOOKUP_CODE != 'BLANKET';
The important section which cover in the query output is as:
1. Information for Supplier
1
2.Purchase Order details
2
3. Receiving Items Details
3
4.Invoice Details
4
5.Payment Details
5

What is “Order To Cash” in Oracle?


What is “Order To Cash” in Oracle?


Order to cash normally refer to the process in which taking customer sale order via different sales channel like email, internet, sales person, fax or by some other means like EDI, and then fulfilling the order, shipping, logistic and then generating an invoice and collecting payment for that invoice and then receipt. if we consider the flow ,this can be further categorize into seven sub-process like
  • Customer
  • Order entry (creation of order /booking of order )
  • Order fulfillment
  • Distribution
  • Invoicing
  • Customer payments /Collection
  • Receipt
A typical flow can be best represented as:
ordertocash

API Avability of HRMS


API Avability of HRMS
So here are few Business events required for your bespoken application and there underline API's details
dgreybarrowAdd a New Employee
  1. Insert person :hr_entry_api.insert_element_entry
  2. Update people group :hr_assignment_api.update_emp_asg_criteria
  3. Update assignment :hr_assignment_api.update_us_emp_asg
  4. Insert base salary :insert into per_pay_proposals
  5. Insert check as the payment method :hr_entry_api. insert_element_entry
dgreybarrowUpdate Employee Information
  1. Update personal information if it changed: per_per_upd.upd
  2. Update assignment and people group information if it exists, set mode to correct or update :hr_assignment_api.update_emp_asg_criteria
dgreybarrowAdd terminating employees
In Oracle On Terminate screen, select Actual Process Date and/or Final Process Date and click on Terminate button. Optionally, enter 'Leaving Reason,' 'Notified,' 'Projected,' 'Last Standard Proces' values.
These are API's are available for termination
 
Hr_ex_employee_api (File name: peexeapi.pkb)
This file contains three (3) procedures.....
hr_ex_employee_api.actual_termination_emp
hr_ex_employee_api.update_term_details_emp
hr_ex_employee_api.final_process_emp
Note: The API's have to be called in that order.
dgreybarrowAddress
  1. Insert or Update Addresses :hr_person_address_api.create_person_address
  2. Update existing address records :hr_person_address_api.update_person_address
dgreybarrowPhones
  1. Insert or create a phone :hr_phone_api.create_phone
  2. update existing phone records :hr_person_address_api.update_person_address
dgreybarrowSchools and Colleges
  1. Insert or create a schol and college information :per_esa_ins.ins
  2. update existing records :per_esa_upd.upd
dgreybarrowInsert or Update Deductions
  1. If deduction is ended, use the delete API to set end date :hr_entry_api.delete_element_entry
  2. Update deduction if exists, else insert it :hr_entry_api.insert_element_entry
dgreybarrowQualifications
  1. Insert or create a qualifications information :per_qualifications_api.create_qualification
  2. update qualifications records :per_qualifications_api.update_qualification
dgreybarrowEnd Date /delete Element Enties
  1. End Date /delete Element Enties :py_element_entry_api.delete_element_entry
There are 4 date track delete modes available (variable p_datetrack_delete_mode)
  • DELETE end date element entry
  • DELETE_NEXT_CHANGE delete next changes
  • FUTURE_CHANGE delete future changes
  • ZAP completely remove element entry from the database
dgreybarrowInsert or Update Direct Deposits
  1. If direct deposit is ended, use the delete API to set end date:hr_personal_pay_method_api.delete_personal_pay_method
  2. Insert bank account if it does not exist :insert into pay_external_accounts
  3. Update direct deposit if exists, else insert it :hr_personal_pay_method_api.create_personal_pay_method
dgreybarrow
Inform Manager of Inactive Employee Credit card process
  1. Use this if required inactivate employee credit card process : hr_ex_employee_api.actual_termination_emp
dgreybarrowJobs
  1. Create new Job :hr_job_api.create_job
  2. Updating the job details :hr_job_api.update_job
dgreybarrowPositions
  1. Create new position :hr_position_api.create_position
  2. Updating the position details :hr_position_api.update_position
dgreybarrow
Where I can get the details for these API's
For Oracle release 11 ,11i release 12, the APIs are located in the operating system directories:
$PER_TOP/patch/xxx/sql and $PAY_TOP/patch/xxx/sql,
Refer to filenames like pe****api.pkh, py****api.pkh, and hr****api.pkh, where **** represents wildcard characters.
You can identify the package name and version of the API.
Run this query
 
 
SELECT text
FROM all_source
WHERE name LIKE '%your_api_name%'
AND text LIKE '%Header%';
 
This query will return the header line of the pac kage and package body showing the package name and current version number.
 
 
SELECT object_type,object_name
FROM user_objects
WHERE object_name
LIKE 'HR%API';
 
dgreybarrow
Publicly Callable Business Process APIs in Oracle HRMS
Oracle APIs are a logical grouping of all external process routines. The Oracle HRMS API sets delivers a set of PL/SQL packages procedures and functions that provide an open interface to the database.
There are three options for you to find the details:
  1. Oracle Documents
    To find a current list of publicly callable business process APIs in Oracle HRMS; you need to go into your On Line Help from within applications and use the search field to find 'Publicly Callable Business'. In the Search Results frame you will see a link to 'Publicly Callable Business Process APIs in Oracle HRMS (Oracle HRMS)' listed.
  2. Irep
    To find correct information on APIs you check Oracle Integration Repository (irep) which can accessed via MetaLink by selecting the Knowledge tab - Knowledge Browser sub-tab, then in the Online Documentation box select - Oracle Integration Repository.
  3. Search the database
    You may find official documentation on Publicaly Callable APIs as in options 1.
    You can search in the HR Schema for the stored procedures with name 'HR%API'. Open the Package spec and then read the inline comment about the parameters. This is very useful to understand what is meant by each paramater and what the API does.
  4. Etrm via metalink
    TRM helpful in selecting the appropriate API call.
dgreybarrowConsidertaion for using API
Before using any API's of payroll and HRMS you must have clear understanding of
  1. Data Tracking
  2. Validation paramater
  3. Correction, insert mode of API's
dgreybarrowAdditional Note for API's documents
You can download "Configuring, Reporting and System Administration in Oracle HRMS" document from the Oracle documentation library. It has a list of api's.