[Home] [Help]
TRIGGER: APPS.EGO_MTL_SYSTEM_ITEMS_B_TR1
Source
Description
EGO_MTL_SYSTEM_ITEMS_B_TR1
/* $Header: EGOTISB1.sql 115.1 2003/06/18 04:38:30 anakas noship $ */
AFTER UPDATE OF SEGMENT1, SEGMENT2, SEGMENT3, SEGMENT4, SEGMENT5,
SEGMENT6, SEGMENT7, SEGMENT8, SEGMENT9, SEGMENT10,
SEGMENT11, SEGMENT12, SEGMENT13, SEGMENT14, SEGMENT15,
SEGMENT16, SEGMENT17, SEGMENT18, SEGMENT19, SEGMENT20,
ITEM_CATALOG_GROUP_ID
ON MTL_SYSTEM_ITEMS_B
FOR EACH ROW
Type
AFTER EACH ROW
Event
UPDATE
Column
When
Referencing
REFERENCING NEW AS NEW OLD AS OLD
Body
DECLARE
l_table_name VARCHAR2(30) := 'MTL_SYSTEM_ITEMS_B';
l_event VARCHAR2(30);
l_scope VARCHAR2(30) := 'ROW';
l_process_event BOOLEAN := FALSE;
TYPE Segment_Tbl_Type IS TABLE OF mtl_system_items_b.SEGMENT1%TYPE
INDEX BY BINARY_INTEGER;
Old_Segment_Tbl Segment_Tbl_Type;
New_Segment_Tbl Segment_Tbl_Type;
Old_Item_Name VARCHAR2(2000) := NULL;
New_Item_Name VARCHAR2(2000) := NULL;
l_application_id NUMBER(10) := 401;
l_id_flex_code VARCHAR2(4) := 'MSTK';
l_id_flex_num NUMBER(15) := 101;
l_enabled_flag VARCHAR2(1) := 'Y';
l_delimiter VARCHAR2(1);
l_seg_col_num NUMBER;
CURSOR Flex_Segments_cur
IS
SELECT segment_num, application_column_name, required_flag
FROM fnd_id_flex_segments
WHERE
application_id = l_application_id
AND id_flex_code = l_id_flex_code
AND id_flex_num = l_id_flex_num
AND enabled_flag = l_enabled_flag
ORDER BY segment_num;
BEGIN
IF ( INSERTING ) THEN
l_event := 'INSERT';
ELSIF ( UPDATING ) THEN
l_event := 'UPDATE';
Old_Segment_Tbl(1) := :old.SEGMENT1;
Old_Segment_Tbl(2) := :old.SEGMENT2;
Old_Segment_Tbl(3) := :old.SEGMENT3;
Old_Segment_Tbl(4) := :old.SEGMENT4;
Old_Segment_Tbl(5) := :old.SEGMENT5;
Old_Segment_Tbl(6) := :old.SEGMENT6;
Old_Segment_Tbl(7) := :old.SEGMENT7;
Old_Segment_Tbl(8) := :old.SEGMENT8;
Old_Segment_Tbl(9) := :old.SEGMENT9;
Old_Segment_Tbl(10) := :old.SEGMENT10;
Old_Segment_Tbl(11) := :old.SEGMENT11;
Old_Segment_Tbl(12) := :old.SEGMENT12;
Old_Segment_Tbl(13) := :old.SEGMENT13;
Old_Segment_Tbl(14) := :old.SEGMENT14;
Old_Segment_Tbl(15) := :old.SEGMENT15;
Old_Segment_Tbl(16) := :old.SEGMENT16;
Old_Segment_Tbl(17) := :old.SEGMENT17;
Old_Segment_Tbl(18) := :old.SEGMENT18;
Old_Segment_Tbl(19) := :old.SEGMENT19;
Old_Segment_Tbl(20) := :old.SEGMENT20;
New_Segment_Tbl(1) := :new.SEGMENT1;
New_Segment_Tbl(2) := :new.SEGMENT2;
New_Segment_Tbl(3) := :new.SEGMENT3;
New_Segment_Tbl(4) := :new.SEGMENT4;
New_Segment_Tbl(5) := :new.SEGMENT5;
New_Segment_Tbl(6) := :new.SEGMENT6;
New_Segment_Tbl(7) := :new.SEGMENT7;
New_Segment_Tbl(8) := :new.SEGMENT8;
New_Segment_Tbl(9) := :new.SEGMENT9;
New_Segment_Tbl(10) := :new.SEGMENT10;
New_Segment_Tbl(11) := :new.SEGMENT11;
New_Segment_Tbl(12) := :new.SEGMENT12;
New_Segment_Tbl(13) := :new.SEGMENT13;
New_Segment_Tbl(14) := :new.SEGMENT14;
New_Segment_Tbl(14) := :new.SEGMENT14;
New_Segment_Tbl(15) := :new.SEGMENT15;
New_Segment_Tbl(16) := :new.SEGMENT16;
New_Segment_Tbl(17) := :new.SEGMENT17;
New_Segment_Tbl(18) := :new.SEGMENT18;
New_Segment_Tbl(19) := :new.SEGMENT19;
New_Segment_Tbl(20) := :new.SEGMENT20;
SELECT concatenated_segment_delimiter
INTO l_delimiter
FROM fnd_id_flex_structures
WHERE
application_id = l_application_id
AND id_flex_code = l_id_flex_code
AND id_flex_num = l_id_flex_num
AND enabled_flag = l_enabled_flag;
FOR segment_rec IN Flex_Segments_cur
LOOP
l_seg_col_num := TO_NUMBER(SUBSTR(segment_rec.application_column_name, 8));
IF ( New_Item_Name IS NOT NULL ) THEN
Old_Item_Name := Old_Item_Name || l_delimiter || Old_Segment_Tbl(l_seg_col_num);
New_Item_Name := New_Item_Name || l_delimiter || New_Segment_Tbl(l_seg_col_num);
ELSE
Old_Item_Name := Old_Segment_Tbl(l_seg_col_num);
New_Item_Name := New_Segment_Tbl(l_seg_col_num);
END IF;
END LOOP; -- Flex_Segments_cur
IF ( New_Item_Name <> Old_Item_Name ) THEN
l_process_event := TRUE;
END IF;
l_process_event := l_process_event OR ( NVL(:old.ITEM_CATALOG_GROUP_ID, -1) <> NVL(:new.ITEM_CATALOG_GROUP_ID, -1) );
ELSIF ( DELETING ) THEN
l_event := 'DELETE';
END IF; -- event
-- Call the event handler
IF ( l_process_event ) THEN
EGO_ITEM_TEXT_UTIL.Process_Source_Table_Event
( p_table_name => l_table_name
, p_event => l_event
, p_scope => l_scope
, p_item_id => :new.INVENTORY_ITEM_ID
, p_org_id => :new.ORGANIZATION_ID
, p_last_update_date => :new.LAST_UPDATE_DATE
, p_last_updated_by => :new.LAST_UPDATED_BY
, p_last_update_login => :new.LAST_UPDATE_LOGIN
, p_item_code => New_Item_Name
, p_item_catalog_group_id => :new.ITEM_CATALOG_GROUP_ID
);
END IF;
EXCEPTION
WHEN others THEN
NULL;
END EGO_MTL_SYSTEM_ITEMS_B_TR1;