You are on page 1of 7

Item Revision

Group Team
Whenever item is created, default Revision will be assigned to item.
We can also modify the item Revision of an item.
Base table for Item Revision is Mtl_Item_Revisions.
To Modify the item revision, we need to insert new record in Mtl_item_revisions_
interface.
Following are the important columns in Mtl_Item_Revisions_Interface
a.
b.
c.
d.
e.
f.

Inventory_item_id
Organization_id
Revision
Process_Flag
set_process_id
Transaction_type

Below code helps you to unserstand how to create a Item Revision.


Code to Import Item Revision
------------------------------------DECLARE
l_error
l_error_message
v_flag
v_date
v_user_id
ER_ID');
v_request_id
v_rev_org_id
v_rev_item_id
l_request_id
v_revision
v_phase
v_status
v_request_phase
v_request_status
v_finished
v_message

VARCHAR2(1000) :=NULL;
VARCHAR2(1000) :=NULL;
NUMBER :=0;
DATE := SYSDATE;
fnd_user.user_id%TYPE := FND_PROFILE.VALUE('US
NUMBER :=0;
NUMBER :=0;
NUMBER :=0;
NUMBER :=0;
NUMBER :=0;
VARCHAR2(240);
VARCHAR2(240);
VARCHAR2(240);
VARCHAR2(240);
BOOLEAN;
VARCHAR2(240);

BEGIN
BEGIN
---------Getting Organization Id for Item Revision---------------BEGIN
SELECT organization_id
INTO v_rev_org_id
FROM mtl_parameters
WHERE organization_code = c_item_revision_rec.organization_c
ode;
EXCEPTION
WHEN OTHERS THEN
l_error := c_item_revision_rec.organization_code' does
not exist for the item ''Item Name';
l_error_message := l_error_messagel_error ;
v_flag :=1;
dbms_output.put_line( l_error);

END;
------Checking whether Item exists in Oracl 11i for Item revision -------------BEGIN
SELECT inventory_item_id
INTO v_rev_item_id
FROM mtl_system_items_b msi,
mtl_parameters mp
WHERE 1 = 1
AND msi.organization_id = mp.organization_id
AND msi.segment1 = 'Item_Name'
AND mp.organization_code = 'Org_Code';
EXCEPTION
WHEN OTHERS THEN
l_error := 'Item Name''--''Item Does not exist in Or
acle 11i';
l_error_message := l_error_messagel_error ;
v_flag :=1;
dbms_output.put_line( l_error);
END;
------Getting Item count inserted in the interface table mainly used for Synchro
nizng the Effectivity date---BEGIN
SELECT count(1)
INTO v_count
FROM MTL_ITEM_REVISIONS
WHERE inventory_item_id = v_rev_item_id;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line( 'Error in counting the Item
revision available in Interface');
v_flag :=1;
END;
IF v_flag = 0 THEN
BEGIN
---------Inserting into Revision Table--------v_revision := (0.003472 * ( 1 + v_count ));
INSERT INTO MTL_ITEM_REVISIONS_INTERFACE
( INVENTORY_ITEM_ID
,ORGANIZATION_ID
,REVISION
,LAST_UPDATE_DATE
,LAST_UPDATED_BY
,CREATION_DATE
,CREATED_BY
,IMPLEMENTATION_DATE
,EFFECTIVITY_DATE
,PROCESS_FLAG
,TRANSACTION_TYPE
,SET_PROCESS_ID
)
VALUES
( v_rev_item_id
,v_rev_org_id
,'Revision Number'
,v_date
,v_user_id
,v_date

,v_user_id
,(SYSDATE+v_revision)
,(SYSDATE+v_revision)
,1 --PROCESS_FLAG(1 for pendin
g)
,'CREATE'
,1 --SET_PROCESS_ID
);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
l_error := 'Error in inserting Item Revision
to Interface table ''and error is 'SQLERRM;
l_error_message := l_error_messagel_error;
dbms_output.put_line( l_error);
END;
ELSE
dbms_output.put_line( 'Program failed in Initial validati
on ');
END IF; --End of If l_flag=0
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line( 'No Revision Exists for any Item');
END;
-- Calling Item Import Program for Revision---BEGIN
dbms_output.put_line('--Submitting Item Import Program for assignin
g revision to the Item--');
l_request_id := apps.Fnd_Request.submit_request ( 'INV',
'INCOIN',
NULL, -- Description
NULL, -- Start Time
FALSE, -- Sub Request
1, -- All Organizations
1, -- Validate Items,
1, -- Process Items
1, -- Delete Process Rows
1, -- Process Set
1 ); -- CREATE
COMMIT;
DBMS_output.Put_line('Item Import Program submitted');
IF ( l_request_id = 0 ) THEN
dbms_output.put_line( 'Submission of Import failed');
END IF;

-- Wait for request to run the import Program to Finish


v_finished := fnd_concurrent.wait_for_request (request_id => l_requ
est_id,
interval => 0,
max_wait => 0,
phase => v_phase,
status => v_status,
dev_phase => v_request_phase,
dev_status => v_request_status,
message => v_message);
DBMS_output.Put_line('Item Import Program for Revision is Waiting');
DBMS_output.Put_line('Request Phase : ' v_request_phase);
DBMS_output.Put_line('Request Status : ' v_request_status );
DBMS_output.Put_line('Request ID : ' l_request_id );
IF ( UPPER(v_request_status) = 'NORMAL') THEN
DBMS_output.Put_line('Item Import Program completed succesfully')
;
ELSE
DBMS_output.Put_line('Item Import Program completed with error.
Check Mtl_interface_errors table for Knowing about the error');
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_output.Put_line('Error Occured during calling Item Impor
t Program for Revision. 'SQLERRM);
END;
commit;
dbms_output.put_line('End of Revision');
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line( 'Error in Item Revision Program and error
is :'SQLERRM);
END;

==========================================================Item Interface========
==============================================
Item Revision Interface
DECLARE
CURSOR c_item_revision
IS
SELECT *
FROM btz_item_rev_user_iface
WHERE validation_flag IS NULL;

flag
CHAR;
i_organization_id NUMBER;
i_item_id
NUMBER;
i_count
NUMBER;
BEGIN
FOR c_item_revision_rec IN c_item_revision
LOOP
- - - - -Getting Organization Id for Item Revision- - - - - - - - flag := Y;
- -validation of organization_code
BEGIN
IF c_item_revision_rec.organization_code IS NOT NULL
THEN
SELECT organization_id
INTO i_organization_id
FROM mtl_parameters
WHERE organization_code = c_item_revision_rec.organization_code;
ELSE
UPDATE btz_item_rev_user_iface
SET validation_flag = E,
err_msg = err_msg || Organization code is Null
WHERE user_record_id = c_item_revision_rec.user_record_id;
flag := N;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
UPDATE btz_item_rev_user_iface
SET validation_flag = E,
err_msg = err_msg || organization code is invalid;
WHERE user_record_id = c_item_revision_rec.user_record_id;
flag := N;
WHEN OTHERS
THEN
UPDATE btz_item_rev_user_iface
SET validation_flag = E,
err_msg =
err_msg
|| Other Exceptions For Organization Code.Ple Check Once;
WHERE user_record_id = c_item_revision_rec.user_record_id;
flag := N;
END;
- -validation for organization_code is completed
- -validation for item_code
BEGIN
IF c_item_revision_rec.item_name IS NOT NULL
THEN
SELECT inventory_item_id
INTO i_item_id
FROM mtl_system_items_b
WHERE segment1 = c_item_revision_rec.item_name
AND organization_id = i_organization_id;
ELSE
UPDATE btz_item_iface_user_data

SET validation_flag = E,
err_msg = err_msg || Item Code is Null
WHERE user_record_id = c_item_revision_rec.user_record_id;
flag := N;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
UPDATE btz_item_rev_user_iface
SET validation_flag = E,
err_msg = err_msg || Item Code is invalid;
WHERE user_record_id = c_item_revision_rec.user_record_id;

- - - - -Inserting into Revision Table- - - - INSERT INTO mtl_item_revisions_interface


(inventory_item_id, organization_id,
revision, last_update_date,
last_updated_by, creation_date, created_by,
implementation_date, effectivity_date,
process_flag, transaction_type,
set_process_id
)
VALUES (i_item_id, i_organization_id,
c_item_revision_rec.item_revision, SYSDATE,
fnd_global.user_id, SYSDATE, fnd_global.user_id,
SYSDATE, SYSDATE,
1
PROCESS_FLAG(1 for pending)
, CREATE,
1
SET_PROCESS_ID
);

Calling Standard Program :


DECLARE
CURSOR import_sequence
IS
SELECT set_process_id, organization_id,
DECODE (transaction_type, CREATE, 1, 2) transaction_type
FROM mtl_item_revisions_interface
WHERE process_flag = 1
GROUP BY set_process_id, organization_id, transaction_type
ORDER BY set_process_id, organization_id;
v_complete
BOOLEAN
:= TRUE;
v_phase
VARCHAR2 (100);
v_status
VARCHAR2 (100);
v_dev_phase
VARCHAR2 (100);
v_dev_status VARCHAR2 (100);
v_message
VARCHAR2 (500);
concreqid
NUMBER;
BEGIN
FOR i_import_seq IN import_sequence
LOOP
concreqid :=

fnd_request.submit_request
(application
=> INV,
program
=> INCOIN,
description
=> NULL,
argument1
=> i_import_seq.organization_id,
argument2
=> 2,
argument3
=> 1,
argument4
=> 1,
argument5
=> 2,
argument6
=> i_import_seq.set_process_id,
argument7
=> i_import_seq.transaction_type
);
COMMIT;
IF concreqid > 0
THEN
v_complete :=
fnd_concurrent.wait_for_request (concreqid,
10,
0,
v_phase,
v_status,
v_dev_phase,
v_dev_status,
v_message
);
END IF;
IF v_complete = FALSE
THEN
EXIT;
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG,
Other Exception Occured in Standard Import Program
);
END;
================================================================================
===============================================

You might also like