Search 800 + Posts

Dec 31, 2010

B2B Order Line Process and Order Line Split(B2B line)

This is Presentation about New R12 Feature of Order line Split for B2B Order line

In R12 Oracle allowed user to split a B2B Order line if the line is reserved against Inventory , but if line is reserved againt Requisition Or Purchase then system will not allow user to split the order line.



missing activity APPROVE_WAIT_FOR_H

Process "xxxxx_Order_line bill only" is missing activity APPROVE_WAIT_FOR_H   which is defined as the waiting/continuation of activity   APPROVE_CONT_L in process "yyyy_Order_HEADER With Approval"

Above Message is Standard and provided by Oracle to validate the workflow.

Please note that this is not an error , it is actually result of validation built in Oracle Order Management Transaction Type User Interface (UI).This type of error generally popup when you are trying to assign wrong line workflow with the Order Header workflow.
In this particular Error case user is trying to associated line workflow Process
"xxxxx_Order_line Bill Only " with the Order header workflow ""yyyy_Order_HEADER With Approval"".From name of header workflow it is very clear that header workflow is has activity related to approval.Please note that Order Header workflow that required Approvals , always has  activity "APPROVAL_CONT_L" , this is a seeded activity and .
In the  "Node Attributes" tab of this activity we can see 2 properties
  1. Waiting Activity  - APPROVE_WAIT_FOR_H
  2. Waiting flow  - Details
These 2 attributes clearly indicates that if we have ""APPROVAL_CONT_L" activity in Header then the Line(Details) should have an activity "APPROVE_WAIT_FOR_H".

And if we don't have "APPROVE_WAIT_FOR_H" in the Order line then when ever you assign the line workflow with missing Approval activity to a header that has approval activity and hit the "Validate" buttin system will throw this error.
Note - This is very common when customer customized the workflow and assign wrong line workflow with the header workflow.

thanks

Dec 24, 2010

Query to Print Workflow Infomation for Sales Order line.

select p.process_name, p.activity_name, p.activity_item_type, s.activity_result_code,

s.activity_status,s.process_activity,p.instance_label, s.item_key
from wf_process_activities p,
wf_item_activity_statuses s
where p.instance_id = s.process_activity
and s.item_type = 'OEOL'
and s.item_key = '&enter_line_id'
order by s.begin_date,s.end_date, s.execution_time

Query to get workflow details for ATO Model Stuck at WAIT_FOR_CTO and Config line alredy Shipped.

select p.process_name, p.activity_name, p.activity_item_type, s.activity_result_code,s.activity_status, s.action

from wf_item_activity_statuses s,
wf_process_activities p
where s.process_activity = p.instance_id
and s.item_type='OEOL'
and p.activity_name = 'WAIT_FOR_CTO'
and s.activity_status = 'NOTIFIED'
and s.item_key = to_char(&Enter_Model_line_id)
and exists (
   select 1 from wf_item_activity_statuses s2,
wf_process_activities p2,
oe_order_lines_all l
where l.item_type_code = 'CONFIG'
and l.ato_line_id = to_number(s.item_key)
and s2.item_key = to_char(l.line_id)
and s2.item_type = 'OEOL'
and p2.instance_id = s2.process_activity
and p2.activity_name = 'FULFILL_LINE'
and s2.activity_status = 'NOTIFIED');

PTO Model line got cancelled but Options etc lines are still Open.

Very rare case but many a times I have noticed that model line is cancelled and options/classes etc are still open and if you try to cancel any of these lines system throw error message.
In actual practice when ever we cancel the model, and if model is eligible for cancellation it will cancel model as well as optin/class/included items lines too. But if for some data corruption model line got cancel and rest of lines not cancelled then only way to resolve the problem is data fix.

In addition to cancellation , If we delete Model line (if eligible) , it will delete all the child lines (option/Class etc) too.

Dec 23, 2010

Christmas Tree Query

Found interesting Query to print Christmas Tree - 
-------------------
with Mx as (select 60 as MaxWidth from dual)
select decode 
        ( sign(floor(MaxWidth /2)-rownum) 
        , 1 
        , lpad( ' ', floor(MaxWidth /2)-(rownum-1)) || rpad( '*', 2*(rownum-1)+1, ' *') 
        , lpad( '* * *', floor(MaxWidth/2)+3)
        ) 
  from all_tables ,Mx 
where rownum < floor(MaxWidth /2) + 6;
-------------------

Happy Holidays and Merry Christmas

Dec 22, 2010

Supply to Order Workbench for Oracle B2B Sales Order.

