Category Archives: Purchasing

Differences between HR:Security Profile & MO:Security Profile

HR:Security Profile and MO:Security Profile are used for MOAC (Multi-Org-Access-Control).
HR:Security Profile is used to restrict the data in Human Resources according to the Business Group or whatever criteria you define in this security profile. Thus, for HR, it uses this secuity profile in its data exposure to the user.
MO:Security Profile acts the same but is used for Financials and Manufacturing applications. It restricts the access (site level or can be set at responsibility level) to certain operating unit (or whatever criteria defined in the security profile).
If there is no value at MO:Security Profile, then Financials and Manufacturing use the HR:Security Profile option for their data exposure to users.

Multi-Org features in Oracle EBS 11i and R12

Generally, Oracle 11i fulfills multi-org feature by the views in apps schema; while Oracle R12 fulfills the feature by Virtual Private Database feature.

In 11i,  the base table are created by product schema, e.g. oe_order_headers_all in ont db schema. In apps schema, there’s a view called oe_order_headers, which has a where clause like “org_id = SUBSTRB (USERENV (‘CLIENT_INFO’), 1, 10)” . So every user accessed application has his own userenv, then every user can access his own org’s data.

In R12, the base table are also created by product schema, e.g. oe_order_haders_all in ont schema. In apps schema, there’s a Synonym oe_order_headers with VPD feature to fulfill the multi-org feature.

In 11i, we set MO: Operating Unit profile on the responsibility level, then all of user logged from this responsibility has this OU(org_id) client info, so this user can only access this operating unit data from this responsibility.

In R12, we set up a security profile, which can include several operating units, then we assign this security profile to the profile option “MO: Security Profile” on the responsibility level.  The user logged from this responsibility can access all of OUs’ data  in the security profile.

Adding a New Operating Unit


The following steps are required to add new operating units to your organizational structure:
1.1 Revise the Organization Structure.
1.2 Define Sets of Books (optional).
1.3 Define Locations.
1.4. Define Organizations and Relationships.

2.1 Define Responsibilities.
2.2 Set Profile Options for Each Responsibility linked to the new Operating Unit.
1.1. HR: Business Group
1.2  HR: Security Option
1.3: HR: User Type (FOR accessing HRMS functions)
1.4  HR: Cross Business Group
2.1. GL: Set of Books(11i)
2.1  GL:%Ledger%  (R12)
2.3  GL: Data Access Set. This profile option to control the ledgers that can be used by Oracle General Ledger.
3.1. MO: Operating Unit
3.2. MO: Security Profile (R12)
3.3. MO: Default Operating Unit
4.1 Tax: Allow Override of Tax Code
4.2 Tax: Invoice Freight as Revenue
4.3 Tax: Inventory Item for Freight
5.1 Sequential Numbering
5.2 INV: Intercompany Currency Conversion
2.3 Run the Replicate Seed Data concurrent program.

3.1 Define Inventory Organization Security.
3.2 Define Intercompany Relations (optional).
3.3 Implement the Application Products.

4.1 Secure Balancing Segment Values (optional).
4.2 Run the Setup Validation Report (recommended).
4.3 Implement Document Sequencing (optional).
4.4 Set the top reporting level (optional).
4.5 Set up conflict domains (optional).

Can’t return to vendor with error code APP-PO-14094

One user reported she can’t return on PO receipt to vendor and meet the error code APP-PO-14094 like below:

When meeting this message, we always check the status of PO/PO line/PO shipment lines. If the status is cancel or closed, the user may can’t do RTV. But for this case, the status of PO/PO line/PO shipment line are all “Open”.

Then I think maybe the goods has been sold out. In Oracle, if you want to do RTV, you must make sure there are enough goods in the original inventory organization and subinventory when you received them. But for this case, there’re enough goods over there.

At last, I checked “Transaction Status Summary” window and found there’s a pending transactions over there. This is maybe because something happens when the user try to do RTV(return to supplier) and it makes transaction pending and failed. I deleted this transaction from this form by “Delete” button. Then the user can do RTV again and no error message “APP-PO-14094” shows again.

Significance of Inventory Organization field in Financial Options

Each of your Purchasing operating units can be associated with one inventory organization. When you associate your Purchasing operating unit with an inventory organization, items you define in this organization become available in Purchasing.

You can do this by selecting an appropriate Inventory Organization in Financial Options screen (Oracle Purchasing > Setup > Organizations > Financial Options > ‘Supplier-Purchasing’ alternate region > ‘Inventory Organization’ field).

It is important to note that the lov for this field doesn’t only show inventory organizations classified as an Item Master but also all other Inventory Organizations, provided the organization uses the same set of books as your Purchasing operating unit.

In cases where an inventory organization NOT classified as an Item Master is selected, all the items defined in the Item Master organization associated to this Inventory Organization, and ASSIGNED to this Inventory Organization, form the set of items available to this setup of Oracle Purchasing. As a result none of the items, which are not specifically assigned to this Inventory Organization (though defined in its Item Master) can be accessed by this setup
of Oracle Purchasing.

