Your Shop

Saturday, August 1, 2009

What Are The Steps Required To Setup An Internal Requisition In Purchasing?

This detail has been taken from a very informative note in metalink.
Please refer to the Doc id :406312.1

The following steps outline the setups required, followed with an internal requisition creation example:

Responsibility: Inventory
(Ensure the responsibility has access to both the source and destination inventory organizations).

Step 1 - Creating the Item
Navigation: Items/Master Items

Enter the Item Name and Description
From the top text menu - choose Tools/Copy From
Apply the 'Purchased Item' template - then Choose Done

Remaining in the form, choose the Purchasing Tab - add a price if the item is to be used in iProcurement.
Uncheck the purchasing checkboxes, if the item is to ONLY be ordered from an internal source.

Next, move to the Order Management tab, and choose the attributes:
Internal Ordered
Internal Orders Enabled
OE Transactable
Save the item

Remaining in the form, with the item still present, choose 'Tools/Organization Assignments' from the top text menu.
Ensure that the item is assigned to both the Source and Destination Inventory Organizations and save.
In this example, the Item will have a destination of 'V1 - Vision Operations' and the source will be 'M1 - Seattle Mfg'.

Step 2 - Create the Shipping Network
Navigation: Setup/Organizations/Shipping Networks

Enter the Inventory Organization that will be the Source and the scope should be From or To Organizations
Choose the Transfer Type
Direct - means that when the Internal Sales Order is shipped the receipt process in the destination organization is done automatically
Intransit - means that when the Internal Sales Order is shipped - the destination inventory organization has to manually do the receiving process in Purchasing
Choose Internal Order Required checkbox - Save


Please Note - If the Source and Destination Inventory Organizations are the same, then this step is conditionally not required. (Essentially the Item is being transferred between subinventories in the same Inventory Organization).

Step 3 - Create the Location
Navigation: Setup/Organization/Locations

Enter a Location Name - for the Internal Location
This is the location that is used as the Destination Location
The Location will eventually be tied to a customer


The location created will be used to tie the Destination Location in the requisition form to the Internal Customer to be used on the Sales Order form.

Step 4 - Conduct a Miscellaneous Receipt
Navigation: Transactions/Miscellaneous Transactions

Choose the Inventory Organization that will be the Source Inventory Organization
Enter 'Miscellaneous Receipt' - Choose 'Transaction Lines'
Enter the Item created and then a sub-inventory, quantity, etc...


This step is being done to satisfy the Internal Sales Order which is created, as it ensures there will be ample quantity On Hand to
perform the shipping portion of the Internal Sales Order process.


Responsibility: Order Management Super User

Step 5 - Create the Internal Customer - Assign the Location
Navigation: Customers/Standard

Enter the Internal Customer Name - Choose the Find Button
If it is a new customer - choose New from the dialog box that appears
In this form - choose Open and enter the address details
Move to the lower half of the form - enter a usage - of 'Ship To'
Followed by choosing the Open button in the lower right hand corner of the form

In the new form which opened - enter the basic information for Payment Terms, Salesperson, etc..

Very Important - in the Internal Block - choose the Location which was created in Step 3
This association ties the customer to the location (Explanation will be confirmed as to why in upcoming steps)
Move to enter other pertinent information such as price list, etc, save - Close this sub-form only.

It is also recommended to create a Bill To Usage record for the new customer.

Add a new record to the usage - and call this Bill To
Hit Open and enter any new information that pertains to the Bill To

Responsibility: Purchasing Super User

Step 6 - Item Price (Informational Step - No Action Taken)
Navigation: Items/Master Items

Enter query mode using the F11 key or View/Query By Example
Enter the item 'INTERNAL ITEM' in this scenario
Execute the query to fetch the item
Choose Tools/Item Costs from the top text menu
The screen to follow shows the item price that is used when creating the Internal Requisition. This is how purchasing derives the price when creating the Internal Requisition.

Step 7 - Creating the Requisition
Navigation: Requisitions/Purchase Requisitions

In the Order Type Field - change the Order Type to Internal
Click into the Lines Region on the Item field
At this point - look to the Destination fields - this information is fetched from the Employee Record
If the Destination Inventory Organization is not proper - move to that field and change it
If the Location is not the internal location - move to that field and change it to the new Internal Location