This is Short post about how to Navigate between Order Management/requisition/Purchase Order for a B2B Sales Order via Oracle Order to Supply Wokbench.

Technology Strategies to maxmize the value of your Oracle Applications

Found an Interesting Presentation.

Oe_interfaced_flag and Inv_interfaced_flag in wsh_delivery_details table

This post is about 2 Important fields in wsh_delivery_details table from the Order Management and Inventory point of view.

These 2 flags/fields are
  1. oe_interfaced_flag
  2. inv_interfaced_flag
these plays very important role during the ship confirm process.
As I have stated in many of my posts on ITS that interface Trip Stop(ITS)has 2 parts
  1. Order Management and 
  2. Inventory. 
OM part will takes care of updating the fields in oe_order_lines_all tables like shipping_quantity , shipped_quantity etc and INV part take care of releasing the reservation once OM part is done.

NOTE - Inventort part of the ITS always exected once OM part exected successfully.

If OM part of ITS has executed , but INV is not yet exected because of some issues then oe_interfaced_flag = Y and inv_interfaced_flag remains = X(Pending) or N . In such case we have 2 options run the ITS again  ( but this time it will executed INV part only and release the reservation and decrement the stock) , or run the "Inventory Interface Concurrent Program"

But many a time I have noticed that delivery is shipped and shipped/shipping qty etc fields got populated , but oe_interfaced_flag = N and INV_interfaced-flag = N and every run of ITS try to ryn the OM Part and erroring out( as action that should be perofrmed by ITS has already completed). In such case one good option is update oe_interfaced_flag = Y and then run ITS gain or run inventory Interface.

Dec 21, 2010

WBP, Cost of activity and Defer activity in Oracle Workflow

This is a very short post related to
  1. Deferred activity, 
  2. How to make an activity a deferred activity and 
  3. What are the signifiance of Minimum Threshold and Maximum Threshold parameter for workflow background process.
Deferred activity is executed off-line in other wards it is an activity deferred to a background engine for execution.

There are two ways to mark an activity as deferred activity.
  • Assign a cost higher than a designated threshold to a background process. The engine then continues processing the next pending eligible activity that may occur in another parallel branch of the process.The default threshold for the Workflow Engine is 50 hundredths of a second. Activities with a cost higher than this are deferred to background engines. 
  • Explicit creates a defer activity as associating PL/SQL procedure named WF_STANDARD.DEFER with it.

Dec 20, 2010

Order Line stuck at BOOK_WAIT_FOR_H

Once in a while I have noticed that  Order lines stuck at the activity BOOK_WAIT_FOR_H.
This is the First activity in the sales Order line flow and mark as "Start" activity and it got triggered when we create an Order line .


When ever a new line created in an order that is in ENTERED status, order line workflow got created and in the staus BOOK_WAIT_FOR_H..Once we booked the order , work flow for the line progressed from this activity to next activity.
On the other hand if we entered order line in the already booked sales order , workflow for the line will not wait at this activity, rather will progressed  immediately from this activity to next activity.

In case you have a case where order header is booked and 1 or more lines got Stuck at this activity ,then you have no option , but to progress the lines from these activity by means of
  1. RETRY this activity either from the workflow admin responsibility or 
  2. With a datafix

Wrokflow activity status for Retry/Skip/Complete.

If you want to retry an workflow activity by a means of a script , and activity is in error status then it doesn't make any difference.In nutt shell if you want to RETRY an workflow activity for Order Management Seeded workflow it doesn't matter if the activity in in status Error or Notified RETRY will take care of that, But if you want to SKIP/Complete an workflow activity, then workflow activity  should be in Notified status other wise system will prompt an error message "Activity not in NOTIFIED status.

- Posted using BlogPress

Top 10 R12 Upgrade Best Practices.R12 Upgrade Series - 1

  • Determine Your Upgrade Path -  More recent releases have a direct upgrade path to the latest release.
  • Treat Your Upgrade Activity as a Formal Company Project - 
    • Structured approach for managing the tasks, resolving issues, and measuring progress is critical.  Build a team with broad, comprehensive skills.
    • Project team that comprises Functional experts, technical experts and representation from the business.
    • Focus on reporting with a direction that is geared towards a BI Publishing solution
  • Prepare the Organization
    • Proactively engage stakeholders to help prepare for the project and the changes that will be experienced once deployed.
    • Emphasis on repeated testing.
    • Focus on Pre and Post Upgrade requirements

Dec 19, 2010

Added Mobile template for my blog

Added mobile template for my blog  and it's looks cool on mobile devices.Check it out at eoracleapps.blogspot.com

