Sei sulla pagina 1di 3

--program to change CL recipe VRS status for EA recipes

/*
Template for Data fix Script
*/
WHENEVER SQLERROR EXIT FAILURE
SET SERVEROUTPUT ON SIZE 1000000
SET ECHO ON

WHENEVER SQLERROR CONTINUE;

SELECT * FROM GLOBAL_NAME;

SELECT TO_CHAR (SYSDATE, 'DD-MON-YYYY HH:MI:SS PM') DATETIME FROM DUAL;

-- Creating Back Up Table


CREATE TABLE GMD_RECIPE_VRS_CL_&DDMMYY
TABLESPACE SWC_DATA_BACKUP
AS
SELECT * FROM GMD_RECIPE_VALIDITY_RULES WHERE ORGANIZATION_ID = 374;

--======================================================================
--Change Recipe Prod Validity Rules status through API: GMD_STATUS_PUB
--======================================================================

DECLARE
v_cnt NUMBER := 0;
v_cnt_s NUMBER := 0;
v_cnt_b NUMBER := 0;
l_msg_cnt NUMBER;
l_msg_lst VARCHAR2(4000);
l_ret_status VARCHAR2(10);

CURSOR cur_recipe_prod_vr
IS
SELECT mp.organization_code, msi.segment1 item_no, grvr.inventory_item_id,
msi.item_type, msi.INVENTORY_ITEM_STATUS_CODE,
ffm.formula_no, ffm.formula_vers,
gr.recipe_no, gr.recipe_version, gr.recipe_status, gr.creation_date,
grvr.RECIPE_VALIDITY_RULE_ID
,decode(grvr.recipe_use,0,'Production',2,'Costing') recipe_use
,grvr.validity_rule_status, grvr.last_update_date, grvr.start_date,
grvr.end_date
FROM mtl_system_items msi
,fm_form_mst ffm
,gmd_recipes gr
,gmd_recipe_validity_rules grvr
,mtl_parameters mp
WHERE 1 = 1
AND gr.recipe_id = grvr.recipe_id
AND gr.formula_id = ffm.formula_id
AND msi.organization_id = grvr.organization_id
AND msi.inventory_item_id = grvr.inventory_item_id
AND gr.owner_organization_id = mp.organization_id
AND grvr.recipe_use = 0
AND gr.recipe_status IN (700, 900)
AND grvr.VALIDITY_RULE_STATUS IN (700,900)
AND mp.organization_code = '200'
--AND msi.item_type = 'FG'
AND msi.primary_uom_code = 'EA'
--AND INVENTORY_ITEM_STATUS_CODE IN ('Active','Initiation')
ORDER BY 1,2;

BEGIN
DBMS_OUTPUT.put_line ('======== Processing starts ========');
DBMS_OUTPUT.put_line ( TO_CHAR (SYSDATE, 'DD-MON-YYYY HH:MI:SS PM'));

fnd_global.apps_initialize(1099, 50674, 552);

FOR cur_rec IN cur_recipe_prod_vr


LOOP
v_cnt := v_cnt + 1;
BEGIN
--DBMS_OUTPUT.put_line (v_cnt||'. recipe,vers = '||cur_rec.recipe_no||','||
cur_rec.recipe_version||'; validity_rule_id = '||cur_rec.recipe_validity_rule_id );
--call API to obsolete recipe prod vr status
GMD_STATUS_PUB.modify_status
( p_api_version => 1.0
, p_init_msg_list => TRUE
, p_entity_name => 'VALIDITY'
, p_entity_id => cur_rec.RECIPE_VALIDITY_RULE_ID -- vr ID
, p_entity_no=> NULL -- vr_no
, p_entity_version=> NULL-- vr_vers
, p_to_status=> '1000'-- Change To status
, p_ignore_flag => FALSE
, x_message_count=> l_msg_cnt
, x_message_list => l_msg_lst
, x_return_status => l_ret_status);
--DBMS_OUTPUT.put_line (v_cnt||'. recipe,vers = '||cur_rec.recipe_no||','||
cur_rec.recipe_version||', '||l_ret_status);
--dbms_output.put_line(' --returen_status = '||l_ret_status);--||', '||
l_msg_cnt||', '||l_msg_lst);
--dbms_output.put_line('Status: '||l_ret_status||l_msg_cnt);

IF l_ret_status <> 'S' THEN


v_cnt_b := v_cnt_b + 1;
--DBMS_OUTPUT.put_line ('v_cnt_b = '||v_cnt_b);
UPDATE gmd_recipe_validity_rules
SET end_date = sysdate + 14,
last_update_date = sysdate
WHERE recipe_validity_rule_id = cur_rec.recipe_validity_rule_id;
ELSIF l_ret_status = 'S' THEN
v_cnt_s := v_cnt_s + 1;
--DBMS_OUTPUT.put_line ('v_cnt_s = '||v_cnt_s);
END IF;

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('API calling or updating error.');
RAISE;
END;

END LOOP;
COMMIT;
DBMS_OUTPUT.put_line ('===================================');
DBMS_OUTPUT.put_line ('Total records processed: '||v_cnt);
DBMS_OUTPUT.put_line ('Records Status changed: '||v_cnt_s);
DBMS_OUTPUT.put_line ('Records End Dated: '||v_cnt_b);
DBMS_OUTPUT.put_line ('======== Process Completed ========');
DBMS_OUTPUT.put_line ( TO_CHAR (SYSDATE, 'DD-MON-YYYY HH:MI:SS PM'));

END;
/

Potrebbero piacerti anche