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