Thanks

Model line stuck at WAIT_FOR_CTO in Oracle Order Management.

This post is a out model line for an ato model stuck at WAIT_for_CTO status either in notified or error status and all of the lines Options/Class/Config items are in Fulfill Notified status.
In such case best options at a data fix as there is no other way to progress line. In the data-fix if we progress the Model line from WAIT_FOR_CTO status it will progress all the lines .

Please Note that in actual process whenever config line got shipped and ITS executed successfully it progress workflow of config line from SHIP_LINE nottofed status to Fulfill and at the same time progress the Model line from WAIT_FOR_CTO status.(Note - In case of Model after booking, Model line workflow progress and Created the Config line and then reached to wait_for_cto status and wait till it got pused by the Confog line).

But in case Config line is in FULFILL-Notifed status and Model line is at WAIT_FOR_CTO - Error status , best solution is progress the model line by means of  "retry Activities in Error" and this will Progress the Model line as well as all the Class/Option as well as the Config line.

Many a cases I have notice that Model line is in SCHEDULE_LINE - Eligible status where as all the Class/option and config lines are FULFILL-Notifed status, best soltion in that case is Select the Model line and the Right click and then Select "Progress Order" from the Popup menu and it will progress all the lines to next activity.


- Posted using BlogPress

Data Flow and Query to connects Oracle Order Management and Purchasing tables for B2B Order

Often customers order products that you do not typically stock but that you do not manufacture either. You may want to purchase that item specifically for this order, have the supplier ship it to you, and then combine it with other items you may have purchased or stocked to create one shipment to the customer. This is a common scenario for Wholesale Distributors who use the S3 (Sell-Source-Ship) business model as well as for other demand channels. We call this process ‘back-to-back orders’ or ‘procure-to-order’.

Data flow for a Simple B2B(Back to Back Order ) in Oracle Order  Management-


.

Dec 16, 2010

Query to Connect Order Management , Requisition ,Purchasing tables for Drop Ship

Query to Connect Order Management , Requisition ,Purchasing tables for Drop Ship 

select h.order_number,l.line_number SO_Line_number,  ph.segment1
PO_Number,pl.line_num PO_Line_Number,
ph.authorization_status,ph.closed_date,ph.closed_code,
prh.interface_source_code,
prh.segment1 Requisition_number, prl.line_num Requisition_line_number
from
OE_DROP_SHIP_SOURCES ods,
oe_order_headers_all h,
oe_order_lines_all l,
  po_line_locations_all pll,
po_lines_all pl,
po_headers_all ph,
po_requisition_headers_all prh,
po_requisition_lines_all prl
where h.header_id = l.header_id
and h.header_id = ods.header_id
and ods.line_location_id = pll.line_location_id
and ods.po_header_id = ph.po_header_id
and ods.po_line_id = pl.po_line_id
and ph.po_header_id = pl.po_header_id
and prh.requisition_header_id = ods.requisition_header_id
and prl.requisition_line_id = ods.requisition_line_id
and prh.requisition_header_id = prl.requisition_header_id
and h.order_number = &sales_order_number

How to Create Repair line while doing an RMA

How to Create Repair line while doing an RMA –
Case that I am going to discuss in the post is very common practice, and theirs is Standard solution, but over the weekend I came across some issues and thought of putting it on the Post.
In the present day complex manufacturing that involve 3rd party /contract
Manufacturing /Repair there is need for a flow in Supply chain to create the repair order as soon as user receive an RMA (with the assumption that RMA still be repaired). To fulfill there is almost a standard in Order management to create an Outgoing Repair line as soon as we received the RMA line.
In nutshell as soon as we have RMA (inbound line), created the outbound line.

There are 2 ways to Implement this solution

#1.Create Inbound and outbound line together with by means of Process Order API.

#2.Customized Standard RMA line workflow and add a custom activity (to create a outbound line via Process Order API), after the sub-process “Return Receiving – Line”. By doing this system will create the outbound line only once we successfully received the RMA in the inventory.

Dec 15, 2010

Query to Connect tables from Oracle Order Management to Oracle receivables

