You are on page 1of 4

/************************************************************************** ** ** ** This datafix script deletes the duplicate/dummy Inter-org shipment/ ** ** Internal Sales Order shipment lines for

which there is no ISSUE OUT ** ** transaction happened in the the source/sending organization. ** ** ** ** ** ** Records from the following tables are deleted: ** ** 1) rcv_shipment_headers ** ** 2) rcv_shipment_lines ** ** 3) rcv_lots_supply ** ** 4) rcv_lot_transacions ** ** 5) rcv_serial_transactions ** ** 6) rcv_serials_supply ** ** 7) mtl_supply ** ** 8) mtl_material_transactions_temp ** ** 9) rcv_transactions ** ** ** ** Note: ** ** Please take a backup of the above tables before running script. ** ***************************************************************************/ SET SERVEROUTPUT OFF; DECLARE l_is_r12_instance l_shipment_line_id l_shipment_header_id l_prev_shipment_header_id l_shipment_num p_patch_level NUMBER := 0; NUMBER; NUMBER; NUMBER := -999; rcv_shipment_headers.shipment_num%TYPE; VARCHAR2(30);

CURSOR c_shipment IS SELECT rsl.shipment_header_id, rsl.shipment_line_id, rsh.shipment_num FROM rcv_shipment_lines rsl, rcv_shipment_headers rsh WHERE rsl.shipment_header_id = rsh.shipment_header_id AND rsl.mmt_transaction_id IS NOT null AND rsh.receipt_source_code = 'INVENTORY' AND EXISTS ( SELECT 1 FROM mtl_parameters mp WHERE mp.organization_id = rsh.organization_id ) AND NOT EXISTS--To check ISSUE OUT txn happened in source orgn ( SELECT 1 FROM mtl_material_transactions mmt WHERE mmt.transaction_id = rsl.mmt_transaction_id AND mmt.transaction_source_type_id = 13 AND mmt.transaction_action_id = 21 ) AND NOT EXISTS ( SELECT 1 FROM mtl_material_transactions mmt,

rcv_transactions rt WHERE mmt.rcv_transaction_id = rt.transaction_id AND rt.shipment_line_id = rsl.shipment_line_id AND rt.transaction_type = 'DELIVER' ) UNION SELECT rsl.shipment_header_id, rsl.shipment_line_id, rsh.shipment_num FROM rcv_shipment_lines rsl, rcv_shipment_headers rsh WHERE rsl.shipment_header_id = rsh.shipment_header_id AND rsl.mmt_transaction_id IS NOT null AND rsh.receipt_source_code = 'INTERNAL ORDER' AND EXISTS ( SELECT 1 FROM mtl_parameters mp WHERE mp.organization_id = rsh.organization_id ) AND NOT EXISTS--To check ISSUE OUT txn happened in source orgn ( SELECT 1 FROM mtl_material_transactions mmt WHERE mmt.transaction_id = rsl.mmt_transaction_id AND mmt.transaction_source_type_id = 8 AND mmt.transaction_action_id = 21 ) AND NOT EXISTS ( SELECT 1 FROM mtl_material_transactions mmt WHERE mmt.transaction_id = rsl.mmt_transaction_id AND mmt.transaction_source_type_id = 8 AND mmt.transaction_action_id = 1 ) AND NOT EXISTS ( SELECT 1 FROM mtl_material_transactions mmt, rcv_transactions rt WHERE mmt.rcv_transaction_id = rt.transaction_id AND rt.shipment_line_id = rsl.shipment_line_id AND rt.transaction_type = 'DELIVER' ) ORDER BY 1; BEGIN OPEN c_shipment; LOOP FETCH c_shipment into l_shipment_header_id,l_shipment_line_id,l_ship ment_num; EXIT WHEN c_shipment%NOTFOUND; IF l_prev_shipment_header_id <> l_shipment_header_id THEN dbms_output.put_line('++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++');

dbms_output.put_line('Datafix for the shipment:' l_shipment_num); END IF; dbms_output.put_line('shipment_line_id : ' l_shipment_line_id); DELETE FROM rcv_shipment_lines WHERE shipment_line_id = l_shipment_line_id; dbms_output.put_line('Deleted ' SQL%ROWCOUNT ' rows from rcv_shipm ent_lines.'); DELETE FROM rcv_lots_supply WHERE shipment_line_id = l_shipment_line_id; dbms_output.put_line('Deleted ' SQL%ROWCOUNT ' rows from rcv_lots_ supply.'); DELETE FROM rcv_lot_transactions WHERE shipment_line_id = l_shipment_line_id; dbms_output.put_line('Deleted ' SQL%ROWCOUNT ' rows from rcv_lot_t ransactions.'); DELETE FROM rcv_serials_supply WHERE shipment_line_id = l_shipment_line_id; dbms_output.put_line('Deleted ' SQL%ROWCOUNT ' rows from rcv_seria ls_supply.'); DELETE FROM rcv_serial_transactions WHERE shipment_line_id = l_shipment_line_id; dbms_output.put_line('Deleted ' SQL%ROWCOUNT ' rows from rcv_seria l_transactions.'); DELETE FROM mtl_supply WHERE shipment_line_id = l_shipment_line_id; dbms_output.put_line('Deleted ' SQL%ROWCOUNT ' rows from mtl_suppl y.'); DELETE FROM mtl_material_transactions_temp WHERE rcv_transaction_id IN (SELECT transaction_id FROM rcv_transactions WHERE transaction_type = 'DELIVER' AND shipment_line_id = l_shipment_li ne_id); dbms_output.put_line('Deleted ' SQL%ROWCOUNT ' rows from mtl_mater ial_transactions_temp.'); DELETE FROM rcv_transactions WHERE shipment_line_id = l_shipment_line_id; dbms_output.put_line('Deleted ' SQL%ROWCOUNT ' rows from rcv_trans actions.'); DELETE FROM rcv_transactions_interface WHERE shipment_line_id = l_shipment_line_id; dbms_output.put_line('Deleted ' SQL%ROWCOUNT ' rows from rcv_trans actions_interface.'); DELETE FROM rcv_shipment_headers WHERE shipment_header_id = l_shipment_header_id AND NOT EXISTS ( SELECT 1 FROM rcv_shipment_lines rsl WHERE rsl.shipment_header_id = l_shipment_header_id

); dbms_output.put_line('Deleted ' SQL%ROWCOUNT ' rows from rcv_shipm ent_headers.'); l_prev_shipment_header_id := l_shipment_header_id; END LOOP; CLOSE c_shipment; dbms_output.put_line('Please Commit the transaction manually...'); EXCEPTION WHEN OTHERS THEN IF ( c_shipment%ISOPEN ) THEN CLOSE c_shipment; END IF; dbms_output.put_line('Exception Occurred for shipment' l_shipment_num); dbms_output.put_line('Exception Occurred for shipment' l_shipment_line_id); dbms_output.put_line('Exception Occurred' SQLERRM); ROLLBACK; dbms_output.put_line('Rolled back the transaction...'); END; /

You might also like