This script cancels order lines stuck in Oracle Applications that cannot be progressed or cancelled normally. It updates the order lines, cancels associated delivery details, and progresses any workflows to closed. It does not perform all cancellation steps and should only be used for stuck lines as a last resort.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
302 views5 pages
Cancel Line
This script cancels order lines stuck in Oracle Applications that cannot be progressed or cancelled normally. It updates the order lines, cancels associated delivery details, and progresses any workflows to closed. It does not perform all cancellation steps and should only be used for stuck lines as a last resort.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5
REM $Header: ontd0008.sql 115.
1 2004/05/21 22:26:56 tbharti ship $
REM +=======================================================================+ REM | Copyright (c) 2003 Oracle Corporation, Redwood Shores, CA, USA | REM | All rights reserved. | REM +=======================================================================+ REM | FILENAME | REM | ontd0008.sql | REM | | REM | DESCRIPTION | REM | This script has been created to allow cancelling those lines | REM | which are stuck due to some data corruption and can neither | REM | be progressed nor cancelled from the application.This script | REM | will do the following: | REM | | REM | 1. Update Lines to show as if Cancelled. | REM | 2. Cancel Delivery Details(if any) associated to order lines. | REM | 3. Progress flow(if exists) to CLOSE. | REM | | REM | Note that this script DOES NOT: | REM | | REM | 1. Delink the Configured Items that may exist on an order. | REM | 2. Update the history tables with cancellation information. | REM | 3. Unschedule the Lines. Inventory patch # 1807561 should be | REM | applied after running this script to relieve the demand. | REM | 4. Update Move Order Lines, log a clean bug against inventory | REM | 5. Update Supply. | REM | | REM | DISCLAIMER | REM | Do not use this script as a replacement for OM Cancellation | REM | functionality as it's strictly meant for those stuck order | REM | lines which can neither be progressed nor cancelled from the | REM | application. | REM | | REM | Use this script at your own risk. The script has been tested | REM | and appears to works as intended. However, you should always | REM | test any script before relying on it. | REM | | REM | Proofread the script prior to running it. Due to differences | REM | in the way text editors,email packages and operating systems | REM | handle text formatting (spaces, tabs and carriage returns), | REM | this script may not be in an executable state when you first | REM | receive it. Check over the script to ensure that errors of | REM | this type are corrected. | REM | | REM | Do not remove disclaimer paragraph. | REM | | REM | INPUT/OUTPUT | REM | Inputs : Line Id(Required) | REM | | REM | Output : Report is printed to an O/S file named line_id.lst | REM | | REM | NOTE | REM | This script should be tested in TEST Instance first. | REM | If results are satisfactory in TEST, then only use in | REM | PRODUCTION Instance. | REM | | REM | HISTORY | REM | 14-MAR-2002 Tarun Bharti Created | REM +=======================================================================+ REM dbdrv:none SET VERIFY OFF; WHENEVER OSERROR EXIT FAILURE ROLLBACK; WHENEVER SQLERROR EXIT FAILURE ROLLBACK; clear buffer; set serveroutput on size 500000 set feed off set pagesize 1000 set linesize 120 set underline '=' Prompt accept order_line_id num prompt 'Enter LINE_ID of the line to Cancel: ' Prompt spool &order_line_id declare l_lin_id number := &order_line_id; l_lin_key varchar2(30) := to_char(l_lin_id); l_ordered_qty number; l_flow_exists varchar2(1); l_user_id number; l_resp_id number; l_resp_appl_id number; l_heading varchar2(1) := 'N'; cursor wsh_ifaced is select substr(wdd.source_line_number, 1, 15) line_num , substr(wdd.item_description, 1, 30) item_name , wdd.shipped_quantity , wdd.source_line_id line_id from wsh_delivery_details wdd, oe_order_lines_all oel where wdd.inv_interfaced_flag = 'Y' and nvl(wdd.shipped_quantity,0) > 0 and oel.line_id = wdd.source_line_id and oel.open_flag = 'N' and oel.ordered_quantity = 0 and wdd.source_code = 'OE' and oel.line_id = l_lin_id and exists ( select 'x' from mtl_material_transactions mmt where wdd.delivery_detail_id = mmt.picking_line_id and mmt.trx_source_line_id = wdd.source_line_id and mmt.transaction_source_type_id in ( 2,8 )); begin dbms_output.put_line('Updating Line ID: '||l_lin_id); l_flow_exists := 'Y'; update oe_order_lines_all set flow_status_code = 'CANCELLED' , open_flag = 'N' , cancelled_flag = 'Y' , ordered_quantity = 0 , cancelled_quantity = ordered_quantity + nvl(cancelled_quantity, 0) , last_updated_by = -9999999 , last_update_date = sysdate where line_id = l_lin_id; Begin select number_value into l_user_id from wf_item_attribute_values where item_type = 'OEOL' and item_key = l_lin_key and name = 'USER_ID'; select number_value into l_resp_id from wf_item_attribute_values where item_type = 'OEOL' and item_key = l_lin_key and name = 'RESPONSIBILITY_ID'; select number_value into l_resp_appl_id from wf_item_attribute_values where item_type = 'OEOL' and item_key = l_lin_key and name = 'APPLICATION_ID'; Exception When No_Data_Found Then l_flow_exists := 'N'; End; if l_flow_exists = 'Y' then fnd_global.apps_initialize(l_user_id, l_resp_id, l_resp_appl_id); wf_engine.handleerror( OE_Globals.G_WFI_LIN , l_lin_key , 'CLOSE_LINE' , 'RETRY' , 'CANCEL' ); end if; for wsh_ifaced_rec in wsh_ifaced loop if l_heading = 'N' then dbms_output.put_line(' '); dbms_output.put_line('Following Cancelled Lines have already been Interfac ed to Inventory.'); dbms_output.put_line('Onhand Qty must be manually adjusted for these Items and Quantities.'); dbms_output.put_line(' '); dbms_output.put_line('+---------------+------------------------------+---- -----------+---------------+'); dbms_output.put_line('|Line No. |Item Name | Shipped Qty| Line Id|'); dbms_output.put_line('+---------------+------------------------------+---- -----------+---------------+'); l_heading := 'Y'; end if; dbms_output.put_line('|'||rpad(wsh_ifaced_rec.line_num, 15)|| '|'||rpad(wsh_ifaced_rec.item_name, 30)|| '|'||lpad(to_char(wsh_ifaced_rec.shipped_quantity), 15) || '|'||lpad(to_char(wsh_ifaced_rec.line_id), 15)||'|'); end loop; update wsh_delivery_assignments set delivery_id = null , parent_delivery_detail_id = null , last_updated_by = -9999999 , last_update_date = sysdate where delivery_detail_id in (select wdd.delivery_detail_id from wsh_delivery_details wdd, oe_order_lines_all oel where wdd.source_line_id = oel.line_id and wdd.source_code = 'OE' and oel.cancelled_flag = 'Y' and oel.line_id = l_lin_id and released_status <> 'D'); update wsh_delivery_details set released_status = 'D' , src_requested_quantity = 0 , requested_quantity = 0 , shipped_quantity = 0 , cycle_count_quantity = 0 , cancelled_quantity = decode(requested_quantity,0,cancelled_quantity ,requested_quantity) , subinventory = null , locator_id = null , lot_number = null , serial_number = null , revision = null , ship_set_id = null , inv_interfaced_flag = 'X' , oe_interfaced_flag = 'X' , last_updated_by = -9999999 , last_update_date = sysdate where source_line_id = l_lin_id and source_code = 'OE' and released_status <> 'D' and exists (select 'x' from oe_order_lines_all oel where source_line_id = oel.line_id and oel.cancelled_flag = 'Y'); Exception when others then rollback; dbms_output.put_line(substr(sqlerrm, 1, 240)); end; / Prompt Prompt You must enter Commit to Save the Changes and Rollback to Revert. Prompt spool off