select to_char(l.line_number) ||
decode(l.shipment_number, null, null, '.' ||
to_char(l.shipment_number))||
decode(l.option_number, null, null, '.' ||
to_char(l.option_number)) ||
decode(l.component_number, null, null,
decode(l.option_number, null, '.',null)||
'.'||to_char(l.component_number))||
decode(l.service_number,null,null,
decode(l.component_number, null, '.' , null) ||
decode(l.option_number, null, '.', null ) ||
'.'|| to_char(l.service_number)) order_line_number,
h.order_number,l.line_id,l.ordered_quantity,l.shipped_quantity,l.invoiced_quantity,
wdd.delivery_detail_id,wnd.delivery_id,wdd.shipped_quantity,
a.org_id,
a.creation_date ,a.trx_number,
b.quantity_ordered , b.quantity_invoiced,
b.interface_line_attribute1,b.interface_line_attribute3,
b.interface_line_attribute6,interface_line_attribute12
from ra_customer_trx_all a,
ra_customer_trx_lines_all b,
oe_order_headers_all h
, oe_order_lines_all l
,wsh_delivery_details wdd

Dec 13, 2010

Sample OE_ORDER_PUB to Create and Canel Order Line

-- API to create Sales Order and Return Order.
declare
l_api_version_number NUMBER := 1;
l_return_status VARCHAR2(2000);
l_msg_count NUMBER;
l_msg_data VARCHAR2(2000);
/*****************PARAMETERS****************************************************/
l_debug_level number := 1; -- OM DEBUG LEVEL (MAX 5)
l_org number  := 204; -- OPERATING UNIT
l_user number := 1318; -- USER
l_resp number := 21623; -- RESPONSIBLILTY
l_appl number := 660; -- ORDER MANAGEMENT
/***INPUT VARIABLES FOR PROCESS_ORDER API*************************/
l_header_rec oe_order_pub.header_rec_type;
l_line_tbl oe_order_pub.line_tbl_type;
l_action_request_tbl oe_order_pub.Request_Tbl_Type;
/***OUT VARIABLES FOR PROCESS_ORDER API***************************/
l_header_rec_out oe_order_pub.header_rec_type;
l_header_val_rec_out oe_order_pub.header_val_rec_type;
l_header_adj_tbl_out oe_order_pub.header_adj_tbl_type;
l_header_adj_val_tbl_out oe_order_pub.header_adj_val_tbl_type;
l_header_price_att_tbl_out oe_order_pub.header_price_att_tbl_type;
l_header_adj_att_tbl_out oe_order_pub.header_adj_att_tbl_type;
l_header_adj_assoc_tbl_out oe_order_pub.header_adj_assoc_tbl_type;
l_header_scredit_tbl_out oe_order_pub.header_scredit_tbl_type;
l_header_scredit_val_tbl_out oe_order_pub.header_scredit_val_tbl_type;
l_line_tbl_out oe_order_pub.line_tbl_type;
l_line_val_tbl_out oe_order_pub.line_val_tbl_type;

Sample OE_ORDER_PUB to Create Order with 1 Ship line and 1 RMA Line

-- API to create Sales Order and Return Order.
declare
l_api_version_number NUMBER := 1;
l_return_status VARCHAR2(2000);
l_msg_count NUMBER;
l_msg_data VARCHAR2(2000);
/*****************PARAMETERS****************************************************/
l_debug_level number := 1; -- OM DEBUG LEVEL (MAX 5)
l_org number  := 204; -- OPERATING UNIT
l_user number := 1318; -- USER
l_resp number := 21623; -- RESPONSIBLILTY
l_appl number := 660; -- ORDER MANAGEMENT
/***INPUT VARIABLES FOR PROCESS_ORDER API*************************/
l_header_rec oe_order_pub.header_rec_type;
l_line_tbl oe_order_pub.line_tbl_type;
l_action_request_tbl oe_order_pub.Request_Tbl_Type;
/***OUT VARIABLES FOR PROCESS_ORDER API***************************/
l_header_rec_out oe_order_pub.header_rec_type;
l_header_val_rec_out oe_order_pub.header_val_rec_type;
l_header_adj_tbl_out oe_order_pub.header_adj_tbl_type;
l_header_adj_val_tbl_out oe_order_pub.header_adj_val_tbl_type;
l_header_price_att_tbl_out oe_order_pub.header_price_att_tbl_type;
l_header_adj_att_tbl_out oe_order_pub.header_adj_att_tbl_type;
l_header_adj_assoc_tbl_out oe_order_pub.header_adj_assoc_tbl_type;
l_header_scredit_tbl_out oe_order_pub.header_scredit_tbl_type;
l_header_scredit_val_tbl_out oe_order_pub.header_scredit_val_tbl_type;
l_line_tbl_out oe_order_pub.line_tbl_type;
l_line_val_tbl_out oe_order_pub.line_val_tbl_type;
l_line_adj_tbl_out oe_order_pub.line_adj_tbl_type;
l_line_adj_val_tbl_out oe_order_pub.line_adj_val_tbl_type;