Question: Why is the Following Error message encountered : 'Destination location requires customer association.'
The reason for this error is that the code is trying to match the Location that is currently entered on the form to a
customer, and the customer association is not found. This was done earlier in step 4. The solution to this error is to
setup the employee record to default a location that was associated with a customer (as in step 4 above) or prior to
entering the item, move to the destination section of the form and enter an inventory organization and location that is
properly assigned to a customer, followed with entry of the item.

Approve the Requisition.

Step 8 - Submit the 'Create Internal Orders' process

Navigation: Reports/Run

Single Request - execute the request - 'Create Internal Orders'
This process is responsible for inserting data into the Order Management interface Tables. One of the fields that is inserted
is the location_id - and because Order Management uses Customers rather than locations - this is why it is mandatory to assign the Internal Location to the Customer. The location that is passed from purchasing is correlated to a customer so as to allow the Order Import to run successfully.

The following sql can be used to review the data in the oe_iface tables.

It can be used as a confirmation that the requisition has been inserted into the oe_lines_iface_all table:

select count(*) from oe_lines_iface_all where orig_sys_line_ref
in (select requisition_line_id from po_requisition_lines_all
where requisition_header_id in
(select requisition_header_id from po_requisition_headers_all where segment1 = '&Requisition_Number'))

Question: How can the data for Internal Requisitions be viewed in the Order Management Module?

This is possible using the Order Management Responsibility - and navigating to Orders/Import Orders/Corrections (above)

Choose an order type of Internal
In Order Reference use the List of Values to locate the Requisition Number
If the Requisition is not located - it has either been created into a Sales Order or not inserted into the tables by the Create Internal Orders program

The records are viewable at this stage and can be deleted.
PLEASE NOTE - if records are going to be deleted, it is necessary to Delete the Lines first and then the header

Be sure to choose Lines first - and then choose the delete icon from the toolbar - then delete the header

Deletion of the header record will NOT delete the line - it is not a cascade delete option. If the header is deleted prior to the line - it is not possible to ever again locate the line in this form - sqlplus will have to be used to remove the line.

Enhancement Bug 4966920 has been created to improve this form and add the cascade delete functionality.

Question: How can the Internal Requisition be resubmitted to the Order Management interface tables?
In the po_requisition_headers_all table there is a column 'transferred_to_oe_flag'. Setting this column to a value of 'N' followed with a run of the Create Internal Orders process will again post the requisition data into the Order Management interface tables. There are currently no options available through the Oracle Purchasing forms that allow the updating of this flag, so sqlplus would have to be used.

Step 9 - Import the Internal Sales Order

Responsibility: Order Management Super User

Navigation: Orders-Returns/Import Orders/Order Import Request

Enter the parameters for the Order Import request - Choosing Source Internal and Order Reference the Requisition Number
Submit the request and confirm it completes with success

Question: Does the Purchasing Create Internal Orders process pass flexfield values from the Purchase Requisition?
Currently, the Create Internal Orders process does not pass any values from flexfields. If there are mandatory/required flexfields setup on the Order Lines table in Order Management, a value will have to be defaulted as a default value from some other method in order for the import process to complete successfully.

Navigation: Orders-Returns/Order Organizer

In the Find form enter the requisition number
Choose Find and the Sales Order is presented - which confirms the order was imported
The corrections form should be used to confirm if any errors have occurred during the import if the sales order is not found

Question: Can the price be updated adjusted during the Order Import?
The calculate price flag is frozen and the price cannot be changed. This is based on the values inserted by the
Create Internal Orders process from Purchasing.

Question: Where is the schedule Ship Date coming from?
The scheduled ship date is passed from the requisition Need By Date, it cannot be defaulted any differently.


Step 10 - Execute Pick Release against the Sales Order
Navigation: Shipping/Release Sales Order

Move to Inventory tab - and choose the source inventory organization
Enter the Internal Sales Order number - and adjust the ship dates to include the ship date on the order line
Move to the Shipping Tab - choose Yes for Autocreate Delivery and Auto Pick Confirm


Choosing these settings will conduct the move order transaction automatically.

Choose Concurrent and Confirm the Pick Release process has completed with success

The pick release process is responsible for moving the quantity from the sub-inventory (selected during the miscellaneous transaction earlier) for the Source Organization - to the Staging sub-inventory.

Step 11 - Execute the Ship Confirm for the Sales Order
Navigation: Shipping/Transactions

Enter the Internal Sales Order in the field 'From Order Number'
Choose Find and then move to the Delivery Tab
Next choose Ship Confirm from the actions and then the GO Button

In the new sub-form that appears - take the defaults or adjust appropriately and choose Ok