PO Submission Validation/Check

We all know there’s a button call “Approve…” in the right bottom of the PO ENTRY form. When you click it, what happens?

We all experienced that an error message said like “shipment line is not equal to po line, etc.”, so it looks Oracle Purchasing executes some validation/check process when you click “Approve” button.

Yes, you’re right. The package PO_DOCUMENT_CHECKS_PVT handle this validation/check. The procedure po_submission_check under the package is the main procedure. It calls some other procedures (also within this package) to do validation progress by progress against the document type, for example, for standard PO, PO_DOCUMENT_CHECKS_PVT.po_submission_check calls PO_CHECK procedure to do the checks.

The structure of PO_CHECK procedure looks like below

“l_progress := ‘001’;

l_progress := ‘002’;

l_progress := ‘003’;

l_progress := ‘004’;

So if you want to add some more validations restriction, you can add some new segment code like

“l_progress := ‘XXX_CUS01’;

It looks very flexible.

For some more information/application about this design, please see the post later.

Preference for Purchase Order and Requisition

To facilitate PO/requisition entry, Oracle introduce “Preference”  functionality to users. Before entering PO or requisition, you can specify perference, then a lot of information in PO line, PO shipment line, PO distribution line can be auto default to your new added lines.

To use Preference,

  • Open the PO entery window and directly go to Menu > Tools > Preference;
  • Enter the Inventory Organization, Tax Code, etc.

Note that Preference is just helpful for new added PO lines, but not for existing lines, for example, your copied PO document.

Receipt, Return and Correct

It is ok to use “return” to correct “receipt” and use “receipt” to correct “return“. For example,  you received 20 units and then found you just received 19 units, it is ok to return 1 unit to correct your mistake.

But is it reasonable?  No, because it corrupts your receiving and returning trail.  In above example, you actually received 19 unit, but in the system it seems that you received 20 unit and then found one unit damaged and then returned it.

So we recommend you to use correct to handle that.  Go to Purchasing > Receiving > Correction or Inventory > Transactions > Receiving > Corrections, find out the mistake PO/RMA and then enter the correct quantity.

Please take care that,  against your organization’s receiving option setup, you may select Receipt Routing as “Direct Delivery”, then you directly receive and deliver your goods by one one saving action. But when you correct it, you must do two steps for it, one is from your on-hand inventory to receiving inventory, the other is from your receiving inventory to your supplier.

Return an Approved Requisition

Occassionally, the buyers can’t help to buy some items for requestor, although the requisition has been approved by managers’ hierarchy.  To return an approved requisition, buyer can do it in “AutoCreate” window.

1. Find out the requisition line, which can’t be fulfilled, in “AutoCreate” window;
2. Go to “Tools” menu and select “Return Requisition“;
3. Enter the reasons to return the approved requisition, e.g. “The item has been expired”, etc.;
4. Click “OK” button.

Then the requisition requestor will receive a notification about this and he/she can modify the requisition and submit for approval again.

Different Exchange Rate in PO Header and PO Distribution Line

I may refer that if you change the exchange rate in PO header, the one in PO distribution line would not change correspondingly. This means if you don’t change the rate in PO distribution line manually, the rates are different. Then what happens if the situation likes that?

Against my colleague’s, a nice person, investigation and my testing this morning, it depends on “Invoice Match Option” in the shipment line. If it is set to match with purchase order, the PO receiving accounting entry is calculated with the rate in PO distribution line as well as PO invoice matching accounting entry. If it is set to match with receipt, the PO receiving entry is calculated with the rate in PO header as well as PO invoice matching accounting entry.

Closed/Finally Closed PO/Cancelled in uninvoiced receipt report

Some user often report that there are some closed PO or finally closed or even cancelled POs are still in Uninvoiced Receipt Report. How to handle it?

For closed PO, just re-open it and then you can receive it, RTV it or invoice it.

For cancelled PO,  create an AP invoice with the amount “0” and match it with the PO receiving, then add a distribution line to reverse the matching line or transfer the matching line to another account.

For finally PO, nothing can do except select the “Include Closed PO?” parameter as “No” when submit report.

From metalink, Oracle Uninvoiced Receipt Report always showns the openning receiving transactions with the status of “Closed to Invoice”, “Closed to receiving”.  But for “Closed” and “Finally Closed” opening receiving transactions, you can filter out them through selecting parameter of the request.

Recovery Rate on PO Distribution line

The recovery rate usually works together with tax code in shipment line. The recovery rate is the percentage of the tax amount which can be charge to customer, e.g. VAT. Generally this part of tax amount will not go into cost account. For exmple, if you select tax code as 17% but don’t fill in the recovery rate, the PO line price is 100, the item cost will be 117; while if you select tax code as 17% but fill in the recovery rate as 100, the item cost will be 100.