Dec 11, 2010

Query to display Sales Order Line Number

Below is Simple Query to display Sales Order Line Number in Oracle Order Management

select to_char(l.line_number) ||
           decode(l.shipment_number, null, null, '.' ||
 to_char(l.shipment_number))||
           decode(l.option_number, null, null, '.' ||
 to_char(l.option_number)) ||
           decode(l.component_number, null, null,
                  decode(l.option_number, null, '.',null)||
                  '.'||to_char(l.component_number))||
           decode(l.service_number,null,null,
                  decode(l.component_number, null, '.' , null) ||
                         decode(l.option_number, null, '.', null ) ||
                         '.'|| to_char(l.service_number))||','||
h.order_number
from
oe_order_headers_all h
, oe_order_lines_all l
where
h.header_id = l.header_id
and l.open_flag='Y'

Dec 9, 2010

Query to check all the Picked Delivery Deatils where Reservation not exists

 Select ool.line_id,
 wdd.delivery_detail_id,wdd.source_line_id,wdd.ship_from_location_id,wdd.organi
 zation_id,wdd.src_requested_quantity,
  wdd.shipped_quantity,wdd.move_order_line_id,wdd.customer_item_id,wdd.split_fro
 m_delivery_detail_id,
   wdd.source_header_number,wdd.source_line_number,wdd.picked_quantity
  from wsh_delivery_details wdd , oe_order_lines_all ool
  where wdd.source_line_id  = ool.line_id
        and ool.open_flag ='Y'
        and wdd.source_code ='OE'
        and Picked_quantity > 0
        and released_status= 'Y'
        and ool.header_id = &enter_Sales_Order_Header_id
        and not exists
        (
        select 1 from mtl_reservations mr
         where mr.demand_source_line_id = wdd.source_line_id
            and mr.inventory_item_id = wdd.inventory_item_id) 

Above sample script is with Order_Header_id as a Parameter. If you want to check for all the Orders , then remove the parameter Condition.

Hope that Helps.

Unable to save the changes as the corresponding Internal Requisition cannot be updated

Error "Unable to save the changes as the corresponding Internal Requisition cannot be updated" while trying to cancel the Oracle Order Management Internal Sales Order .
without going deep , Just my 2 cents here - you usually encounter this error while trying to cancel Internal Sales Order line(in Oracle Order Management) ,and data in the Purchasing side is corrupted , like internal requisition line is either cancelled or closed.
Solution to thi sissue is -  make sure that your PO and OM side are in sysnc with each other.In case their is data corruption , best option is contact Oracle support for data -fix

Dec 7, 2010

Steps Required to Close Inventory Period in Oracle Application

This is post about the Steps that we should follow while closing Inventory Period in Oracle Application. Below power point presentation explain

1. Steps that we should follows.
2. Exception reports that we should run before we try to close the Period.

NOTE - Please Note that Period Close in irreversible Process.


Hope that helps.

How to maximize collective intelligence

Another Very Interesting Presentation from Oracle.


Oracle Application Unlimited.

Dec 3, 2010

Automatic Attachment in Oracle Order Management

This is Detailed Post about what Automatic Attachment  in Oracle Order Management - Please refer the below Presentation for complete Setup and Short Demo.
 What is an Attachment
  1. Attachment is a file,text doc, or a web file attached to a particular entity, to capture additional information or data, that is otherwise not captured through applications.
  2. Enable users to link unstructured data, such as images,word doc, spreadsheets, or text to application data.
  3. Attachment information can flow through entire application
What is Automatic Attachment -
Automatic Attachment in Order Management means ,moment we create and Save the Sales Order , System will attach Attachment to Order Header/Lines based on the Rules and Attributes you have created.



In Oracle Order management , we can enable Auto attachments by either setting the Profile OM: Apply Automatic Attachments = Yes , if it is yes then whenever we save Order system will attach attachment , but if  it No then we need to  Navigate to Action Button and  > Automatic Attachment.

Please note that Automatic Attachment in Oracle Order Management are based on the rules on Attributes . As of Now Supported Attributes are -
For Order Header
  1. Customer
  2. Customer PO
  3. Invoice To
  4. Order Category
  5. Order Type
  6. Ship To

 For Order Line
  1. Customer
  2. Inventory Item
  3. Invoice To
  4. Line Category
  5. Line Type
  6. Purchase Order
  7. Ship To
NOTE - This post is for Auto Attachment in Oracle Order Management and not cover any basic functionality of Attachment.