During this stage, the quantity is being transacted between the staging sub-inventory and the destination inventory organization.
Earlier, when setting up the shipping network setups, Direct was chosen - meaning the receipt will be conducted at the time of ship confirm.

Step 12 - Confirm the Quantity is Delivered on the Requisition
Responsibility: Purchasing Super User

Navigation: Receiving/Receiving Transactions Summary

Choose the Destination Inventory Organization
Change the source to Internal and enter the Item Number - choose transactions - and hit find

The transactions are displayed.

Question: Sometimes the following error occurs, why?

Error: Default sub-inventory is not defined in the destination organization
Action: Either the transfer sub-inventory should be populated or a default sub-inventory should be setup for the destination organization using the inventory forms.

This error means that a destination sub-inventory was not entered on the Requisition form in the destination section of the form. This is visible in the requisition in step 7 of this note.

To correct this error, query the item in the item master and view the Destination Organization details of the item using the inventory responsibility.

Move to the Receiving Tab - and enter a Default Receiving Subinventory in the lower right hand corner - save
Next, still in inventory - Navigate to Transactions/Transaction Open Interface - query on the item in question
Choose 'Find' and then next to the record returned in error choose 'Submit' checkbox and save


Next run of the inventory interface transaction manager will process the record using the new default sub-inventory entered into the item's receiving tab. If using iprocurement, the default sub-inventory can be set in the iProcurement preferences, and will be used when creating the requisitions, avoiding the error all together for future requisitions.

Suggested Debugging Actions:
1. Note 224341.1 supplies an excellent diagnostic script to verify all setups are complete for Internal Requisition creation.
2. Note 133464.1 delivers the omse11i.sql script, which when executed for the Internal Sales Order, delivers all
3.Note 133464.1 delivers the omse11i.sql script, which when executed for the Internal Sales Order, delivers all table data for Purchasing, Receiving, Inventory and Order Management.

SQL Scripts:
1. The following sql confirms that the Create Internal Orders concurrent process has inserted the requisition into the Order Management Interface tables.

SELECT COUNT (*)
FROM oe_lines_iface_all
WHERE orig_sys_line_ref IN (SELECT requisition_line_id FROM po_requisition_lines_all
WHERE requisition_header_id IN (SELECT requisition_header_id FROM po_requisition_headers_all
WHERE segment1 = '&Requisition_Number'));


2. The following sql can be used to confirm the Location defined in Oracle Purchasing is tied to a Customer in Order Management. The script shows that last ten locations created in order of creation date.

SELECT rtrim(hl.location_code) location_code,
hl.location_id,
ood.organization_code,
pla.organization_id,
hl.ship_to_site_flag,
hl.receiving_site_flag,
pla.customer_id,
rtrim(rc.customer_name) customer_name
FROM hr_locations_all hl,
org_organization_definitions ood,
po_location_associations_all pla,
ra_customers rc
WHERE pla.location_id = hl.location_id
AND rc.customer_id(+) = pla.customer_id
AND ood.organization_id(+) = pla.organization_id
AND rownum <>
order by hl.creation_date desc;

3. The following sql can be used to review the requisition, sales order, and receipt number. It is offered to assist in showing the joins between the various tables.

SELECT porh.segment1, porl.line_num, pord.distribution_num,
ooh.order_number sales_order, ool.line_number so_line_num,
rsh.receipt_num, rcv.transaction_type
FROM oe_order_headers_all ooh,
po_requisition_headers_all porh,
po_requisition_lines_all porl,
po_req_distributions_all pord,
oe_order_lines_all ool,
po_system_parameters_all posp,
rcv_shipment_headers rsh,
rcv_transactions rcv
WHERE ooh.order_source_id = posp.order_source_id --instead of hardcoding to 10
AND porh.org_id = posp.org_id
AND porh.requisition_header_id = ool.source_document_id
AND porl.requisition_line_id = ool.source_document_line_id
AND porh.requisition_header_id = porl.requisition_header_id
AND porl.requisition_line_id = pord.requisition_line_id
AND porl.requisition_line_id = rcv.requisition_line_id
AND pord.distribution_id = rcv.req_distribution_id
AND rcv.shipment_header_id = rsh.shipment_header_id
AND ooh.org_id = posp.org_id
AND ool.header_id = ooh.header_id
AND ool.shipped_quantity > 0
AND ool.orig_sys_line_ref not like '%OE_ORDER_LINES_ALL%'
AND ool.source_document_line_id is not null

No comments:

Post a Comment

Search Blog