DBA Data[Home] [Help]

PACKAGE BODY: APPS.INVUPD1B

Source


1 PACKAGE BODY INVUPD1B AS -- {
2 /* $Header: INVUPD1B.pls 120.23.12010000.4 2008/11/26 00:59:33 akbharga ship $ */
3 -- Values used in IOI to indicate an attribute update to NULL.
4 --
5 g_Upd_Null_CHAR     VARCHAR2(1)  :=  '!';
6 g_Upd_Null_NUM      NUMBER       :=  -999999;
7 g_Upd_Null_DATE     DATE         :=  NULL;
8 
9 -- FND null value sets
10 g_FND_Upd_Null_NUM      NUMBER       :=  9.99E125;
11 g_FND_Upd_Null_Char     VARCHAR2(1)  :=  chr(0);
12 
13 --2808277 Start supporting Item Revision Update
14 FUNCTION assign_item_rev_data_update(
15 	org_id		NUMBER,
16 	all_org		NUMBER		:= 2,
17 	prog_appid	NUMBER		:= -1,
18 	prog_id		NUMBER		:= -1,
19 	request_id	NUMBER		:= -1,
20 	user_id		NUMBER		:= -1,
21 	login_id	   NUMBER		:= -1,
22 	err_text IN OUT NOCOPY VARCHAR2,
23 	xset_id  IN	NUMBER		DEFAULT -999)
24 RETURN  NUMBER;
25 --2808277 End supporting Item Revision Update
26 
27 FUNCTION mtl_pr_assign_item_data_update(
28 	org_id		NUMBER,
29 	all_org		NUMBER		:= 2,
30 	prog_appid	NUMBER		:= -1,
31 	prog_id		NUMBER		:= -1,
32 	request_id	NUMBER		:= -1,
33 	user_id		NUMBER		:= -1,
34 	login_id	   NUMBER		:= -1,
35 	err_text IN OUT NOCOPY VARCHAR2,
36 	xset_id  IN	NUMBER		DEFAULT -999) RETURN  INTEGER IS
37 
38    CURSOR C_msii_records IS
39 	   SELECT	ROWID, intf.*
40 	   FROM  mtl_system_items_interface intf
41 	   WHERE intf.process_flag   = 1
42 	   AND   intf.set_process_id = xset_id
43 	   AND ((intf.organization_id = org_id) or (all_org = 1));
44 
45 	CURSOR C_status_controlled_attr(cp_item_status_code VARCHAR2) IS
46 	   SELECT status.attribute_name
47             ,status.attribute_value
48 	   FROM   mtl_status_attribute_values status
49             ,mtl_item_attributes ctrl
50 	   WHERE  status.attribute_name = ctrl.attribute_name
51       AND    status.inventory_item_status_code = cp_item_status_code
52       AND    ctrl.status_control_code = 1;
53 
54    --Added for Bug 4366615
55  	CURSOR	C_puom_records IS
56  	   SELECT Primary_Unit_Of_Measure, ROWID
57       FROM	 Mtl_System_Items_Interface
58  	   WHERE	 Process_Flag = 1
59  	   AND	 Set_Process_Id = xset_id
60  	   AND	((organization_id = org_id) or (all_org = 1))
61  	   FOR	UPDATE OF Primary_Uom_Code;
62    -- End of Bug 4366615
63 
64    ret_code             NUMBER  := 0;
65    rtn_status           NUMBER  := 0;
66 	error_text		      VARCHAR2(250);
67 	dumm_status		      NUMBER;
68 	status_code		      NUMBER;
69 	t_trans_id		      NUMBER;
70 	t_organization_id	   NUMBER;
71 	t_inventory_item_id	NUMBER;
72 	t_template_id		   VARCHAR2(30)	 DEFAULT null;
73    msi_primary_uom      VARCHAR2(26)    DEFAULT null;
74 	msi_eng_item_flag	   VARCHAR2(1)	    DEFAULT null;
75    msi_inventory_item_status_code    VARCHAR2(20) DEFAULT NULL;
76 
77 	ASS_ITEM_ERR		   EXCEPTION;
78 	attr_err_mesg_name	VARCHAR2(30)    DEFAULT null;
79 	upd_status		      NUMBER		    DEFAULT 1;
80 
81    --Added for Bug 4366615
82    temp_uom_code		   VARCHAR2(3);
83 	msi_primary_uom_code	VARCHAR2(3);
84    --End of Bug 4366615
85 
86    msi_tracking_quantity_ind   mtl_system_items.tracking_quantity_ind%TYPE;
87    msi_secondary_uom_code      mtl_system_items.secondary_uom_code%TYPE;
88    msi_secondary_default_ind   mtl_system_items.secondary_default_ind%TYPE;
89    msi_ont_pricing_qty_source  mtl_system_items.ont_pricing_qty_source%TYPE;
90    msi_dual_uom_deviation_high mtl_system_items.dual_uom_deviation_high%TYPE;
91    msi_dual_uom_deviation_low  mtl_system_items.dual_uom_deviation_low%TYPE;
92 
93 	l_inv_debug_level	NUMBER := INVPUTLI.get_debug_level;     --Bug: 4667452
94 
95 
96 BEGIN -- {
97 
98    IF l_inv_debug_level IN(101, 102) THEN
99       INVPUTLI.info('INVUPD1B.mtl_pr_assign_item_data_update: begin org_id=' || TO_CHAR(org_id));
100    END IF;
101 
102    -- Added for Bug 4366615
103 	FOR puom IN C_puom_records LOOP
104 	   BEGIN
105 		   IF puom.Primary_Unit_of_Measure IS NOT NULL THEN
106 			   SELECT Uom_Code
107 			   INTO   temp_uom_code
108 	         FROM   Mtl_Units_Of_Measure
109 		      WHERE  Unit_Of_Measure = puom.Primary_Unit_Of_Measure --Bug 5192495
110 			   AND    SYSDATE < nvl(Disable_Date, SYSDATE+1);
111 
112 			   UPDATE Mtl_System_Items_Interface
113 			   SET	  Primary_Uom_Code = temp_uom_code
114 			   WHERE  Rowid = puom.Rowid;
115 		   END IF;
116       EXCEPTION
117 		   WHEN NO_DATA_FOUND THEN
118             dumm_status := INVPUOPI.mtl_log_interface_err(
119                        t_organization_id,
120                        user_id,
121                        login_id,
122                        prog_appid,
123                        prog_id,
124                        request_id,
125                        t_trans_id,
126                        error_text,
127                        'PRIMARY_UNIT_OF_MEASURE',
128                        'MTL_SYSTEM_ITEMS_INTERFACE',
129                        'INV_IOI_PRIMARY_UOM',
130                        err_text);
131 		      dumm_status := INVUPD2B.set_process_flag3(puom.ROWID,user_id,login_id,prog_appid,prog_id,request_id);
132 		 END;
133 	 END LOOP;
134     --End of Bug 4366615
135 
136 	FOR rec IN C_msii_records LOOP -- {
137 	   t_organization_id   := rec.organization_id;
138 		t_inventory_item_id := rec.inventory_item_id;
139 		t_trans_id          := rec.transaction_id;
140 
141       -- Start 2913856
142       --Jalaj Srivastava Bug 5017588
143       --update of uom fields not allowed.
144 
145       BEGIN
146          SELECT msi.primary_unit_of_measure,
147 		msi.eng_item_flag,
148                 msi.primary_uom_code,	--* Added for Bug 4366615
149                 msi.inventory_item_status_code,
150                 msi.tracking_quantity_ind,
151                 msi.secondary_uom_code,
152                 msi.secondary_default_ind,
153                 msi.ont_pricing_qty_source,
154                 msi.dual_uom_deviation_high,
155                 msi.dual_uom_deviation_low
156          INTO   msi_primary_uom,
157 		msi_eng_item_flag,
158                 msi_primary_uom_code,	--* Added for Bug 4366615
159                 msi_inventory_item_status_code,
160                 msi_tracking_quantity_ind,
161                 msi_secondary_uom_code,
162                 msi_secondary_default_ind,
163                 msi_ont_pricing_qty_source,
164                 msi_dual_uom_deviation_high,
165                 msi_dual_uom_deviation_low
166          FROM   mtl_system_items_B msi
167          WHERE  msi.inventory_item_id = t_inventory_item_id
168          AND    msi.organization_id   = t_organization_id;
169       EXCEPTION
170          WHEN NO_DATA_FOUND THEN
171 		      NULL;
172       END;
173 		-- End 2913856
174 
175 		-- if any of the non-updateable fields are being updated [ENG_ITEM_FLAG and PRIMARY_UOM]
176 	   IF (rec.MATERIAL_COST               IS NULL
177           AND rec.MATERIAL_SUB_ELEM       IS NULL
178           AND rec.MATERIAL_OH_RATE        IS NULL
179           AND rec.MATERIAL_OH_SUB_ELEM    IS NULL
180           AND rec.MATERIAL_SUB_ELEM_ID    IS NULL
181           AND rec.MATERIAL_OH_SUB_ELEM_ID IS NULL)
182       THEN
183 
184 		   IF (rec.ENG_ITEM_FLAG IS NULL OR rec.ENG_ITEM_FLAG = msi_eng_item_flag)
185             AND (rec.PRIMARY_UOM_CODE IS NULL OR rec.primary_uom_code  = msi_primary_uom_code)
186             --Jalaj Srivastava Bug 5017588
187             --all uom fields are non updateable
188             AND (rec.tracking_quantity_ind   IS NULL OR rec.tracking_quantity_ind   = msi_tracking_quantity_ind   )
189             AND (rec.secondary_uom_code      IS NULL OR rec.secondary_uom_code      = msi_secondary_uom_code      )
190             AND (rec.secondary_default_ind   IS NULL OR rec.secondary_default_ind   = msi_secondary_default_ind   )
191             AND (rec.ont_pricing_qty_source  IS NULL OR rec.ont_pricing_qty_source  = msi_ont_pricing_qty_source  )
192             AND (rec.dual_uom_deviation_high IS NULL OR rec.dual_uom_deviation_high = msi_dual_uom_deviation_high )
193             AND (rec.dual_uom_deviation_low  IS NULL OR rec.dual_uom_deviation_low  = msi_dual_uom_deviation_low  )
194          THEN
195 
196 	      status_code := 1;
197       	      /* Bug 4751471  Status Controlled attrs are relevantly updated when status is applied. Eliminating this chk
198 		      BEGIN -- {
199 
200 			      -- if status controlled attributes are not being modified
201 			      IF NOT (rec.STOCK_ENABLED_FLAG                 IS NULL
202                        AND rec.MTL_TRANSACTIONS_ENABLED_FLAG  IS NULL
203                        AND	rec.PURCHASING_ENABLED_FLAG        IS NULL
204                        AND	rec.BUILD_IN_WIP_FLAG              IS NULL
205                        AND	rec.CUSTOMER_ORDER_ENABLED_FLAG    IS NULL
206                        AND	rec.INTERNAL_ORDER_ENABLED_FLAG    IS NULL
207                        AND	rec.BOM_ENABLED_FLAG               IS NULL
208                        AND	rec.INVOICE_ENABLED_FLAG           IS NULL
209                        AND	rec.RECIPE_ENABLED_FLAG            IS NULL
210                        AND	rec.PROCESS_EXECUTION_ENABLED_FLAG IS NULL)
211                THEN -- {
212 
213                   -- Start 2913856 Changed is not null to <>
214                   --4751471 : Status attributes under sets control
215                   --Values passed in the interface table should be compared against status setup not against msb db value.
216 				      FOR srec IN C_status_controlled_attr(nvl(rec.inventory_item_status_code,msi_inventory_item_status_code)) LOOP -- {
217 					      IF((srec.attribute_name = 'MTL_SYSTEM_ITEMS.STOCK_ENABLED_FLAG'
218                             AND NVL(rec.STOCK_ENABLED_FLAG,srec.attribute_value)              <> srec.attribute_value)
219 					         OR (srec.attribute_name = 'MTL_SYSTEM_ITEMS.MTL_TRANSACTIONS_ENABLED_FLAG'
220                             AND NVL(rec.MTL_TRANSACTIONS_ENABLED_FLAG,srec.attribute_value)   <>  srec.attribute_value)
221 					         OR (srec.attribute_name = 'MTL_SYSTEM_ITEMS.PURCHASING_ENABLED_FLAG'
222 					               AND NVL(rec.PURCHASING_ENABLED_FLAG,srec.attribute_value)       <> srec.attribute_value)
223 					         OR (srec.attribute_name = 'MTL_SYSTEM_ITEMS.BUILD_IN_WIP_FLAG'
224 					               AND NVL(rec.BUILD_IN_WIP_FLAG,srec.attribute_value)             <> srec.attribute_value)
225 					         OR (srec.attribute_name = 'MTL_SYSTEM_ITEMS.CUSTOMER_ORDER_ENABLED_FLAG'
226 					               AND NVL(rec.CUSTOMER_ORDER_ENABLED_FLAG,srec.attribute_value)   <> srec.attribute_value)
227 					         OR (srec.attribute_name = 'MTL_SYSTEM_ITEMS.INTERNAL_ORDER_ENABLED_FLAG'
228 					               AND NVL(rec.INTERNAL_ORDER_ENABLED_FLAG,srec.attribute_value)   <> srec.attribute_value)
229 					         OR (srec.attribute_name = 'MTL_SYSTEM_ITEMS.BOM_ENABLED_FLAG'
230 					               AND NVL(rec.BOM_ENABLED_FLAG,srec.attribute_value)              <> srec.attribute_value)
231 					         OR (srec.attribute_name = 'MTL_SYSTEM_ITEMS.INVOICE_ENABLED_FLAG'
232 					               AND NVL(rec.INVOICE_ENABLED_FLAG,srec.attribute_value)          <> srec.attribute_value)
233 	                     OR (srec.attribute_name = 'MTL_SYSTEM_ITEMS.RECIPE_ENABLED_FLAG'
234 					               AND NVL(rec.RECIPE_ENABLED_FLAG,srec.attribute_value)           <> srec.attribute_value)
235 					         OR (srec.attribute_name = 'MTL_SYSTEM_ITEMS.PROCESS_EXECUTION_ENABLED_FLAG'
236 					              AND NVL(rec.PROCESS_EXECUTION_ENABLED_FLAG,srec.attribute_value) <> srec.attribute_value))
237 				         THEN -- {
238 					         status_code := 0;
239 					      END IF; -- }
240 					      -- exit when first status controlled attribute is found not to be null
241 					      EXIT WHEN status_code = 0;
242 				      END LOOP; -- }
243 				      --End 2913856
244 			      END IF; -- }
245 		      EXCEPTION
246 		         WHEN NO_DATA_FOUND THEN
247 		            NULL;  -- no status controlled attributes
248       		END; -- }
249 
250 			   IF (status_code = 1) THEN -- { */
251 				   -- check if an attribute that should not be updated if onhand qties exist is being updated
252 				   IF NOT (rec.LOCATION_CONTROL_CODE          IS NULL
253                        AND	rec.LOT_CONTROL_CODE           IS NULL
254                        AND	rec.REVISION_QTY_CONTROL_CODE  IS NULL
255                        AND	rec.SERIAL_NUMBER_CONTROL_CODE IS NULL
256                        AND	rec.SHELF_LIFE_CODE            IS NULL
257                        AND	rec.COSTING_ENABLED_FLAG       IS NULL
258                        AND	rec.INVENTORY_ASSET_FLAG       IS NULL )
259                THEN -- {
260 					   -- if onhand quantities exist or transactions pending then
261 					   IF (INVUPD1B.exists_onhand_quantities(t_organization_id, t_inventory_item_id)     <> 1
262 					      AND INVUPD1B.exists_onhand_child_qties(t_organization_id, t_inventory_item_id) <> 1 )
263                   THEN -- {
264 						   -- copy msi data to msii record for ``missing'' attributes, also set process_	flag = 2
265 						   dumm_status := INVUPD1B.copy_msi_to_msii(rec.rowid,t_organization_id, t_inventory_item_id);
266                      rtn_status  := INVPULI4.assign_status_attributes(rec.inventory_item_id,rec.organization_id,err_text,xset_id,rec.rowid);
267         					IF rtn_status = 0 THEN
268                		   status_code := 1;
269               			ELSE
270              				status_code := 0;
271              			END IF;
272 
273  					   ELSE -- } {
274 					      -- Check for dependencies of attributes being updated
275 					      upd_status := INVUPD1B.mtl_validate_attr_upd(
276             			                       		rec.organization_id,
277             		                        		rec.inventory_item_id,
278 								                        rec.rowid,
279 								                        attr_err_mesg_name);
280 
281 			            IF upd_status <> 0 THEN --{
282 			               -- At least one attribute failed the dependency check.
283                 			-- Flag error that on-hand qties exist and related
284                			-- non-updateable attribute is being updated.
285 			               upd_status  := INVPUOPI.mtl_log_interface_err(
286 								                     t_organization_id,
287                                           	user_id,
288                                           	login_id,
289                                           	prog_appid,
290                                           	prog_id,
291                                           	request_id,
292                                           	t_trans_id,
293                                           	error_text,
294                                           	null,
295                                           	'MTL_SYSTEM_ITEMS_INTERFACE',
296                                           	attr_err_mesg_name,
297                                           	err_text);
298 
299 						      upd_status := INVUPD2B.set_process_flag3(rec.ROWID,user_id,login_id,prog_appid,prog_id,request_id);
300 					      ELSE
301 						      dumm_status := INVUPD1B.copy_msi_to_msii(rec.rowid,t_organization_id,t_inventory_item_id);
302             		      rtn_status  := INVPULI4.assign_status_attributes(rec.inventory_item_id,rec.organization_id,err_text,xset_id,rec.rowid);
303             			   IF rtn_status = 0 THEN
304                				status_code := 1;
305               				ELSE
306              				    status_code := 0;
307              				END IF;
308 					      END IF; --}
309 				      END IF; -- }
310 				   ELSE	-- no onhand qties exist and no transactions pending  -- } {
311 					   -- copy msi data to msii record for ``missing'' attributes, also set process_flag = 2
312 					   dumm_status := INVUPD1B.copy_msi_to_msii(rec.rowid, t_organization_id, t_inventory_item_id);
313                   rtn_status  := INVPULI4.assign_status_attributes(rec.inventory_item_id,rec.organization_id,err_text,xset_id,rec.rowid);
314         			   IF rtn_status = 0 THEN
315            				status_code := 1;
316         				ELSE
317        				    status_code := 0;
318         				END IF;
319              END IF; -- }
320     /*    Bug 4751471 - Status Controlled attrs are relevantly updated when status is applied. Eliminating chk
321 			  ELSE -- } {
322 			     -- flag error that status controlled attribute is being modified  and move to next record
323 				  dumm_status  := INVPUOPI.mtl_log_interface_err(
324                                        	t_organization_id,
325                                        	user_id,
326                                        	login_id,
327                                        	prog_appid,
328                                        	prog_id,
329                                        	request_id,
330                                        	t_trans_id,
331                                        	error_text,
332                                        	null,
333                                        	'MTL_SYSTEM_ITEMS_INTERFACE',
334                                        	'INV_STATUS_CNTRL_ATTRIB_ERROR',
335                                        	err_text);
336 				  dumm_status := INVUPD2B.set_process_flag3(rec.ROWID,user_id,login_id,prog_appid,prog_id,request_id);
337 			  END IF; -- } */
338 		  ELSE -- } {
339 		     -- flag error that non-updateable fields are being updated and move to next record
340 			  dumm_status  := INVPUOPI.mtl_log_interface_err(
341                                     	t_organization_id,
342                                     	user_id,
343                                     	login_id,
344                                     	prog_appid,
345                                     	prog_id,
346                                     	request_id,
347                                     	t_trans_id,
348                                     	error_text,
349                                     	null,
350                                     	'MTL_SYSTEM_ITEMS_INTERFACE',
351                                     	'INV_NON_UPDATE_ATTRIBUTE_ERROR',
352                                     	err_text);
353 			  dumm_status := INVUPD2B.set_process_flag3(rec.ROWID,user_id,login_id,prog_appid,prog_id,request_id);
354 		  END IF; -- }
355      ELSE -- } {
356 	     -- flag error that costing related fields are being updated and move to next record
357 		  dumm_status  := INVPUOPI.mtl_log_interface_err(
358                                  	t_organization_id,
359                                  	user_id,
360                                  	login_id,
361                                  	prog_appid,
362                                  	prog_id,
363                                  	request_id,
364                                  	t_trans_id,
365                                  	error_text,
366                                  	null,
367                                  	'MTL_SYSTEM_ITEMS_INTERFACE',
368                                  	'INV_NON_UPDATE_ATTR_ERROR2',
369                                  	err_text);
370 		  dumm_status := INVUPD2B.set_process_flag3(rec.ROWID,user_id,login_id,prog_appid,prog_id,request_id);
371 	  END IF; -- }
372   END LOOP;	-- MSII LOOP  -- }
373 
374   --2808277 Start supporting Item Revision Update
375   rtn_status := assign_item_rev_data_update(
376 				 org_id	    => org_id
377 				,all_org    => all_org
378 				,prog_appid => prog_appid
379 				,prog_id    => prog_id
380 				,request_id => request_id
381 				,user_id    => user_id
382 				,login_id   => login_id
383 				,err_text   => err_text
384 				,xset_id    => xset_id);
385 
386 	IF (rtn_status <> 0) THEN
387            dumm_status := INVPUOPI.mtl_log_interface_err (
388                                 -1,
389                                 user_id,
390                                 login_id,
391                                 prog_appid,
392                                 prog_id,
393                                 request_id,
394                                 -1,
395                                 '*** BAD RETURN CODE e ***' || err_text,
396                                 null,
397                                 'MTL_ITEM_REVISIONS_INTERFACE',
398                                 'INV_IOI_ERR',
399                                 err_text);
400 	  ret_code := rtn_status;
401 
402 	END IF;
403    --2808277 End supporting Item Revision Update
404 
405 	return (ret_code);
406 
407 EXCEPTION
408    WHEN NO_DATA_FOUND THEN
409 		dumm_status  := INVPUOPI.mtl_log_interface_err(
410 				t_organization_id,
411 				user_id,
412 				login_id,
413 				prog_appid,
414 				prog_id,
415 				request_id,
416 				t_trans_id,
417 				error_text,
418 				null,
419 				'MTL_SYSTEM_ITEMS_INTERFACE',
420 				'INV_RECORD_NOT_FOUND_ERROR',
421 				err_text);
422       RETURN (1);
423    WHEN OTHERS THEN
424       IF l_inv_debug_level IN(101, 102) THEN
425          INVPUTLI.info('INVUPD1B.mtl_pr_assign_item_data_update: when OTHERS exception');
426       END IF;
427       RETURN (1);
428       -- any other error other than no data found ?
429 END mtl_pr_assign_item_data_update; -- }
430 
431 --
432 -- Function to check for attribute dependencies impacted by on-hand quantites.
433 --
434 
435 FUNCTION mtl_validate_attr_upd
436 (
437    org_id		IN  NUMBER
438 ,  item_id              IN  NUMBER
439 ,  row_id		IN  ROWID
440 ,  attr_err_mesg_name   OUT NOCOPY VARCHAR2
441 )
442 RETURN  INTEGER
443 IS
444 
445 
446 cursor msii_attr is
447 select  LOCATION_CONTROL_CODE,
448 	LOT_CONTROL_CODE,
449 	REVISION_QTY_CONTROL_CODE,
450 	SERIAL_NUMBER_CONTROL_CODE,
451 	SHELF_LIFE_CODE,
452 	COSTING_ENABLED_FLAG,
453 	INVENTORY_ASSET_FLAG,
454 	RESTRICT_LOCATORS_CODE,
455 	AUTO_SERIAL_ALPHA_PREFIX,
456 	START_AUTO_SERIAL_NUMBER,
457 	/* Start Bug 3713912 */
458 	SECONDARY_UOM_CODE ,
459 	TRACKING_QUANTITY_IND,
460 	SECONDARY_DEFAULT_IND,
461 	DUAL_UOM_DEVIATION_HIGH,
462         DUAL_UOM_DEVIATION_LOW
463 	/* End Bug 3713912 */
464   from  MTL_SYSTEM_ITEMS_INTERFACE
465 where  rowid = row_id;
466 
467 cursor msi_attr is
468 select  LOCATION_CONTROL_CODE,
469 	LOT_CONTROL_CODE,
470 	REVISION_QTY_CONTROL_CODE,
471 	SERIAL_NUMBER_CONTROL_CODE,
472 	SHELF_LIFE_CODE,
473 	COSTING_ENABLED_FLAG,
474 	INVENTORY_ASSET_FLAG,
475 	RESTRICT_LOCATORS_CODE,
476 	AUTO_SERIAL_ALPHA_PREFIX,  -- Bug #1402402
477 	START_AUTO_SERIAL_NUMBER,   -- Bug #1402402
478 	/* Start Bug 3713912 */
479 	SECONDARY_UOM_CODE ,
480 	TRACKING_QUANTITY_IND,
481 	SECONDARY_DEFAULT_IND,
482 	DUAL_UOM_DEVIATION_HIGH,
483         DUAL_UOM_DEVIATION_LOW
484 	/* End Bug 3713912 */
485   from  MTL_SYSTEM_ITEMS
486 where  inventory_item_id = item_id
487   and  organization_id = org_id;
488 
489 msii_rec msii_attr%rowtype;
490 msi_rec  msi_attr%rowtype;
491 attrib_error	exception;
492 attr_noerr_flg number;
493 
494 	l_inv_debug_level	NUMBER := INVPUTLI.get_debug_level;     --Bug: 4667452
495 
496 BEGIN --{
497 
498 	attr_noerr_flg := 0;
499 	open msii_attr;
500 	fetch msii_attr into msii_rec;
501 	open msi_attr;
502 	fetch msi_attr into msi_rec;
503 
504 -- Location Control Code
505 
506 if msii_rec.location_control_code is not null then --{
507 
508 	if msi_rec.location_control_code = 1 then
509 		if msii_rec.location_control_code = 1 then
510  			attr_noerr_flg := 0;
511 		elsif msii_rec.location_control_code in (2,3) then
512 			attr_err_mesg_name := 'INV_IOI_LOC_CTRL_CODE_UPD_QOH';
513 			raise attrib_error;
514 		end if;
515 	elsif msi_rec.location_control_code = 2 then
516 		if msii_rec.location_control_code = 1 then
517 			attr_err_mesg_name := 'INV_IOI_LOC_CTRL_CODE_UPD_QOH';
518  			raise attrib_error;
519 		elsif msii_rec.location_control_code = 2 then
520  			attr_noerr_flg := 0;
521 		elsif msii_rec.location_control_code = 3 then
522 			if msi_rec.restrict_locators_code = 1 then
523 				attr_err_mesg_name := 'INV_IOI_LOC_CTRL_CODE_UPD_QOH';
524 				raise attrib_error;
525 			elsif msi_rec.restrict_locators_code = 2 then
526 				attr_noerr_flg := 0;
527  			end if;
528 		end if;
529 	elsif msi_rec.location_control_code = 3 then
530 		if msii_rec.location_control_code = 1 then
531 			attr_err_mesg_name := 'INV_IOI_LOC_CTRL_CODE_UPD_QOH';
532  			raise attrib_error;
533 		elsif msii_rec.location_control_code = 2 then
534  			attr_noerr_flg := 0;
535 		elsif msii_rec.location_control_code = 3 then
536 			attr_noerr_flg := 0;
537 		end if;
538 	end if;
539 
540 end if; --}
541 
542 -- end Location Control Code
543 
544 -- Lot Control Code
545 if msii_rec.lot_control_code is not null then --{
546            if msi_rec.lot_control_code = msii_rec.lot_control_code then
547                  	attr_noerr_flg := 0;
548            else
549   		attr_err_mesg_name := 'INV_IOI_LOT_CTRL_CODE_UPD_QOH';
550   		raise attrib_error;
551            end if;
552 end if; --}
553 -- End Lot Control Code
554 
555 -- Revision Qty Control Code
556 if msii_rec.revision_qty_control_code is not null then --{
557          if msi_rec.Revision_qty_control_code = msii_rec.Revision_qty_control_code then
558                attr_noerr_flg := 0;
559          else
560                attr_err_mesg_name := 'INV_IOI_REV_QTY_CTRL_UPD_QOH';
561                raise attrib_error;
562          end if;
563 end if; --}
564 -- End Revision qty control code
565 
566 -- Serial Number Control Code
567 if msii_rec.serial_number_control_code is not null then --{
568 	if msi_rec.serial_number_control_code = 1 then
569 		if msii_rec.serial_number_control_code  in (1,6) then  -- Bug 1402402
570 			attr_noerr_flg := 0;
571 		else
572                		attr_err_mesg_name := 'INV_IOI_SRL_NUM_CTRL_UPD_QOH';
573 			raise attrib_error;
574                 end if;
575 /*	elsif msii_rec.serial_number_control_code = 6 then
576 			if (msii_rec.auto_serial_alpha_prefix is null and
577 			   msii_rec.start_auto_serial_number is null) then
578 				attr_err_mesg_name := 'INV_AUTO_SERIAL_PREFIX';
579 				raise attrib_error;
580 			else
581 				attr_noerr_flg := 0;
582 			end if;
583 		else
584                		attr_err_mesg_name := 'INV_IOI_SRL_NUM_CTRL_UPD_QOH';
585 			raise attrib_error;
586                 end if;
587 */  -- Commented for Bug 1402402
588 	elsif msi_rec.serial_number_control_code = 2 then
589 		if msii_rec.serial_number_control_code in (2,5) then
590 			attr_noerr_flg := 0;
591 		else
592                  	attr_err_mesg_name := 'INV_IOI_SRL_NUM_CTRL_UPD_QOH';
593 			raise attrib_error;
594                 end if;
595 	elsif msi_rec.serial_number_control_code = 5 then
596 		if msii_rec.serial_number_control_code = 5 then    -- Bug 1402402
597 			attr_noerr_flg := 0;
598                 elsif msii_rec.serial_number_control_code = 2  then   -- Added for Bug 1402402
599 			if (msii_rec.auto_serial_alpha_prefix is null or
600 			   msii_rec.start_auto_serial_number is null) then
601 				attr_err_mesg_name := 'INV_AUTO_SERIAL_PREFIX';
602 				raise attrib_error;
603 			else
604 				attr_noerr_flg := 0;
605 			end if;
606 		else
607                  	attr_err_mesg_name := 'INV_IOI_SRL_NUM_CTRL_UPD_QOH';
608 			raise attrib_error;
609                 end if;
610 	elsif msi_rec.serial_number_control_code = 6 then
611 		if msii_rec.serial_number_control_code in (1,6) then
612 			attr_noerr_flg := 0;
613 		else
614                  	attr_err_mesg_name := 'INV_IOI_SRL_NUM_CTRL_UPD_QOH';
615 			raise attrib_error;
616                 end if;
617 	end if;
618 end if; --}
619 -- End Serial Number Control Code
620 
621 -- Shelf Life Code
622 if msii_rec.shelf_life_code is not null then --{
623 	if msi_rec.shelf_life_code = 1 then
624 		if msii_rec.shelf_life_code = 1 then
625 			attr_noerr_flg := 0;
626                 else
627                  	attr_err_mesg_name := 'INV_IOI_SHLF_LIF_CODE_UPD_QOH';
628 			raise attrib_error;
629 		end if;
630 	elsif msi_rec.shelf_life_code in (2,4) then
631 		if msii_rec.shelf_life_code = 1 then
632                  	attr_err_mesg_name := 'INV_IOI_SHLF_LIF_CODE_UPD_QOH';
633 			raise attrib_error;
634 		elsif msii_rec.shelf_life_code in ( 2,4) then
635 			attr_noerr_flg := 0;
636 		end if;
637 	end if;
638 end if; --}
639 -- end shelf life code
640 
641 -- Inventory Asset Flag
642 if msii_rec.inventory_asset_flag is not null then --{
643          if msi_rec.inventory_asset_flag = msii_rec.inventory_asset_flag then
644                attr_noerr_flg := 0;
645          else
646                attr_err_mesg_name := 'INV_IOI_INV_ASST_FLG_UPD_QOH';
647                raise attrib_error;
648          end if;
649 end if; --}
650 -- End Inventory Asset Flag
651 
652 -- Costing Enabled Flag
653 if msii_rec.costing_enabled_flag is not null then --{
654          if msi_rec.costing_enabled_flag = msii_rec.costing_enabled_flag then
655                attr_noerr_flg := 0;
656          else
657                attr_err_mesg_name := 'INV_IOI_COST_ENBL_FLG_UPD_QOH';
658                raise attrib_error;
659          end if;
660 end if; --}
661 -- End Costing Enabled Flag
662 
663 /* Start Bug 3713912 */
664 -- Tracking Quantity Indicator
665 if msii_rec.TRACKING_QUANTITY_IND is not null then --{
666          if msi_rec.TRACKING_QUANTITY_IND = msii_rec.TRACKING_QUANTITY_IND then
667                attr_noerr_flg := 0;
668          else
669                attr_err_mesg_name := 'INV_IOI_TRCK_QTY_IND_UPD_QOH';
670                raise attrib_error;
671          end if;
672 end if; --}
673 -- Tracking Quantity Indicator
674 
675 -- Secondary Default Indicator
676 if msii_rec.SECONDARY_DEFAULT_IND is not null then --{
677          if msi_rec.SECONDARY_DEFAULT_IND = msii_rec.SECONDARY_DEFAULT_IND then
678                attr_noerr_flg := 0;
679          else
680                attr_err_mesg_name := 'INV_IOI_SEC_DFLT_IND_UPD_QOH';
681                raise attrib_error;
682          end if;
683 end if; --}
684 -- Secondary Default Indicator
685 
686 -- Secondary UOM Code
687 if msii_rec.SECONDARY_UOM_CODE is not null then --{
688          if msi_rec.SECONDARY_UOM_CODE = msii_rec.SECONDARY_UOM_CODE then
689                attr_noerr_flg := 0;
690          else
691                attr_err_mesg_name := 'INV_IOI_SEC_UOM_CODE_UPD_QOH';
692                raise attrib_error;
693          end if;
694 end if; --}
695 -- Secondary UOM Code
696 
697 -- Dual UOM Deviation High
698 if msii_rec.DUAL_UOM_DEVIATION_HIGH is not null then --{
699          if msi_rec.DUAL_UOM_DEVIATION_HIGH = msii_rec.DUAL_UOM_DEVIATION_HIGH then
700                attr_noerr_flg := 0;
701          else
702                attr_err_mesg_name := 'INV_IOI_DUAL_HI_DEV_UPD_QOH';
703                raise attrib_error;
704          end if;
705 end if; --}
706 -- Dual UOM Deviation High
707 
708 -- Dual UOM Deviation Low
709 if msii_rec.DUAL_UOM_DEVIATION_LOW is not null then --{
710          if msi_rec.DUAL_UOM_DEVIATION_LOW = msii_rec.DUAL_UOM_DEVIATION_LOW then
711                attr_noerr_flg := 0;
712          else
713                attr_err_mesg_name := 'INV_IOI_DUAL_LOW_DEV_UPD_QOH';
714                raise attrib_error;
715          end if;
716 end if; --}
717 -- Dual UOM Deviation Low
718 /* End Bug 3713912 */
719   return attr_noerr_flg;
720 	close msi_attr;
721 	close msii_attr;
722 
723 exception
724 
725 	when attrib_error then
726 	close msi_attr;
727 	close msii_attr;
728 	  return 1;
729 	when OTHERS then
730 	IF l_inv_debug_level IN(101, 102) THEN
731            INVPUTLI.info('when OTHERS exception raised in mtl_validate_attr_upd');
732 	END IF;
733  	close msi_attr;
734 	close msii_attr;
735 	  return 1;
736 
737 END mtl_validate_attr_upd; --}
738 
739 
740 FUNCTION chk_exist_copy_template_attr
741 (
742 	org_id		NUMBER,
743 	all_org		NUMBER		:= 2,
744 	prog_appid	NUMBER		:= -1,
745 	prog_id		NUMBER		:= -1,
746 	request_id	NUMBER		:= -1,
747 	user_id		NUMBER		:= -1,
748 	login_id	NUMBER		:= -1,
749 	err_text IN OUT NOCOPY VARCHAR2,
750 	xset_id  IN	NUMBER		DEFAULT -999
751 )
752 RETURN INTEGER
753 IS
754 	CURSOR C_msii_records is
755 	select
756 	ROWID,
757 	INVENTORY_ITEM_ID,
758 	ORGANIZATION_ID,
759 	LAST_UPDATE_DATE,
760 	LAST_UPDATED_BY,
761 	CREATION_DATE,
762 	CREATED_BY,
763 	LAST_UPDATE_LOGIN,
764 	SUMMARY_FLAG,
765 	ENABLED_FLAG,
766 	START_DATE_ACTIVE,
767 	END_DATE_ACTIVE,
768 	DESCRIPTION,
769 	BUYER_ID,
770 	ACCOUNTING_RULE_ID,
771 	INVOICING_RULE_ID,
772 	SEGMENT1,
773 	SEGMENT2,
774 	SEGMENT3,
775 	SEGMENT4,
776 	SEGMENT5,
777 	SEGMENT6,
778 	SEGMENT7,
779 	SEGMENT8,
780 	SEGMENT9,
781 	SEGMENT10,
782 	SEGMENT11,
783 	SEGMENT12,
784 	SEGMENT13,
785 	SEGMENT14,
786 	SEGMENT15,
787 	SEGMENT16,
788 	SEGMENT17,
789 	SEGMENT18,
790 	SEGMENT19,
791 	SEGMENT20,
792 	ATTRIBUTE_CATEGORY,
793 	ATTRIBUTE1,
794 	ATTRIBUTE2,
795 	ATTRIBUTE3,
796 	ATTRIBUTE4,
797 	ATTRIBUTE5,
798 	ATTRIBUTE6,
799 	ATTRIBUTE7,
800 	ATTRIBUTE8,
801 	ATTRIBUTE9,
802 	ATTRIBUTE10,
803 	ATTRIBUTE11,
804 	ATTRIBUTE12,
805 	ATTRIBUTE13,
806 	ATTRIBUTE14,
807 	ATTRIBUTE15,
808         GLOBAL_ATTRIBUTE_CATEGORY,
809         GLOBAL_ATTRIBUTE1,
810         GLOBAL_ATTRIBUTE2,
811         GLOBAL_ATTRIBUTE3,
812         GLOBAL_ATTRIBUTE4,
813         GLOBAL_ATTRIBUTE5,
814         GLOBAL_ATTRIBUTE6,
815         GLOBAL_ATTRIBUTE7,
816         GLOBAL_ATTRIBUTE8,
817         GLOBAL_ATTRIBUTE9,
818         GLOBAL_ATTRIBUTE10,
819         GLOBAL_ATTRIBUTE11,
820         GLOBAL_ATTRIBUTE12,
821         GLOBAL_ATTRIBUTE13,
822         GLOBAL_ATTRIBUTE14,
823         GLOBAL_ATTRIBUTE15,
824         GLOBAL_ATTRIBUTE16,
825         GLOBAL_ATTRIBUTE17,
826         GLOBAL_ATTRIBUTE18,
827         GLOBAL_ATTRIBUTE19,
828         GLOBAL_ATTRIBUTE20,
829 	PURCHASING_ITEM_FLAG,
830 	SHIPPABLE_ITEM_FLAG,
831 	CUSTOMER_ORDER_FLAG,
832 	INTERNAL_ORDER_FLAG,
833       -- SERVICE_ITEM_FLAG,
834 	INVENTORY_ITEM_FLAG,
835 	ENG_ITEM_FLAG,
836 	INVENTORY_ASSET_FLAG,
837 	PURCHASING_ENABLED_FLAG,
838 	CUSTOMER_ORDER_ENABLED_FLAG,
839 	INTERNAL_ORDER_ENABLED_FLAG,
840 	SO_TRANSACTIONS_FLAG,
841 	MTL_TRANSACTIONS_ENABLED_FLAG,
842 	STOCK_ENABLED_FLAG,
843 	BOM_ENABLED_FLAG,
844 	BUILD_IN_WIP_FLAG,
845 	REVISION_QTY_CONTROL_CODE,
846 	ITEM_CATALOG_GROUP_ID,
847 	CATALOG_STATUS_FLAG,
848 	RETURNABLE_FLAG,
849 	DEFAULT_SHIPPING_ORG,
850 	COLLATERAL_FLAG,
851 	TAXABLE_FLAG,
852 	PURCHASING_TAX_CODE,
853 	QTY_RCV_EXCEPTION_CODE,
854 	ALLOW_ITEM_DESC_UPDATE_FLAG,
855 	INSPECTION_REQUIRED_FLAG,
856 	RECEIPT_REQUIRED_FLAG,
857 	MARKET_PRICE,
858 	HAZARD_CLASS_ID,
859 	RFQ_REQUIRED_FLAG,
860 	QTY_RCV_TOLERANCE,
861 	LIST_PRICE_PER_UNIT,
862 	UN_NUMBER_ID,
863 	PRICE_TOLERANCE_PERCENT,
864 	ASSET_CATEGORY_ID,
865 	ROUNDING_FACTOR,
866 	UNIT_OF_ISSUE,
867 	ENFORCE_SHIP_TO_LOCATION_CODE,
868 	ALLOW_SUBSTITUTE_RECEIPTS_FLAG,
869 	ALLOW_UNORDERED_RECEIPTS_FLAG,
870 	ALLOW_EXPRESS_DELIVERY_FLAG,
871 	DAYS_EARLY_RECEIPT_ALLOWED,
872 	DAYS_LATE_RECEIPT_ALLOWED,
873 	RECEIPT_DAYS_EXCEPTION_CODE,
874 	RECEIVING_ROUTING_ID,
875 	INVOICE_CLOSE_TOLERANCE,
876 	RECEIVE_CLOSE_TOLERANCE,
877 	AUTO_LOT_ALPHA_PREFIX,
878 	START_AUTO_LOT_NUMBER,
879 	LOT_CONTROL_CODE,
880 	SHELF_LIFE_CODE,
881 	SHELF_LIFE_DAYS,
882 	SERIAL_NUMBER_CONTROL_CODE,
883 	START_AUTO_SERIAL_NUMBER,
884 	AUTO_SERIAL_ALPHA_PREFIX,
885 	SOURCE_TYPE,
886 	SOURCE_ORGANIZATION_ID,
887 	SOURCE_SUBINVENTORY,
888 	EXPENSE_ACCOUNT,
889 	ENCUMBRANCE_ACCOUNT,
890 	RESTRICT_SUBINVENTORIES_CODE,
891 	UNIT_WEIGHT,
892 	WEIGHT_UOM_CODE,
893 	VOLUME_UOM_CODE,
894 	UNIT_VOLUME,
895 	RESTRICT_LOCATORS_CODE,
896 	LOCATION_CONTROL_CODE,
897 	SHRINKAGE_RATE,
898 	ACCEPTABLE_EARLY_DAYS,
899 	PLANNING_TIME_FENCE_CODE,
900 	DEMAND_TIME_FENCE_CODE,
901 	LEAD_TIME_LOT_SIZE,
902 	STD_LOT_SIZE,
903 	CUM_MANUFACTURING_LEAD_TIME,
904 	OVERRUN_PERCENTAGE,
905 	MRP_CALCULATE_ATP_FLAG,
906 	ACCEPTABLE_RATE_INCREASE,
907 	ACCEPTABLE_RATE_DECREASE,
908 	CUMULATIVE_TOTAL_LEAD_TIME,
909 	PLANNING_TIME_FENCE_DAYS,
910 	DEMAND_TIME_FENCE_DAYS,
911 	END_ASSEMBLY_PEGGING_FLAG,
912 	REPETITIVE_PLANNING_FLAG,
913 	PLANNING_EXCEPTION_SET,
914 	BOM_ITEM_TYPE,
915 	PICK_COMPONENTS_FLAG,
916 	REPLENISH_TO_ORDER_FLAG,
917 	BASE_ITEM_ID,
918 	ATP_COMPONENTS_FLAG,
919 	ATP_FLAG,
920 	FIXED_LEAD_TIME,
921 	VARIABLE_LEAD_TIME,
922 	WIP_SUPPLY_LOCATOR_ID,
923 	WIP_SUPPLY_TYPE,
924 	WIP_SUPPLY_SUBINVENTORY,
925 	PRIMARY_UOM_CODE,
926 	PRIMARY_UNIT_OF_MEASURE,
927 	ALLOWED_UNITS_LOOKUP_CODE,
928 	COST_OF_SALES_ACCOUNT,
929 	SALES_ACCOUNT,
930 	DEFAULT_INCLUDE_IN_ROLLUP_FLAG,
931 	INVENTORY_ITEM_STATUS_CODE,
932 	INVENTORY_PLANNING_CODE,
933 	PLANNER_CODE,
934 	PLANNING_MAKE_BUY_CODE,
935 	FIXED_LOT_MULTIPLIER,
936 	ROUNDING_CONTROL_TYPE,
937 	CARRYING_COST,
938 	POSTPROCESSING_LEAD_TIME,
939 	PREPROCESSING_LEAD_TIME,
940 	FULL_LEAD_TIME,
941 	ORDER_COST,
942 	MRP_SAFETY_STOCK_PERCENT,
943 	MRP_SAFETY_STOCK_CODE,
944 	MIN_MINMAX_QUANTITY,
945 	MAX_MINMAX_QUANTITY,
946 	MINIMUM_ORDER_QUANTITY,
947 	FIXED_ORDER_QUANTITY,
948 	FIXED_DAYS_SUPPLY,
949 	MAXIMUM_ORDER_QUANTITY,
950 	ATP_RULE_ID,
951 	PICKING_RULE_ID,
952 	RESERVABLE_TYPE,
953 	POSITIVE_MEASUREMENT_ERROR,
954 	NEGATIVE_MEASUREMENT_ERROR,
955 	ENGINEERING_ECN_CODE,
956 	ENGINEERING_ITEM_ID,
957 	ENGINEERING_DATE,
958 	SERVICE_STARTING_DELAY,
959       -- VENDOR_WARRANTY_FLAG,
960 	SERVICEABLE_COMPONENT_FLAG,
961 	SERVICEABLE_PRODUCT_FLAG,
962 	BASE_WARRANTY_SERVICE_ID,
963 	PAYMENT_TERMS_ID,
964 	PREVENTIVE_MAINTENANCE_FLAG,
965 	PRIMARY_SPECIALIST_ID,
966 	SECONDARY_SPECIALIST_ID,
967 	SERVICEABLE_ITEM_CLASS_ID,
968 	TIME_BILLABLE_FLAG,
969 	MATERIAL_BILLABLE_FLAG,
970 	EXPENSE_BILLABLE_FLAG,
971 	PRORATE_SERVICE_FLAG,
972 	COVERAGE_SCHEDULE_ID,
973 	SERVICE_DURATION_PERIOD_CODE,
974 	SERVICE_DURATION,
975 	WARRANTY_VENDOR_ID,
976 	MAX_WARRANTY_AMOUNT,
977 	RESPONSE_TIME_PERIOD_CODE,
978 	RESPONSE_TIME_VALUE,
979 	NEW_REVISION_CODE,
980 	INVOICEABLE_ITEM_FLAG,
981 	TAX_CODE,
982 	INVOICE_ENABLED_FLAG,
983 	MUST_USE_APPROVED_VENDOR_FLAG,
984 	REQUEST_ID,
985 	PROGRAM_APPLICATION_ID,
986 	PROGRAM_ID,
987 	PROGRAM_UPDATE_DATE,
988 	OUTSIDE_OPERATION_FLAG,
989 	OUTSIDE_OPERATION_UOM_TYPE,
990 	SAFETY_STOCK_BUCKET_DAYS,
991 	AUTO_REDUCE_MPS,
992 	COSTING_ENABLED_FLAG,
993 	CYCLE_COUNT_ENABLED_FLAG,
994 	DEMAND_SOURCE_LINE,
995 	COPY_ITEM_ID,
996 	SET_ID,
997 	REVISION,
998 	AUTO_CREATED_CONFIG_FLAG,
999 	ITEM_TYPE,
1000 	MODEL_CONFIG_CLAUSE_NAME,
1001 	SHIP_MODEL_COMPLETE_FLAG,
1002 	MRP_PLANNING_CODE,
1003 	RETURN_INSPECTION_REQUIREMENT,
1004 	DEMAND_SOURCE_TYPE,
1005 	DEMAND_SOURCE_HEADER_ID,
1006 	TRANSACTION_ID,
1007 	PROCESS_FLAG,
1008 	ORGANIZATION_CODE,
1009 	ITEM_NUMBER,
1010 	COPY_ITEM_NUMBER,
1011 	TEMPLATE_ID,
1012 	TEMPLATE_NAME,
1013 	COPY_ORGANIZATION_ID,
1014 	COPY_ORGANIZATION_CODE,
1015 	ATO_FORECAST_CONTROL,
1016 	TRANSACTION_TYPE,
1017 	MATERIAL_COST,
1018 	MATERIAL_SUB_ELEM,
1019 	MATERIAL_OH_RATE,
1020 	MATERIAL_OH_SUB_ELEM,
1021 	MATERIAL_SUB_ELEM_ID,
1022 	MATERIAL_OH_SUB_ELEM_ID,
1023 	RELEASE_TIME_FENCE_CODE,
1024 	RELEASE_TIME_FENCE_DAYS,
1025 	CONTAINER_ITEM_FLAG,
1026 	VEHICLE_ITEM_FLAG,
1027 	MAXIMUM_LOAD_WEIGHT,
1028 	MINIMUM_FILL_PERCENT,
1029 	CONTAINER_TYPE_CODE,
1030 	INTERNAL_VOLUME,
1031 	SET_PROCESS_ID
1032 	from MTL_SYSTEM_ITEMS_INTERFACE
1033 	where process_flag = 1
1034 	and set_process_id = xset_id
1035 	and ((organization_id = org_id) or (all_org = 1));
1036 
1037 	ret_code		NUMBER		:= 1;
1038 	error_text		VARCHAR2(250);
1039 	dumm_status		NUMBER;
1040 	status_code		NUMBER;
1041 	t_organization_id	NUMBER;
1042 	t_inventory_item_id	NUMBER;
1043 	t_trans_id		NUMBER;
1044         INVALID_TEMPLATE_ERR    EXCEPTION;
1045 	ASS_ITEM_ERR		EXCEPTION;
1046 	ORG_TEMPLATE_ERR        EXCEPTION;
1047 	PARSE_ITEM_ERR		EXCEPTION;
1048 	l_inv_debug_level	NUMBER := INVPUTLI.get_debug_level;     --Bug: 4667452
1049 
1050 BEGIN -- {
1051 
1052    IF l_inv_debug_level IN(101, 102) THEN
1053       INVPUTLI.info('INVUPD1B: Inside chk_exist_copy_template_attr'|| '***orgid: ' || TO_CHAR(org_id));
1054    END IF;
1055 
1056    status_code := INVUPD1B.check_inv_item_id(
1057 			org_id,
1058 			all_org,
1059 			prog_appid,
1060 			prog_id,
1061 			request_id,
1062 			user_id,
1063 			login_id,
1064 			err_text,
1065 			xset_id);
1066 
1067    for rec in C_msii_records loop -- {
1068       BEGIN -- {
1069          t_organization_id := rec.organization_id;
1070          t_inventory_item_id := rec.inventory_item_id;
1071          t_trans_id := rec.transaction_id;
1072 
1073          if (rec.item_number is not NULL) then -- {
1074             error_text := NULL;
1075             ret_code := INVPUOPI.mtl_pr_parse_item_number(
1076 					rec.item_number,
1077 					rec.inventory_item_id,
1078 					rec.transaction_id,
1079 					rec.organization_id,
1080 					error_text,
1081 					rec.rowid);
1082             if (ret_code < 0) then -- {
1083                raise PARSE_ITEM_ERR;
1084             end if; -- }
1085          end if; -- }
1086 
1087          if ( INVUPD1B.exists_in_msi(
1088 			rec.ROWID,
1089 			t_organization_id,
1090 			t_inventory_item_id,
1091 			prog_appid,
1092 			prog_id,
1093 			request_id,
1094 			user_id,
1095 			login_id,
1096 			t_trans_id,
1097 			err_text,
1098 			xset_id) = 1 )
1099          then
1100   	    rec.inventory_item_id := t_inventory_item_id;
1101 	 else
1102             -- flag error that record does not exist in msi
1103 	    --Bug: 4937990
1104 	    -- Changed the error message
1105             dumm_status  := INVPUOPI.mtl_log_interface_err(
1106 					t_organization_id,
1107 					user_id,
1108 					login_id,
1109 					prog_appid,
1110 					prog_id,
1111 					request_id,
1112 					t_trans_id,
1113 					error_text,
1114 					null,
1115 					'MTL_SYSTEM_ITEMS_INTERFACE',
1116 					'INV_ORGITEM_ID_NOT_FOUND',
1117 					err_text);
1118             dumm_status := INVUPD2B.set_process_flag3(rec.ROWID,user_id,login_id,prog_appid,prog_id,request_id);
1119 	 end if;
1120       EXCEPTION
1121          -- if an oracle error occurred
1122          when ASS_ITEM_ERR then
1123             dumm_status  := INVPUOPI.mtl_log_interface_err(
1124 					t_organization_id,
1125 					user_id,
1126 					login_id,
1127 					prog_appid,
1128 					prog_id,
1129 					request_id,
1130 					t_trans_id,
1131 					error_text,
1132 					null,
1133 					'MTL_SYSTEM_ITEMS_INTERFACE',
1134 					'INV_TEMPLATE_ERROR',
1135 					err_text);
1136             dumm_status := INVUPD2B.set_process_flag3(rec.ROWID,user_id,login_id,prog_appid,prog_id,request_id);
1137             status_code := 1;
1138 
1139          when PARSE_ITEM_ERR then
1140             dumm_status  := INVPUOPI.mtl_log_interface_err(
1141 					t_organization_id,
1142 					user_id,
1143 					login_id,
1144 					prog_appid,
1145 					prog_id,
1146 					request_id,
1147 					t_trans_id,
1148 					error_text,
1149 					'ITEM_NUMBER',
1150 					'MTL_SYSTEM_ITEMS_INTERFACE',
1151 					'INV_PARSE_ITEM_ERROR',
1152 					err_text);
1153             dumm_status := INVUPD2B.set_process_flag3(rec.ROWID,user_id,login_id,prog_appid,prog_id,request_id);
1154          END;
1155       end loop;  -- msii loop
1156 
1157       -- IOI Perf improvements..apply mass template.
1158       IF (INSTR(INV_EGO_REVISION_VALIDATE.Get_Process_Control,'PLM_UI:Y') = 0) THEN
1159          status_code := INVPULI2.copy_template_attributes(
1160                            org_id
1161                           ,all_org
1162                           ,prog_appid
1163                           ,prog_id
1164                           ,request_id
1165                           ,user_id
1166                           ,login_id
1167                           ,xset_id
1168                           ,err_text);
1169       END IF;
1170 
1171       return (status_code);
1172 
1173 EXCEPTION
1174 
1175    when OTHERS then
1176 	IF l_inv_debug_level IN(101, 102) THEN
1177 	   INVPUTLI.info('when OTHERS exception raised in chk_exist_copy_template_attr');
1178 	END IF;
1179         return (1);
1180 
1181 END chk_exist_copy_template_attr; -- }
1182 
1183 
1184 FUNCTION check_inv_item_id
1185 (
1186 	org_id		NUMBER,
1187 	all_org		NUMBER		:= 2,
1188 	prog_appid	NUMBER		:= -1,
1189 	prog_id		NUMBER		:= -1,
1190 	request_id	NUMBER		:= -1,
1191 	user_id		NUMBER		:= -1,
1192 	login_id	NUMBER		:= -1,
1193 	err_text IN OUT NOCOPY VARCHAR2,
1194 	xset_id  IN	NUMBER		DEFAULT -999
1195 )
1196 return INTEGER
1197 IS
1198 	CURSOR C_inv_item_id_records is
1199 	select process_flag, organization_id, transaction_id
1200 	from MTL_SYSTEM_ITEMS_INTERFACE MSII
1201 	where MSII.inventory_item_id is not NULL
1202 	and MSII.set_process_id = xset_id
1203 	and MSII.process_flag = 1
1204 	and not exists
1205 		(select inventory_item_id
1206 		 from MTL_SYSTEM_ITEMS_B MSI
1207 		 where MSII.inventory_item_id = MSI.inventory_item_id
1208 		 and MSII.organization_id = MSI.organization_id)
1209 	for update;
1210 
1211 	error_text		VARCHAR2(250);
1212 	l_process_flag_3	NUMBER		:= 3;
1213 	dumm_status		NUMBER;
1214 	ret_code		NUMBER		:= 0;
1215 	l_inv_debug_level	NUMBER := INVPUTLI.get_debug_level;     --Bug: 4667452
1216 
1217 BEGIN -- {
1218 
1219    IF l_inv_debug_level IN(101, 102) THEN
1220       INVPUTLI.info('INVUPD1B: Inside check_inv_item_id'|| '***orgid: ' || TO_CHAR(org_id));
1221    END IF;
1222 
1223 	for rec in C_inv_item_id_records loop -- {
1224 
1225 		dumm_status  := INVPUOPI.mtl_log_interface_err(
1226 				rec.organization_id,
1227 				user_id,
1228 				login_id,
1229 				prog_appid,
1230 				prog_id,
1231 				request_id,
1232 				rec.transaction_id,
1233 				error_text,
1234 				'INVENTORY_ITEM_ID',
1235 				'MTL_SYSTEM_ITEMS_INTERFACE',
1236 				'INV_INV_ITEM_ID_NOEXIST_ERROR',
1237 				err_text);
1238 
1239 		update MTL_SYSTEM_ITEMS_INTERFACE
1240 		set process_flag = l_process_flag_3
1241 		where current of C_inv_item_id_records;
1242 		ret_code := 1;
1243 
1244 	end loop; -- }
1245 
1246         /* commit for debugging ONLY */
1247 	-- commit;
1248 
1249    return (ret_code);
1250 
1251 EXCEPTION
1252 
1253    when OTHERS then
1254       IF l_inv_debug_level IN(101, 102) THEN
1255          INVPUTLI.info('when OTHERS exception raised in check_inv_item_id');
1256       END IF;
1257       return (1);
1258 
1259 END check_inv_item_id; -- }
1260 
1261 
1262 FUNCTION exists_in_msi
1263 (
1264 	row_id			ROWID,
1265 	org_id          	NUMBER,
1266 	inv_item_id IN OUT NOCOPY NUMBER,
1267 	prog_appid		NUMBER		:= -1,
1268 	prog_id			NUMBER		:= -1,
1269 	request_id		NUMBER		:= -1,
1270 	user_id			NUMBER		:= -1,
1271 	login_id		NUMBER		:= -1,
1272 	trans_id		NUMBER,
1273 	err_text IN OUT	NOCOPY	VARCHAR2,
1274 	xset_id  IN		NUMBER		DEFAULT NULL
1275 )
1276 return INTEGER
1277 IS
1278 	tmp_orgid	NUMBER;
1279 	error_text	VARCHAR2(250);
1280 	dumm_status	NUMBER;
1281 
1282 	-- Dynamic SQL vars
1283 	DSQL_inventory_item_id	NUMBER;
1284 	DSQL_statement		VARCHAR2(3000);
1285 	DSQL_c			INTEGER; -- pointer to dynamic SQL cursor
1286 	DSQL_rows_processed	INTEGER;
1287 	statement_temp		VARCHAR2(2000);
1288 	err_temp		VARCHAR2(1000);
1289 	transaction_id_bind	INTEGER;
1290 	dummy_ret_code		NUMBER;
1291 
1292 	l_inv_debug_level	NUMBER := INVPUTLI.get_debug_level;     --Bug: 4667452
1293 
1294 BEGIN -- {
1295 
1296   IF l_inv_debug_level IN(101, 102) THEN
1297      INVPUTLI.info('INVUPD1B: Inside exists_in_msi'|| '***orgid: ' || TO_CHAR(org_id));
1298   END IF;
1299 
1300 	if inv_item_id is null then -- {
1301 
1302 		dummy_ret_code := INVPUTLI.get_dynamic_sql_str(1, statement_temp, err_temp);
1303 		DSQL_statement := 'select msi.inventory_item_id
1304 					from mtl_system_items_B msi,
1305 					mtl_system_items_interface msii
1306 		                        where msii.rowid = :row_id_bind
1307 		                        AND msi.organization_id = msii.organization_id
1308 					and ' || statement_temp;
1309 		DSQL_c := dbms_sql.open_cursor;
1310 		dbms_sql.parse(DSQL_c, DSQL_statement, dbms_sql.native);
1311 		dbms_sql.define_column(DSQL_c,1,DSQL_inventory_item_id);
1312 		dbms_sql.bind_variable(DSQL_c, 'row_id_bind', row_id);
1313 		DSQL_rows_processed := dbms_sql.execute(DSQL_c);
1314 --
1315 		if dbms_sql.fetch_rows(DSQL_c) > 0 then -- {
1316 			dbms_sql.column_value(DSQL_c,1,DSQL_inventory_item_id);
1317 --
1318 			update MTL_SYSTEM_ITEMS_INTERFACE
1319 			set inventory_item_id = DSQL_inventory_item_id
1320 			where rowid  = row_id;
1321 --
1322 			inv_item_id := DSQL_inventory_item_id;
1323 			dbms_sql.close_cursor(DSQL_c);
1324 		else -- } {
1325 			dbms_sql.close_cursor(DSQL_c);
1326 --
1327 			return (0);
1328 		end if; -- }
1329 
1330 	end if; -- }
1331 
1332 	select organization_id
1333 	into tmp_orgid
1334 	from MTL_SYSTEM_ITEMS_B
1335 	where organization_id = org_id
1336 	and inventory_item_id = inv_item_id;
1337 
1338    return (1);
1339 
1340 EXCEPTION
1341 
1342    when NO_DATA_FOUND then
1343       -- orgid inv_item_id combination does not exist in msi
1344       return 0;
1345 
1346    when OTHERS then
1347       IF l_inv_debug_level IN(101, 102) THEN
1348          INVPUTLI.info('when OTHERS exception raised in exists_in_msi');
1349       END IF;
1350 
1351       if dbms_sql.is_open(DSQL_c) then -- {
1352          dbms_sql.close_cursor(DSQL_c);
1353       end if; -- }
1354 
1355       dumm_status := INVPUOPI.mtl_log_interface_err(
1356 				org_id,
1357 				user_id,
1358 				login_id,
1359 				prog_appid,
1360 				prog_id,
1361 				request_id,
1362 				trans_id,
1363 				error_text,
1364 				null,
1365 				'MTL_SYSTEM_ITEMS_INTERFACE',
1366 				'INV_DYN_SQL_ERROR',
1367 				err_text);
1368 
1369       dumm_status := INVUPD2B.set_process_flag3 (row_id,user_id,login_id,prog_appid,prog_id,request_id);
1370 
1371       return (0);
1372 
1373 END exists_in_msi; -- }
1374 
1375 
1376 FUNCTION exists_onhand_quantities
1377 (
1378 	org_id          NUMBER,
1379 	inv_item_id     NUMBER
1380 )
1381 return INTEGER
1382 IS
1383 	tmp_org_id	NUMBER;
1384 	l_inv_debug_level	NUMBER := INVPUTLI.get_debug_level;     --Bug: 4667452
1385 BEGIN -- {
1386 
1387    IF l_inv_debug_level IN(101, 102) THEN
1388       INVPUTLI.info('INVUPD1B: Inside exists_onhand_quantities'|| '***orgid: ' || TO_CHAR(org_id));
1389    END IF;
1390 
1391 
1392 
1393 	select organization_id
1394 	into tmp_org_id
1395 	from MTL_ONHAND_QUANTITIES_DETAIL MOQ -- Bug:2687570
1396 	where MOQ.ORGANIZATION_ID = org_id
1397 	AND MOQ.INVENTORY_ITEM_ID = inv_item_id;
1398 
1399    return (1);
1400 
1401 EXCEPTION
1402 
1403    when NO_DATA_FOUND then
1404       return (0);
1405 
1406    when TOO_MANY_ROWS then
1407       return (1);
1408 
1409    when OTHERS then
1410       IF l_inv_debug_level IN(101, 102) THEN
1411          INVPUTLI.info('when OTHERS exception raised in exists_onhand_quantities');
1412       END IF;
1413       return (0);
1414 
1415 END exists_onhand_quantities; -- }
1416 
1417 
1418 FUNCTION exists_onhand_child_qties
1419 (
1420 	org_id          NUMBER,
1421 	inv_item_id     NUMBER
1422 )
1423 return INTEGER
1424 IS
1425 	-- child records in msi of master org_id
1426 	CURSOR C_child_msi_records IS
1427 	select
1428 	MSI.INVENTORY_ITEM_ID,
1429 	MSI.ORGANIZATION_ID
1430 	from MTL_SYSTEM_ITEMS_B MSI, MTL_PARAMETERS MP
1431 	where MP.master_organization_id = org_id
1432         and MP.organization_id = MSI.organization_id
1433 	and MSI.inventory_item_id = inv_item_id
1434 	and MSI.organization_id <> MP.master_organization_id;
1435 
1436 	tmp_org_id	NUMBER;
1437 	status		NUMBER		:= 0;
1438 
1439 	l_inv_debug_level	NUMBER := INVPUTLI.get_debug_level;     --Bug: 4667452
1440 
1441 BEGIN -- {
1442 
1443    IF l_inv_debug_level IN(101, 102) THEN
1444       INVPUTLI.info('INVUPD1B: Inside exists_onhand_child_qties'|| '***orgid: ' || TO_CHAR(org_id));
1445    END IF;
1446 	-- if record is a master record
1447 	select organization_id
1448 	into tmp_org_id
1449 	from MTL_PARAMETERS MP
1450 	where MP.organization_id = org_id
1451 	AND MP.master_organization_id = org_id;
1452 
1453 	for rec in C_child_msi_records loop -- {
1454 
1455 		status := INVUPD1B.exists_onhand_quantities(rec.INVENTORY_ITEM_ID, rec.ORGANIZATION_ID);
1456 		exit when status = 1;
1457 
1458 	end loop; -- }
1459 
1460    return status;
1461 
1462 	--	if exists_onhand_quantities
1463 	--		return (1)
1464 	--	else
1465 	--		return (0) [default]
1466 
1467 EXCEPTION
1468 
1469    when NO_DATA_FOUND then -- record is not a master record
1470 	return (0);
1471 
1472    when OTHERS then
1473         IF l_inv_debug_level IN(101, 102) THEN
1474 	   INVPUTLI.info('when OTHERS exception raised in exists_onhand_child_qties');
1475         END IF;
1476 	return (0);
1477 
1478 END exists_onhand_child_qties; -- }
1479 
1480 
1481 FUNCTION copy_msi_to_msii(
1482 	row_id		ROWID,
1483 	org_id          NUMBER,
1484 	inv_item_id     NUMBER) return INTEGER  IS
1485 
1486 CURSOR c_trade_item_default
1487  IS
1488    SELECT default_value FROM FND_DESCR_FLEX_COLUMN_USAGES
1489     WHERE application_id = 431
1490       AND DESCRIPTIVE_FLEXFIELD_NAME = 'EGO_MASTER_ITEMS'
1491       AND DESCRIPTIVE_FLEX_CONTEXT_CODE = 'Main'
1492       AND END_USER_COLUMN_NAME = 'Trade_Item_Descriptor';
1493 
1494    msi_record_temp	MTL_SYSTEM_ITEMS_VL%ROWTYPE;
1495    msii_temp_data       MTL_SYSTEM_ITEMS_INTERFACE%ROWTYPE;
1496    l_process_flag_2	NUMBER	:= 2;
1497    l_inv_debug_level	NUMBER := INVPUTLI.get_debug_level;     --Bug: 4667452
1498 
1499 BEGIN -- {
1500 
1501    IF l_inv_debug_level IN(101, 102) THEN
1502       INVPUTLI.info('INVUPD1B: Inside copy_msi_to_msii'|| '***orgid: ' || TO_CHAR(org_id));
1503    END IF;
1504 
1505    SELECT *  INTO msi_record_temp
1506    FROM   MTL_SYSTEM_ITEMS_VL MSI
1507    WHERE  MSI.organization_id   = org_id
1508    AND    MSI.inventory_item_id = inv_item_id;
1509 
1510    SELECT * INTO msii_temp_data
1511    FROM  MTL_SYSTEM_ITEMS_INTERFACE msii
1512    WHERE MSII.ROWID   = ROW_ID;
1513 
1514    -- Start 5565453 : Perf issue reducing the shared memory
1515    IF msii_temp_data.DAYS_MAX_INV_WINDOW IS NULL THEN
1516       msii_temp_data.DAYS_MAX_INV_WINDOW := msi_record_temp.DAYS_MAX_INV_WINDOW;
1517    ELSIF msii_temp_data.DAYS_MAX_INV_WINDOW    = g_Upd_Null_NUM THEN
1518       msii_temp_data.DAYS_MAX_INV_WINDOW := NULL;
1519    ELSIF msii_temp_data.DAYS_MAX_INV_WINDOW    = g_FND_Upd_Null_NUM THEN
1520       msii_temp_data.DAYS_MAX_INV_WINDOW := NULL;
1521    END IF;
1522    IF msii_temp_data.DRP_PLANNED_FLAG IS NULL THEN
1523       msii_temp_data.DRP_PLANNED_FLAG := msi_record_temp.DRP_PLANNED_FLAG;
1524    ELSIF msii_temp_data.DRP_PLANNED_FLAG    = g_Upd_Null_NUM THEN
1525       msii_temp_data.DRP_PLANNED_FLAG := NULL;
1526    ELSIF msii_temp_data.DRP_PLANNED_FLAG    = g_FND_Upd_Null_NUM THEN
1527       msii_temp_data.DRP_PLANNED_FLAG := NULL;
1528    END IF;
1529    IF msii_temp_data.CRITICAL_COMPONENT_FLAG IS NULL THEN
1530       msii_temp_data.CRITICAL_COMPONENT_FLAG := msi_record_temp.CRITICAL_COMPONENT_FLAG;
1531    ELSIF msii_temp_data.CRITICAL_COMPONENT_FLAG    = g_Upd_Null_NUM THEN
1532       msii_temp_data.CRITICAL_COMPONENT_FLAG := NULL;
1533    ELSIF msii_temp_data.CRITICAL_COMPONENT_FLAG    = g_FND_Upd_Null_NUM THEN
1534       msii_temp_data.CRITICAL_COMPONENT_FLAG := NULL;
1535    END IF;
1536    IF msii_temp_data.CONTINOUS_TRANSFER IS NULL THEN
1537       msii_temp_data.CONTINOUS_TRANSFER := msi_record_temp.CONTINOUS_TRANSFER;
1538    ELSIF msii_temp_data.CONTINOUS_TRANSFER    = g_Upd_Null_NUM THEN
1539       msii_temp_data.CONTINOUS_TRANSFER := NULL;
1540    ELSIF msii_temp_data.CONTINOUS_TRANSFER    = g_FND_Upd_Null_NUM THEN
1541       msii_temp_data.CONTINOUS_TRANSFER := NULL;
1542    END IF;
1543    IF msii_temp_data.CONVERGENCE IS NULL THEN
1544       msii_temp_data.CONVERGENCE := msi_record_temp.CONVERGENCE;
1545    ELSIF msii_temp_data.CONVERGENCE    = g_Upd_Null_NUM THEN
1546       msii_temp_data.CONVERGENCE := NULL;
1547    ELSIF msii_temp_data.CONVERGENCE    = g_FND_Upd_Null_NUM THEN
1548       msii_temp_data.CONVERGENCE := NULL;
1549    END IF;
1550    IF msii_temp_data.DIVERGENCE IS NULL THEN
1551       msii_temp_data.DIVERGENCE := msi_record_temp.DIVERGENCE;
1552    ELSIF msii_temp_data.DIVERGENCE    = g_Upd_Null_NUM THEN
1553       msii_temp_data.DIVERGENCE := NULL;
1554    ELSIF msii_temp_data.DIVERGENCE    = g_FND_Upd_Null_NUM THEN
1555       msii_temp_data.DIVERGENCE := NULL;
1556    END IF;
1557    IF msii_temp_data.LOT_DIVISIBLE_FLAG is null then
1558       msii_temp_data.LOT_DIVISIBLE_FLAG := msi_record_temp.LOT_DIVISIBLE_FLAG;
1559    END IF;
1560    IF msii_temp_data.GRADE_CONTROL_FLAG is null then
1561       msii_temp_data.GRADE_CONTROL_FLAG := msi_record_temp.GRADE_CONTROL_FLAG;
1562    END IF;
1563    IF msii_temp_data.CHILD_LOT_FLAG is null then
1564       msii_temp_data.CHILD_LOT_FLAG := msi_record_temp.CHILD_LOT_FLAG;
1565    END IF;
1566    IF msii_temp_data.PARENT_CHILD_GENERATION_FLAG is null then
1567       msii_temp_data.PARENT_CHILD_GENERATION_FLAG := msi_record_temp.PARENT_CHILD_GENERATION_FLAG;
1568    END IF;
1569    IF msii_temp_data.CHILD_LOT_STARTING_NUMBER IS NULL THEN
1570       msii_temp_data.CHILD_LOT_STARTING_NUMBER := msi_record_temp.CHILD_LOT_STARTING_NUMBER;
1571    ELSIF msii_temp_data.CHILD_LOT_STARTING_NUMBER    = '!' THEN
1572       msii_temp_data.CHILD_LOT_STARTING_NUMBER := NULL;
1573    ELSIF msii_temp_data.CHILD_LOT_STARTING_NUMBER    = g_FND_Upd_Null_Char THEN
1574       msii_temp_data.CHILD_LOT_STARTING_NUMBER := NULL;
1575    END IF;
1576    IF msii_temp_data.CHILD_LOT_VALIDATION_FLAG is null then
1577       msii_temp_data.CHILD_LOT_VALIDATION_FLAG := msi_record_temp.CHILD_LOT_VALIDATION_FLAG;
1578    END IF;
1579    IF msii_temp_data.PROCESS_QUALITY_ENABLED_FLAG is null then
1580       msii_temp_data.PROCESS_QUALITY_ENABLED_FLAG := msi_record_temp.PROCESS_QUALITY_ENABLED_FLAG;
1581    END IF;
1582    IF msii_temp_data.PROCESS_SUPPLY_SUBINVENTORY IS NULL THEN
1583       msii_temp_data.PROCESS_SUPPLY_SUBINVENTORY := msi_record_temp.PROCESS_SUPPLY_SUBINVENTORY;
1584    ELSIF msii_temp_data.PROCESS_SUPPLY_SUBINVENTORY    = '!' THEN
1585       msii_temp_data.PROCESS_SUPPLY_SUBINVENTORY := NULL;
1586    ELSIF msii_temp_data.PROCESS_SUPPLY_SUBINVENTORY    = g_FND_Upd_Null_Char THEN
1587       msii_temp_data.PROCESS_SUPPLY_SUBINVENTORY := NULL;
1588    END IF;
1589    IF msii_temp_data.PROCESS_YIELD_SUBINVENTORY IS NULL THEN
1590       msii_temp_data.PROCESS_YIELD_SUBINVENTORY := msi_record_temp.PROCESS_YIELD_SUBINVENTORY;
1591    ELSIF msii_temp_data.PROCESS_YIELD_SUBINVENTORY    = '!' THEN
1592       msii_temp_data.PROCESS_YIELD_SUBINVENTORY := NULL;
1593    ELSIF msii_temp_data.PROCESS_YIELD_SUBINVENTORY    = g_FND_Upd_Null_Char THEN
1594       msii_temp_data.PROCESS_YIELD_SUBINVENTORY := NULL;
1595    END IF;
1596    IF msii_temp_data.HAZARDOUS_MATERIAL_FLAG is null then
1597       msii_temp_data.HAZARDOUS_MATERIAL_FLAG := msi_record_temp.HAZARDOUS_MATERIAL_FLAG;
1598    END IF;
1599    IF msii_temp_data.CAS_NUMBER IS NULL THEN
1600       msii_temp_data.CAS_NUMBER := msi_record_temp.CAS_NUMBER;
1601    ELSIF msii_temp_data.CAS_NUMBER    = '!' THEN
1602       msii_temp_data.CAS_NUMBER := NULL;
1603    ELSIF msii_temp_data.CAS_NUMBER    = g_FND_Upd_Null_Char THEN
1604       msii_temp_data.CAS_NUMBER := NULL;
1605    END IF;
1606    IF msii_temp_data.EXPIRATION_ACTION_INTERVAL IS NULL THEN
1607       msii_temp_data.EXPIRATION_ACTION_INTERVAL := msi_record_temp.EXPIRATION_ACTION_INTERVAL;
1608    ELSIF msii_temp_data.EXPIRATION_ACTION_INTERVAL    = -999999 THEN
1609       msii_temp_data.EXPIRATION_ACTION_INTERVAL := NULL;
1610    ELSIF msii_temp_data.EXPIRATION_ACTION_INTERVAL    = g_FND_Upd_Null_NUM THEN
1611       msii_temp_data.EXPIRATION_ACTION_INTERVAL := NULL;
1612    END IF;
1613    IF msii_temp_data.EXPIRATION_ACTION_CODE is null then
1614       msii_temp_data.EXPIRATION_ACTION_CODE := msi_record_temp.EXPIRATION_ACTION_CODE;
1615    END IF;
1616    IF msii_temp_data.HOLD_DAYS IS NULL THEN
1617       msii_temp_data.HOLD_DAYS := msi_record_temp.HOLD_DAYS;
1618    ELSIF msii_temp_data.HOLD_DAYS    = -999999 THEN
1619       msii_temp_data.HOLD_DAYS := NULL;
1620    ELSIF msii_temp_data.HOLD_DAYS    = g_FND_Upd_Null_NUM THEN
1621       msii_temp_data.HOLD_DAYS := NULL;
1622    END IF;
1623    IF msii_temp_data.REPAIR_LEADTIME IS NULL THEN
1624       msii_temp_data.REPAIR_LEADTIME := msi_record_temp.REPAIR_LEADTIME;
1625    ELSIF msii_temp_data.REPAIR_LEADTIME    = -999999 THEN
1626       msii_temp_data.REPAIR_LEADTIME := NULL;
1627    ELSIF msii_temp_data.REPAIR_LEADTIME    = g_FND_Upd_Null_NUM THEN
1628       msii_temp_data.REPAIR_LEADTIME := NULL;
1629    END IF;
1630    IF msii_temp_data.REPAIR_YIELD IS NULL THEN
1631       msii_temp_data.REPAIR_YIELD := msi_record_temp.REPAIR_YIELD;
1632    ELSIF msii_temp_data.REPAIR_YIELD    = -999999 THEN
1633       msii_temp_data.REPAIR_YIELD := NULL;
1634    ELSIF msii_temp_data.REPAIR_YIELD    = g_FND_Upd_Null_NUM THEN
1635       msii_temp_data.REPAIR_YIELD := NULL;
1636    END IF;
1637    IF msii_temp_data.REPAIR_PROGRAM IS NULL THEN
1638       msii_temp_data.REPAIR_PROGRAM := msi_record_temp.REPAIR_PROGRAM;
1639    ELSIF msii_temp_data.REPAIR_PROGRAM    = -999999 THEN
1640       msii_temp_data.REPAIR_PROGRAM := NULL;
1641    ELSIF msii_temp_data.REPAIR_PROGRAM    = g_FND_Upd_Null_NUM THEN
1642       msii_temp_data.REPAIR_PROGRAM := NULL;
1643    END IF;
1644    IF msii_temp_data.OUTSOURCED_ASSEMBLY IS NULL THEN
1645       msii_temp_data.OUTSOURCED_ASSEMBLY := msi_record_temp.OUTSOURCED_ASSEMBLY;
1646    ELSIF msii_temp_data.OUTSOURCED_ASSEMBLY    = -999999 THEN
1647       msii_temp_data.OUTSOURCED_ASSEMBLY := NULL;
1648    ELSIF msii_temp_data.OUTSOURCED_ASSEMBLY    = g_FND_Upd_Null_NUM THEN
1649       msii_temp_data.OUTSOURCED_ASSEMBLY := NULL;
1650    END IF;
1651    IF trim(msii_temp_data.RFQ_REQUIRED_FLAG) is null then
1652       msii_temp_data.RFQ_REQUIRED_FLAG := msi_record_temp.RFQ_REQUIRED_FLAG;
1653    ELSE
1654       msii_temp_data.RFQ_REQUIRED_FLAG := trim(msii_temp_data.RFQ_REQUIRED_FLAG);
1655    END IF;
1656    IF msii_temp_data.MIN_MINMAX_QUANTITY IS NULL THEN
1657       msii_temp_data.MIN_MINMAX_QUANTITY := msi_record_temp.MIN_MINMAX_QUANTITY;
1658    ELSIF msii_temp_data.MIN_MINMAX_QUANTITY    = -999999 THEN
1659       msii_temp_data.MIN_MINMAX_QUANTITY := NULL;
1660    ELSIF msii_temp_data.MIN_MINMAX_QUANTITY    = g_FND_Upd_Null_NUM THEN
1661       msii_temp_data.MIN_MINMAX_QUANTITY := NULL;
1662    END IF;
1663    IF msii_temp_data.PROGRAM_APPLICATION_ID is null then
1664       msii_temp_data.PROGRAM_APPLICATION_ID := msi_record_temp.PROGRAM_APPLICATION_ID;
1665    END IF;
1666    IF msii_temp_data.DEFAULT_SERIAL_STATUS_ID IS NULL THEN
1667       msii_temp_data.DEFAULT_SERIAL_STATUS_ID := msi_record_temp.DEFAULT_SERIAL_STATUS_ID;
1668    ELSIF msii_temp_data.DEFAULT_SERIAL_STATUS_ID    = g_Upd_Null_NUM THEN
1669       msii_temp_data.DEFAULT_SERIAL_STATUS_ID := NULL;
1670    ELSIF msii_temp_data.DEFAULT_SERIAL_STATUS_ID    = g_FND_Upd_Null_NUM THEN
1671       msii_temp_data.DEFAULT_SERIAL_STATUS_ID := NULL;
1672    END IF;
1673    IF msii_temp_data.ASN_AUTOEXPIRE_FLAG IS NULL THEN
1674       msii_temp_data.ASN_AUTOEXPIRE_FLAG := msi_record_temp.ASN_AUTOEXPIRE_FLAG;
1675    ELSIF msii_temp_data.ASN_AUTOEXPIRE_FLAG    = g_Upd_Null_NUM THEN
1676       msii_temp_data.ASN_AUTOEXPIRE_FLAG := NULL;
1677    ELSIF msii_temp_data.ASN_AUTOEXPIRE_FLAG    = g_FND_Upd_Null_NUM THEN
1678       msii_temp_data.ASN_AUTOEXPIRE_FLAG := NULL;
1679    END IF;
1680    IF msii_temp_data.DEFAULT_GRADE IS NULL THEN
1681       msii_temp_data.DEFAULT_GRADE := msi_record_temp.DEFAULT_GRADE;
1682    ELSIF msii_temp_data.DEFAULT_GRADE    = '!' THEN
1683       msii_temp_data.DEFAULT_GRADE := NULL;
1684    ELSIF msii_temp_data.DEFAULT_GRADE    = g_FND_Upd_Null_Char THEN
1685       msii_temp_data.DEFAULT_GRADE := NULL;
1686    END IF;
1687    IF msii_temp_data.CHILD_LOT_PREFIX IS NULL THEN
1688       msii_temp_data.CHILD_LOT_PREFIX := msi_record_temp.CHILD_LOT_PREFIX;
1689    ELSIF msii_temp_data.CHILD_LOT_PREFIX    = '!' THEN
1690       msii_temp_data.CHILD_LOT_PREFIX := NULL;
1691    ELSIF msii_temp_data.CHILD_LOT_PREFIX    = g_FND_Upd_Null_Char THEN
1692       msii_temp_data.CHILD_LOT_PREFIX := NULL;
1693    END IF;
1694    IF msii_temp_data.COPY_LOT_ATTRIBUTE_FLAG is null then
1695       msii_temp_data.COPY_LOT_ATTRIBUTE_FLAG := msi_record_temp.COPY_LOT_ATTRIBUTE_FLAG;
1696    END IF;
1697    IF msii_temp_data.PROCESS_COSTING_ENABLED_FLAG is null then
1698       msii_temp_data.PROCESS_COSTING_ENABLED_FLAG := msi_record_temp.PROCESS_COSTING_ENABLED_FLAG;
1699    END IF;
1700    IF msii_temp_data.PROCESS_SUPPLY_LOCATOR_ID IS NULL THEN
1701       msii_temp_data.PROCESS_SUPPLY_LOCATOR_ID := msi_record_temp.PROCESS_SUPPLY_LOCATOR_ID;
1702    ELSIF msii_temp_data.PROCESS_SUPPLY_LOCATOR_ID    = -999999 THEN
1703       msii_temp_data.PROCESS_SUPPLY_LOCATOR_ID := NULL;
1704    ELSIF msii_temp_data.PROCESS_SUPPLY_LOCATOR_ID    = g_FND_Upd_Null_NUM THEN
1705       msii_temp_data.PROCESS_SUPPLY_LOCATOR_ID := NULL;
1706    END IF;
1707    IF msii_temp_data.PROCESS_YIELD_LOCATOR_ID IS NULL THEN
1708       msii_temp_data.PROCESS_YIELD_LOCATOR_ID := msi_record_temp.PROCESS_YIELD_LOCATOR_ID;
1709    ELSIF msii_temp_data.PROCESS_YIELD_LOCATOR_ID    = -999999 THEN
1710       msii_temp_data.PROCESS_YIELD_LOCATOR_ID := NULL;
1711    ELSIF msii_temp_data.PROCESS_YIELD_LOCATOR_ID    = g_FND_Upd_Null_NUM THEN
1712       msii_temp_data.PROCESS_YIELD_LOCATOR_ID := NULL;
1713    END IF;
1714    IF msii_temp_data.RETEST_INTERVAL IS NULL THEN
1715       msii_temp_data.RETEST_INTERVAL := msi_record_temp.RETEST_INTERVAL;
1716    ELSIF msii_temp_data.RETEST_INTERVAL    = -999999 THEN
1717       msii_temp_data.RETEST_INTERVAL := NULL;
1718    ELSIF msii_temp_data.RETEST_INTERVAL    = g_FND_Upd_Null_NUM THEN
1719       msii_temp_data.RETEST_INTERVAL := NULL;
1720    END IF;
1721    IF msii_temp_data.MATURITY_DAYS IS NULL THEN
1722       msii_temp_data.MATURITY_DAYS := msi_record_temp.MATURITY_DAYS;
1723    ELSIF msii_temp_data.MATURITY_DAYS    = -999999 THEN
1724       msii_temp_data.MATURITY_DAYS := NULL;
1725    ELSIF msii_temp_data.MATURITY_DAYS    = g_FND_Upd_Null_NUM THEN
1726       msii_temp_data.MATURITY_DAYS := NULL;
1727    END IF;
1728    IF msii_temp_data.CHARGE_PERIODICITY_CODE IS NULL THEN
1729       msii_temp_data.CHARGE_PERIODICITY_CODE := msi_record_temp.CHARGE_PERIODICITY_CODE;
1730    ELSIF msii_temp_data.CHARGE_PERIODICITY_CODE    = '!' THEN
1731       msii_temp_data.CHARGE_PERIODICITY_CODE := NULL;
1732    ELSIF msii_temp_data.CHARGE_PERIODICITY_CODE    = g_FND_Upd_Null_Char THEN
1733       msii_temp_data.CHARGE_PERIODICITY_CODE := NULL;
1734    END IF;
1735    IF msii_temp_data.PREPOSITION_POINT IS NULL THEN
1736       msii_temp_data.PREPOSITION_POINT := msi_record_temp.PREPOSITION_POINT;
1737    ELSIF msii_temp_data.PREPOSITION_POINT    = '!' THEN
1738       msii_temp_data.PREPOSITION_POINT := NULL;
1739    ELSIF msii_temp_data.PREPOSITION_POINT    = g_FND_Upd_Null_Char THEN
1740       msii_temp_data.PREPOSITION_POINT := NULL;
1741    END IF;
1742    IF msii_temp_data.SUBCONTRACTING_COMPONENT IS NULL THEN
1743       msii_temp_data.SUBCONTRACTING_COMPONENT := msi_record_temp.SUBCONTRACTING_COMPONENT;
1744    ELSIF msii_temp_data.SUBCONTRACTING_COMPONENT    = -999999 THEN
1745       msii_temp_data.SUBCONTRACTING_COMPONENT := NULL;
1746    ELSIF msii_temp_data.SUBCONTRACTING_COMPONENT    = g_FND_Upd_Null_NUM THEN
1747       msii_temp_data.SUBCONTRACTING_COMPONENT := NULL;
1748    END IF;
1749    IF msii_temp_data.DEMAND_TIME_FENCE_CODE IS NULL THEN
1750       msii_temp_data.DEMAND_TIME_FENCE_CODE := msi_record_temp.DEMAND_TIME_FENCE_CODE;
1751    ELSIF msii_temp_data.DEMAND_TIME_FENCE_CODE    = -999999 THEN
1752       msii_temp_data.DEMAND_TIME_FENCE_CODE := NULL;
1753    ELSIF msii_temp_data.DEMAND_TIME_FENCE_CODE    = g_FND_Upd_Null_NUM THEN
1754       msii_temp_data.DEMAND_TIME_FENCE_CODE := NULL;
1755    END IF;
1756    IF msii_temp_data.SAFETY_STOCK_BUCKET_DAYS IS NULL THEN
1757       msii_temp_data.SAFETY_STOCK_BUCKET_DAYS := msi_record_temp.SAFETY_STOCK_BUCKET_DAYS;
1758    ELSIF msii_temp_data.SAFETY_STOCK_BUCKET_DAYS    = -999999 THEN
1759       msii_temp_data.SAFETY_STOCK_BUCKET_DAYS := NULL;
1760    ELSIF msii_temp_data.SAFETY_STOCK_BUCKET_DAYS    = g_FND_Upd_Null_NUM THEN
1761       msii_temp_data.SAFETY_STOCK_BUCKET_DAYS := NULL;
1762    END IF;
1763    IF trim(msii_temp_data.DESCRIPTION) is null then
1764       msii_temp_data.DESCRIPTION := msi_record_temp.DESCRIPTION;
1765    ELSE
1766       msii_temp_data.DESCRIPTION := trim(msii_temp_data.DESCRIPTION);
1767    END IF;
1768    IF msii_temp_data.LONG_DESCRIPTION IS NULL THEN
1769       msii_temp_data.LONG_DESCRIPTION := msi_record_temp.LONG_DESCRIPTION;
1770    ELSIF msii_temp_data.LONG_DESCRIPTION    = '!' THEN
1771       msii_temp_data.LONG_DESCRIPTION := NULL;
1772    ELSIF msii_temp_data.LONG_DESCRIPTION    = g_FND_Upd_Null_Char THEN
1773       msii_temp_data.LONG_DESCRIPTION := NULL;
1774    ELSE
1775       msii_temp_data.LONG_DESCRIPTION := trim(msii_temp_data.LONG_DESCRIPTION);
1776    END IF;
1777    IF msii_temp_data.BUYER_ID IS NULL THEN
1778       msii_temp_data.BUYER_ID := msi_record_temp.BUYER_ID;
1779    ELSIF msii_temp_data.BUYER_ID    = -999999 THEN
1780       msii_temp_data.BUYER_ID := NULL;
1781    ELSIF msii_temp_data.BUYER_ID    = g_FND_Upd_Null_NUM THEN
1782       msii_temp_data.BUYER_ID := NULL;
1783    END IF;
1784    IF msii_temp_data.INVOICING_RULE_ID IS NULL THEN
1785       msii_temp_data.INVOICING_RULE_ID := msi_record_temp.INVOICING_RULE_ID;
1786    ELSIF msii_temp_data.INVOICING_RULE_ID    = -999999 THEN
1787       msii_temp_data.INVOICING_RULE_ID := NULL;
1788    ELSIF msii_temp_data.INVOICING_RULE_ID    = g_FND_Upd_Null_NUM THEN
1789       msii_temp_data.INVOICING_RULE_ID := NULL;
1790    END IF;
1791    IF trim(msii_temp_data.SEGMENT6) is null then
1792       msii_temp_data.SEGMENT6 := msi_record_temp.SEGMENT6;
1793    ELSE
1794       msii_temp_data.SEGMENT6 := trim(msii_temp_data.SEGMENT6);
1795    END IF;
1796    IF trim(msii_temp_data.SEGMENT8) is null then
1797       msii_temp_data.SEGMENT8 := msi_record_temp.SEGMENT8;
1798    ELSE
1799       msii_temp_data.SEGMENT8 := trim(msii_temp_data.SEGMENT8);
1800    END IF;
1801    IF trim(msii_temp_data.SEGMENT11) is null then
1802       msii_temp_data.SEGMENT11 := msi_record_temp.SEGMENT11;
1803    ELSE
1804       msii_temp_data.SEGMENT11 := trim(msii_temp_data.SEGMENT11);
1805    END IF;
1806    IF trim(msii_temp_data.SEGMENT14) is null then
1807       msii_temp_data.SEGMENT14 := msi_record_temp.SEGMENT14;
1808    ELSE
1809       msii_temp_data.SEGMENT14 := trim(msii_temp_data.SEGMENT14);
1810    END IF;
1811    IF trim(msii_temp_data.SEGMENT19) is null then
1812       msii_temp_data.SEGMENT19 := msi_record_temp.SEGMENT19;
1813    ELSE
1814       msii_temp_data.SEGMENT19 := trim(msii_temp_data.SEGMENT19);
1815    END IF;
1816    IF msii_temp_data.ATTRIBUTE_CATEGORY IS NULL THEN
1817       msii_temp_data.ATTRIBUTE_CATEGORY := msi_record_temp.ATTRIBUTE_CATEGORY;
1818    ELSIF msii_temp_data.ATTRIBUTE_CATEGORY    = '!' THEN
1819       msii_temp_data.ATTRIBUTE_CATEGORY := NULL;
1820    ELSIF msii_temp_data.ATTRIBUTE_CATEGORY    = g_FND_Upd_Null_Char THEN
1821       msii_temp_data.ATTRIBUTE_CATEGORY := NULL;
1822    ELSE
1823       msii_temp_data.ATTRIBUTE_CATEGORY := trim(msii_temp_data.ATTRIBUTE_CATEGORY);
1824    END IF;
1825    IF msii_temp_data.ATTRIBUTE3 IS NULL THEN
1826       msii_temp_data.ATTRIBUTE3 := msi_record_temp.ATTRIBUTE3;
1827    ELSIF msii_temp_data.ATTRIBUTE3    = '!' THEN
1828       msii_temp_data.ATTRIBUTE3 := NULL;
1829    ELSIF msii_temp_data.ATTRIBUTE3    = g_FND_Upd_Null_Char THEN
1830       msii_temp_data.ATTRIBUTE3 := NULL;
1831    ELSE
1832       msii_temp_data.ATTRIBUTE3 := trim(msii_temp_data.ATTRIBUTE3);
1833    END IF;
1834    IF msii_temp_data.ATTRIBUTE5 IS NULL THEN
1835       msii_temp_data.ATTRIBUTE5 := msi_record_temp.ATTRIBUTE5;
1836    ELSIF msii_temp_data.ATTRIBUTE5    = '!' THEN
1837       msii_temp_data.ATTRIBUTE5 := NULL;
1838    ELSIF msii_temp_data.ATTRIBUTE5    = g_FND_Upd_Null_Char THEN
1839       msii_temp_data.ATTRIBUTE5 := NULL;
1840    ELSE
1841       msii_temp_data.ATTRIBUTE5 := trim(msii_temp_data.ATTRIBUTE5);
1842    END IF;
1843    IF msii_temp_data.ATTRIBUTE7 IS NULL THEN
1844       msii_temp_data.ATTRIBUTE7 := msi_record_temp.ATTRIBUTE7;
1845    ELSIF msii_temp_data.ATTRIBUTE7    = '!' THEN
1846       msii_temp_data.ATTRIBUTE7 := NULL;
1847    ELSIF msii_temp_data.ATTRIBUTE7    = g_FND_Upd_Null_Char THEN
1848       msii_temp_data.ATTRIBUTE7 := NULL;
1849    ELSE
1850       msii_temp_data.ATTRIBUTE7 := trim(msii_temp_data.ATTRIBUTE7);
1851    END IF;
1852    IF msii_temp_data.ATTRIBUTE10 IS NULL THEN
1853       msii_temp_data.ATTRIBUTE10 := msi_record_temp.ATTRIBUTE10;
1854    ELSIF msii_temp_data.ATTRIBUTE10    = '!' THEN
1855       msii_temp_data.ATTRIBUTE10 := NULL;
1856    ELSIF msii_temp_data.ATTRIBUTE10    = g_FND_Upd_Null_Char THEN
1857       msii_temp_data.ATTRIBUTE10 := NULL;
1858    ELSE
1859       msii_temp_data.ATTRIBUTE10 := trim(msii_temp_data.ATTRIBUTE10);
1860    END IF;
1861    IF msii_temp_data.ATTRIBUTE12 IS NULL THEN
1862       msii_temp_data.ATTRIBUTE12 := msi_record_temp.ATTRIBUTE12;
1863    ELSIF msii_temp_data.ATTRIBUTE12    = '!' THEN
1864       msii_temp_data.ATTRIBUTE12 := NULL;
1865    ELSIF msii_temp_data.ATTRIBUTE12    = g_FND_Upd_Null_Char THEN
1866       msii_temp_data.ATTRIBUTE12 := NULL;
1867    ELSE
1868       msii_temp_data.ATTRIBUTE12 := trim(msii_temp_data.ATTRIBUTE12);
1869    END IF;
1870    IF msii_temp_data.ATTRIBUTE14 IS NULL THEN
1871       msii_temp_data.ATTRIBUTE14 := msi_record_temp.ATTRIBUTE14;
1872    ELSIF msii_temp_data.ATTRIBUTE14    = '!' THEN
1873       msii_temp_data.ATTRIBUTE14 := NULL;
1874    ELSIF msii_temp_data.ATTRIBUTE14    = g_FND_Upd_Null_Char THEN
1875       msii_temp_data.ATTRIBUTE14 := NULL;
1876    ELSE
1877       msii_temp_data.ATTRIBUTE14 := trim(msii_temp_data.ATTRIBUTE14);
1878    END IF;
1879    IF msii_temp_data.ATTRIBUTE17 IS NULL THEN
1880       msii_temp_data.ATTRIBUTE17 := msi_record_temp.ATTRIBUTE17;
1881    ELSIF msii_temp_data.ATTRIBUTE17    = '!' THEN
1882       msii_temp_data.ATTRIBUTE17 := NULL;
1883    ELSIF msii_temp_data.ATTRIBUTE17    = g_FND_Upd_Null_Char THEN
1884       msii_temp_data.ATTRIBUTE17 := NULL;
1885    ELSE
1886       msii_temp_data.ATTRIBUTE17 := trim(msii_temp_data.ATTRIBUTE17);
1887    END IF;
1888    IF msii_temp_data.ATTRIBUTE19 IS NULL THEN
1889       msii_temp_data.ATTRIBUTE19 := msi_record_temp.ATTRIBUTE19;
1890    ELSIF msii_temp_data.ATTRIBUTE19    = '!' THEN
1891       msii_temp_data.ATTRIBUTE19 := NULL;
1892    ELSIF msii_temp_data.ATTRIBUTE19    = g_FND_Upd_Null_Char THEN
1893       msii_temp_data.ATTRIBUTE19 := NULL;
1894    ELSE
1895       msii_temp_data.ATTRIBUTE19 := trim(msii_temp_data.ATTRIBUTE19);
1896    END IF;
1897    IF msii_temp_data.ATTRIBUTE21 IS NULL THEN
1898       msii_temp_data.ATTRIBUTE21 := msi_record_temp.ATTRIBUTE21;
1899    ELSIF msii_temp_data.ATTRIBUTE21    = '!' THEN
1900       msii_temp_data.ATTRIBUTE21 := NULL;
1901    ELSIF msii_temp_data.ATTRIBUTE21    = g_FND_Upd_Null_Char THEN
1902       msii_temp_data.ATTRIBUTE21 := NULL;
1903    ELSE
1904       msii_temp_data.ATTRIBUTE21 := trim(msii_temp_data.ATTRIBUTE21);
1905    END IF;
1906    IF msii_temp_data.ATTRIBUTE24 IS NULL THEN
1907       msii_temp_data.ATTRIBUTE24 := msi_record_temp.ATTRIBUTE24;
1908    ELSIF msii_temp_data.ATTRIBUTE24    = '!' THEN
1909       msii_temp_data.ATTRIBUTE24 := NULL;
1910    ELSIF msii_temp_data.ATTRIBUTE24    = g_FND_Upd_Null_Char THEN
1911       msii_temp_data.ATTRIBUTE24 := NULL;
1912    ELSE
1913       msii_temp_data.ATTRIBUTE24 := trim(msii_temp_data.ATTRIBUTE24);
1914    END IF;
1915    IF msii_temp_data.ATTRIBUTE26 IS NULL THEN
1916       msii_temp_data.ATTRIBUTE26 := msi_record_temp.ATTRIBUTE26;
1917    ELSIF msii_temp_data.ATTRIBUTE26    = '!' THEN
1918       msii_temp_data.ATTRIBUTE26 := NULL;
1919    ELSIF msii_temp_data.ATTRIBUTE26    = g_FND_Upd_Null_Char THEN
1920       msii_temp_data.ATTRIBUTE26 := NULL;
1921    ELSE
1922       msii_temp_data.ATTRIBUTE26 := trim(msii_temp_data.ATTRIBUTE26);
1923    END IF;
1924    IF msii_temp_data.ATTRIBUTE28 IS NULL THEN
1925       msii_temp_data.ATTRIBUTE28 := msi_record_temp.ATTRIBUTE28;
1926    ELSIF msii_temp_data.ATTRIBUTE28    = '!' THEN
1927       msii_temp_data.ATTRIBUTE28 := NULL;
1928    ELSIF msii_temp_data.ATTRIBUTE28    = g_FND_Upd_Null_Char THEN
1929       msii_temp_data.ATTRIBUTE28 := NULL;
1930    ELSE
1931       msii_temp_data.ATTRIBUTE28 := trim(msii_temp_data.ATTRIBUTE28);
1932    END IF;
1933    IF msii_temp_data.GLOBAL_ATTRIBUTE_CATEGORY IS NULL THEN
1934       msii_temp_data.GLOBAL_ATTRIBUTE_CATEGORY := msi_record_temp.GLOBAL_ATTRIBUTE_CATEGORY;
1935    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE_CATEGORY    = '!' THEN
1936       msii_temp_data.GLOBAL_ATTRIBUTE_CATEGORY := NULL;
1937    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE_CATEGORY    = g_FND_Upd_Null_Char THEN
1938       msii_temp_data.GLOBAL_ATTRIBUTE_CATEGORY := NULL;
1939    ELSE
1940       msii_temp_data.GLOBAL_ATTRIBUTE_CATEGORY := trim(msii_temp_data.GLOBAL_ATTRIBUTE_CATEGORY);
1941    END IF;
1942    IF msii_temp_data.GLOBAL_ATTRIBUTE2 IS NULL THEN
1943       msii_temp_data.GLOBAL_ATTRIBUTE2 := msi_record_temp.GLOBAL_ATTRIBUTE2;
1944    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE2    = '!' THEN
1945       msii_temp_data.GLOBAL_ATTRIBUTE2 := NULL;
1946    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE2    = g_FND_Upd_Null_Char THEN
1947       msii_temp_data.GLOBAL_ATTRIBUTE2 := NULL;
1948    ELSE
1949       msii_temp_data.GLOBAL_ATTRIBUTE2 := trim(msii_temp_data.GLOBAL_ATTRIBUTE2);
1950    END IF;
1951    IF msii_temp_data.GLOBAL_ATTRIBUTE5 IS NULL THEN
1952       msii_temp_data.GLOBAL_ATTRIBUTE5 := msi_record_temp.GLOBAL_ATTRIBUTE5;
1953    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE5    = '!' THEN
1954       msii_temp_data.GLOBAL_ATTRIBUTE5 := NULL;
1955    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE5    = g_FND_Upd_Null_Char THEN
1956       msii_temp_data.GLOBAL_ATTRIBUTE5 := NULL;
1957    ELSE
1958       msii_temp_data.GLOBAL_ATTRIBUTE5 := trim(msii_temp_data.GLOBAL_ATTRIBUTE5);
1959    END IF;
1960    IF msii_temp_data.GLOBAL_ATTRIBUTE7 IS NULL THEN
1961       msii_temp_data.GLOBAL_ATTRIBUTE7 := msi_record_temp.GLOBAL_ATTRIBUTE7;
1962    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE7    = '!' THEN
1963       msii_temp_data.GLOBAL_ATTRIBUTE7 := NULL;
1964    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE7    = g_FND_Upd_Null_Char THEN
1965       msii_temp_data.GLOBAL_ATTRIBUTE7 := NULL;
1966    ELSE
1967       msii_temp_data.GLOBAL_ATTRIBUTE7 := trim(msii_temp_data.GLOBAL_ATTRIBUTE7);
1968    END IF;
1969    IF msii_temp_data.GLOBAL_ATTRIBUTE9 IS NULL THEN
1970       msii_temp_data.GLOBAL_ATTRIBUTE9 := msi_record_temp.GLOBAL_ATTRIBUTE9;
1971    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE9    = '!' THEN
1972       msii_temp_data.GLOBAL_ATTRIBUTE9 := NULL;
1973    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE9    = g_FND_Upd_Null_Char THEN
1974       msii_temp_data.GLOBAL_ATTRIBUTE9 := NULL;
1975    ELSE
1976       msii_temp_data.GLOBAL_ATTRIBUTE9 := trim(msii_temp_data.GLOBAL_ATTRIBUTE9);
1977    END IF;
1978    IF trim(msii_temp_data.CUSTOMER_ORDER_FLAG) is null then
1979       msii_temp_data.CUSTOMER_ORDER_FLAG := msi_record_temp.CUSTOMER_ORDER_FLAG;
1980    ELSE
1981       msii_temp_data.CUSTOMER_ORDER_FLAG := trim(msii_temp_data.CUSTOMER_ORDER_FLAG);
1982    END IF;
1983    IF trim(msii_temp_data.ENG_ITEM_FLAG) is null then
1984       msii_temp_data.ENG_ITEM_FLAG := msi_record_temp.ENG_ITEM_FLAG;
1985    ELSE
1986       msii_temp_data.ENG_ITEM_FLAG := trim(msii_temp_data.ENG_ITEM_FLAG);
1987    END IF;
1988    IF trim(msii_temp_data.PURCHASING_ENABLED_FLAG) is null then
1989       IF msii_temp_data.inventory_item_status_code IS NULL THEN
1990          msii_temp_data.PURCHASING_ENABLED_FLAG := msi_record_temp.PURCHASING_ENABLED_FLAG;
1991       END IF;
1992    ELSE
1993       msii_temp_data.PURCHASING_ENABLED_FLAG := trim(msii_temp_data.PURCHASING_ENABLED_FLAG);
1994    END IF;
1995    IF trim(msii_temp_data.INTERNAL_ORDER_ENABLED_FLAG) is null then
1996       IF msii_temp_data.inventory_item_status_code IS NULL THEN
1997          msii_temp_data.INTERNAL_ORDER_ENABLED_FLAG := msi_record_temp.INTERNAL_ORDER_ENABLED_FLAG;
1998       END IF;
1999    ELSE
2000       msii_temp_data.INTERNAL_ORDER_ENABLED_FLAG := trim(msii_temp_data.INTERNAL_ORDER_ENABLED_FLAG);
2001    END IF;
2002    IF trim(msii_temp_data.BOM_ENABLED_FLAG) is null then
2003       IF  msii_temp_data.inventory_item_status_code IS NULL THEN
2004          msii_temp_data.BOM_ENABLED_FLAG := msi_record_temp.BOM_ENABLED_FLAG;
2005       END IF;
2006    ELSE
2007       msii_temp_data.BOM_ENABLED_FLAG := trim(msii_temp_data.BOM_ENABLED_FLAG);
2008    END IF;
2009 
2010    IF msii_temp_data.RESTRICT_LOCATORS_CODE is null then
2011       msii_temp_data.RESTRICT_LOCATORS_CODE := msi_record_temp.RESTRICT_LOCATORS_CODE;
2012    END IF;
2013    IF msii_temp_data.SHRINKAGE_RATE IS NULL THEN
2014       msii_temp_data.SHRINKAGE_RATE := msi_record_temp.SHRINKAGE_RATE;
2015    ELSIF msii_temp_data.SHRINKAGE_RATE    = -999999 THEN
2016       msii_temp_data.SHRINKAGE_RATE := NULL;
2017    ELSIF msii_temp_data.SHRINKAGE_RATE    = g_FND_Upd_Null_NUM THEN
2018       msii_temp_data.SHRINKAGE_RATE := NULL;
2019    END IF;
2020 
2021    IF msii_temp_data.LEAD_TIME_LOT_SIZE IS NULL THEN
2022       msii_temp_data.LEAD_TIME_LOT_SIZE := msi_record_temp.LEAD_TIME_LOT_SIZE;
2023    ELSIF msii_temp_data.LEAD_TIME_LOT_SIZE = -999999 THEN
2024       IF msii_temp_data.STD_LOT_SIZE IS NULL THEN
2025          IF msi_record_temp.STD_LOT_SIZE IS NULL THEN
2026        msii_temp_data.LEAD_TIME_LOT_SIZE := 1;
2027          ELSE
2028        msii_temp_data.LEAD_TIME_LOT_SIZE := msi_record_temp.STD_LOT_SIZE;
2029          END IF;
2030       ELSIF msii_temp_data.STD_LOT_SIZE = -999999 THEN
2031          msii_temp_data.LEAD_TIME_LOT_SIZE := 1;
2032       ELSIF msii_temp_data.STD_LOT_SIZE = g_FND_Upd_Null_NUM THEN
2033          msii_temp_data.LEAD_TIME_LOT_SIZE := 1;
2034       ELSE
2035          msii_temp_data.LEAD_TIME_LOT_SIZE := msii_temp_data.STD_LOT_SIZE;
2036       END IF;
2037    ELSIF msii_temp_data.LEAD_TIME_LOT_SIZE = g_FND_Upd_Null_NUM THEN
2038       IF msii_temp_data.STD_LOT_SIZE IS NULL THEN
2039          IF msi_record_temp.STD_LOT_SIZE IS NULL THEN
2040        msii_temp_data.LEAD_TIME_LOT_SIZE := 1;
2041          ELSE
2042        msii_temp_data.LEAD_TIME_LOT_SIZE := msi_record_temp.STD_LOT_SIZE;
2043          END IF;
2044       ELSIF msii_temp_data.STD_LOT_SIZE = -999999 THEN
2045          msii_temp_data.LEAD_TIME_LOT_SIZE := 1;
2046       ELSIF msii_temp_data.STD_LOT_SIZE = g_FND_Upd_Null_NUM THEN
2047          msii_temp_data.LEAD_TIME_LOT_SIZE := 1;
2048       ELSE
2049          msii_temp_data.LEAD_TIME_LOT_SIZE := msii_temp_data.STD_LOT_SIZE;
2050       END IF;
2051    END IF;
2052 
2053    --STD_LOT_SIZE should be updated only after lead_time_lot_size
2054    IF msii_temp_data.STD_LOT_SIZE IS NULL THEN
2055       msii_temp_data.STD_LOT_SIZE := msi_record_temp.STD_LOT_SIZE;
2056    ELSIF msii_temp_data.STD_LOT_SIZE    = -999999 THEN
2057       msii_temp_data.STD_LOT_SIZE := NULL;
2058    ELSIF msii_temp_data.STD_LOT_SIZE    = g_FND_Upd_Null_NUM THEN
2059       msii_temp_data.STD_LOT_SIZE := NULL;
2060    END IF;
2061 
2062    IF msii_temp_data.CUM_MANUFACTURING_LEAD_TIME IS NULL THEN
2063       msii_temp_data.CUM_MANUFACTURING_LEAD_TIME := msi_record_temp.CUM_MANUFACTURING_LEAD_TIME;
2064    ELSIF msii_temp_data.CUM_MANUFACTURING_LEAD_TIME = -999999 THEN
2065       msii_temp_data.CUM_MANUFACTURING_LEAD_TIME := NULL;
2066    ELSIF msii_temp_data.CUM_MANUFACTURING_LEAD_TIME = g_FND_Upd_Null_NUM THEN
2067       msii_temp_data.CUM_MANUFACTURING_LEAD_TIME := NULL;
2068    END IF;
2069    IF msii_temp_data.DEMAND_TIME_FENCE_DAYS IS NULL THEN
2070       msii_temp_data.DEMAND_TIME_FENCE_DAYS := msi_record_temp.DEMAND_TIME_FENCE_DAYS;
2071    ELSIF msii_temp_data.DEMAND_TIME_FENCE_DAYS    = -999999 THEN
2072       msii_temp_data.DEMAND_TIME_FENCE_DAYS := NULL;
2073    ELSIF msii_temp_data.DEMAND_TIME_FENCE_DAYS    = g_FND_Upd_Null_NUM THEN
2074       msii_temp_data.DEMAND_TIME_FENCE_DAYS := NULL;
2075    END IF;
2076    IF msii_temp_data.RELEASE_TIME_FENCE_DAYS       IS NULL THEN
2077       msii_temp_data.RELEASE_TIME_FENCE_DAYS := msi_record_temp.RELEASE_TIME_FENCE_DAYS;
2078    ELSIF msii_temp_data.RELEASE_TIME_FENCE_DAYS    = -999999 THEN
2079       msii_temp_data.RELEASE_TIME_FENCE_DAYS := NULL;
2080    ELSIF msii_temp_data.RELEASE_TIME_FENCE_DAYS    = g_FND_Upd_Null_NUM THEN
2081       msii_temp_data.RELEASE_TIME_FENCE_DAYS := NULL;
2082    END IF;
2083    IF msii_temp_data.PLANNING_EXCEPTION_SET IS NULL THEN
2084       msii_temp_data.PLANNING_EXCEPTION_SET := msi_record_temp.PLANNING_EXCEPTION_SET;
2085    ELSIF msii_temp_data.PLANNING_EXCEPTION_SET    = '!' THEN
2086       msii_temp_data.PLANNING_EXCEPTION_SET := NULL;
2087    ELSIF msii_temp_data.PLANNING_EXCEPTION_SET    = g_FND_Upd_Null_Char THEN
2088       msii_temp_data.PLANNING_EXCEPTION_SET := NULL;
2089    ELSE
2090       msii_temp_data.PLANNING_EXCEPTION_SET := trim(msii_temp_data.PLANNING_EXCEPTION_SET);
2091    END IF;
2092    IF msii_temp_data.BASE_ITEM_ID IS NULL THEN
2093       msii_temp_data.BASE_ITEM_ID := msi_record_temp.BASE_ITEM_ID;
2094    ELSIF msii_temp_data.BASE_ITEM_ID    = -999999 THEN
2095       msii_temp_data.BASE_ITEM_ID := NULL;
2096    ELSIF msii_temp_data.BASE_ITEM_ID    = g_FND_Upd_Null_NUM THEN
2097       msii_temp_data.BASE_ITEM_ID := NULL;
2098    END IF;
2099    IF msii_temp_data.FIXED_LEAD_TIME IS NULL THEN
2100       msii_temp_data.FIXED_LEAD_TIME := msi_record_temp.FIXED_LEAD_TIME;
2101    ELSIF msii_temp_data.FIXED_LEAD_TIME    = -999999 THEN
2102       msii_temp_data.FIXED_LEAD_TIME := NULL;
2103    ELSIF msii_temp_data.FIXED_LEAD_TIME    = g_FND_Upd_Null_NUM THEN
2104       msii_temp_data.FIXED_LEAD_TIME := NULL;
2105    END IF;
2106    IF msii_temp_data.WIP_SUPPLY_TYPE is null then
2107       msii_temp_data.WIP_SUPPLY_TYPE := msi_record_temp.WIP_SUPPLY_TYPE;
2108    END IF;
2109    IF msii_temp_data.WIP_SUPPLY_SUBINVENTORY IS NULL THEN
2110       msii_temp_data.WIP_SUPPLY_SUBINVENTORY := msi_record_temp.WIP_SUPPLY_SUBINVENTORY;
2111    ELSIF msii_temp_data.WIP_SUPPLY_SUBINVENTORY    = '!' THEN
2112       msii_temp_data.WIP_SUPPLY_SUBINVENTORY := NULL;
2113    ELSIF msii_temp_data.WIP_SUPPLY_SUBINVENTORY    = g_FND_Upd_Null_Char THEN
2114       msii_temp_data.WIP_SUPPLY_SUBINVENTORY := NULL;
2115    ELSE
2116       msii_temp_data.WIP_SUPPLY_SUBINVENTORY := trim(msii_temp_data.WIP_SUPPLY_SUBINVENTORY);
2117    END IF;
2118    IF trim(msii_temp_data.DEFAULT_INCLUDE_IN_ROLLUP_FLAG) is null then
2119       msii_temp_data.DEFAULT_INCLUDE_IN_ROLLUP_FLAG := msi_record_temp.DEFAULT_INCLUDE_IN_ROLLUP_FLAG;
2120    ELSE
2121       msii_temp_data.DEFAULT_INCLUDE_IN_ROLLUP_FLAG := trim(msii_temp_data.DEFAULT_INCLUDE_IN_ROLLUP_FLAG);
2122    END IF;
2123    IF msii_temp_data.PLANNER_CODE IS NULL THEN
2124       msii_temp_data.PLANNER_CODE := msi_record_temp.PLANNER_CODE;
2125    ELSIF msii_temp_data.PLANNER_CODE    = '!' THEN
2126       msii_temp_data.PLANNER_CODE := NULL;
2127    ELSIF msii_temp_data.PLANNER_CODE    = g_FND_Upd_Null_Char THEN
2128       msii_temp_data.PLANNER_CODE := NULL;
2129    ELSE
2130       msii_temp_data.PLANNER_CODE := trim(msii_temp_data.PLANNER_CODE);
2131    END IF;
2132    IF msii_temp_data.ROUNDING_CONTROL_TYPE is null then
2133       msii_temp_data.ROUNDING_CONTROL_TYPE := msi_record_temp.ROUNDING_CONTROL_TYPE;
2134    END IF;
2135    IF msii_temp_data.POSTPROCESSING_LEAD_TIME IS NULL THEN
2136       msii_temp_data.POSTPROCESSING_LEAD_TIME := msi_record_temp.POSTPROCESSING_LEAD_TIME;
2137    ELSIF msii_temp_data.POSTPROCESSING_LEAD_TIME    = -999999 THEN
2138       msii_temp_data.POSTPROCESSING_LEAD_TIME := NULL;
2139    ELSIF msii_temp_data.POSTPROCESSING_LEAD_TIME    = g_FND_Upd_Null_NUM THEN
2140       msii_temp_data.POSTPROCESSING_LEAD_TIME := NULL;
2141    END IF;
2142    IF msii_temp_data.FULL_LEAD_TIME IS NULL THEN
2143       msii_temp_data.FULL_LEAD_TIME := msi_record_temp.FULL_LEAD_TIME;
2144    ELSIF msii_temp_data.FULL_LEAD_TIME    = -999999 THEN
2145       msii_temp_data.FULL_LEAD_TIME := NULL;
2146    ELSIF msii_temp_data.FULL_LEAD_TIME    = g_FND_Upd_Null_NUM THEN
2147       msii_temp_data.FULL_LEAD_TIME := NULL;
2148    END IF;
2149    IF msii_temp_data.MRP_SAFETY_STOCK_PERCENT IS NULL THEN
2150       msii_temp_data.MRP_SAFETY_STOCK_PERCENT := msi_record_temp.MRP_SAFETY_STOCK_PERCENT;
2151    ELSIF msii_temp_data.MRP_SAFETY_STOCK_PERCENT    = -999999 THEN
2152       msii_temp_data.MRP_SAFETY_STOCK_PERCENT := NULL;
2153    ELSIF msii_temp_data.MRP_SAFETY_STOCK_PERCENT    = g_FND_Upd_Null_NUM THEN
2154       msii_temp_data.MRP_SAFETY_STOCK_PERCENT := NULL;
2155    END IF;
2156    IF msii_temp_data.MAX_MINMAX_QUANTITY IS NULL THEN
2157       msii_temp_data.MAX_MINMAX_QUANTITY := msi_record_temp.MAX_MINMAX_QUANTITY;
2158    ELSIF msii_temp_data.MAX_MINMAX_QUANTITY    = -999999 THEN
2159       msii_temp_data.MAX_MINMAX_QUANTITY := NULL;
2160    ELSIF msii_temp_data.MAX_MINMAX_QUANTITY    = g_FND_Upd_Null_NUM THEN
2161       msii_temp_data.MAX_MINMAX_QUANTITY := NULL;
2162    END IF;
2163    IF msii_temp_data.FIXED_ORDER_QUANTITY IS NULL THEN
2164       msii_temp_data.FIXED_ORDER_QUANTITY := msi_record_temp.FIXED_ORDER_QUANTITY;
2165    ELSIF msii_temp_data.FIXED_ORDER_QUANTITY    = -999999 THEN
2166       msii_temp_data.FIXED_ORDER_QUANTITY := NULL;
2167    ELSIF msii_temp_data.FIXED_ORDER_QUANTITY    = g_FND_Upd_Null_NUM THEN
2168       msii_temp_data.FIXED_ORDER_QUANTITY := NULL;
2169    END IF;
2170    IF msii_temp_data.ATP_RULE_ID IS NULL THEN
2171       msii_temp_data.ATP_RULE_ID := msi_record_temp.ATP_RULE_ID;
2172    ELSIF msii_temp_data.ATP_RULE_ID    = -999999 THEN
2173       msii_temp_data.ATP_RULE_ID := NULL;
2174    ELSIF msii_temp_data.ATP_RULE_ID    = g_FND_Upd_Null_NUM THEN
2175       msii_temp_data.ATP_RULE_ID := NULL;
2176    END IF;
2177    IF msii_temp_data.POSITIVE_MEASUREMENT_ERROR IS NULL THEN
2178       msii_temp_data.POSITIVE_MEASUREMENT_ERROR := msi_record_temp.POSITIVE_MEASUREMENT_ERROR;
2179    ELSIF msii_temp_data.POSITIVE_MEASUREMENT_ERROR    = -999999 THEN
2180       msii_temp_data.POSITIVE_MEASUREMENT_ERROR := NULL;
2181    ELSIF msii_temp_data.POSITIVE_MEASUREMENT_ERROR    = g_FND_Upd_Null_NUM THEN
2182       msii_temp_data.POSITIVE_MEASUREMENT_ERROR := NULL;
2183    END IF;
2184    IF msii_temp_data.ENGINEERING_ITEM_ID is null then
2185       msii_temp_data.ENGINEERING_ITEM_ID := msi_record_temp.ENGINEERING_ITEM_ID;
2186    END IF;
2187    IF msii_temp_data.SERVICE_STARTING_DELAY IS NULL THEN
2188       msii_temp_data.SERVICE_STARTING_DELAY := msi_record_temp.SERVICE_STARTING_DELAY;
2189    ELSIF msii_temp_data.SERVICE_STARTING_DELAY    = -999999 THEN
2190       msii_temp_data.SERVICE_STARTING_DELAY := NULL;
2191    ELSIF msii_temp_data.SERVICE_STARTING_DELAY    = g_FND_Upd_Null_NUM THEN
2192       msii_temp_data.SERVICE_STARTING_DELAY := NULL;
2193    END IF;
2194    IF msii_temp_data.PAYMENT_TERMS_ID IS NULL THEN
2195       msii_temp_data.PAYMENT_TERMS_ID := msi_record_temp.PAYMENT_TERMS_ID;
2196    ELSIF msii_temp_data.PAYMENT_TERMS_ID    = -999999 THEN
2197       msii_temp_data.PAYMENT_TERMS_ID := NULL;
2198    ELSIF msii_temp_data.PAYMENT_TERMS_ID    = g_FND_Upd_Null_NUM THEN
2199       msii_temp_data.PAYMENT_TERMS_ID := NULL;
2200    END IF;
2201    IF msii_temp_data.SECONDARY_SPECIALIST_ID is null then
2202       msii_temp_data.SECONDARY_SPECIALIST_ID := msi_record_temp.SECONDARY_SPECIALIST_ID;
2203    END IF;
2204    IF msii_temp_data.MATERIAL_BILLABLE_FLAG IS NULL THEN
2205       msii_temp_data.MATERIAL_BILLABLE_FLAG := msi_record_temp.MATERIAL_BILLABLE_FLAG;
2206    ELSIF msii_temp_data.MATERIAL_BILLABLE_FLAG    = '!' THEN
2207       msii_temp_data.MATERIAL_BILLABLE_FLAG := NULL;
2208    ELSIF msii_temp_data.MATERIAL_BILLABLE_FLAG    = g_FND_Upd_Null_Char THEN
2209       msii_temp_data.MATERIAL_BILLABLE_FLAG := NULL;
2210    ELSE
2211       msii_temp_data.MATERIAL_BILLABLE_FLAG := trim(msii_temp_data.MATERIAL_BILLABLE_FLAG);
2212    END IF;
2213    IF msii_temp_data.COVERAGE_SCHEDULE_ID IS NULL THEN
2214       msii_temp_data.COVERAGE_SCHEDULE_ID := msi_record_temp.COVERAGE_SCHEDULE_ID;
2215    ELSIF msii_temp_data.COVERAGE_SCHEDULE_ID    = -999999 THEN
2216       msii_temp_data.COVERAGE_SCHEDULE_ID := NULL;
2217    ELSIF msii_temp_data.COVERAGE_SCHEDULE_ID    = g_FND_Upd_Null_NUM THEN
2218       msii_temp_data.COVERAGE_SCHEDULE_ID := NULL;
2219    END IF;
2220    IF msii_temp_data.WARRANTY_VENDOR_ID is null then
2221       msii_temp_data.WARRANTY_VENDOR_ID := msi_record_temp.WARRANTY_VENDOR_ID;
2222    END IF;
2223    IF trim(msii_temp_data.RESPONSE_TIME_PERIOD_CODE) is null then
2224       msii_temp_data.RESPONSE_TIME_PERIOD_CODE := msi_record_temp.RESPONSE_TIME_PERIOD_CODE;
2225    ELSE
2226       msii_temp_data.RESPONSE_TIME_PERIOD_CODE := trim(msii_temp_data.RESPONSE_TIME_PERIOD_CODE);
2227    END IF;
2228    IF msii_temp_data.TAX_CODE IS NULL THEN
2229       msii_temp_data.TAX_CODE := msi_record_temp.TAX_CODE;
2230    ELSIF msii_temp_data.TAX_CODE    = '!' THEN
2231       msii_temp_data.TAX_CODE := NULL;
2232    ELSIF msii_temp_data.TAX_CODE    = g_FND_Upd_Null_Char THEN
2233       msii_temp_data.TAX_CODE := NULL;
2234    ELSE
2235       msii_temp_data.TAX_CODE := trim(msii_temp_data.TAX_CODE);
2236    END IF;
2237    IF trim(msii_temp_data.MUST_USE_APPROVED_VENDOR_FLAG) is null then
2238       msii_temp_data.MUST_USE_APPROVED_VENDOR_FLAG := msi_record_temp.MUST_USE_APPROVED_VENDOR_FLAG;
2239    ELSE
2240       msii_temp_data.MUST_USE_APPROVED_VENDOR_FLAG := trim(msii_temp_data.MUST_USE_APPROVED_VENDOR_FLAG);
2241    END IF;
2242    IF trim(msii_temp_data.OUTSIDE_OPERATION_FLAG) is null then
2243       msii_temp_data.OUTSIDE_OPERATION_FLAG := msi_record_temp.OUTSIDE_OPERATION_FLAG;
2244    ELSE
2245       msii_temp_data.OUTSIDE_OPERATION_FLAG := trim(msii_temp_data.OUTSIDE_OPERATION_FLAG);
2246    END IF;
2247    IF msii_temp_data.AUTO_REDUCE_MPS IS NULL THEN
2248       msii_temp_data.AUTO_REDUCE_MPS := msi_record_temp.AUTO_REDUCE_MPS;
2249    ELSIF msii_temp_data.AUTO_REDUCE_MPS    = -999999 THEN
2250       msii_temp_data.AUTO_REDUCE_MPS := NULL;
2251    ELSIF msii_temp_data.AUTO_REDUCE_MPS    = g_FND_Upd_Null_NUM THEN
2252       msii_temp_data.AUTO_REDUCE_MPS := NULL;
2253    ELSE
2254       msii_temp_data.AUTO_REDUCE_MPS := trim(msii_temp_data.AUTO_REDUCE_MPS);
2255    END IF;
2256    IF trim(msii_temp_data.AUTO_CREATED_CONFIG_FLAG) is null then
2257       msii_temp_data.AUTO_CREATED_CONFIG_FLAG := msi_record_temp.AUTO_CREATED_CONFIG_FLAG;
2258    ELSE
2259       msii_temp_data.AUTO_CREATED_CONFIG_FLAG := trim(msii_temp_data.AUTO_CREATED_CONFIG_FLAG);
2260    END IF;
2261    IF trim(msii_temp_data.SHIP_MODEL_COMPLETE_FLAG) is null then
2262       msii_temp_data.SHIP_MODEL_COMPLETE_FLAG := msi_record_temp.SHIP_MODEL_COMPLETE_FLAG;
2263    ELSE
2264       msii_temp_data.SHIP_MODEL_COMPLETE_FLAG := trim(msii_temp_data.SHIP_MODEL_COMPLETE_FLAG);
2265    END IF;
2266    IF msii_temp_data.ATO_FORECAST_CONTROL IS NULL THEN
2267       msii_temp_data.ATO_FORECAST_CONTROL := msi_record_temp.ATO_FORECAST_CONTROL;
2268    ELSIF msii_temp_data.ATO_FORECAST_CONTROL    = -999999 THEN
2269       msii_temp_data.ATO_FORECAST_CONTROL := NULL;
2270    ELSIF msii_temp_data.ATO_FORECAST_CONTROL    = g_FND_Upd_Null_NUM THEN
2271       msii_temp_data.ATO_FORECAST_CONTROL := NULL;
2272    END IF;
2273    IF msii_temp_data.MAXIMUM_LOAD_WEIGHT IS NULL THEN
2274       msii_temp_data.MAXIMUM_LOAD_WEIGHT := msi_record_temp.MAXIMUM_LOAD_WEIGHT;
2275    ELSIF msii_temp_data.MAXIMUM_LOAD_WEIGHT    = -999999 THEN
2276       msii_temp_data.MAXIMUM_LOAD_WEIGHT := NULL;
2277    ELSIF msii_temp_data.MAXIMUM_LOAD_WEIGHT    = g_FND_Upd_Null_NUM THEN
2278       msii_temp_data.MAXIMUM_LOAD_WEIGHT := NULL;
2279    END IF;
2280    IF msii_temp_data.INTERNAL_VOLUME IS NULL THEN
2281       msii_temp_data.INTERNAL_VOLUME := msi_record_temp.INTERNAL_VOLUME;
2282    ELSIF msii_temp_data.INTERNAL_VOLUME    = -999999 THEN
2283       msii_temp_data.INTERNAL_VOLUME := NULL;
2284    ELSIF msii_temp_data.INTERNAL_VOLUME    = g_FND_Upd_Null_NUM THEN
2285       msii_temp_data.INTERNAL_VOLUME := NULL;
2286    END IF;
2287    IF msii_temp_data.OVERCOMPLETION_TOLERANCE_TYPE IS NULL THEN
2288       msii_temp_data.OVERCOMPLETION_TOLERANCE_TYPE := msi_record_temp.OVERCOMPLETION_TOLERANCE_TYPE;
2289    ELSIF msii_temp_data.OVERCOMPLETION_TOLERANCE_TYPE    = g_Upd_Null_NUM THEN
2290       msii_temp_data.OVERCOMPLETION_TOLERANCE_TYPE := NULL;
2291    ELSIF msii_temp_data.OVERCOMPLETION_TOLERANCE_TYPE    = g_FND_Upd_Null_NUM THEN
2292       msii_temp_data.OVERCOMPLETION_TOLERANCE_TYPE := NULL;
2293    END IF;
2294    IF trim(msii_temp_data.RECIPE_ENABLED_FLAG) is null then
2295        IF msii_temp_data.INVENTORY_ITEM_STATUS_CODE IS NULL THEN
2296           msii_temp_data.RECIPE_ENABLED_FLAG := msi_record_temp.RECIPE_ENABLED_FLAG;
2297        END IF;
2298    ELSE
2299       msii_temp_data.RECIPE_ENABLED_FLAG := trim(msii_temp_data.RECIPE_ENABLED_FLAG);
2300    END IF;
2301    IF msii_temp_data.REVISION_QTY_CONTROL_CODE is null then
2302       msii_temp_data.REVISION_QTY_CONTROL_CODE := msi_record_temp.REVISION_QTY_CONTROL_CODE;
2303    END IF;
2304    IF msii_temp_data.CATALOG_STATUS_FLAG IS NULL THEN
2305       msii_temp_data.CATALOG_STATUS_FLAG := msi_record_temp.CATALOG_STATUS_FLAG;
2306    ELSIF msii_temp_data.CATALOG_STATUS_FLAG    = '!' THEN
2307       msii_temp_data.CATALOG_STATUS_FLAG := NULL;
2308    ELSIF msii_temp_data.CATALOG_STATUS_FLAG    = g_FND_Upd_Null_Char THEN
2309       msii_temp_data.CATALOG_STATUS_FLAG := NULL;
2310    ELSE
2311       msii_temp_data.CATALOG_STATUS_FLAG := trim(msii_temp_data.CATALOG_STATUS_FLAG);
2312    END IF;
2313    IF trim(msii_temp_data.COLLATERAL_FLAG) is null then
2314       msii_temp_data.COLLATERAL_FLAG := msi_record_temp.COLLATERAL_FLAG;
2315    ELSE
2316       msii_temp_data.COLLATERAL_FLAG := trim(msii_temp_data.COLLATERAL_FLAG);
2317    END IF;
2318    IF msii_temp_data.PURCHASING_TAX_CODE IS NULL THEN
2319       msii_temp_data.PURCHASING_TAX_CODE := msi_record_temp.PURCHASING_TAX_CODE;
2320    ELSIF msii_temp_data.PURCHASING_TAX_CODE    = '!' THEN
2321       msii_temp_data.PURCHASING_TAX_CODE := NULL;
2322    ELSIF msii_temp_data.PURCHASING_TAX_CODE    = g_FND_Upd_Null_Char THEN
2323       msii_temp_data.PURCHASING_TAX_CODE := NULL;
2324    ELSE
2325       msii_temp_data.PURCHASING_TAX_CODE := trim(msii_temp_data.PURCHASING_TAX_CODE);
2326    END IF;
2327    IF msii_temp_data.INSPECTION_REQUIRED_FLAG IS NULL THEN
2328       msii_temp_data.INSPECTION_REQUIRED_FLAG := msi_record_temp.INSPECTION_REQUIRED_FLAG;
2329    ELSIF msii_temp_data.INSPECTION_REQUIRED_FLAG    = '!' THEN
2330       msii_temp_data.INSPECTION_REQUIRED_FLAG := NULL;
2331    ELSIF msii_temp_data.INSPECTION_REQUIRED_FLAG    = g_FND_Upd_Null_Char THEN
2332       msii_temp_data.INSPECTION_REQUIRED_FLAG := NULL;
2333    ELSE
2334       msii_temp_data.INSPECTION_REQUIRED_FLAG := trim(msii_temp_data.INSPECTION_REQUIRED_FLAG);
2335    END IF;
2336    IF msii_temp_data.MARKET_PRICE IS NULL THEN
2337       msii_temp_data.MARKET_PRICE := msi_record_temp.MARKET_PRICE;
2338    ELSIF msii_temp_data.MARKET_PRICE    = -999999 THEN
2339       msii_temp_data.MARKET_PRICE := NULL;
2340    ELSIF msii_temp_data.MARKET_PRICE    = g_FND_Upd_Null_NUM THEN
2341       msii_temp_data.MARKET_PRICE := NULL;
2342    END IF;
2343    IF msii_temp_data.LIST_PRICE_PER_UNIT IS NULL THEN
2344       msii_temp_data.LIST_PRICE_PER_UNIT := msi_record_temp.LIST_PRICE_PER_UNIT;
2345    ELSIF msii_temp_data.LIST_PRICE_PER_UNIT    = -999999 THEN
2346       msii_temp_data.LIST_PRICE_PER_UNIT := NULL;
2347    ELSIF msii_temp_data.LIST_PRICE_PER_UNIT    = g_FND_Upd_Null_NUM THEN
2348       msii_temp_data.LIST_PRICE_PER_UNIT := NULL;
2349    END IF;
2350    IF msii_temp_data.PRICE_TOLERANCE_PERCENT IS NULL THEN
2351       msii_temp_data.PRICE_TOLERANCE_PERCENT := msi_record_temp.PRICE_TOLERANCE_PERCENT;
2352    ELSIF msii_temp_data.PRICE_TOLERANCE_PERCENT    = -999999 THEN
2353       msii_temp_data.PRICE_TOLERANCE_PERCENT := NULL;
2354    ELSIF msii_temp_data.PRICE_TOLERANCE_PERCENT    = g_FND_Upd_Null_NUM THEN
2355       msii_temp_data.PRICE_TOLERANCE_PERCENT := NULL;
2356    END IF;
2357    IF msii_temp_data.UNIT_OF_ISSUE IS NULL THEN
2358       msii_temp_data.UNIT_OF_ISSUE := msi_record_temp.UNIT_OF_ISSUE;
2359    ELSIF msii_temp_data.UNIT_OF_ISSUE    = '!' THEN
2360       msii_temp_data.UNIT_OF_ISSUE := NULL;
2361    ELSIF msii_temp_data.UNIT_OF_ISSUE    = g_FND_Upd_Null_Char THEN
2362       msii_temp_data.UNIT_OF_ISSUE := NULL;
2363    ELSE
2364       msii_temp_data.UNIT_OF_ISSUE := trim(msii_temp_data.UNIT_OF_ISSUE);
2365    END IF;
2366    IF msii_temp_data.ALLOW_SUBSTITUTE_RECEIPTS_FLAG IS NULL THEN
2367       msii_temp_data.ALLOW_SUBSTITUTE_RECEIPTS_FLAG := msi_record_temp.ALLOW_SUBSTITUTE_RECEIPTS_FLAG;
2368    ELSIF msii_temp_data.ALLOW_SUBSTITUTE_RECEIPTS_FLAG    = '!' THEN
2369       msii_temp_data.ALLOW_SUBSTITUTE_RECEIPTS_FLAG := NULL;
2370    ELSIF msii_temp_data.ALLOW_SUBSTITUTE_RECEIPTS_FLAG    = g_FND_Upd_Null_Char THEN
2371       msii_temp_data.ALLOW_SUBSTITUTE_RECEIPTS_FLAG := NULL;
2372    ELSE
2373       msii_temp_data.ALLOW_SUBSTITUTE_RECEIPTS_FLAG := trim(msii_temp_data.ALLOW_SUBSTITUTE_RECEIPTS_FLAG);
2374    END IF;
2375    IF msii_temp_data.ALLOW_EXPRESS_DELIVERY_FLAG IS NULL THEN
2376       msii_temp_data.ALLOW_EXPRESS_DELIVERY_FLAG := msi_record_temp.ALLOW_EXPRESS_DELIVERY_FLAG;
2377    ELSIF msii_temp_data.ALLOW_EXPRESS_DELIVERY_FLAG    = '!' THEN
2378       msii_temp_data.ALLOW_EXPRESS_DELIVERY_FLAG := NULL;
2379    ELSIF msii_temp_data.ALLOW_EXPRESS_DELIVERY_FLAG    = g_FND_Upd_Null_Char THEN
2380       msii_temp_data.ALLOW_EXPRESS_DELIVERY_FLAG := NULL;
2381    ELSE
2382       msii_temp_data.ALLOW_EXPRESS_DELIVERY_FLAG := trim(msii_temp_data.ALLOW_EXPRESS_DELIVERY_FLAG);
2383    END IF;
2384    IF msii_temp_data.RECEIPT_DAYS_EXCEPTION_CODE IS NULL THEN
2385       msii_temp_data.RECEIPT_DAYS_EXCEPTION_CODE := msi_record_temp.RECEIPT_DAYS_EXCEPTION_CODE;
2386    ELSIF msii_temp_data.RECEIPT_DAYS_EXCEPTION_CODE    = '!' THEN
2387       msii_temp_data.RECEIPT_DAYS_EXCEPTION_CODE := NULL;
2388    ELSIF msii_temp_data.RECEIPT_DAYS_EXCEPTION_CODE    = g_FND_Upd_Null_Char THEN
2389       msii_temp_data.RECEIPT_DAYS_EXCEPTION_CODE := NULL;
2390    ELSE
2391       msii_temp_data.RECEIPT_DAYS_EXCEPTION_CODE := trim(msii_temp_data.RECEIPT_DAYS_EXCEPTION_CODE);
2392    END IF;
2393    IF msii_temp_data.RECEIVE_CLOSE_TOLERANCE IS NULL THEN
2394       msii_temp_data.RECEIVE_CLOSE_TOLERANCE := msi_record_temp.RECEIVE_CLOSE_TOLERANCE;
2395    ELSIF msii_temp_data.RECEIVE_CLOSE_TOLERANCE    = -999999 THEN
2396       msii_temp_data.RECEIVE_CLOSE_TOLERANCE := NULL;
2397    ELSIF msii_temp_data.RECEIVE_CLOSE_TOLERANCE    = g_FND_Upd_Null_NUM THEN
2398       msii_temp_data.RECEIVE_CLOSE_TOLERANCE := NULL;
2399    END IF;
2400    IF msii_temp_data.START_AUTO_LOT_NUMBER IS NULL THEN
2401       msii_temp_data.START_AUTO_LOT_NUMBER := msi_record_temp.START_AUTO_LOT_NUMBER;
2402    ELSIF msii_temp_data.START_AUTO_LOT_NUMBER    = '!' THEN
2403       msii_temp_data.START_AUTO_LOT_NUMBER := NULL;
2404    ELSIF msii_temp_data.START_AUTO_LOT_NUMBER    = g_FND_Upd_Null_Char THEN
2405       msii_temp_data.START_AUTO_LOT_NUMBER := NULL;
2406    ELSE
2407       msii_temp_data.START_AUTO_LOT_NUMBER := trim(msii_temp_data.START_AUTO_LOT_NUMBER);
2408    END IF;
2409    IF msii_temp_data.SERIAL_NUMBER_CONTROL_CODE is null then
2410       msii_temp_data.SERIAL_NUMBER_CONTROL_CODE := msi_record_temp.SERIAL_NUMBER_CONTROL_CODE;
2411    END IF;
2412    IF msii_temp_data.AUTO_SERIAL_ALPHA_PREFIX IS NULL THEN
2413       msii_temp_data.AUTO_SERIAL_ALPHA_PREFIX := msi_record_temp.AUTO_SERIAL_ALPHA_PREFIX;
2414    ELSIF msii_temp_data.AUTO_SERIAL_ALPHA_PREFIX    = '!' THEN
2415       msii_temp_data.AUTO_SERIAL_ALPHA_PREFIX := NULL;
2416    ELSIF msii_temp_data.AUTO_SERIAL_ALPHA_PREFIX    = g_FND_Upd_Null_Char THEN
2417       msii_temp_data.AUTO_SERIAL_ALPHA_PREFIX := NULL;
2418    ELSE
2419       msii_temp_data.AUTO_SERIAL_ALPHA_PREFIX := trim(msii_temp_data.AUTO_SERIAL_ALPHA_PREFIX);
2420    END IF;
2421    IF msii_temp_data.SOURCE_ORGANIZATION_ID IS NULL THEN
2422       msii_temp_data.SOURCE_ORGANIZATION_ID := msi_record_temp.SOURCE_ORGANIZATION_ID;
2423    ELSIF msii_temp_data.SOURCE_ORGANIZATION_ID    = -999999 THEN
2424       msii_temp_data.SOURCE_ORGANIZATION_ID := NULL;
2425    ELSIF msii_temp_data.SOURCE_ORGANIZATION_ID    = g_FND_Upd_Null_NUM THEN
2426       msii_temp_data.SOURCE_ORGANIZATION_ID := NULL;
2427    END IF;
2428    IF msii_temp_data.ENCUMBRANCE_ACCOUNT IS NULL THEN
2429       msii_temp_data.ENCUMBRANCE_ACCOUNT := msi_record_temp.ENCUMBRANCE_ACCOUNT;
2430    ELSIF msii_temp_data.ENCUMBRANCE_ACCOUNT    = -999999 THEN
2431       msii_temp_data.ENCUMBRANCE_ACCOUNT := NULL;
2432    ELSIF msii_temp_data.ENCUMBRANCE_ACCOUNT    = g_FND_Upd_Null_NUM THEN
2433       msii_temp_data.ENCUMBRANCE_ACCOUNT := NULL;
2434    END IF;
2435    IF msii_temp_data.WEIGHT_UOM_CODE IS NULL THEN
2436       msii_temp_data.WEIGHT_UOM_CODE := msi_record_temp.WEIGHT_UOM_CODE;
2437    ELSIF msii_temp_data.WEIGHT_UOM_CODE    = '!' THEN
2438       msii_temp_data.WEIGHT_UOM_CODE := NULL;
2439    ELSIF msii_temp_data.WEIGHT_UOM_CODE    = g_FND_Upd_Null_Char THEN
2440       msii_temp_data.WEIGHT_UOM_CODE := NULL;
2441    ELSE
2442       msii_temp_data.WEIGHT_UOM_CODE := trim(msii_temp_data.WEIGHT_UOM_CODE);
2443    END IF;
2444    IF trim(msii_temp_data.SEGMENT16) is null then
2445       msii_temp_data.SEGMENT16 := msi_record_temp.SEGMENT16;
2446    ELSE
2447       msii_temp_data.SEGMENT16 := trim(msii_temp_data.SEGMENT16);
2448    END IF;
2449    IF trim(msii_temp_data.SEGMENT17) is null then
2450       msii_temp_data.SEGMENT17 := msi_record_temp.SEGMENT17;
2451    ELSE
2452       msii_temp_data.SEGMENT17 := trim(msii_temp_data.SEGMENT17);
2453    END IF;
2454    msii_temp_data.PROCESS_FLAG := l_process_flag_2;
2455    IF trim(msii_temp_data.SUMMARY_FLAG) is null then
2456       msii_temp_data.SUMMARY_FLAG := msi_record_temp.SUMMARY_FLAG;
2457    ELSE
2458       msii_temp_data.SUMMARY_FLAG := trim(msii_temp_data.SUMMARY_FLAG);
2459    END IF;
2460    IF trim(msii_temp_data.ENABLED_FLAG) is null then
2461       msii_temp_data.ENABLED_FLAG := msi_record_temp.ENABLED_FLAG;
2462    ELSE
2463       msii_temp_data.ENABLED_FLAG := trim(msii_temp_data.ENABLED_FLAG);
2464    END IF;
2465    IF msii_temp_data.START_DATE_ACTIVE is null then
2466       msii_temp_data.START_DATE_ACTIVE := msi_record_temp.START_DATE_ACTIVE;
2467    END IF;
2468    IF msii_temp_data.END_DATE_ACTIVE is null then
2469       msii_temp_data.END_DATE_ACTIVE := msi_record_temp.END_DATE_ACTIVE;
2470    END IF;
2471    IF msii_temp_data.ACCOUNTING_RULE_ID IS NULL THEN
2472       msii_temp_data.ACCOUNTING_RULE_ID := msi_record_temp.ACCOUNTING_RULE_ID;
2473    ELSIF msii_temp_data.ACCOUNTING_RULE_ID    = -999999 THEN
2474       msii_temp_data.ACCOUNTING_RULE_ID := NULL;
2475    ELSIF msii_temp_data.ACCOUNTING_RULE_ID    = g_FND_Upd_Null_NUM THEN
2476       msii_temp_data.ACCOUNTING_RULE_ID := NULL;
2477    END IF;
2478    IF trim(msii_temp_data.SEGMENT1) is null then
2479       msii_temp_data.SEGMENT1 := msi_record_temp.SEGMENT1;
2480    ELSE
2481       msii_temp_data.SEGMENT1 := trim(msii_temp_data.SEGMENT1);
2482    END IF;
2483    IF trim(msii_temp_data.SEGMENT2) is null then
2484       msii_temp_data.SEGMENT2 := msi_record_temp.SEGMENT2;
2485    ELSE
2486       msii_temp_data.SEGMENT2 := trim(msii_temp_data.SEGMENT2);
2487    END IF;
2488    IF trim(msii_temp_data.SEGMENT3) is null then
2489       msii_temp_data.SEGMENT3 := msi_record_temp.SEGMENT3;
2490    ELSE
2491       msii_temp_data.SEGMENT3 := trim(msii_temp_data.SEGMENT3);
2492    END IF;
2493    IF trim(msii_temp_data.SEGMENT4) is null then
2494       msii_temp_data.SEGMENT4 := msi_record_temp.SEGMENT4;
2495    ELSE
2496       msii_temp_data.SEGMENT4 := trim(msii_temp_data.SEGMENT4);
2497    END IF;
2498    IF trim(msii_temp_data.SEGMENT5) is null then
2499       msii_temp_data.SEGMENT5 := msi_record_temp.SEGMENT5;
2500    ELSE
2501       msii_temp_data.SEGMENT5 := trim(msii_temp_data.SEGMENT5);
2502    END IF;
2503    IF trim(msii_temp_data.SEGMENT7) is null then
2504       msii_temp_data.SEGMENT7 := msi_record_temp.SEGMENT7;
2505    ELSE
2506       msii_temp_data.SEGMENT7 := trim(msii_temp_data.SEGMENT7);
2507    END IF;
2508    IF trim(msii_temp_data.SEGMENT9) is null then
2509       msii_temp_data.SEGMENT9 := msi_record_temp.SEGMENT9;
2510    ELSE
2511       msii_temp_data.SEGMENT9 := trim(msii_temp_data.SEGMENT9);
2512    END IF;
2513    IF trim(msii_temp_data.SEGMENT10) is null then
2514       msii_temp_data.SEGMENT10 := msi_record_temp.SEGMENT10;
2515    ELSE
2516       msii_temp_data.SEGMENT10 := trim(msii_temp_data.SEGMENT10);
2517    END IF;
2518    IF trim(msii_temp_data.SEGMENT12) is null then
2519       msii_temp_data.SEGMENT12 := msi_record_temp.SEGMENT12;
2520    ELSE
2521       msii_temp_data.SEGMENT12 := trim(msii_temp_data.SEGMENT12);
2522    END IF;
2523    IF trim(msii_temp_data.SEGMENT13) is null then
2524       msii_temp_data.SEGMENT13 := msi_record_temp.SEGMENT13;
2525    ELSE
2526       msii_temp_data.SEGMENT13 := trim(msii_temp_data.SEGMENT13);
2527    END IF;
2528    IF trim(msii_temp_data.SEGMENT15) is null then
2529       msii_temp_data.SEGMENT15 := msi_record_temp.SEGMENT15;
2530    ELSE
2531       msii_temp_data.SEGMENT15 := trim(msii_temp_data.SEGMENT15);
2532    END IF;
2533    IF trim(msii_temp_data.SEGMENT18) is null then
2534       msii_temp_data.SEGMENT18 := msi_record_temp.SEGMENT18;
2535    ELSE
2536       msii_temp_data.SEGMENT18 := trim(msii_temp_data.SEGMENT18);
2537    END IF;
2538    IF trim(msii_temp_data.SEGMENT20) is null then
2539       msii_temp_data.SEGMENT20 := msi_record_temp.SEGMENT20;
2540    ELSE
2541       msii_temp_data.SEGMENT20 := trim(msii_temp_data.SEGMENT20);
2542    END IF;
2543    IF msii_temp_data.ATTRIBUTE1 IS NULL THEN
2544       msii_temp_data.ATTRIBUTE1 := msi_record_temp.ATTRIBUTE1;
2545    ELSIF msii_temp_data.ATTRIBUTE1    = '!' THEN
2546       msii_temp_data.ATTRIBUTE1 := NULL;
2547    ELSIF msii_temp_data.ATTRIBUTE1    = g_FND_Upd_Null_Char THEN
2548       msii_temp_data.ATTRIBUTE1 := NULL;
2549    ELSE
2550       msii_temp_data.ATTRIBUTE1 := trim(msii_temp_data.ATTRIBUTE1);
2551    END IF;
2552    IF msii_temp_data.ATTRIBUTE2 IS NULL THEN
2553       msii_temp_data.ATTRIBUTE2 := msi_record_temp.ATTRIBUTE2;
2554    ELSIF msii_temp_data.ATTRIBUTE2    = '!' THEN
2555       msii_temp_data.ATTRIBUTE2 := NULL;
2556    ELSIF msii_temp_data.ATTRIBUTE2    = g_FND_Upd_Null_Char THEN
2557       msii_temp_data.ATTRIBUTE2 := NULL;
2558    ELSE
2559       msii_temp_data.ATTRIBUTE2 := trim(msii_temp_data.ATTRIBUTE2);
2560    END IF;
2561    IF msii_temp_data.ATTRIBUTE4 IS NULL THEN
2562       msii_temp_data.ATTRIBUTE4 := msi_record_temp.ATTRIBUTE4;
2563    ELSIF msii_temp_data.ATTRIBUTE4    = '!' THEN
2564       msii_temp_data.ATTRIBUTE4 := NULL;
2565    ELSIF msii_temp_data.ATTRIBUTE4    = g_FND_Upd_Null_Char THEN
2566       msii_temp_data.ATTRIBUTE4 := NULL;
2567    ELSE
2568       msii_temp_data.ATTRIBUTE4 := trim(msii_temp_data.ATTRIBUTE4);
2569    END IF;
2570    IF msii_temp_data.ATTRIBUTE6 IS NULL THEN
2571       msii_temp_data.ATTRIBUTE6 := msi_record_temp.ATTRIBUTE6;
2572    ELSIF msii_temp_data.ATTRIBUTE6    = '!' THEN
2573       msii_temp_data.ATTRIBUTE6 := NULL;
2574    ELSIF msii_temp_data.ATTRIBUTE6    = g_FND_Upd_Null_Char THEN
2575       msii_temp_data.ATTRIBUTE6 := NULL;
2576    ELSE
2577       msii_temp_data.ATTRIBUTE6 := trim(msii_temp_data.ATTRIBUTE6);
2578    END IF;
2579    IF msii_temp_data.ATTRIBUTE8 IS NULL THEN
2580       msii_temp_data.ATTRIBUTE8 := msi_record_temp.ATTRIBUTE8;
2581    ELSIF msii_temp_data.ATTRIBUTE8    = '!' THEN
2582       msii_temp_data.ATTRIBUTE8 := NULL;
2583    ELSIF msii_temp_data.ATTRIBUTE8    = g_FND_Upd_Null_Char THEN
2584       msii_temp_data.ATTRIBUTE8 := NULL;
2585    ELSE
2586       msii_temp_data.ATTRIBUTE8 := trim(msii_temp_data.ATTRIBUTE8);
2587    END IF;
2588    IF msii_temp_data.ATTRIBUTE9 IS NULL THEN
2589       msii_temp_data.ATTRIBUTE9 := msi_record_temp.ATTRIBUTE9;
2590    ELSIF msii_temp_data.ATTRIBUTE9    = '!' THEN
2591       msii_temp_data.ATTRIBUTE9 := NULL;
2592    ELSIF msii_temp_data.ATTRIBUTE9    = g_FND_Upd_Null_Char THEN
2593       msii_temp_data.ATTRIBUTE9 := NULL;
2594    ELSE
2595       msii_temp_data.ATTRIBUTE9 := trim(msii_temp_data.ATTRIBUTE9);
2596    END IF;
2597    IF msii_temp_data.ATTRIBUTE11 IS NULL THEN
2598       msii_temp_data.ATTRIBUTE11 := msi_record_temp.ATTRIBUTE11;
2599    ELSIF msii_temp_data.ATTRIBUTE11    = '!' THEN
2600       msii_temp_data.ATTRIBUTE11 := NULL;
2601    ELSIF msii_temp_data.ATTRIBUTE11    = g_FND_Upd_Null_Char THEN
2602       msii_temp_data.ATTRIBUTE11 := NULL;
2603    ELSE
2604       msii_temp_data.ATTRIBUTE11 := trim(msii_temp_data.ATTRIBUTE11);
2605    END IF;
2606    IF msii_temp_data.ATTRIBUTE13 IS NULL THEN
2607       msii_temp_data.ATTRIBUTE13 := msi_record_temp.ATTRIBUTE13;
2608    ELSIF msii_temp_data.ATTRIBUTE13    = '!' THEN
2609       msii_temp_data.ATTRIBUTE13 := NULL;
2610    ELSIF msii_temp_data.ATTRIBUTE13    = g_FND_Upd_Null_Char THEN
2611       msii_temp_data.ATTRIBUTE13 := NULL;
2612    ELSE
2613       msii_temp_data.ATTRIBUTE13 := trim(msii_temp_data.ATTRIBUTE13);
2614    END IF;
2615    IF msii_temp_data.ATTRIBUTE15 IS NULL THEN
2616       msii_temp_data.ATTRIBUTE15 := msi_record_temp.ATTRIBUTE15;
2617    ELSIF msii_temp_data.ATTRIBUTE15    = '!' THEN
2618       msii_temp_data.ATTRIBUTE15 := NULL;
2619    ELSIF msii_temp_data.ATTRIBUTE15    = g_FND_Upd_Null_Char THEN
2620       msii_temp_data.ATTRIBUTE15 := NULL;
2621    ELSE
2622       msii_temp_data.ATTRIBUTE15 := trim(msii_temp_data.ATTRIBUTE15);
2623    END IF;
2624    IF msii_temp_data.ATTRIBUTE16 IS NULL THEN
2625       msii_temp_data.ATTRIBUTE16 := msi_record_temp.ATTRIBUTE16;
2626    ELSIF msii_temp_data.ATTRIBUTE16    = '!' THEN
2627       msii_temp_data.ATTRIBUTE16 := NULL;
2628    ELSIF msii_temp_data.ATTRIBUTE16    = g_FND_Upd_Null_Char THEN
2629       msii_temp_data.ATTRIBUTE16 := NULL;
2630    ELSE
2631       msii_temp_data.ATTRIBUTE16 := trim(msii_temp_data.ATTRIBUTE16);
2632    END IF;
2633    IF msii_temp_data.ATTRIBUTE18 IS NULL THEN
2634       msii_temp_data.ATTRIBUTE18 := msi_record_temp.ATTRIBUTE18;
2635    ELSIF msii_temp_data.ATTRIBUTE18    = '!' THEN
2636       msii_temp_data.ATTRIBUTE18 := NULL;
2637    ELSIF msii_temp_data.ATTRIBUTE18    = g_FND_Upd_Null_Char THEN
2638       msii_temp_data.ATTRIBUTE18 := NULL;
2639    ELSE
2640       msii_temp_data.ATTRIBUTE18 := trim(msii_temp_data.ATTRIBUTE18);
2641    END IF;
2642    IF msii_temp_data.ATTRIBUTE20 IS NULL THEN
2643       msii_temp_data.ATTRIBUTE20 := msi_record_temp.ATTRIBUTE20;
2644    ELSIF msii_temp_data.ATTRIBUTE20    = '!' THEN
2645       msii_temp_data.ATTRIBUTE20 := NULL;
2646    ELSIF msii_temp_data.ATTRIBUTE20    = g_FND_Upd_Null_Char THEN
2647       msii_temp_data.ATTRIBUTE20 := NULL;
2648    ELSE
2649       msii_temp_data.ATTRIBUTE20 := trim(msii_temp_data.ATTRIBUTE20);
2650    END IF;
2651    IF msii_temp_data.ATTRIBUTE22 IS NULL THEN
2652       msii_temp_data.ATTRIBUTE22 := msi_record_temp.ATTRIBUTE22;
2653    ELSIF msii_temp_data.ATTRIBUTE22    = '!' THEN
2654       msii_temp_data.ATTRIBUTE22 := NULL;
2655    ELSIF msii_temp_data.ATTRIBUTE22    = g_FND_Upd_Null_Char THEN
2656       msii_temp_data.ATTRIBUTE22 := NULL;
2657    ELSE
2658       msii_temp_data.ATTRIBUTE22 := trim(msii_temp_data.ATTRIBUTE22);
2659    END IF;
2660    IF msii_temp_data.ATTRIBUTE23 IS NULL THEN
2661       msii_temp_data.ATTRIBUTE23 := msi_record_temp.ATTRIBUTE23;
2662    ELSIF msii_temp_data.ATTRIBUTE23    = '!' THEN
2663       msii_temp_data.ATTRIBUTE23 := NULL;
2664    ELSIF msii_temp_data.ATTRIBUTE23    = g_FND_Upd_Null_Char THEN
2665       msii_temp_data.ATTRIBUTE23 := NULL;
2666    ELSE
2667       msii_temp_data.ATTRIBUTE23 := trim(msii_temp_data.ATTRIBUTE23);
2668    END IF;
2669    IF msii_temp_data.ATTRIBUTE25 IS NULL THEN
2670       msii_temp_data.ATTRIBUTE25 := msi_record_temp.ATTRIBUTE25;
2671    ELSIF msii_temp_data.ATTRIBUTE25    = '!' THEN
2672       msii_temp_data.ATTRIBUTE25 := NULL;
2673    ELSIF msii_temp_data.ATTRIBUTE25    = g_FND_Upd_Null_Char THEN
2674       msii_temp_data.ATTRIBUTE25 := NULL;
2675    ELSE
2676       msii_temp_data.ATTRIBUTE25 := trim(msii_temp_data.ATTRIBUTE25);
2677    END IF;
2678    IF msii_temp_data.ATTRIBUTE27 IS NULL THEN
2679       msii_temp_data.ATTRIBUTE27 := msi_record_temp.ATTRIBUTE27;
2680    ELSIF msii_temp_data.ATTRIBUTE27    = '!' THEN
2681       msii_temp_data.ATTRIBUTE27 := NULL;
2682    ELSIF msii_temp_data.ATTRIBUTE27    = g_FND_Upd_Null_Char THEN
2683       msii_temp_data.ATTRIBUTE27 := NULL;
2684    ELSE
2685       msii_temp_data.ATTRIBUTE27 := trim(msii_temp_data.ATTRIBUTE27);
2686    END IF;
2687    IF msii_temp_data.ATTRIBUTE29 IS NULL THEN
2688       msii_temp_data.ATTRIBUTE29 := msi_record_temp.ATTRIBUTE29;
2689    ELSIF msii_temp_data.ATTRIBUTE29    = '!' THEN
2690       msii_temp_data.ATTRIBUTE29 := NULL;
2691    ELSIF msii_temp_data.ATTRIBUTE29    = g_FND_Upd_Null_Char THEN
2692       msii_temp_data.ATTRIBUTE29 := NULL;
2693    ELSE
2694       msii_temp_data.ATTRIBUTE29 := trim(msii_temp_data.ATTRIBUTE29);
2695    END IF;
2696    IF msii_temp_data.ATTRIBUTE30 IS NULL THEN
2697       msii_temp_data.ATTRIBUTE30 := msi_record_temp.ATTRIBUTE30;
2698    ELSIF msii_temp_data.ATTRIBUTE30    = '!' THEN
2699       msii_temp_data.ATTRIBUTE30 := NULL;
2700    ELSIF msii_temp_data.ATTRIBUTE30    = g_FND_Upd_Null_Char THEN
2701       msii_temp_data.ATTRIBUTE30 := NULL;
2702    ELSE
2703       msii_temp_data.ATTRIBUTE30 := trim(msii_temp_data.ATTRIBUTE30);
2704    END IF;
2705    IF msii_temp_data.GLOBAL_ATTRIBUTE1 IS NULL THEN
2706       msii_temp_data.GLOBAL_ATTRIBUTE1 := msi_record_temp.GLOBAL_ATTRIBUTE1;
2707    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE1    = '!' THEN
2708       msii_temp_data.GLOBAL_ATTRIBUTE1 := NULL;
2709    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE1    = g_FND_Upd_Null_Char THEN
2710       msii_temp_data.GLOBAL_ATTRIBUTE1 := NULL;
2711    ELSE
2712       msii_temp_data.GLOBAL_ATTRIBUTE1 := trim(msii_temp_data.GLOBAL_ATTRIBUTE1);
2713    END IF;
2714    IF msii_temp_data.GLOBAL_ATTRIBUTE3 IS NULL THEN
2715       msii_temp_data.GLOBAL_ATTRIBUTE3 := msi_record_temp.GLOBAL_ATTRIBUTE3;
2716    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE3    = '!' THEN
2717       msii_temp_data.GLOBAL_ATTRIBUTE3 := NULL;
2718    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE3    = g_FND_Upd_Null_Char THEN
2719       msii_temp_data.GLOBAL_ATTRIBUTE3 := NULL;
2720    ELSE
2721       msii_temp_data.GLOBAL_ATTRIBUTE3 := trim(msii_temp_data.GLOBAL_ATTRIBUTE3);
2722    END IF;
2723    IF msii_temp_data.GLOBAL_ATTRIBUTE4 IS NULL THEN
2724       msii_temp_data.GLOBAL_ATTRIBUTE4 := msi_record_temp.GLOBAL_ATTRIBUTE4;
2725    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE4    = '!' THEN
2726       msii_temp_data.GLOBAL_ATTRIBUTE4 := NULL;
2727    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE4    = g_FND_Upd_Null_Char THEN
2728       msii_temp_data.GLOBAL_ATTRIBUTE4 := NULL;
2729    ELSE
2730       msii_temp_data.GLOBAL_ATTRIBUTE4 := trim(msii_temp_data.GLOBAL_ATTRIBUTE4);
2731    END IF;
2732    IF msii_temp_data.GLOBAL_ATTRIBUTE6 IS NULL THEN
2733       msii_temp_data.GLOBAL_ATTRIBUTE6 := msi_record_temp.GLOBAL_ATTRIBUTE6;
2734    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE6    = '!' THEN
2735       msii_temp_data.GLOBAL_ATTRIBUTE6 := NULL;
2736    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE6    = g_FND_Upd_Null_Char THEN
2737       msii_temp_data.GLOBAL_ATTRIBUTE6 := NULL;
2738    ELSE
2739       msii_temp_data.GLOBAL_ATTRIBUTE6 := trim(msii_temp_data.GLOBAL_ATTRIBUTE6);
2740    END IF;
2741    IF msii_temp_data.GLOBAL_ATTRIBUTE8 IS NULL THEN
2742       msii_temp_data.GLOBAL_ATTRIBUTE8 := msi_record_temp.GLOBAL_ATTRIBUTE8;
2743    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE8    = '!' THEN
2744       msii_temp_data.GLOBAL_ATTRIBUTE8 := NULL;
2745    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE8    = g_FND_Upd_Null_Char THEN
2746       msii_temp_data.GLOBAL_ATTRIBUTE8 := NULL;
2747    ELSE
2748       msii_temp_data.GLOBAL_ATTRIBUTE8 := trim(msii_temp_data.GLOBAL_ATTRIBUTE8);
2749    END IF;
2750    IF msii_temp_data.GLOBAL_ATTRIBUTE10 IS NULL THEN
2751       msii_temp_data.GLOBAL_ATTRIBUTE10 := msi_record_temp.GLOBAL_ATTRIBUTE10;
2752    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE10    = '!' THEN
2753       msii_temp_data.GLOBAL_ATTRIBUTE10 := NULL;
2754    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE10    = g_FND_Upd_Null_Char THEN
2755       msii_temp_data.GLOBAL_ATTRIBUTE10 := NULL;
2756    ELSE
2757       msii_temp_data.GLOBAL_ATTRIBUTE10 := trim(msii_temp_data.GLOBAL_ATTRIBUTE10);
2758    END IF;
2759    IF msii_temp_data.GLOBAL_ATTRIBUTE11 IS NULL THEN
2760       msii_temp_data.GLOBAL_ATTRIBUTE11 := msi_record_temp.GLOBAL_ATTRIBUTE11;
2761    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE11    = '!' THEN
2762       msii_temp_data.GLOBAL_ATTRIBUTE11 := NULL;
2763    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE11    = g_FND_Upd_Null_Char THEN
2764       msii_temp_data.GLOBAL_ATTRIBUTE11 := NULL;
2765    ELSE
2766       msii_temp_data.GLOBAL_ATTRIBUTE11 := trim(msii_temp_data.GLOBAL_ATTRIBUTE11);
2767    END IF;
2768    IF msii_temp_data.GLOBAL_ATTRIBUTE12 IS NULL THEN
2769       msii_temp_data.GLOBAL_ATTRIBUTE12 := msi_record_temp.GLOBAL_ATTRIBUTE12;
2770    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE12  = '!' THEN
2771       msii_temp_data.GLOBAL_ATTRIBUTE12 := NULL;
2772    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE12  = g_FND_Upd_Null_Char THEN
2773       msii_temp_data.GLOBAL_ATTRIBUTE12 := NULL;
2774    ELSE
2775       msii_temp_data.GLOBAL_ATTRIBUTE12 := trim(msii_temp_data.GLOBAL_ATTRIBUTE12);
2776    END IF;
2777    IF msii_temp_data.GLOBAL_ATTRIBUTE13 IS NULL THEN
2778       msii_temp_data.GLOBAL_ATTRIBUTE13 := msi_record_temp.GLOBAL_ATTRIBUTE13;
2779    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE13    = '!' THEN
2780       msii_temp_data.GLOBAL_ATTRIBUTE13 := NULL;
2781    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE13    = g_FND_Upd_Null_Char THEN
2782       msii_temp_data.GLOBAL_ATTRIBUTE13 := NULL;
2783    ELSE
2784       msii_temp_data.GLOBAL_ATTRIBUTE13 := trim(msii_temp_data.GLOBAL_ATTRIBUTE13);
2785    END IF;
2786    IF msii_temp_data.GLOBAL_ATTRIBUTE14 IS NULL THEN
2787       msii_temp_data.GLOBAL_ATTRIBUTE14 := msi_record_temp.GLOBAL_ATTRIBUTE14;
2788    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE14    = '!' THEN
2789       msii_temp_data.GLOBAL_ATTRIBUTE14 := NULL;
2790    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE14    = g_FND_Upd_Null_Char THEN
2791       msii_temp_data.GLOBAL_ATTRIBUTE14 := NULL;
2792    ELSE
2793       msii_temp_data.GLOBAL_ATTRIBUTE14 := trim(msii_temp_data.GLOBAL_ATTRIBUTE14);
2794    END IF;
2795    IF msii_temp_data.GLOBAL_ATTRIBUTE15 IS NULL THEN
2796       msii_temp_data.GLOBAL_ATTRIBUTE15 := msi_record_temp.GLOBAL_ATTRIBUTE15;
2797    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE15    = '!' THEN
2798       msii_temp_data.GLOBAL_ATTRIBUTE15 := NULL;
2799    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE15    = g_FND_Upd_Null_Char THEN
2800       msii_temp_data.GLOBAL_ATTRIBUTE15 := NULL;
2801    ELSE
2802       msii_temp_data.GLOBAL_ATTRIBUTE15 := trim(msii_temp_data.GLOBAL_ATTRIBUTE15);
2803    END IF;
2804    IF msii_temp_data.GLOBAL_ATTRIBUTE16 IS NULL THEN
2805       msii_temp_data.GLOBAL_ATTRIBUTE16 := msi_record_temp.GLOBAL_ATTRIBUTE16;
2806    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE16    = '!' THEN
2807       msii_temp_data.GLOBAL_ATTRIBUTE16 := NULL;
2808    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE16    = g_FND_Upd_Null_Char THEN
2809       msii_temp_data.GLOBAL_ATTRIBUTE16 := NULL;
2810    ELSE
2811       msii_temp_data.GLOBAL_ATTRIBUTE16 := trim(msii_temp_data.GLOBAL_ATTRIBUTE16);
2812    END IF;
2813 
2814   IF msii_temp_data.GLOBAL_ATTRIBUTE17 IS NULL THEN
2815       msii_temp_data.GLOBAL_ATTRIBUTE17 := msi_record_temp.GLOBAL_ATTRIBUTE17;
2816    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE17    = '!' THEN
2817       msii_temp_data.GLOBAL_ATTRIBUTE17 := NULL;
2818    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE17    = g_FND_Upd_Null_Char THEN
2819       msii_temp_data.GLOBAL_ATTRIBUTE17 := NULL;
2820    ELSE
2821       msii_temp_data.GLOBAL_ATTRIBUTE17 := trim(msii_temp_data.GLOBAL_ATTRIBUTE17);
2822    END IF;
2823    IF msii_temp_data.GLOBAL_ATTRIBUTE18 IS NULL THEN
2824       msii_temp_data.GLOBAL_ATTRIBUTE18 := msi_record_temp.GLOBAL_ATTRIBUTE18;
2825    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE18    = '!' THEN
2826       msii_temp_data.GLOBAL_ATTRIBUTE18 := NULL;
2827    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE18    = g_FND_Upd_Null_Char THEN
2828       msii_temp_data.GLOBAL_ATTRIBUTE18 := NULL;
2829    ELSE
2830       msii_temp_data.GLOBAL_ATTRIBUTE18 := trim(msii_temp_data.GLOBAL_ATTRIBUTE18);
2831    END IF;
2832    IF msii_temp_data.GLOBAL_ATTRIBUTE19 IS NULL THEN
2833       msii_temp_data.GLOBAL_ATTRIBUTE19 := msi_record_temp.GLOBAL_ATTRIBUTE19;
2834    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE19    = '!' THEN
2835       msii_temp_data.GLOBAL_ATTRIBUTE19 := NULL;
2836    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE19    = g_FND_Upd_Null_Char THEN
2837       msii_temp_data.GLOBAL_ATTRIBUTE19 := NULL;
2838    ELSE
2839       msii_temp_data.GLOBAL_ATTRIBUTE19 := trim(msii_temp_data.GLOBAL_ATTRIBUTE19);
2840    END IF;
2841    IF msii_temp_data.GLOBAL_ATTRIBUTE20 IS NULL THEN
2842       msii_temp_data.GLOBAL_ATTRIBUTE20 := msi_record_temp.GLOBAL_ATTRIBUTE20;
2843    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE20    = '!' THEN
2844       msii_temp_data.GLOBAL_ATTRIBUTE20 := NULL;
2845    ELSIF msii_temp_data.GLOBAL_ATTRIBUTE20    = g_FND_Upd_Null_Char THEN
2846       msii_temp_data.GLOBAL_ATTRIBUTE20 := NULL;
2847    ELSE
2848       msii_temp_data.GLOBAL_ATTRIBUTE20 := trim(msii_temp_data.GLOBAL_ATTRIBUTE20);
2849    END IF;
2850 
2851    IF trim(msii_temp_data.PURCHASING_ITEM_FLAG) is null then
2852       msii_temp_data.PURCHASING_ITEM_FLAG := msi_record_temp.PURCHASING_ITEM_FLAG;
2853    ELSE
2854       msii_temp_data.PURCHASING_ITEM_FLAG := trim(msii_temp_data.PURCHASING_ITEM_FLAG);
2855    END IF;
2856    IF trim(msii_temp_data.SHIPPABLE_ITEM_FLAG) is null then
2857       msii_temp_data.SHIPPABLE_ITEM_FLAG := msi_record_temp.SHIPPABLE_ITEM_FLAG;
2858    ELSE
2859       msii_temp_data.SHIPPABLE_ITEM_FLAG := trim(msii_temp_data.SHIPPABLE_ITEM_FLAG);
2860    END IF;
2861    IF trim(msii_temp_data.INTERNAL_ORDER_FLAG) is null then
2862       msii_temp_data.INTERNAL_ORDER_FLAG := msi_record_temp.INTERNAL_ORDER_FLAG;
2863    ELSE
2864       msii_temp_data.INTERNAL_ORDER_FLAG := trim(msii_temp_data.INTERNAL_ORDER_FLAG);
2865    END IF;
2866    IF trim(msii_temp_data.INVENTORY_ITEM_FLAG) is null then
2867       msii_temp_data.INVENTORY_ITEM_FLAG := msi_record_temp.INVENTORY_ITEM_FLAG;
2868    ELSE
2869       msii_temp_data.INVENTORY_ITEM_FLAG := trim(msii_temp_data.INVENTORY_ITEM_FLAG);
2870    END IF;
2871    IF trim(msii_temp_data.INVENTORY_ASSET_FLAG) is null then
2872       msii_temp_data.INVENTORY_ASSET_FLAG := msi_record_temp.INVENTORY_ASSET_FLAG;
2873    ELSE
2874       msii_temp_data.INVENTORY_ASSET_FLAG := trim(msii_temp_data.INVENTORY_ASSET_FLAG);
2875    END IF;
2876    IF Trim(msii_temp_data.CUSTOMER_ORDER_ENABLED_FLAG) IS NULL THEN
2877        IF msii_temp_data.INVENTORY_ITEM_STATUS_CODE IS NULL THEN
2878           msii_temp_data.CUSTOMER_ORDER_ENABLED_FLAG := msi_record_temp.CUSTOMER_ORDER_ENABLED_FLAG;
2879        END IF;
2880    ELSE
2881       msii_temp_data.CUSTOMER_ORDER_ENABLED_FLAG := trim(msii_temp_data.CUSTOMER_ORDER_ENABLED_FLAG);
2882    END IF;
2883    IF trim(msii_temp_data.MTL_TRANSACTIONS_ENABLED_FLAG) is null then
2884       IF msii_temp_data.inventory_item_status_code IS NULL THEN
2885          msii_temp_data.MTL_TRANSACTIONS_ENABLED_FLAG := msi_record_temp.MTL_TRANSACTIONS_ENABLED_FLAG;
2886       END IF;
2887    ELSE
2888       msii_temp_data.MTL_TRANSACTIONS_ENABLED_FLAG := trim(msii_temp_data.MTL_TRANSACTIONS_ENABLED_FLAG);
2889    END IF;
2890    IF trim(msii_temp_data.STOCK_ENABLED_FLAG) is null then
2891       if msii_temp_data.inventory_item_status_code IS NULL THEN
2892          msii_temp_data.STOCK_ENABLED_FLAG := msi_record_temp.STOCK_ENABLED_FLAG;
2893       END IF;
2894    ELSE
2895       msii_temp_data.STOCK_ENABLED_FLAG := trim(msii_temp_data.STOCK_ENABLED_FLAG);
2896    END IF;
2897    IF trim(msii_temp_data.BUILD_IN_WIP_FLAG) is null then
2898       IF msii_temp_data.inventory_item_status_code is null then
2899          msii_temp_data.BUILD_IN_WIP_FLAG := msi_record_temp.BUILD_IN_WIP_FLAG;
2900       END IF;
2901    ELSE
2902       msii_temp_data.BUILD_IN_WIP_FLAG := trim(msii_temp_data.BUILD_IN_WIP_FLAG);
2903    END IF;
2904    IF trim(msii_temp_data.SO_TRANSACTIONS_FLAG) is null then
2905       msii_temp_data.SO_TRANSACTIONS_FLAG := msi_record_temp.SO_TRANSACTIONS_FLAG;
2906    ELSE
2907       msii_temp_data.SO_TRANSACTIONS_FLAG := trim(msii_temp_data.SO_TRANSACTIONS_FLAG);
2908    END IF;
2909    IF trim(msii_temp_data.PROCESS_EXECUTION_ENABLED_FLAG) is null then
2910       IF msii_temp_data.inventory_item_status_code is null then
2911          msii_temp_data.PROCESS_EXECUTION_ENABLED_FLAG := msi_record_temp.PROCESS_EXECUTION_ENABLED_FLAG;
2912       END IF;
2913    ELSE
2914       msii_temp_data.PROCESS_EXECUTION_ENABLED_FLAG := trim(msii_temp_data.PROCESS_EXECUTION_ENABLED_FLAG);
2915    END IF;
2916    IF msii_temp_data.ITEM_CATALOG_GROUP_ID IS NULL THEN
2917       msii_temp_data.ITEM_CATALOG_GROUP_ID := msi_record_temp.ITEM_CATALOG_GROUP_ID;
2918    ELSIF msii_temp_data.ITEM_CATALOG_GROUP_ID    = -999999 THEN
2919       msii_temp_data.ITEM_CATALOG_GROUP_ID := NULL;
2920    ELSIF msii_temp_data.ITEM_CATALOG_GROUP_ID    = g_FND_Upd_Null_NUM THEN
2921       msii_temp_data.ITEM_CATALOG_GROUP_ID := NULL;
2922    END IF;
2923    IF trim(msii_temp_data.RETURNABLE_FLAG) is null then
2924       msii_temp_data.RETURNABLE_FLAG := msi_record_temp.RETURNABLE_FLAG;
2925    ELSE
2926       msii_temp_data.RETURNABLE_FLAG := trim(msii_temp_data.RETURNABLE_FLAG);
2927    END IF;
2928    IF msii_temp_data.DEFAULT_SHIPPING_ORG IS NULL THEN
2929       msii_temp_data.DEFAULT_SHIPPING_ORG := msi_record_temp.DEFAULT_SHIPPING_ORG;
2930    ELSIF msii_temp_data.DEFAULT_SHIPPING_ORG    = -999999 THEN
2931       msii_temp_data.DEFAULT_SHIPPING_ORG := NULL;
2932    ELSIF msii_temp_data.DEFAULT_SHIPPING_ORG    = g_FND_Upd_Null_NUM THEN
2933       msii_temp_data.DEFAULT_SHIPPING_ORG := NULL;
2934    END IF;
2935    IF msii_temp_data.TAXABLE_FLAG IS NULL THEN
2936       msii_temp_data.TAXABLE_FLAG := msi_record_temp.TAXABLE_FLAG;
2937    ELSIF msii_temp_data.TAXABLE_FLAG    = '!' THEN
2938       msii_temp_data.TAXABLE_FLAG := NULL;
2939    ELSIF msii_temp_data.TAXABLE_FLAG    = g_FND_Upd_Null_Char THEN
2940       msii_temp_data.TAXABLE_FLAG := NULL;
2941    ELSE
2942       msii_temp_data.TAXABLE_FLAG := trim(msii_temp_data.TAXABLE_FLAG);
2943    END IF;
2944    IF msii_temp_data.QTY_RCV_EXCEPTION_CODE IS NULL THEN
2945       msii_temp_data.QTY_RCV_EXCEPTION_CODE := msi_record_temp.QTY_RCV_EXCEPTION_CODE;
2946    ELSIF msii_temp_data.QTY_RCV_EXCEPTION_CODE    = '!' THEN
2947       msii_temp_data.QTY_RCV_EXCEPTION_CODE := NULL;
2948    ELSIF msii_temp_data.QTY_RCV_EXCEPTION_CODE    = g_FND_Upd_Null_Char THEN
2949       msii_temp_data.QTY_RCV_EXCEPTION_CODE := NULL;
2950    ELSE
2951       msii_temp_data.QTY_RCV_EXCEPTION_CODE := trim(msii_temp_data.QTY_RCV_EXCEPTION_CODE);
2952    END IF;
2953    IF trim(msii_temp_data.ALLOW_ITEM_DESC_UPDATE_FLAG) is null then
2954       msii_temp_data.ALLOW_ITEM_DESC_UPDATE_FLAG := msi_record_temp.ALLOW_ITEM_DESC_UPDATE_FLAG;
2955    ELSE
2956       msii_temp_data.ALLOW_ITEM_DESC_UPDATE_FLAG := trim(msii_temp_data.ALLOW_ITEM_DESC_UPDATE_FLAG);
2957    END IF;
2958    IF msii_temp_data.RECEIPT_REQUIRED_FLAG IS NULL THEN
2959       msii_temp_data.RECEIPT_REQUIRED_FLAG := msi_record_temp.RECEIPT_REQUIRED_FLAG;
2960    ELSIF msii_temp_data.RECEIPT_REQUIRED_FLAG    = '!' THEN
2961       msii_temp_data.RECEIPT_REQUIRED_FLAG := NULL;
2962    ELSIF msii_temp_data.RECEIPT_REQUIRED_FLAG    = g_FND_Upd_Null_Char THEN
2963       msii_temp_data.RECEIPT_REQUIRED_FLAG := NULL;
2964    ELSE
2965       msii_temp_data.RECEIPT_REQUIRED_FLAG := trim(msii_temp_data.RECEIPT_REQUIRED_FLAG);
2966    END IF;
2967    IF msii_temp_data.HAZARD_CLASS_ID IS NULL THEN
2968       msii_temp_data.HAZARD_CLASS_ID := msi_record_temp.HAZARD_CLASS_ID;
2969    ELSIF msii_temp_data.HAZARD_CLASS_ID    = -999999 THEN
2970       msii_temp_data.HAZARD_CLASS_ID := NULL;
2971    ELSIF msii_temp_data.HAZARD_CLASS_ID    = g_FND_Upd_Null_NUM THEN
2972       msii_temp_data.HAZARD_CLASS_ID := NULL;
2973    END IF;
2974    IF msii_temp_data.QTY_RCV_TOLERANCE IS NULL THEN
2975       msii_temp_data.QTY_RCV_TOLERANCE := msi_record_temp.QTY_RCV_TOLERANCE;
2976    ELSIF msii_temp_data.QTY_RCV_TOLERANCE    = -999999 THEN
2977       msii_temp_data.QTY_RCV_TOLERANCE := NULL;
2978    ELSIF msii_temp_data.QTY_RCV_TOLERANCE    = g_FND_Upd_Null_NUM THEN
2979       msii_temp_data.QTY_RCV_TOLERANCE := NULL;
2980    END IF;
2981    IF msii_temp_data.UN_NUMBER_ID IS NULL THEN
2982       msii_temp_data.UN_NUMBER_ID := msi_record_temp.UN_NUMBER_ID;
2983    ELSIF msii_temp_data.UN_NUMBER_ID    = -999999 THEN
2984       msii_temp_data.UN_NUMBER_ID := NULL;
2985    ELSIF msii_temp_data.UN_NUMBER_ID    = g_FND_Upd_Null_NUM THEN
2986       msii_temp_data.UN_NUMBER_ID := NULL;
2987    END IF;
2988    IF msii_temp_data.ASSET_CATEGORY_ID IS NULL THEN
2989       msii_temp_data.ASSET_CATEGORY_ID := msi_record_temp.ASSET_CATEGORY_ID;
2990    ELSIF msii_temp_data.ASSET_CATEGORY_ID    = -999999 THEN
2991       msii_temp_data.ASSET_CATEGORY_ID := NULL;
2992    ELSIF msii_temp_data.ASSET_CATEGORY_ID    = g_FND_Upd_Null_NUM THEN
2993       msii_temp_data.ASSET_CATEGORY_ID := NULL;
2994    END IF;
2995    IF msii_temp_data.ROUNDING_FACTOR IS NULL THEN
2996       msii_temp_data.ROUNDING_FACTOR := msi_record_temp.ROUNDING_FACTOR;
2997    ELSIF msii_temp_data.ROUNDING_FACTOR    = -999999 THEN
2998       msii_temp_data.ROUNDING_FACTOR := NULL;
2999    ELSIF msii_temp_data.ROUNDING_FACTOR    = g_FND_Upd_Null_NUM THEN
3000       msii_temp_data.ROUNDING_FACTOR := NULL;
3001    END IF;
3002    IF msii_temp_data.ENFORCE_SHIP_TO_LOCATION_CODE IS NULL THEN
3003       msii_temp_data.ENFORCE_SHIP_TO_LOCATION_CODE := msi_record_temp.ENFORCE_SHIP_TO_LOCATION_CODE;
3004    ELSIF msii_temp_data.ENFORCE_SHIP_TO_LOCATION_CODE    = '!' THEN
3005       msii_temp_data.ENFORCE_SHIP_TO_LOCATION_CODE := NULL;
3006    ELSIF msii_temp_data.ENFORCE_SHIP_TO_LOCATION_CODE    = g_FND_Upd_Null_Char THEN
3007       msii_temp_data.ENFORCE_SHIP_TO_LOCATION_CODE := NULL;
3008    ELSE
3009       msii_temp_data.ENFORCE_SHIP_TO_LOCATION_CODE := trim(msii_temp_data.ENFORCE_SHIP_TO_LOCATION_CODE);
3010    END IF;
3011    IF msii_temp_data.ALLOW_UNORDERED_RECEIPTS_FLAG IS NULL THEN
3012       msii_temp_data.ALLOW_UNORDERED_RECEIPTS_FLAG := msi_record_temp.ALLOW_UNORDERED_RECEIPTS_FLAG;
3013    ELSIF msii_temp_data.ALLOW_UNORDERED_RECEIPTS_FLAG    = '!' THEN
3014       msii_temp_data.ALLOW_UNORDERED_RECEIPTS_FLAG := NULL;
3015    ELSIF msii_temp_data.ALLOW_UNORDERED_RECEIPTS_FLAG    = g_FND_Upd_Null_Char THEN
3016       msii_temp_data.ALLOW_UNORDERED_RECEIPTS_FLAG := NULL;
3017    ELSE
3018       msii_temp_data.ALLOW_UNORDERED_RECEIPTS_FLAG := trim(msii_temp_data.ALLOW_UNORDERED_RECEIPTS_FLAG);
3019    END IF;
3020    IF msii_temp_data.DAYS_EARLY_RECEIPT_ALLOWED IS NULL THEN
3021       msii_temp_data.DAYS_EARLY_RECEIPT_ALLOWED := msi_record_temp.DAYS_EARLY_RECEIPT_ALLOWED;
3022    ELSIF msii_temp_data.DAYS_EARLY_RECEIPT_ALLOWED    = -999999 THEN
3023       msii_temp_data.DAYS_EARLY_RECEIPT_ALLOWED := NULL;
3024    ELSIF msii_temp_data.DAYS_EARLY_RECEIPT_ALLOWED    = g_FND_Upd_Null_NUM THEN
3025       msii_temp_data.DAYS_EARLY_RECEIPT_ALLOWED := NULL;
3026    END IF;
3027    IF msii_temp_data.DAYS_LATE_RECEIPT_ALLOWED IS NULL THEN
3028       msii_temp_data.DAYS_LATE_RECEIPT_ALLOWED := msi_record_temp.DAYS_LATE_RECEIPT_ALLOWED;
3029    ELSIF msii_temp_data.DAYS_LATE_RECEIPT_ALLOWED    = -999999 THEN
3030       msii_temp_data.DAYS_LATE_RECEIPT_ALLOWED := NULL;
3031    ELSIF msii_temp_data.DAYS_LATE_RECEIPT_ALLOWED    = g_FND_Upd_Null_NUM THEN
3032       msii_temp_data.DAYS_LATE_RECEIPT_ALLOWED := NULL;
3033    END IF;
3034    IF msii_temp_data.RECEIVING_ROUTING_ID IS NULL THEN
3035       msii_temp_data.RECEIVING_ROUTING_ID := msi_record_temp.RECEIVING_ROUTING_ID;
3036    ELSIF msii_temp_data.RECEIVING_ROUTING_ID    = -999999 THEN
3037       msii_temp_data.RECEIVING_ROUTING_ID := NULL;
3038    ELSIF msii_temp_data.RECEIVING_ROUTING_ID    = g_FND_Upd_Null_NUM THEN
3039       msii_temp_data.RECEIVING_ROUTING_ID := NULL;
3040    END IF;
3041    IF msii_temp_data.INVOICE_CLOSE_TOLERANCE IS NULL THEN
3042       msii_temp_data.INVOICE_CLOSE_TOLERANCE := msi_record_temp.INVOICE_CLOSE_TOLERANCE;
3043    ELSIF msii_temp_data.INVOICE_CLOSE_TOLERANCE    = -999999 THEN
3044       msii_temp_data.INVOICE_CLOSE_TOLERANCE := NULL;
3045    ELSIF msii_temp_data.INVOICE_CLOSE_TOLERANCE    = g_FND_Upd_Null_NUM THEN
3046       msii_temp_data.INVOICE_CLOSE_TOLERANCE := NULL;
3047    END IF;
3048    IF msii_temp_data.AUTO_LOT_ALPHA_PREFIX IS NULL THEN
3049       msii_temp_data.AUTO_LOT_ALPHA_PREFIX := msi_record_temp.AUTO_LOT_ALPHA_PREFIX;
3050    ELSIF msii_temp_data.AUTO_LOT_ALPHA_PREFIX    = '!' THEN
3051       msii_temp_data.AUTO_LOT_ALPHA_PREFIX := NULL;
3052    ELSIF msii_temp_data.AUTO_LOT_ALPHA_PREFIX    = g_FND_Upd_Null_Char THEN
3053       msii_temp_data.AUTO_LOT_ALPHA_PREFIX := NULL;
3054    ELSE
3055       msii_temp_data.AUTO_LOT_ALPHA_PREFIX := trim(msii_temp_data.AUTO_LOT_ALPHA_PREFIX);
3056    END IF;
3057    IF msii_temp_data.LOT_CONTROL_CODE is null then
3058       msii_temp_data.LOT_CONTROL_CODE := msi_record_temp.LOT_CONTROL_CODE;
3059    END IF;
3060    IF msii_temp_data.SHELF_LIFE_CODE is null then
3061       msii_temp_data.SHELF_LIFE_CODE := msi_record_temp.SHELF_LIFE_CODE;
3062    END IF;
3063    IF msii_temp_data.SHELF_LIFE_DAYS IS NULL THEN
3064       msii_temp_data.SHELF_LIFE_DAYS := msi_record_temp.SHELF_LIFE_DAYS;
3065    ELSIF msii_temp_data.SHELF_LIFE_DAYS    = -999999 THEN
3066       msii_temp_data.SHELF_LIFE_DAYS := NULL;
3067    ELSIF msii_temp_data.SHELF_LIFE_DAYS    = g_FND_Upd_Null_NUM THEN
3068       msii_temp_data.SHELF_LIFE_DAYS := NULL;
3069    END IF;
3070    IF msii_temp_data.START_AUTO_SERIAL_NUMBER IS NULL THEN
3071       msii_temp_data.START_AUTO_SERIAL_NUMBER := msi_record_temp.START_AUTO_SERIAL_NUMBER;
3072    ELSIF msii_temp_data.START_AUTO_SERIAL_NUMBER    = '!' THEN
3073       msii_temp_data.START_AUTO_SERIAL_NUMBER := NULL;
3074    ELSIF msii_temp_data.START_AUTO_SERIAL_NUMBER    = g_FND_Upd_Null_Char THEN
3075       msii_temp_data.START_AUTO_SERIAL_NUMBER := NULL;
3076    ELSE
3077       msii_temp_data.START_AUTO_SERIAL_NUMBER := trim(msii_temp_data.START_AUTO_SERIAL_NUMBER);
3078    END IF;
3079    IF msii_temp_data.SOURCE_TYPE IS NULL THEN
3080       msii_temp_data.SOURCE_TYPE := msi_record_temp.SOURCE_TYPE;
3081    ELSIF msii_temp_data.SOURCE_TYPE    = -999999 THEN
3082       msii_temp_data.SOURCE_TYPE := NULL;
3083    ELSIF msii_temp_data.SOURCE_TYPE    = g_FND_Upd_Null_NUM THEN
3084       msii_temp_data.SOURCE_TYPE := NULL;
3085    END IF;
3086    IF msii_temp_data.SOURCE_SUBINVENTORY IS NULL THEN
3087       msii_temp_data.SOURCE_SUBINVENTORY := msi_record_temp.SOURCE_SUBINVENTORY;
3088    ELSIF msii_temp_data.SOURCE_SUBINVENTORY    = '!' THEN
3089       msii_temp_data.SOURCE_SUBINVENTORY := NULL;
3090    ELSIF msii_temp_data.SOURCE_SUBINVENTORY    = g_FND_Upd_Null_Char THEN
3091       msii_temp_data.SOURCE_SUBINVENTORY := NULL;
3092    ELSE
3093       msii_temp_data.SOURCE_SUBINVENTORY := trim(msii_temp_data.SOURCE_SUBINVENTORY);
3094    END IF;
3095    IF msii_temp_data.EXPENSE_ACCOUNT IS NULL THEN
3096       msii_temp_data.EXPENSE_ACCOUNT := msi_record_temp.EXPENSE_ACCOUNT;
3097    ELSIF msii_temp_data.EXPENSE_ACCOUNT    = -999999 THEN
3098       msii_temp_data.EXPENSE_ACCOUNT := NULL;
3099    ELSIF msii_temp_data.EXPENSE_ACCOUNT    = g_FND_Upd_Null_NUM THEN
3100       msii_temp_data.EXPENSE_ACCOUNT := NULL;
3101    END IF;
3102    IF msii_temp_data.RESTRICT_SUBINVENTORIES_CODE is null then
3103       msii_temp_data.RESTRICT_SUBINVENTORIES_CODE := msi_record_temp.RESTRICT_SUBINVENTORIES_CODE;
3104    END IF;
3105    IF msii_temp_data.UNIT_WEIGHT IS NULL THEN
3106       msii_temp_data.UNIT_WEIGHT := msi_record_temp.UNIT_WEIGHT;
3107    ELSIF msii_temp_data.UNIT_WEIGHT    = -999999 THEN
3108       msii_temp_data.UNIT_WEIGHT := NULL;
3109    ELSIF msii_temp_data.UNIT_WEIGHT    = g_FND_Upd_Null_NUM THEN
3110       msii_temp_data.UNIT_WEIGHT := NULL;
3111    END IF;
3112    IF msii_temp_data.VOLUME_UOM_CODE IS NULL THEN
3113       msii_temp_data.VOLUME_UOM_CODE := msi_record_temp.VOLUME_UOM_CODE;
3114    ELSIF msii_temp_data.VOLUME_UOM_CODE    = '!' THEN
3115       msii_temp_data.VOLUME_UOM_CODE := NULL;
3116    ELSIF msii_temp_data.VOLUME_UOM_CODE    = g_FND_Upd_Null_Char THEN
3117       msii_temp_data.VOLUME_UOM_CODE := NULL;
3118    ELSE
3119       msii_temp_data.VOLUME_UOM_CODE := trim(msii_temp_data.VOLUME_UOM_CODE);
3120    END IF;
3121    IF msii_temp_data.UNIT_VOLUME IS NULL THEN
3122       msii_temp_data.UNIT_VOLUME := msi_record_temp.UNIT_VOLUME;
3123    ELSIF msii_temp_data.UNIT_VOLUME    = -999999 THEN
3124       msii_temp_data.UNIT_VOLUME := NULL;
3125    ELSIF msii_temp_data.UNIT_VOLUME    = g_FND_Upd_Null_NUM THEN
3126       msii_temp_data.UNIT_VOLUME := NULL;
3127    END IF;
3128    IF msii_temp_data.LOCATION_CONTROL_CODE is null then
3129       msii_temp_data.LOCATION_CONTROL_CODE := msi_record_temp.LOCATION_CONTROL_CODE;
3130    END IF;
3131    IF msii_temp_data.ACCEPTABLE_EARLY_DAYS IS NULL THEN
3132       msii_temp_data.ACCEPTABLE_EARLY_DAYS := msi_record_temp.ACCEPTABLE_EARLY_DAYS;
3133    ELSIF msii_temp_data.ACCEPTABLE_EARLY_DAYS    = -999999 THEN
3134       msii_temp_data.ACCEPTABLE_EARLY_DAYS := NULL;
3135    ELSIF msii_temp_data.ACCEPTABLE_EARLY_DAYS    = g_FND_Upd_Null_NUM THEN
3136       msii_temp_data.ACCEPTABLE_EARLY_DAYS := NULL;
3137    END IF;
3138    IF msii_temp_data.PLANNING_TIME_FENCE_CODE is null then
3139       msii_temp_data.PLANNING_TIME_FENCE_CODE := msi_record_temp.PLANNING_TIME_FENCE_CODE;
3140    END IF;
3141    IF msii_temp_data.OVERRUN_PERCENTAGE IS NULL THEN
3142       msii_temp_data.OVERRUN_PERCENTAGE := msi_record_temp.OVERRUN_PERCENTAGE;
3143    ELSIF msii_temp_data.OVERRUN_PERCENTAGE    = -999999 THEN
3144       msii_temp_data.OVERRUN_PERCENTAGE := NULL;
3145    ELSIF msii_temp_data.OVERRUN_PERCENTAGE    = g_FND_Upd_Null_NUM THEN
3146       msii_temp_data.OVERRUN_PERCENTAGE := NULL;
3147    END IF;
3148    IF msii_temp_data.MRP_CALCULATE_ATP_FLAG is null then
3149       msii_temp_data.MRP_CALCULATE_ATP_FLAG := msi_record_temp.MRP_CALCULATE_ATP_FLAG;
3150    END IF;
3151    IF msii_temp_data.ACCEPTABLE_RATE_INCREASE IS NULL THEN
3152       msii_temp_data.ACCEPTABLE_RATE_INCREASE := msi_record_temp.ACCEPTABLE_RATE_INCREASE;
3153    ELSIF msii_temp_data.ACCEPTABLE_RATE_INCREASE    = -999999 THEN
3154       msii_temp_data.ACCEPTABLE_RATE_INCREASE := NULL;
3155    ELSIF msii_temp_data.ACCEPTABLE_RATE_INCREASE    = g_FND_Upd_Null_NUM THEN
3156       msii_temp_data.ACCEPTABLE_RATE_INCREASE := NULL;
3157    END IF;
3158    IF msii_temp_data.ACCEPTABLE_RATE_DECREASE IS NULL THEN
3159       msii_temp_data.ACCEPTABLE_RATE_DECREASE := msi_record_temp.ACCEPTABLE_RATE_DECREASE;
3160    ELSIF msii_temp_data.ACCEPTABLE_RATE_DECREASE    = -999999 THEN
3161       msii_temp_data.ACCEPTABLE_RATE_DECREASE := NULL;
3162    ELSIF msii_temp_data.ACCEPTABLE_RATE_DECREASE    = g_FND_Upd_Null_NUM THEN
3163       msii_temp_data.ACCEPTABLE_RATE_DECREASE := NULL;
3164    END IF;
3165    IF msii_temp_data.CUMULATIVE_TOTAL_LEAD_TIME IS NULL THEN
3166       msii_temp_data.CUMULATIVE_TOTAL_LEAD_TIME := msi_record_temp.CUMULATIVE_TOTAL_LEAD_TIME;
3167    ELSIF msii_temp_data.CUMULATIVE_TOTAL_LEAD_TIME    = -999999 THEN
3168       msii_temp_data.CUMULATIVE_TOTAL_LEAD_TIME := NULL;
3169    ELSIF msii_temp_data.CUMULATIVE_TOTAL_LEAD_TIME    = g_FND_Upd_Null_NUM THEN
3170       msii_temp_data.CUMULATIVE_TOTAL_LEAD_TIME := NULL;
3171    END IF;
3172    IF msii_temp_data.PLANNING_TIME_FENCE_DAYS IS NULL THEN
3173       msii_temp_data.PLANNING_TIME_FENCE_DAYS := msi_record_temp.PLANNING_TIME_FENCE_DAYS;
3174    ELSIF msii_temp_data.PLANNING_TIME_FENCE_DAYS    = -999999 THEN
3175       msii_temp_data.PLANNING_TIME_FENCE_DAYS := NULL;
3176    ELSIF msii_temp_data.PLANNING_TIME_FENCE_DAYS    = g_FND_Upd_Null_NUM THEN
3177       msii_temp_data.PLANNING_TIME_FENCE_DAYS := NULL;
3178    END IF;
3179    IF msii_temp_data.RELEASE_TIME_FENCE_CODE IS NULL THEN
3180       msii_temp_data.RELEASE_TIME_FENCE_CODE := msi_record_temp.RELEASE_TIME_FENCE_CODE;
3181    ELSIF msii_temp_data.RELEASE_TIME_FENCE_CODE    = -999999 THEN
3182       msii_temp_data.RELEASE_TIME_FENCE_CODE := NULL;
3183    ELSIF msii_temp_data.RELEASE_TIME_FENCE_CODE    = g_FND_Upd_Null_NUM THEN
3184       msii_temp_data.RELEASE_TIME_FENCE_CODE := NULL;
3185    END IF;
3186    IF msii_temp_data.END_ASSEMBLY_PEGGING_FLAG IS NULL THEN
3187       msii_temp_data.END_ASSEMBLY_PEGGING_FLAG := msi_record_temp.END_ASSEMBLY_PEGGING_FLAG;
3188    ELSIF msii_temp_data.END_ASSEMBLY_PEGGING_FLAG    = '!' THEN
3189       msii_temp_data.END_ASSEMBLY_PEGGING_FLAG := NULL;
3190    ELSIF msii_temp_data.END_ASSEMBLY_PEGGING_FLAG    = g_FND_Upd_Null_Char THEN
3191       msii_temp_data.END_ASSEMBLY_PEGGING_FLAG := NULL;
3192    ELSE
3193       msii_temp_data.END_ASSEMBLY_PEGGING_FLAG := trim(msii_temp_data.END_ASSEMBLY_PEGGING_FLAG);
3194    END IF;
3195    IF trim(msii_temp_data.REPETITIVE_PLANNING_FLAG) is null then
3196       msii_temp_data.REPETITIVE_PLANNING_FLAG := msi_record_temp.REPETITIVE_PLANNING_FLAG;
3197    ELSE
3198       msii_temp_data.REPETITIVE_PLANNING_FLAG := trim(msii_temp_data.REPETITIVE_PLANNING_FLAG);
3199    END IF;
3200    IF msii_temp_data.BOM_ITEM_TYPE is null then
3201       msii_temp_data.BOM_ITEM_TYPE := msi_record_temp.BOM_ITEM_TYPE;
3202    END IF;
3203    IF trim(msii_temp_data.PICK_COMPONENTS_FLAG) is null then
3204       msii_temp_data.PICK_COMPONENTS_FLAG := msi_record_temp.PICK_COMPONENTS_FLAG;
3205    ELSE
3206       msii_temp_data.PICK_COMPONENTS_FLAG := trim(msii_temp_data.PICK_COMPONENTS_FLAG);
3207    END IF;
3208    IF trim(msii_temp_data.REPLENISH_TO_ORDER_FLAG) is null then
3209       msii_temp_data.REPLENISH_TO_ORDER_FLAG := msi_record_temp.REPLENISH_TO_ORDER_FLAG;
3210    ELSE
3211       msii_temp_data.REPLENISH_TO_ORDER_FLAG := trim(msii_temp_data.REPLENISH_TO_ORDER_FLAG);
3212    END IF;
3213    IF trim(msii_temp_data.ATP_COMPONENTS_FLAG) is null then
3214       msii_temp_data.ATP_COMPONENTS_FLAG := msi_record_temp.ATP_COMPONENTS_FLAG;
3215    END IF;
3216    IF trim(msii_temp_data.ATP_FLAG) is null then
3217       msii_temp_data.ATP_FLAG := msi_record_temp.ATP_FLAG;
3218    ELSE
3219       msii_temp_data.ATP_FLAG := trim(msii_temp_data.ATP_FLAG);
3220    END IF;
3221    IF msii_temp_data.VARIABLE_LEAD_TIME IS NULL THEN
3222       msii_temp_data.VARIABLE_LEAD_TIME := msi_record_temp.VARIABLE_LEAD_TIME;
3223    ELSIF msii_temp_data.VARIABLE_LEAD_TIME    = -999999 THEN
3224       msii_temp_data.VARIABLE_LEAD_TIME := NULL;
3225    ELSIF msii_temp_data.VARIABLE_LEAD_TIME    = g_FND_Upd_Null_NUM THEN
3226       msii_temp_data.VARIABLE_LEAD_TIME := NULL;
3227    END IF;
3228    IF msii_temp_data.WIP_SUPPLY_LOCATOR_ID IS NULL THEN
3229       msii_temp_data.WIP_SUPPLY_LOCATOR_ID := msi_record_temp.WIP_SUPPLY_LOCATOR_ID;
3230    ELSIF msii_temp_data.WIP_SUPPLY_LOCATOR_ID    = -999999 THEN
3231       msii_temp_data.WIP_SUPPLY_LOCATOR_ID := NULL;
3232    ELSIF msii_temp_data.WIP_SUPPLY_LOCATOR_ID    = g_FND_Upd_Null_NUM THEN
3233       msii_temp_data.WIP_SUPPLY_LOCATOR_ID := NULL;
3234    END IF;
3235    msii_temp_data.PRIMARY_UOM_CODE        := msi_record_temp.PRIMARY_UOM_CODE;
3236    msii_temp_data.PRIMARY_UNIT_OF_MEASURE := trim(msi_record_temp.PRIMARY_UNIT_OF_MEASURE);
3237    IF msii_temp_data.ALLOWED_UNITS_LOOKUP_CODE is null then
3238       msii_temp_data.ALLOWED_UNITS_LOOKUP_CODE := msi_record_temp.ALLOWED_UNITS_LOOKUP_CODE;
3239    END IF;
3240    IF msii_temp_data.COST_OF_SALES_ACCOUNT is null then
3241       msii_temp_data.COST_OF_SALES_ACCOUNT := msi_record_temp.COST_OF_SALES_ACCOUNT;
3242    END IF;
3243    IF msii_temp_data.SALES_ACCOUNT is null then
3244       msii_temp_data.SALES_ACCOUNT := msi_record_temp.SALES_ACCOUNT;
3245    END IF;
3246    IF msii_temp_data.INVENTORY_PLANNING_CODE is null then
3247       msii_temp_data.INVENTORY_PLANNING_CODE := msi_record_temp.INVENTORY_PLANNING_CODE;
3248    END IF;
3249    IF msii_temp_data.PLANNING_MAKE_BUY_CODE is null then
3250       msii_temp_data.PLANNING_MAKE_BUY_CODE := msi_record_temp.PLANNING_MAKE_BUY_CODE;
3251    END IF;
3252    IF msii_temp_data.FIXED_LOT_MULTIPLIER IS NULL THEN
3253       msii_temp_data.FIXED_LOT_MULTIPLIER := msi_record_temp.FIXED_LOT_MULTIPLIER;
3254    ELSIF msii_temp_data.FIXED_LOT_MULTIPLIER    = -999999 THEN
3255       msii_temp_data.FIXED_LOT_MULTIPLIER := NULL;
3256    ELSIF msii_temp_data.FIXED_LOT_MULTIPLIER    = g_FND_Upd_Null_NUM THEN
3257       msii_temp_data.FIXED_LOT_MULTIPLIER := NULL;
3258    END IF;
3259    IF msii_temp_data.CARRYING_COST IS NULL THEN
3260       msii_temp_data.CARRYING_COST := msi_record_temp.CARRYING_COST;
3261    ELSIF msii_temp_data.CARRYING_COST    = -999999 THEN
3262       msii_temp_data.CARRYING_COST := NULL;
3263    ELSIF msii_temp_data.CARRYING_COST    = g_FND_Upd_Null_NUM THEN
3264       msii_temp_data.CARRYING_COST := NULL;
3265    END IF;
3266    IF msii_temp_data.PREPROCESSING_LEAD_TIME IS NULL THEN
3267       msii_temp_data.PREPROCESSING_LEAD_TIME := msi_record_temp.PREPROCESSING_LEAD_TIME;
3268    ELSIF msii_temp_data.PREPROCESSING_LEAD_TIME    = -999999 THEN
3269       msii_temp_data.PREPROCESSING_LEAD_TIME := NULL;
3270    ELSIF msii_temp_data.PREPROCESSING_LEAD_TIME    = g_FND_Upd_Null_NUM THEN
3271       msii_temp_data.PREPROCESSING_LEAD_TIME := NULL;
3272    END IF;
3273    IF msii_temp_data.ORDER_COST IS NULL THEN
3274       msii_temp_data.ORDER_COST := msi_record_temp.ORDER_COST;
3275    ELSIF msii_temp_data.ORDER_COST    = -999999 THEN
3276       msii_temp_data.ORDER_COST := NULL;
3277    ELSIF msii_temp_data.ORDER_COST    = g_FND_Upd_Null_NUM THEN
3278       msii_temp_data.ORDER_COST := NULL;
3279    END IF;
3280    IF msii_temp_data.MRP_SAFETY_STOCK_CODE is null then
3281       msii_temp_data.MRP_SAFETY_STOCK_CODE := msi_record_temp.MRP_SAFETY_STOCK_CODE;
3282    END IF;
3283    IF msii_temp_data.MINIMUM_ORDER_QUANTITY IS NULL THEN
3284       msii_temp_data.MINIMUM_ORDER_QUANTITY := msi_record_temp.MINIMUM_ORDER_QUANTITY;
3285    ELSIF msii_temp_data.MINIMUM_ORDER_QUANTITY    = -999999 THEN
3286       msii_temp_data.MINIMUM_ORDER_QUANTITY := NULL;
3287    ELSIF msii_temp_data.MINIMUM_ORDER_QUANTITY    = g_FND_Upd_Null_NUM THEN
3288       msii_temp_data.MINIMUM_ORDER_QUANTITY := NULL;
3289 
3290    END IF;
3291    IF msii_temp_data.FIXED_DAYS_SUPPLY IS NULL THEN
3292       msii_temp_data.FIXED_DAYS_SUPPLY := msi_record_temp.FIXED_DAYS_SUPPLY;
3293    ELSIF msii_temp_data.FIXED_DAYS_SUPPLY    = -999999 THEN
3294       msii_temp_data.FIXED_DAYS_SUPPLY := NULL;
3295    ELSIF msii_temp_data.FIXED_DAYS_SUPPLY    = g_FND_Upd_Null_NUM THEN
3296       msii_temp_data.FIXED_DAYS_SUPPLY := NULL;
3297    END IF;
3298    IF msii_temp_data.MAXIMUM_ORDER_QUANTITY IS NULL THEN
3299       msii_temp_data.MAXIMUM_ORDER_QUANTITY := msi_record_temp.MAXIMUM_ORDER_QUANTITY;
3300    ELSIF msii_temp_data.MAXIMUM_ORDER_QUANTITY    = -999999 THEN
3301       msii_temp_data.MAXIMUM_ORDER_QUANTITY := NULL;
3302    ELSIF msii_temp_data.MAXIMUM_ORDER_QUANTITY    = g_FND_Upd_Null_NUM THEN
3303       msii_temp_data.MAXIMUM_ORDER_QUANTITY := NULL;
3304    END IF;
3305    IF msii_temp_data.PICKING_RULE_ID IS NULL THEN
3306       msii_temp_data.PICKING_RULE_ID := msi_record_temp.PICKING_RULE_ID;
3307    ELSIF msii_temp_data.PICKING_RULE_ID    = -999999 THEN
3308       msii_temp_data.PICKING_RULE_ID := NULL;
3309    ELSIF msii_temp_data.PICKING_RULE_ID    = g_FND_Upd_Null_NUM THEN
3310       msii_temp_data.PICKING_RULE_ID := NULL;
3311    END IF;
3312    IF msii_temp_data.RESERVABLE_TYPE is null then
3313       msii_temp_data.RESERVABLE_TYPE := msi_record_temp.RESERVABLE_TYPE;
3314    END IF;
3315    IF msii_temp_data.NEGATIVE_MEASUREMENT_ERROR IS NULL THEN
3316       msii_temp_data.NEGATIVE_MEASUREMENT_ERROR := msi_record_temp.NEGATIVE_MEASUREMENT_ERROR;
3317    ELSIF msii_temp_data.NEGATIVE_MEASUREMENT_ERROR    = -999999 THEN
3318       msii_temp_data.NEGATIVE_MEASUREMENT_ERROR := NULL;
3319    ELSIF msii_temp_data.NEGATIVE_MEASUREMENT_ERROR    = g_FND_Upd_Null_NUM THEN
3320       msii_temp_data.NEGATIVE_MEASUREMENT_ERROR := NULL;
3321    END IF;
3322    IF trim(msii_temp_data.ENGINEERING_ECN_CODE) is null then
3323       msii_temp_data.ENGINEERING_ECN_CODE := msi_record_temp.ENGINEERING_ECN_CODE;
3324    ELSE
3325       msii_temp_data.ENGINEERING_ECN_CODE := trim(msii_temp_data.ENGINEERING_ECN_CODE);
3326    END IF;
3327    IF msii_temp_data.ENGINEERING_DATE is null then
3328       msii_temp_data.ENGINEERING_DATE := msi_record_temp.ENGINEERING_DATE;
3329    END IF;
3330    IF trim(msii_temp_data.SERVICEABLE_COMPONENT_FLAG) is null then
3331       msii_temp_data.SERVICEABLE_COMPONENT_FLAG := msi_record_temp.SERVICEABLE_COMPONENT_FLAG;
3332    ELSE
3333       msii_temp_data.SERVICEABLE_COMPONENT_FLAG := trim(msii_temp_data.SERVICEABLE_COMPONENT_FLAG);
3334    END IF;
3335    IF trim(msii_temp_data.SERVICEABLE_PRODUCT_FLAG) is null then
3336       msii_temp_data.SERVICEABLE_PRODUCT_FLAG := msi_record_temp.SERVICEABLE_PRODUCT_FLAG;
3337    ELSE
3338       msii_temp_data.SERVICEABLE_PRODUCT_FLAG := trim(msii_temp_data.SERVICEABLE_PRODUCT_FLAG);
3339    END IF;
3340    IF msii_temp_data.BASE_WARRANTY_SERVICE_ID is null then
3341       msii_temp_data.BASE_WARRANTY_SERVICE_ID := msi_record_temp.BASE_WARRANTY_SERVICE_ID;
3342    END IF;
3343    IF trim(msii_temp_data.PREVENTIVE_MAINTENANCE_FLAG) is null then
3344       msii_temp_data.PREVENTIVE_MAINTENANCE_FLAG := msi_record_temp.PREVENTIVE_MAINTENANCE_FLAG;
3345    ELSE
3346       msii_temp_data.PREVENTIVE_MAINTENANCE_FLAG := trim(msii_temp_data.PREVENTIVE_MAINTENANCE_FLAG);
3347    END IF;
3348    IF msii_temp_data.PRIMARY_SPECIALIST_ID is null then
3349       msii_temp_data.PRIMARY_SPECIALIST_ID := msi_record_temp.PRIMARY_SPECIALIST_ID;
3350    END IF;
3351    IF msii_temp_data.SERVICEABLE_ITEM_CLASS_ID is null then
3352       msii_temp_data.SERVICEABLE_ITEM_CLASS_ID := msi_record_temp.SERVICEABLE_ITEM_CLASS_ID;
3353    END IF;
3354    IF trim(msii_temp_data.TIME_BILLABLE_FLAG) is null then
3355       msii_temp_data.TIME_BILLABLE_FLAG := msi_record_temp.TIME_BILLABLE_FLAG;
3356    ELSE
3357       msii_temp_data.TIME_BILLABLE_FLAG := trim(msii_temp_data.TIME_BILLABLE_FLAG);
3358    END IF;
3359    IF trim(msii_temp_data.EXPENSE_BILLABLE_FLAG) is null then
3360       msii_temp_data.EXPENSE_BILLABLE_FLAG := msi_record_temp.EXPENSE_BILLABLE_FLAG;
3361    ELSE
3362       msii_temp_data.EXPENSE_BILLABLE_FLAG := trim(msii_temp_data.EXPENSE_BILLABLE_FLAG);
3363    END IF;
3364    IF trim(msii_temp_data.PRORATE_SERVICE_FLAG) is null then
3365       msii_temp_data.PRORATE_SERVICE_FLAG := msi_record_temp.PRORATE_SERVICE_FLAG;
3366    ELSE
3367       msii_temp_data.PRORATE_SERVICE_FLAG := trim(msii_temp_data.PRORATE_SERVICE_FLAG);
3368    END IF;
3369    IF msii_temp_data.SERVICE_DURATION_PERIOD_CODE IS NULL THEN
3370       msii_temp_data.SERVICE_DURATION_PERIOD_CODE := msi_record_temp.SERVICE_DURATION_PERIOD_CODE;
3371    ELSIF msii_temp_data.SERVICE_DURATION_PERIOD_CODE    = '!' THEN
3372       msii_temp_data.SERVICE_DURATION_PERIOD_CODE := NULL;
3373    ELSIF msii_temp_data.SERVICE_DURATION_PERIOD_CODE    = g_FND_Upd_Null_Char THEN
3374       msii_temp_data.SERVICE_DURATION_PERIOD_CODE := NULL;
3375    ELSE
3376       msii_temp_data.SERVICE_DURATION_PERIOD_CODE := trim(msii_temp_data.SERVICE_DURATION_PERIOD_CODE);
3377    END IF;
3378    IF msii_temp_data.SERVICE_DURATION IS NULL THEN
3379       msii_temp_data.SERVICE_DURATION := msi_record_temp.SERVICE_DURATION;
3380    ELSIF msii_temp_data.SERVICE_DURATION    = -999999 THEN
3381       msii_temp_data.SERVICE_DURATION := NULL;
3382    ELSIF msii_temp_data.SERVICE_DURATION    = g_FND_Upd_Null_NUM THEN
3383       msii_temp_data.SERVICE_DURATION := NULL;
3384    END IF;
3385    IF msii_temp_data.MAX_WARRANTY_AMOUNT is null then
3386       msii_temp_data.MAX_WARRANTY_AMOUNT := msi_record_temp.MAX_WARRANTY_AMOUNT;
3387    END IF;
3388    IF msii_temp_data.RESPONSE_TIME_VALUE is null then
3389       msii_temp_data.RESPONSE_TIME_VALUE := msi_record_temp.RESPONSE_TIME_VALUE;
3390    END IF;
3391    IF trim(msii_temp_data.NEW_REVISION_CODE) is null then
3392       msii_temp_data.NEW_REVISION_CODE := msi_record_temp.NEW_REVISION_CODE;
3393    ELSE
3394       msii_temp_data.NEW_REVISION_CODE := trim(msii_temp_data.NEW_REVISION_CODE);
3395    END IF;
3396    IF trim(msii_temp_data.INVOICEABLE_ITEM_FLAG) is null then
3397       msii_temp_data.INVOICEABLE_ITEM_FLAG := msi_record_temp.INVOICEABLE_ITEM_FLAG;
3398    ELSE
3399       msii_temp_data.INVOICEABLE_ITEM_FLAG := trim(msii_temp_data.INVOICEABLE_ITEM_FLAG);
3400    END IF;
3401    IF trim(msii_temp_data.INVOICE_ENABLED_FLAG) is null then
3402       IF msii_temp_data.inventory_item_status_code is null then
3403          msii_temp_data.INVOICE_ENABLED_FLAG := msi_record_temp.INVOICE_ENABLED_FLAG;
3404       END IF;
3405    ELSE
3406       msii_temp_data.INVOICE_ENABLED_FLAG := trim(msii_temp_data.INVOICE_ENABLED_FLAG);
3407    END IF;
3408    IF msii_temp_data.REQUEST_ID is null then
3409       msii_temp_data.REQUEST_ID := msi_record_temp.REQUEST_ID;
3410    END IF;
3411    IF msii_temp_data.PROGRAM_ID is null then
3412       msii_temp_data.PROGRAM_ID := msi_record_temp.PROGRAM_ID;
3413    END IF;
3414    IF msii_temp_data.PROGRAM_UPDATE_DATE is null then
3415       msii_temp_data.PROGRAM_UPDATE_DATE := msi_record_temp.PROGRAM_UPDATE_DATE;
3416    END IF;
3417    IF msii_temp_data.OUTSIDE_OPERATION_UOM_TYPE IS NULL THEN
3418       msii_temp_data.OUTSIDE_OPERATION_UOM_TYPE := msi_record_temp.OUTSIDE_OPERATION_UOM_TYPE;
3419    ELSIF msii_temp_data.OUTSIDE_OPERATION_UOM_TYPE    = '!' THEN
3420       msii_temp_data.OUTSIDE_OPERATION_UOM_TYPE := NULL;
3421    ELSIF msii_temp_data.OUTSIDE_OPERATION_UOM_TYPE    = g_FND_Upd_Null_Char THEN
3422       msii_temp_data.OUTSIDE_OPERATION_UOM_TYPE := NULL;
3423    ELSE
3424       msii_temp_data.OUTSIDE_OPERATION_UOM_TYPE := trim(msii_temp_data.OUTSIDE_OPERATION_UOM_TYPE);
3425    END IF;
3426    IF trim(msii_temp_data.COSTING_ENABLED_FLAG) is null then
3427       msii_temp_data.COSTING_ENABLED_FLAG := msi_record_temp.COSTING_ENABLED_FLAG;
3428    ELSE
3429       msii_temp_data.COSTING_ENABLED_FLAG := trim(msii_temp_data.COSTING_ENABLED_FLAG);
3430    END IF;
3431    IF trim(msii_temp_data.CYCLE_COUNT_ENABLED_FLAG) is null then
3432       msii_temp_data.CYCLE_COUNT_ENABLED_FLAG := msi_record_temp.CYCLE_COUNT_ENABLED_FLAG;
3433    ELSE
3434       msii_temp_data.CYCLE_COUNT_ENABLED_FLAG := trim(msii_temp_data.CYCLE_COUNT_ENABLED_FLAG);
3435    END IF;
3436    IF msii_temp_data.ITEM_TYPE IS NULL THEN
3437       msii_temp_data.ITEM_TYPE := msi_record_temp.ITEM_TYPE;
3438    ELSIF msii_temp_data.ITEM_TYPE    = '!' THEN
3439       msii_temp_data.ITEM_TYPE := NULL;
3440    ELSIF msii_temp_data.ITEM_TYPE    = g_FND_Upd_Null_Char THEN
3441       msii_temp_data.ITEM_TYPE := NULL;
3442    ELSE
3443       msii_temp_data.ITEM_TYPE := trim(msii_temp_data.ITEM_TYPE);
3444    END IF;
3445    IF trim(msii_temp_data.MODEL_CONFIG_CLAUSE_NAME) is null then
3446       msii_temp_data.MODEL_CONFIG_CLAUSE_NAME := msi_record_temp.MODEL_CONFIG_CLAUSE_NAME;
3447    ELSE
3448       msii_temp_data.MODEL_CONFIG_CLAUSE_NAME := trim(msii_temp_data.MODEL_CONFIG_CLAUSE_NAME);
3449    END IF;
3450    IF msii_temp_data.MRP_PLANNING_CODE is null then
3451       msii_temp_data.MRP_PLANNING_CODE := msi_record_temp.MRP_PLANNING_CODE;
3452    END IF;
3453    IF msii_temp_data.RETURN_INSPECTION_REQUIREMENT is null then
3454       msii_temp_data.RETURN_INSPECTION_REQUIREMENT := msi_record_temp.RETURN_INSPECTION_REQUIREMENT;
3455    END IF;
3456    IF trim(msii_temp_data.CONTAINER_ITEM_FLAG) is null then
3457       msii_temp_data.CONTAINER_ITEM_FLAG := msi_record_temp.CONTAINER_ITEM_FLAG;
3458    ELSE
3459       msii_temp_data.CONTAINER_ITEM_FLAG := trim(msii_temp_data.CONTAINER_ITEM_FLAG);
3460    END IF;
3461    IF trim(msii_temp_data.VEHICLE_ITEM_FLAG) is null then
3462       msii_temp_data.VEHICLE_ITEM_FLAG := msi_record_temp.VEHICLE_ITEM_FLAG;
3463    ELSE
3464       msii_temp_data.VEHICLE_ITEM_FLAG := trim(msii_temp_data.VEHICLE_ITEM_FLAG);
3465    END IF;
3466    IF msii_temp_data.MINIMUM_FILL_PERCENT IS NULL THEN
3467       msii_temp_data.MINIMUM_FILL_PERCENT := msi_record_temp.MINIMUM_FILL_PERCENT;
3468    ELSIF msii_temp_data.MINIMUM_FILL_PERCENT    = -999999 THEN
3469       msii_temp_data.MINIMUM_FILL_PERCENT := NULL;
3470    ELSIF msii_temp_data.MINIMUM_FILL_PERCENT    = g_FND_Upd_Null_NUM THEN
3471       msii_temp_data.MINIMUM_FILL_PERCENT := NULL;
3472    END IF;
3473    IF msii_temp_data.CONTAINER_TYPE_CODE IS NULL THEN
3474       msii_temp_data.CONTAINER_TYPE_CODE := msi_record_temp.CONTAINER_TYPE_CODE;
3475    ELSIF msii_temp_data.CONTAINER_TYPE_CODE    = '!' THEN
3476       msii_temp_data.CONTAINER_TYPE_CODE := NULL;
3477    ELSIF msii_temp_data.CONTAINER_TYPE_CODE    = g_FND_Upd_Null_Char THEN
3478       msii_temp_data.CONTAINER_TYPE_CODE := NULL;
3479    ELSE
3480       msii_temp_data.CONTAINER_TYPE_CODE := trim(msii_temp_data.CONTAINER_TYPE_CODE);
3481    END IF;
3482    IF trim(msii_temp_data.CHECK_SHORTAGES_FLAG) is null then
3483       msii_temp_data.CHECK_SHORTAGES_FLAG := msi_record_temp.CHECK_SHORTAGES_FLAG;
3484    END IF;
3485    IF msii_temp_data. EFFECTIVITY_CONTROL is null then
3486       msii_temp_data.EFFECTIVITY_CONTROL := msi_record_temp.EFFECTIVITY_CONTROL;
3487    END IF;
3488    IF msii_temp_data.OVERCOMPLETION_TOLERANCE_VALUE IS NULL THEN
3489       msii_temp_data.OVERCOMPLETION_TOLERANCE_VALUE := msi_record_temp.OVERCOMPLETION_TOLERANCE_VALUE;
3490    ELSIF msii_temp_data.OVERCOMPLETION_TOLERANCE_VALUE    = g_Upd_Null_NUM THEN
3491       msii_temp_data.OVERCOMPLETION_TOLERANCE_VALUE := NULL;
3492    ELSIF msii_temp_data.OVERCOMPLETION_TOLERANCE_VALUE    = g_FND_Upd_Null_NUM THEN
3493       msii_temp_data.OVERCOMPLETION_TOLERANCE_VALUE := NULL;
3494    END IF;
3495    IF msii_temp_data.UNDER_SHIPMENT_TOLERANCE IS NULL THEN
3496       msii_temp_data.UNDER_SHIPMENT_TOLERANCE := msi_record_temp.UNDER_SHIPMENT_TOLERANCE;
3497    ELSIF msii_temp_data.UNDER_SHIPMENT_TOLERANCE    = g_Upd_Null_NUM THEN
3498       msii_temp_data.UNDER_SHIPMENT_TOLERANCE := NULL;
3499    ELSIF msii_temp_data.UNDER_SHIPMENT_TOLERANCE    = g_FND_Upd_Null_NUM THEN
3500       msii_temp_data.UNDER_SHIPMENT_TOLERANCE := NULL;
3501    END IF;
3502    IF msii_temp_data.OVER_RETURN_TOLERANCE IS NULL THEN
3503       msii_temp_data.OVER_RETURN_TOLERANCE := msi_record_temp.OVER_RETURN_TOLERANCE;
3504    ELSIF msii_temp_data.OVER_RETURN_TOLERANCE    = g_Upd_Null_NUM THEN
3505       msii_temp_data.OVER_RETURN_TOLERANCE := NULL;
3506    ELSIF msii_temp_data.OVER_RETURN_TOLERANCE    = g_FND_Upd_Null_NUM THEN
3507       msii_temp_data.OVER_RETURN_TOLERANCE := NULL;
3508    END IF;
3509    IF msii_temp_data. EQUIPMENT_TYPE is null then
3510       msii_temp_data.EQUIPMENT_TYPE := msi_record_temp.EQUIPMENT_TYPE;
3511    END IF;
3512    IF msii_temp_data.RECOVERED_PART_DISP_CODE IS NULL THEN
3513       msii_temp_data.RECOVERED_PART_DISP_CODE := msi_record_temp.RECOVERED_PART_DISP_CODE;
3514    ELSIF msii_temp_data.RECOVERED_PART_DISP_CODE    = '!' THEN
3515       msii_temp_data.RECOVERED_PART_DISP_CODE := NULL;
3516    ELSIF msii_temp_data.RECOVERED_PART_DISP_CODE    = g_FND_Upd_Null_Char THEN
3517       msii_temp_data.RECOVERED_PART_DISP_CODE := NULL;
3518    ELSE
3519       msii_temp_data.RECOVERED_PART_DISP_CODE := trim(msii_temp_data.RECOVERED_PART_DISP_CODE);
3520    END IF;
3521    IF trim(msii_temp_data.EVENT_FLAG) is null then
3522       msii_temp_data.EVENT_FLAG := msi_record_temp.EVENT_FLAG;
3523    END IF;
3524    IF trim(msii_temp_data.ELECTRONIC_FLAG) is null then
3525       msii_temp_data.ELECTRONIC_FLAG := msi_record_temp.ELECTRONIC_FLAG;
3526    END IF;
3527    IF trim(msii_temp_data.VOL_DISCOUNT_EXEMPT_FLAG) is null then
3528       msii_temp_data.VOL_DISCOUNT_EXEMPT_FLAG := msi_record_temp.VOL_DISCOUNT_EXEMPT_FLAG;
3529    END IF;
3530    IF trim(msii_temp_data.COUPON_EXEMPT_FLAG) is null then
3531       msii_temp_data.COUPON_EXEMPT_FLAG := msi_record_temp.COUPON_EXEMPT_FLAG;
3532    END IF;
3533    IF msii_temp_data.ASSET_CREATION_CODE IS NULL THEN
3534       msii_temp_data.ASSET_CREATION_CODE := msi_record_temp.ASSET_CREATION_CODE;
3535    ELSIF msii_temp_data.ASSET_CREATION_CODE    = '!' THEN
3536       msii_temp_data.ASSET_CREATION_CODE := NULL;
3537    ELSIF msii_temp_data.ASSET_CREATION_CODE    = g_FND_Upd_Null_Char THEN
3538       msii_temp_data.ASSET_CREATION_CODE := NULL;
3539    ELSE
3540       msii_temp_data.ASSET_CREATION_CODE := trim(msii_temp_data.ASSET_CREATION_CODE);
3541    END IF;
3542    IF trim(msii_temp_data.ORDERABLE_ON_WEB_FLAG) is null then
3543       msii_temp_data.ORDERABLE_ON_WEB_FLAG := msi_record_temp.ORDERABLE_ON_WEB_FLAG;
3544    END IF;
3545    IF trim(msii_temp_data.BACK_ORDERABLE_FLAG) is null then
3546       msii_temp_data.BACK_ORDERABLE_FLAG := msi_record_temp.BACK_ORDERABLE_FLAG;
3547    END IF;
3548    IF trim(msii_temp_data.INDIVISIBLE_FLAG) is null then
3549       msii_temp_data.INDIVISIBLE_FLAG := msi_record_temp.INDIVISIBLE_FLAG;
3550    END IF;
3551    IF msii_temp_data.UNIT_LENGTH IS NULL THEN
3552       msii_temp_data.UNIT_LENGTH := msi_record_temp.UNIT_LENGTH;
3553    ELSIF msii_temp_data.UNIT_LENGTH    = g_Upd_Null_NUM THEN
3554       msii_temp_data.UNIT_LENGTH := NULL;
3555    ELSIF msii_temp_data.UNIT_LENGTH    = g_FND_Upd_Null_NUM THEN
3556       msii_temp_data.UNIT_LENGTH := NULL;
3557    END IF;
3558    IF msii_temp_data.UNIT_WIDTH IS NULL THEN
3559       msii_temp_data.UNIT_WIDTH := msi_record_temp.UNIT_WIDTH;
3560    ELSIF msii_temp_data.UNIT_WIDTH    = g_Upd_Null_NUM THEN
3561       msii_temp_data.UNIT_WIDTH := NULL;
3562    ELSIF msii_temp_data.UNIT_WIDTH    = g_FND_Upd_Null_NUM THEN
3563       msii_temp_data.UNIT_WIDTH := NULL;
3564    END IF;
3565    IF trim(msii_temp_data.BULK_PICKED_FLAG) is null then
3566       msii_temp_data.BULK_PICKED_FLAG := msi_record_temp.BULK_PICKED_FLAG;
3567    END IF;
3568    IF trim(msii_temp_data.LOT_STATUS_ENABLED) is null then
3569       msii_temp_data.LOT_STATUS_ENABLED := msi_record_temp.LOT_STATUS_ENABLED;
3570    END IF;
3571    IF trim(msii_temp_data.SERIAL_STATUS_ENABLED) is null then
3572       msii_temp_data.SERIAL_STATUS_ENABLED := msi_record_temp.SERIAL_STATUS_ENABLED;
3573    END IF;
3574    IF trim(msii_temp_data.LOT_SPLIT_ENABLED) is null then
3575       msii_temp_data.LOT_SPLIT_ENABLED := msi_record_temp.LOT_SPLIT_ENABLED;
3576    END IF;
3577    IF trim(msii_temp_data.LOT_MERGE_ENABLED) is null then
3578       msii_temp_data.LOT_MERGE_ENABLED := msi_record_temp.LOT_MERGE_ENABLED;
3579    END IF;
3580    IF msii_temp_data.OPERATION_SLACK_PENALTY IS NULL THEN
3581       msii_temp_data.OPERATION_SLACK_PENALTY := msi_record_temp.OPERATION_SLACK_PENALTY;
3582    ELSIF msii_temp_data.OPERATION_SLACK_PENALTY    = g_Upd_Null_NUM THEN
3583       msii_temp_data.OPERATION_SLACK_PENALTY := NULL;
3584    ELSIF msii_temp_data.OPERATION_SLACK_PENALTY    = g_FND_Upd_Null_NUM THEN
3585       msii_temp_data.OPERATION_SLACK_PENALTY := NULL;
3586    END IF;
3587    IF trim(msii_temp_data.FINANCING_ALLOWED_FLAG) is null then
3588       msii_temp_data.FINANCING_ALLOWED_FLAG := msi_record_temp.FINANCING_ALLOWED_FLAG;
3589    END IF;
3590    IF msii_temp_data.EAM_ACTIVITY_TYPE_CODE IS NULL THEN
3591       msii_temp_data.EAM_ACTIVITY_TYPE_CODE := msi_record_temp.EAM_ACTIVITY_TYPE_CODE;
3592    ELSIF msii_temp_data.EAM_ACTIVITY_TYPE_CODE    = g_Upd_Null_CHAR THEN
3593       msii_temp_data.EAM_ACTIVITY_TYPE_CODE := NULL;
3594    ELSIF msii_temp_data.EAM_ACTIVITY_TYPE_CODE    = g_FND_Upd_Null_Char THEN
3595       msii_temp_data.EAM_ACTIVITY_TYPE_CODE := NULL;
3596    ELSE
3597       msii_temp_data.EAM_ACTIVITY_TYPE_CODE := trim(msii_temp_data.EAM_ACTIVITY_TYPE_CODE);
3598    END IF;
3599    IF msii_temp_data.EAM_ACT_NOTIFICATION_FLAG IS NULL THEN
3600       msii_temp_data.EAM_ACT_NOTIFICATION_FLAG := msi_record_temp.EAM_ACT_NOTIFICATION_FLAG ;
3601    ELSIF msii_temp_data.EAM_ACT_NOTIFICATION_FLAG    = g_Upd_Null_CHAR THEN
3602       msii_temp_data.EAM_ACT_NOTIFICATION_FLAG := NULL;
3603    ELSIF msii_temp_data.EAM_ACT_NOTIFICATION_FLAG    = g_FND_Upd_Null_Char THEN
3604       msii_temp_data.EAM_ACT_NOTIFICATION_FLAG := NULL;
3605    ELSE
3606       msii_temp_data.EAM_ACT_NOTIFICATION_FLAG := trim(msii_temp_data.EAM_ACT_NOTIFICATION_FLAG);
3607    END IF;
3608    IF msii_temp_data.DUAL_UOM_CONTROL is null then
3609       msii_temp_data.DUAL_UOM_CONTROL := msi_record_temp.DUAL_UOM_CONTROL;
3610    END IF;
3611 
3612    msii_temp_data.SECONDARY_UOM_CODE      :=  trim(msi_record_temp.SECONDARY_UOM_CODE);
3613    msii_temp_data.DUAL_UOM_DEVIATION_HIGH := msi_record_temp.DUAL_UOM_DEVIATION_HIGH;
3614    msii_temp_data.DUAL_UOM_DEVIATION_LOW  := msi_record_temp.DUAL_UOM_DEVIATION_LOW;
3615 
3616    IF msii_temp_data.SUBSCRIPTION_DEPEND_FLAG IS NULL THEN
3617       msii_temp_data.SUBSCRIPTION_DEPEND_FLAG := msi_record_temp.SUBSCRIPTION_DEPEND_FLAG;
3618    ELSIF msii_temp_data.SUBSCRIPTION_DEPEND_FLAG    = g_Upd_Null_CHAR THEN
3619       msii_temp_data.SUBSCRIPTION_DEPEND_FLAG := NULL;
3620    ELSIF msii_temp_data.SUBSCRIPTION_DEPEND_FLAG    = g_FND_Upd_Null_Char THEN
3621       msii_temp_data.SUBSCRIPTION_DEPEND_FLAG := NULL;
3622    ELSE
3623       msii_temp_data.SUBSCRIPTION_DEPEND_FLAG := trim(msii_temp_data.SUBSCRIPTION_DEPEND_FLAG);
3624    END IF;
3625    IF msii_temp_data.SERV_BILLING_ENABLED_FLAG IS NULL THEN
3626       msii_temp_data.SERV_BILLING_ENABLED_FLAG := msi_record_temp.SERV_BILLING_ENABLED_FLAG;
3627    ELSIF msii_temp_data.SERV_BILLING_ENABLED_FLAG    = g_Upd_Null_CHAR THEN
3628       msii_temp_data.SERV_BILLING_ENABLED_FLAG := NULL;
3629    ELSIF msii_temp_data.SERV_BILLING_ENABLED_FLAG    = g_FND_Upd_Null_Char THEN
3630       msii_temp_data.SERV_BILLING_ENABLED_FLAG := NULL;
3631    ELSE
3632       msii_temp_data.SERV_BILLING_ENABLED_FLAG := trim(msii_temp_data.SERV_BILLING_ENABLED_FLAG);
3633    END IF;
3634    IF msii_temp_data.SERV_IMPORTANCE_LEVEL IS NULL THEN
3635       msii_temp_data.SERV_IMPORTANCE_LEVEL := msi_record_temp.SERV_IMPORTANCE_LEVEL;
3636    ELSIF msii_temp_data.SERV_IMPORTANCE_LEVEL    = g_Upd_Null_NUM THEN
3637       msii_temp_data.SERV_IMPORTANCE_LEVEL := NULL;
3638    ELSIF msii_temp_data.SERV_IMPORTANCE_LEVEL    = g_FND_Upd_Null_NUM THEN
3639       msii_temp_data.SERV_IMPORTANCE_LEVEL := NULL;
3640    END IF;
3641    IF msii_temp_data.LOT_TRANSLATE_ENABLED IS NULL THEN
3642       msii_temp_data.LOT_TRANSLATE_ENABLED := msi_record_temp.LOT_TRANSLATE_ENABLED;
3643    ELSIF msii_temp_data.LOT_TRANSLATE_ENABLED    = g_Upd_Null_CHAR THEN
3644       msii_temp_data.LOT_TRANSLATE_ENABLED := NULL;
3645    ELSIF msii_temp_data.LOT_TRANSLATE_ENABLED    = g_FND_Upd_Null_Char THEN
3646       msii_temp_data.LOT_TRANSLATE_ENABLED := NULL;
3647    ELSE
3648       msii_temp_data.LOT_TRANSLATE_ENABLED := trim(msii_temp_data.LOT_TRANSLATE_ENABLED);
3649    END IF;
3650    IF msii_temp_data.CREATE_SUPPLY_FLAG IS NULL THEN
3651       msii_temp_data.CREATE_SUPPLY_FLAG := msi_record_temp.CREATE_SUPPLY_FLAG;
3652    ELSIF msii_temp_data.CREATE_SUPPLY_FLAG    = g_Upd_Null_CHAR THEN
3653       msii_temp_data.CREATE_SUPPLY_FLAG := NULL;
3654    ELSIF msii_temp_data.CREATE_SUPPLY_FLAG    = g_FND_Upd_Null_Char THEN
3655       msii_temp_data.CREATE_SUPPLY_FLAG := NULL;
3656    ELSE
3657       msii_temp_data.CREATE_SUPPLY_FLAG := trim(msii_temp_data.CREATE_SUPPLY_FLAG);
3658    END IF;
3659    IF msii_temp_data.SUBSTITUTION_WINDOW_DAYS IS NULL THEN
3660       msii_temp_data.SUBSTITUTION_WINDOW_DAYS := msi_record_temp.SUBSTITUTION_WINDOW_DAYS;
3661    ELSIF msii_temp_data.SUBSTITUTION_WINDOW_DAYS    = g_Upd_Null_NUM THEN
3662       msii_temp_data.SUBSTITUTION_WINDOW_DAYS := NULL;
3663    ELSIF msii_temp_data.SUBSTITUTION_WINDOW_DAYS    = g_FND_Upd_Null_NUM THEN
3664       msii_temp_data.SUBSTITUTION_WINDOW_DAYS := NULL;
3665    END IF;
3666    IF msii_temp_data.LOT_SUBSTITUTION_ENABLED IS NULL THEN
3667       msii_temp_data.LOT_SUBSTITUTION_ENABLED := msi_record_temp.LOT_SUBSTITUTION_ENABLED;
3668    ELSIF msii_temp_data.LOT_SUBSTITUTION_ENABLED    = g_Upd_Null_CHAR THEN
3669       msii_temp_data.LOT_SUBSTITUTION_ENABLED := NULL;
3670    ELSIF msii_temp_data.LOT_SUBSTITUTION_ENABLED    = g_FND_Upd_Null_Char THEN
3671       msii_temp_data.LOT_SUBSTITUTION_ENABLED := NULL;
3672    ELSE
3673       msii_temp_data.LOT_SUBSTITUTION_ENABLED := trim(msii_temp_data.LOT_SUBSTITUTION_ENABLED);
3674    END IF;
3675    IF msii_temp_data.EAM_ACTIVITY_SOURCE_CODE IS NULL THEN
3676       msii_temp_data.EAM_ACTIVITY_SOURCE_CODE := msi_record_temp.EAM_ACTIVITY_SOURCE_CODE;
3677    ELSIF msii_temp_data.EAM_ACTIVITY_SOURCE_CODE    = g_Upd_Null_CHAR THEN
3678       msii_temp_data.EAM_ACTIVITY_SOURCE_CODE := NULL;
3679    ELSIF msii_temp_data.EAM_ACTIVITY_SOURCE_CODE    = g_FND_Upd_Null_Char THEN
3680       msii_temp_data.EAM_ACTIVITY_SOURCE_CODE := NULL;
3681    ELSE
3682       msii_temp_data.EAM_ACTIVITY_SOURCE_CODE := trim(msii_temp_data.EAM_ACTIVITY_SOURCE_CODE);
3683    END IF;
3684    IF msii_temp_data.CONFIG_MODEL_TYPE IS NULL THEN
3685       msii_temp_data.CONFIG_MODEL_TYPE := msi_record_temp.CONFIG_MODEL_TYPE;
3686    ELSIF msii_temp_data.CONFIG_MODEL_TYPE    = g_Upd_Null_CHAR THEN
3687       msii_temp_data.CONFIG_MODEL_TYPE := NULL;
3688    ELSIF msii_temp_data.CONFIG_MODEL_TYPE    = g_FND_Upd_Null_Char THEN
3689       msii_temp_data.CONFIG_MODEL_TYPE := NULL;
3690    ELSE
3691       msii_temp_data.CONFIG_MODEL_TYPE := trim(msii_temp_data.CONFIG_MODEL_TYPE);
3692    END IF;
3693    msii_temp_data.TRACKING_QUANTITY_IND  := trim(msi_record_temp.TRACKING_QUANTITY_IND);
3694    msii_temp_data.ONT_PRICING_QTY_SOURCE := trim(msi_record_temp.ONT_PRICING_QTY_SOURCE);
3695    msii_temp_data.SECONDARY_DEFAULT_IND  := trim(msi_record_temp.SECONDARY_DEFAULT_IND);
3696    IF msii_temp_data.CONFIG_MATCH IS NULL THEN
3697       msii_temp_data.CONFIG_MATCH := msi_record_temp.CONFIG_MATCH;
3698    ELSIF msii_temp_data.CONFIG_MATCH    = g_Upd_Null_CHAR THEN
3699       msii_temp_data.CONFIG_MATCH := NULL;
3700    ELSIF msii_temp_data.CONFIG_MATCH    = g_FND_Upd_Null_Char THEN
3701       msii_temp_data.CONFIG_MATCH := NULL;
3702    ELSE
3703       msii_temp_data.CONFIG_MATCH := trim(msii_temp_data.CONFIG_MATCH);
3704    END IF;
3705    IF msii_temp_data.CURRENT_PHASE_ID IS NULL THEN
3706       msii_temp_data.CURRENT_PHASE_ID := msi_record_temp.CURRENT_PHASE_ID;
3707    ELSIF msii_temp_data.CURRENT_PHASE_ID    = -999999 THEN
3708       msii_temp_data.CURRENT_PHASE_ID := NULL;
3709    ELSIF msii_temp_data.CURRENT_PHASE_ID    = g_FND_Upd_Null_NUM THEN
3710       msii_temp_data.CURRENT_PHASE_ID := NULL;
3711    END IF;
3712    IF msii_temp_data.VMI_MINIMUM_DAYS IS NULL THEN
3713       msii_temp_data.VMI_MINIMUM_DAYS := msi_record_temp.VMI_MINIMUM_DAYS;
3714    ELSIF msii_temp_data.VMI_MINIMUM_DAYS    = g_Upd_Null_NUM THEN
3715       msii_temp_data.VMI_MINIMUM_DAYS := NULL;
3716    ELSIF msii_temp_data.VMI_MINIMUM_DAYS    = g_FND_Upd_Null_NUM THEN
3717       msii_temp_data.VMI_MINIMUM_DAYS := NULL;
3718    END IF;
3719    IF msii_temp_data.VMI_MAXIMUM_DAYS IS NULL THEN
3720       msii_temp_data.VMI_MAXIMUM_DAYS := msi_record_temp.VMI_MAXIMUM_DAYS;
3721    ELSIF msii_temp_data.VMI_MAXIMUM_DAYS    = g_Upd_Null_NUM THEN
3722       msii_temp_data.VMI_MAXIMUM_DAYS := NULL;
3723    ELSIF msii_temp_data.VMI_MAXIMUM_DAYS    = g_FND_Upd_Null_NUM THEN
3724       msii_temp_data.VMI_MAXIMUM_DAYS := NULL;
3725    END IF;
3726    IF msii_temp_data.SO_AUTHORIZATION_FLAG IS NULL THEN
3727       msii_temp_data.SO_AUTHORIZATION_FLAG := msi_record_temp.SO_AUTHORIZATION_FLAG;
3728    ELSIF msii_temp_data.SO_AUTHORIZATION_FLAG    = g_Upd_Null_NUM THEN
3729       msii_temp_data.SO_AUTHORIZATION_FLAG := NULL;
3730    ELSIF msii_temp_data.SO_AUTHORIZATION_FLAG    = g_FND_Upd_Null_NUM THEN
3731       msii_temp_data.SO_AUTHORIZATION_FLAG := NULL;
3732    END IF;
3733    IF msii_temp_data.CONSIGNED_FLAG IS NULL THEN
3734       msii_temp_data.CONSIGNED_FLAG := msi_record_temp.CONSIGNED_FLAG;
3735    ELSIF msii_temp_data.CONSIGNED_FLAG    = g_Upd_Null_NUM THEN
3736       msii_temp_data.CONSIGNED_FLAG := NULL;
3737    ELSIF msii_temp_data.CONSIGNED_FLAG    = g_FND_Upd_Null_NUM THEN
3738       msii_temp_data.CONSIGNED_FLAG := NULL;
3739    END IF;
3740    IF msii_temp_data.FORECAST_HORIZON IS NULL THEN
3741       msii_temp_data.FORECAST_HORIZON := msi_record_temp.FORECAST_HORIZON;
3742    ELSIF msii_temp_data.FORECAST_HORIZON    = g_Upd_Null_NUM THEN
3743       msii_temp_data.FORECAST_HORIZON := NULL;
3744    ELSIF msii_temp_data.FORECAST_HORIZON    = g_FND_Upd_Null_NUM THEN
3745       msii_temp_data.FORECAST_HORIZON := NULL;
3746    END IF;
3747    IF msii_temp_data.DAYS_TGT_INV_SUPPLY IS NULL THEN
3748       msii_temp_data.DAYS_TGT_INV_SUPPLY := msi_record_temp.DAYS_TGT_INV_SUPPLY;
3749    ELSIF msii_temp_data.DAYS_TGT_INV_SUPPLY    = g_Upd_Null_NUM THEN
3750       msii_temp_data.DAYS_TGT_INV_SUPPLY := NULL;
3751    ELSIF msii_temp_data.DAYS_TGT_INV_SUPPLY    = g_FND_Upd_Null_NUM THEN
3752       msii_temp_data.DAYS_TGT_INV_SUPPLY := NULL;
3753    END IF;
3754    IF msii_temp_data.DAYS_TGT_INV_WINDOW IS NULL THEN
3755       msii_temp_data.DAYS_TGT_INV_WINDOW := msi_record_temp.DAYS_TGT_INV_WINDOW;
3756    ELSIF msii_temp_data.DAYS_TGT_INV_WINDOW    = g_Upd_Null_NUM THEN
3757       msii_temp_data.DAYS_TGT_INV_WINDOW := NULL;
3758    ELSIF msii_temp_data.DAYS_TGT_INV_WINDOW    = g_FND_Upd_Null_NUM THEN
3759       msii_temp_data.DAYS_TGT_INV_WINDOW := NULL;
3760    END IF;
3761    IF msii_temp_data.OVER_SHIPMENT_TOLERANCE IS NULL THEN
3762       msii_temp_data.OVER_SHIPMENT_TOLERANCE := msi_record_temp.OVER_SHIPMENT_TOLERANCE;
3763    ELSIF msii_temp_data.OVER_SHIPMENT_TOLERANCE    = g_Upd_Null_NUM THEN
3764       msii_temp_data.OVER_SHIPMENT_TOLERANCE := NULL;
3765    ELSIF msii_temp_data.OVER_SHIPMENT_TOLERANCE    = g_FND_Upd_Null_NUM THEN
3766       msii_temp_data.OVER_SHIPMENT_TOLERANCE := NULL;
3767    END IF;
3768    IF msii_temp_data.UNDER_RETURN_TOLERANCE IS NULL THEN
3769       msii_temp_data.UNDER_RETURN_TOLERANCE := msi_record_temp.UNDER_RETURN_TOLERANCE;
3770    ELSIF msii_temp_data.UNDER_RETURN_TOLERANCE    = g_Upd_Null_NUM THEN
3771       msii_temp_data.UNDER_RETURN_TOLERANCE := NULL;
3772    ELSIF msii_temp_data.UNDER_RETURN_TOLERANCE    = g_FND_Upd_Null_NUM THEN
3773       msii_temp_data.UNDER_RETURN_TOLERANCE := NULL;
3774    END IF;
3775    IF trim(msii_temp_data.DEFECT_TRACKING_ON_FLAG) is null then
3776       msii_temp_data.DEFECT_TRACKING_ON_FLAG := msi_record_temp.DEFECT_TRACKING_ON_FLAG;
3777    END IF;
3778    IF trim(msii_temp_data.DOWNLOADABLE_FLAG) is null then
3779       msii_temp_data.DOWNLOADABLE_FLAG := msi_record_temp.DOWNLOADABLE_FLAG;
3780    END IF;
3781    IF trim(msii_temp_data.COMMS_NL_TRACKABLE_FLAG) is null then
3782       msii_temp_data.COMMS_NL_TRACKABLE_FLAG := msi_record_temp.COMMS_NL_TRACKABLE_FLAG;
3783    END IF;
3784    IF trim(msii_temp_data.COMMS_ACTIVATION_REQD_FLAG) is null then
3785       msii_temp_data.COMMS_ACTIVATION_REQD_FLAG := msi_record_temp.COMMS_ACTIVATION_REQD_FLAG;
3786    END IF;
3787    IF trim(msii_temp_data.WEB_STATUS) is null then
3788       msii_temp_data.WEB_STATUS := msi_record_temp.WEB_STATUS;
3789    ELSE
3790       msii_temp_data.WEB_STATUS := trim(msii_temp_data.WEB_STATUS);
3791    END IF;
3792    IF msii_temp_data.DIMENSION_UOM_CODE IS NULL THEN
3793       msii_temp_data.DIMENSION_UOM_CODE := msi_record_temp.DIMENSION_UOM_CODE;
3794    ELSIF msii_temp_data.DIMENSION_UOM_CODE    = '!' THEN
3795       msii_temp_data.DIMENSION_UOM_CODE := NULL;
3796    ELSIF msii_temp_data.DIMENSION_UOM_CODE    = g_FND_Upd_Null_Char THEN
3797       msii_temp_data.DIMENSION_UOM_CODE := NULL;
3798    ELSE
3799       msii_temp_data.DIMENSION_UOM_CODE := trim(msii_temp_data.DIMENSION_UOM_CODE);
3800    END IF;
3801    IF msii_temp_data.UNIT_HEIGHT IS NULL THEN
3802       msii_temp_data.UNIT_HEIGHT := msi_record_temp.UNIT_HEIGHT;
3803    ELSIF msii_temp_data.UNIT_HEIGHT    = g_Upd_Null_NUM THEN
3804       msii_temp_data.UNIT_HEIGHT := NULL;
3805    ELSIF msii_temp_data.UNIT_HEIGHT    = g_FND_Upd_Null_NUM THEN
3806       msii_temp_data.UNIT_HEIGHT := NULL;
3807    END IF;
3808    IF msii_temp_data.DEFAULT_LOT_STATUS_ID IS NULL THEN
3809       msii_temp_data.DEFAULT_LOT_STATUS_ID := msi_record_temp.DEFAULT_LOT_STATUS_ID;
3810    ELSIF msii_temp_data.DEFAULT_LOT_STATUS_ID    = g_Upd_Null_NUM THEN
3811       msii_temp_data.DEFAULT_LOT_STATUS_ID := NULL;
3812    ELSIF msii_temp_data.DEFAULT_LOT_STATUS_ID    = g_FND_Upd_Null_NUM THEN
3813       msii_temp_data.DEFAULT_LOT_STATUS_ID := NULL;
3814    END IF;
3815    IF msii_temp_data.INVENTORY_CARRY_PENALTY IS NULL THEN
3816       msii_temp_data.INVENTORY_CARRY_PENALTY := msi_record_temp.INVENTORY_CARRY_PENALTY;
3817    ELSIF msii_temp_data.INVENTORY_CARRY_PENALTY    = g_Upd_Null_NUM THEN
3818       msii_temp_data.INVENTORY_CARRY_PENALTY := NULL;
3819    ELSIF msii_temp_data.INVENTORY_CARRY_PENALTY    = g_FND_Upd_Null_NUM THEN
3820       msii_temp_data.INVENTORY_CARRY_PENALTY := NULL;
3821    END IF;
3822    IF msii_temp_data.EAM_ITEM_TYPE IS NULL THEN
3823       msii_temp_data.EAM_ITEM_TYPE := msi_record_temp.EAM_ITEM_TYPE;
3824    ELSIF msii_temp_data.EAM_ITEM_TYPE    = g_Upd_Null_NUM THEN
3825       msii_temp_data.EAM_ITEM_TYPE := NULL;
3826    ELSIF msii_temp_data.EAM_ITEM_TYPE    = g_FND_Upd_Null_NUM THEN
3827       msii_temp_data.EAM_ITEM_TYPE := NULL;
3828    END IF;
3829    IF msii_temp_data.EAM_ACTIVITY_CAUSE_CODE IS NULL THEN
3830       msii_temp_data.EAM_ACTIVITY_CAUSE_CODE := msi_record_temp.EAM_ACTIVITY_CAUSE_CODE;
3831    ELSIF msii_temp_data.EAM_ACTIVITY_CAUSE_CODE    = g_Upd_Null_CHAR THEN
3832       msii_temp_data.EAM_ACTIVITY_CAUSE_CODE := NULL;
3833    ELSIF msii_temp_data.EAM_ACTIVITY_CAUSE_CODE    = g_FND_Upd_Null_Char THEN
3834       msii_temp_data.EAM_ACTIVITY_CAUSE_CODE := NULL;
3835    ELSE
3836       msii_temp_data.EAM_ACTIVITY_CAUSE_CODE := trim(msii_temp_data.EAM_ACTIVITY_CAUSE_CODE);
3837    END IF;
3838    IF msii_temp_data.EAM_ACT_SHUTDOWN_STATUS IS NULL THEN
3839       msii_temp_data.EAM_ACT_SHUTDOWN_STATUS := msi_record_temp.EAM_ACT_SHUTDOWN_STATUS;
3840    ELSIF msii_temp_data.EAM_ACT_SHUTDOWN_STATUS    = g_Upd_Null_CHAR THEN
3841       msii_temp_data.EAM_ACT_SHUTDOWN_STATUS := NULL;
3842    ELSIF msii_temp_data.EAM_ACT_SHUTDOWN_STATUS    = g_FND_Upd_Null_Char THEN
3843       msii_temp_data.EAM_ACT_SHUTDOWN_STATUS := NULL;
3844    ELSE
3845       msii_temp_data.EAM_ACT_SHUTDOWN_STATUS := trim(msii_temp_data.EAM_ACT_SHUTDOWN_STATUS);
3846    END IF;
3847    IF msii_temp_data.CONTRACT_ITEM_TYPE_CODE IS NULL THEN
3848       msii_temp_data.CONTRACT_ITEM_TYPE_CODE := msi_record_temp.CONTRACT_ITEM_TYPE_CODE;
3849    ELSIF msii_temp_data.CONTRACT_ITEM_TYPE_CODE    = g_Upd_Null_CHAR THEN
3850       msii_temp_data.CONTRACT_ITEM_TYPE_CODE := NULL;
3851    ELSIF msii_temp_data.CONTRACT_ITEM_TYPE_CODE    = g_FND_Upd_Null_Char THEN
3852       msii_temp_data.CONTRACT_ITEM_TYPE_CODE := NULL;
3853    ELSE
3854       msii_temp_data.CONTRACT_ITEM_TYPE_CODE := trim(msii_temp_data.CONTRACT_ITEM_TYPE_CODE);
3855    END IF;
3856    IF msii_temp_data.SERV_REQ_ENABLED_CODE IS NULL THEN
3857       msii_temp_data.SERV_REQ_ENABLED_CODE := msi_record_temp.SERV_REQ_ENABLED_CODE;
3858    ELSIF msii_temp_data.SERV_REQ_ENABLED_CODE    = g_Upd_Null_CHAR THEN
3859       msii_temp_data.SERV_REQ_ENABLED_CODE := NULL;
3860    ELSIF msii_temp_data.SERV_REQ_ENABLED_CODE    = g_FND_Upd_Null_Char THEN
3861       msii_temp_data.SERV_REQ_ENABLED_CODE := NULL;
3862    ELSE
3863       msii_temp_data.SERV_REQ_ENABLED_CODE := trim(msii_temp_data.SERV_REQ_ENABLED_CODE);
3864    END IF;
3865    IF msii_temp_data.PLANNED_INV_POINT_FLAG IS NULL THEN
3866       msii_temp_data.PLANNED_INV_POINT_FLAG := msi_record_temp.PLANNED_INV_POINT_FLAG;
3867    ELSIF msii_temp_data.PLANNED_INV_POINT_FLAG    = g_Upd_Null_CHAR THEN
3868       msii_temp_data.PLANNED_INV_POINT_FLAG := NULL;
3869    ELSIF msii_temp_data.PLANNED_INV_POINT_FLAG    = g_FND_Upd_Null_Char THEN
3870       msii_temp_data.PLANNED_INV_POINT_FLAG := NULL;
3871    ELSE
3872       msii_temp_data.PLANNED_INV_POINT_FLAG := trim(msii_temp_data.PLANNED_INV_POINT_FLAG);
3873    END IF;
3874    IF msii_temp_data.DEFAULT_SO_SOURCE_TYPE IS NULL THEN
3875       msii_temp_data.DEFAULT_SO_SOURCE_TYPE := msi_record_temp.DEFAULT_SO_SOURCE_TYPE;
3876    ELSIF msii_temp_data.DEFAULT_SO_SOURCE_TYPE    = g_Upd_Null_CHAR THEN
3877       msii_temp_data.DEFAULT_SO_SOURCE_TYPE := NULL;
3878    ELSIF msii_temp_data.DEFAULT_SO_SOURCE_TYPE    = g_FND_Upd_Null_Char THEN
3879       msii_temp_data.DEFAULT_SO_SOURCE_TYPE := NULL;
3880    ELSE
3881       msii_temp_data.DEFAULT_SO_SOURCE_TYPE := trim(msii_temp_data.DEFAULT_SO_SOURCE_TYPE);
3882    END IF;
3883    IF msii_temp_data.SUBSTITUTION_WINDOW_CODE IS NULL THEN
3884       msii_temp_data.SUBSTITUTION_WINDOW_CODE := msi_record_temp.SUBSTITUTION_WINDOW_CODE;
3885    ELSIF msii_temp_data.SUBSTITUTION_WINDOW_CODE    = g_Upd_Null_NUM THEN
3886       msii_temp_data.SUBSTITUTION_WINDOW_CODE := NULL;
3887    ELSIF msii_temp_data.SUBSTITUTION_WINDOW_CODE    = g_FND_Upd_Null_NUM THEN
3888       msii_temp_data.SUBSTITUTION_WINDOW_CODE := NULL;
3889    END IF;
3890    IF msii_temp_data.MINIMUM_LICENSE_QUANTITY IS NULL THEN
3891       msii_temp_data.MINIMUM_LICENSE_QUANTITY := msi_record_temp.MINIMUM_LICENSE_QUANTITY;
3892    ELSIF msii_temp_data.MINIMUM_LICENSE_QUANTITY    = -999999 THEN
3893       msii_temp_data.MINIMUM_LICENSE_QUANTITY := NULL;
3894    ELSIF msii_temp_data.MINIMUM_LICENSE_QUANTITY    = g_FND_Upd_Null_NUM THEN
3895       msii_temp_data.MINIMUM_LICENSE_QUANTITY := NULL;
3896    END IF;
3897    IF msii_temp_data.IB_ITEM_INSTANCE_CLASS IS NULL THEN
3898       msii_temp_data.IB_ITEM_INSTANCE_CLASS := msi_record_temp.IB_ITEM_INSTANCE_CLASS;
3899    ELSIF msii_temp_data.IB_ITEM_INSTANCE_CLASS    = g_Upd_Null_CHAR THEN
3900       msii_temp_data.IB_ITEM_INSTANCE_CLASS := NULL;
3901    ELSIF msii_temp_data.IB_ITEM_INSTANCE_CLASS    = g_FND_Upd_Null_Char THEN
3902       msii_temp_data.IB_ITEM_INSTANCE_CLASS := NULL;
3903    ELSE
3904       msii_temp_data.IB_ITEM_INSTANCE_CLASS := trim(msii_temp_data.IB_ITEM_INSTANCE_CLASS);
3905    END IF;
3906    IF msii_temp_data.CONFIG_ORGS IS NULL THEN
3907       msii_temp_data.CONFIG_ORGS := msi_record_temp.CONFIG_ORGS;
3908    ELSIF msii_temp_data.CONFIG_ORGS    = g_Upd_Null_CHAR THEN
3909       msii_temp_data.CONFIG_ORGS := NULL;
3910    ELSIF msii_temp_data.CONFIG_ORGS    = g_FND_Upd_Null_Char THEN
3911       msii_temp_data.CONFIG_ORGS := NULL;
3912    ELSE
3913       msii_temp_data.CONFIG_ORGS := trim(msii_temp_data.CONFIG_ORGS);
3914    END IF;
3915    IF msii_temp_data.LIFECYCLE_ID IS NULL THEN
3916       msii_temp_data.LIFECYCLE_ID := msi_record_temp.LIFECYCLE_ID;
3917    ELSIF msii_temp_data.LIFECYCLE_ID    = -999999 THEN
3918       msii_temp_data.LIFECYCLE_ID := NULL;
3919    ELSIF msii_temp_data.LIFECYCLE_ID    = g_FND_Upd_Null_NUM THEN
3920       msii_temp_data.LIFECYCLE_ID := NULL;
3921    END IF;
3922    IF msii_temp_data.VMI_MINIMUM_UNITS IS NULL THEN
3923       msii_temp_data.VMI_MINIMUM_UNITS := msi_record_temp.VMI_MINIMUM_UNITS;
3924    ELSIF msii_temp_data.VMI_MINIMUM_UNITS    = g_Upd_Null_NUM THEN
3925       msii_temp_data.VMI_MINIMUM_UNITS := NULL;
3926    ELSIF msii_temp_data.VMI_MINIMUM_UNITS    = g_FND_Upd_Null_NUM THEN
3927       msii_temp_data.VMI_MINIMUM_UNITS := NULL;
3928    END IF;
3929    IF msii_temp_data.VMI_MAXIMUM_UNITS IS NULL THEN
3930       msii_temp_data.VMI_MAXIMUM_UNITS := msi_record_temp.VMI_MAXIMUM_UNITS;
3931    ELSIF msii_temp_data.VMI_MAXIMUM_UNITS    = g_Upd_Null_NUM THEN
3932       msii_temp_data.VMI_MAXIMUM_UNITS := NULL;
3933    ELSIF msii_temp_data.VMI_MAXIMUM_UNITS    = g_FND_Upd_Null_NUM THEN
3934       msii_temp_data.VMI_MAXIMUM_UNITS := NULL;
3935    END IF;
3936    IF msii_temp_data.VMI_FIXED_ORDER_QUANTITY IS NULL THEN
3937       msii_temp_data.VMI_FIXED_ORDER_QUANTITY := msi_record_temp.VMI_FIXED_ORDER_QUANTITY;
3938    ELSIF msii_temp_data.VMI_FIXED_ORDER_QUANTITY    = g_Upd_Null_NUM THEN
3939       msii_temp_data.VMI_FIXED_ORDER_QUANTITY := NULL;
3940    ELSIF msii_temp_data.VMI_FIXED_ORDER_QUANTITY    = g_FND_Upd_Null_NUM THEN
3941       msii_temp_data.VMI_FIXED_ORDER_QUANTITY := NULL;
3942    END IF;
3943    IF msii_temp_data.VMI_FORECAST_TYPE IS NULL THEN
3944       msii_temp_data.VMI_FORECAST_TYPE := msi_record_temp.VMI_FORECAST_TYPE;
3945    ELSIF msii_temp_data.VMI_FORECAST_TYPE    = g_Upd_Null_NUM THEN
3946       msii_temp_data.VMI_FORECAST_TYPE := NULL;
3947    ELSIF msii_temp_data.VMI_FORECAST_TYPE    = g_FND_Upd_Null_NUM THEN
3948       msii_temp_data.VMI_FORECAST_TYPE := NULL;
3949    END IF;
3950    IF msii_temp_data.EXCLUDE_FROM_BUDGET_FLAG IS NULL THEN
3951       msii_temp_data.EXCLUDE_FROM_BUDGET_FLAG := msi_record_temp.EXCLUDE_FROM_BUDGET_FLAG;
3952    ELSIF msii_temp_data.EXCLUDE_FROM_BUDGET_FLAG    = g_Upd_Null_NUM THEN
3953       msii_temp_data.EXCLUDE_FROM_BUDGET_FLAG := NULL;
3954    ELSIF msii_temp_data.EXCLUDE_FROM_BUDGET_FLAG    = g_FND_Upd_Null_NUM THEN
3955       msii_temp_data.EXCLUDE_FROM_BUDGET_FLAG := NULL;
3956    END IF;
3957    IF msii_temp_data.DAYS_MAX_INV_SUPPLY IS NULL THEN
3958       msii_temp_data.DAYS_MAX_INV_SUPPLY := msi_record_temp.DAYS_MAX_INV_SUPPLY;
3959    ELSIF msii_temp_data.DAYS_MAX_INV_SUPPLY    = g_Upd_Null_NUM THEN
3960       msii_temp_data.DAYS_MAX_INV_SUPPLY := NULL;
3961    ELSIF msii_temp_data.DAYS_MAX_INV_SUPPLY    = g_FND_Upd_Null_NUM THEN
3962       msii_temp_data.DAYS_MAX_INV_SUPPLY := NULL;
3963    END IF;
3964    IF trim(msii_temp_data.INVENTORY_ITEM_STATUS_CODE) is null then
3965       msii_temp_data.INVENTORY_ITEM_STATUS_CODE := msi_record_temp.INVENTORY_ITEM_STATUS_CODE;
3966    ELSE
3967       msii_temp_data.INVENTORY_ITEM_STATUS_CODE := trim(msii_temp_data.INVENTORY_ITEM_STATUS_CODE);
3968    END IF;
3969    /* R12 FPC Attributes */
3970    IF msii_temp_data.STYLE_ITEM_ID IS NULL THEN
3971       msii_temp_data.STYLE_ITEM_ID :=  msi_record_temp.STYLE_ITEM_ID;
3972    ELSIF msii_temp_data.STYLE_ITEM_ID = g_Upd_Null_NUM THEN
3973       msii_temp_data.STYLE_ITEM_ID :=  NULL;
3974    ELSIF msii_temp_data.STYLE_ITEM_ID = g_FND_Upd_Null_NUM THEN
3975       msii_temp_data.STYLE_ITEM_ID :=  NULL;
3976    END IF;
3977 
3978    IF trim(msii_temp_data.STYLE_ITEM_FLAG) IS NULL THEN
3979       msii_temp_data.STYLE_ITEM_FLAG :=  msi_record_temp.STYLE_ITEM_FLAG;
3980    ELSIF msii_temp_data.STYLE_ITEM_FLAG = g_Upd_Null_CHAR THEN
3981       msii_temp_data.STYLE_ITEM_FLAG :=  NULL;
3982    ELSIF msii_temp_data.STYLE_ITEM_FLAG = g_FND_Upd_Null_CHAR THEN
3983       msii_temp_data.STYLE_ITEM_FLAG :=  NULL;
3984    ELSE
3985       msii_temp_data.STYLE_ITEM_FLAG := trim(msii_temp_data.STYLE_ITEM_FLAG);
3986    END IF;
3987 
3988    IF trim(msii_temp_data.GDSN_OUTBOUND_ENABLED_FLAG) IS NULL THEN
3989       msii_temp_data.GDSN_OUTBOUND_ENABLED_FLAG := msi_record_temp.GDSN_OUTBOUND_ENABLED_FLAG;
3990    ELSIF msii_temp_data.GDSN_OUTBOUND_ENABLED_FLAG = g_Upd_Null_CHAR THEN
3991       msii_temp_data.GDSN_OUTBOUND_ENABLED_FLAG :=  NULL;
3992    ELSIF msii_temp_data.GDSN_OUTBOUND_ENABLED_FLAG = g_FND_Upd_Null_CHAR THEN
3993       msii_temp_data.GDSN_OUTBOUND_ENABLED_FLAG :=  NULL;
3994    ELSE
3995       msii_temp_data.GDSN_OUTBOUND_ENABLED_FLAG := trim(msii_temp_data.GDSN_OUTBOUND_ENABLED_FLAG);
3996    END IF;
3997 
3998    IF trim(msii_temp_data.TRADE_ITEM_DESCRIPTOR) IS NULL THEN
3999       IF ( msi_record_temp.TRADE_ITEM_DESCRIPTOR IS NULL AND msii_temp_data.GDSN_OUTBOUND_ENABLED_FLAG = 'Y' ) THEN --BUG 6455261
4000          --Retrieve default value for Trade Item Descriptor
4001          OPEN  c_trade_item_default;
4002          FETCH c_trade_item_default INTO msii_temp_data.TRADE_ITEM_DESCRIPTOR;
4003          CLOSE c_trade_item_default;
4004       ELSE
4005          msii_temp_data.TRADE_ITEM_DESCRIPTOR := msi_record_temp.TRADE_ITEM_DESCRIPTOR;
4006       END IF;
4007    ELSIF msii_temp_data.TRADE_ITEM_DESCRIPTOR = g_Upd_Null_CHAR THEN
4008       msii_temp_data.TRADE_ITEM_DESCRIPTOR :=  NULL;
4009    ELSIF msii_temp_data.TRADE_ITEM_DESCRIPTOR = g_FND_Upd_Null_CHAR THEN
4010       msii_temp_data.TRADE_ITEM_DESCRIPTOR :=  NULL;
4011    ELSE
4012       msii_temp_data.TRADE_ITEM_DESCRIPTOR := trim(msii_temp_data.TRADE_ITEM_DESCRIPTOR);
4013    END IF;
4014 
4015 
4016    UPDATE MTL_SYSTEM_ITEMS_INTERFACE SET ROW = msii_temp_data WHERE ROWID = row_id;
4017 
4018    -- End 5565453 : Perf issue reducing the shared memory
4019 
4020    RETURN (0);
4021 
4022 EXCEPTION
4023 
4024    WHEN OTHERS THEN
4025       IF l_inv_debug_level IN(101, 102) THEN
4026          INVPUTLI.info('when OTHERS exception raised in copy_msi_to_msii');
4027       END IF;
4028       RETURN(1);
4029 
4030 END copy_msi_to_msii; -- }
4031 
4032 
4033 FUNCTION mtl_pr_validate_item_update
4034 (
4035 	org_id          NUMBER,
4036 	all_org         NUMBER          := 2,
4037 	prog_appid      NUMBER          := -1,
4038 	prog_id         NUMBER          := -1,
4039 	request_id      NUMBER          := -1,
4040 	user_id         NUMBER          := -1,
4041 	login_id        NUMBER          := -1,
4042 	err_text IN OUT NOCOPY VARCHAR2,
4043 	xset_id  IN     NUMBER          DEFAULT NULL
4044 )
4045 return INTEGER
4046 IS
4047 	ret_code_create		NUMBER		:= 1;
4048 	ret_code_master		NUMBER		:= 1;
4049 	ret_code_child		NUMBER		:= 1;
4050 
4051 	l_inv_debug_level	NUMBER := INVPUTLI.get_debug_level;     --Bug: 4667452
4052 
4053 BEGIN -- {
4054 
4055    IF l_inv_debug_level IN(101, 102) THEN
4056       INVPUTLI.info('INVUPD1B: Inside mtl_pr_validate_item_update'|| '***orgid: ' || TO_CHAR(org_id));
4057    END IF;
4058 
4059 	ret_code_create := INVPVALI.mtl_pr_validate_item(
4060 				org_id => org_id,
4061 				all_org => all_org,
4062 				prog_appid => prog_appid,
4063 				prog_id => prog_id,
4064 				request_id => request_id,
4065 				user_id => user_id,
4066 				login_id => login_id,
4067 				err_text => err_text,
4068 				xset_id => xset_id);
4069 
4070 	if (ret_code_create <> 0) then
4071 		return (ret_code_create);
4072 	end if;
4073 
4074 	ret_code_master := INVUPD2B.validate_item_update_master(
4075 				org_id,
4076 				all_org,
4077 				prog_appid,
4078 				prog_id,
4079 				request_id,
4080 				user_id,
4081 				login_id,
4082 				err_text,
4083 				xset_id);
4084 
4085 	ret_code_child := INVUPD2B.validate_item_update_child(
4086 				org_id,
4087 				all_org,
4088 				prog_appid,
4089 				prog_id,
4090 				request_id,
4091 				user_id,
4092 				login_id,
4093 				err_text,
4094 				xset_id);
4095 
4096 	if (ret_code_master = 0 AND ret_code_child = 0) then
4097 		return (0);
4098 	else
4099 		if (ret_code_master <> 0) then
4100 			return (ret_code_master);
4101 		end if;
4102 		if (ret_code_child <> 0) then
4103 			return (ret_code_child);
4104 		end if;
4105 	end if;
4106 
4107 EXCEPTION
4108 
4109    when OTHERS then
4110 	IF l_inv_debug_level IN(101, 102) THEN
4111 		INVPUTLI.info('when OTHERS exception raised in mtl_pr_validate_item_update' || SQLERRM);
4112 	END IF;
4113 
4114 	return (1);
4115 
4116 END mtl_pr_validate_item_update; -- }
4117 
4118 --Start Bug: 2808277 Supporting Item Revision Update
4119 FUNCTION assign_item_rev_data_update(
4120 	org_id		NUMBER,
4121 	all_org		NUMBER		:= 2,
4122 	prog_appid	NUMBER		:= -1,
4123 	prog_id		NUMBER		:= -1,
4124 	request_id	NUMBER		:= -1,
4125 	user_id		NUMBER		:= -1,
4126 	login_id	NUMBER		:= -1,
4127 	err_text IN OUT NOCOPY VARCHAR2,
4128 	xset_id  IN	NUMBER		DEFAULT -999)
4129 RETURN  NUMBER IS
4130 
4131    --Fill Item Id for Item Number
4132    CURSOR c_fill_Item_Id IS
4133      SELECT DISTINCT item_number,
4134 	    organization_id
4135      FROM   mtl_item_revisions_interface
4136      WHERE  inventory_item_id IS     NULL
4137      AND    item_number       IS NOT NULL
4138      AND    organization_id   IS NOT NULL
4139      AND    set_process_id    = xset_id
4140      AND    process_flag      = 1;
4141 
4142    --Assigning Transaction Id
4143    CURSOR c_fill_transaction_id IS
4144       SELECT distinct inventory_item_id,
4145 	     organization_id,
4146 	     transaction_type
4147       FROM   mtl_item_revisions_interface
4148       WHERE  process_flag = 1
4149       AND    set_process_id  = xset_id
4150       AND    transaction_id IS NULL --Bug: 3019435 Added condition
4151       AND   (organization_id = org_id or all_org = 1);
4152 
4153    --Fill Revision id, default values
4154    CURSOR c_fill_revision_details IS
4155      SELECT   rowid
4156              ,revision
4157 	     ,revision_id
4158 	     ,description
4159              ,inventory_item_id
4160 	     ,organization_id
4161              ,change_notice
4162 	     ,ecn_initiation_date
4163 	     ,implementation_date
4164 	     ,implemented_serial_number
4165 	     ,effectivity_date
4166 	     ,attribute_category
4167 	     ,attribute1
4168 	     ,attribute2
4169 	     ,attribute3
4170 	     ,attribute4
4171 	     ,attribute5
4172 	     ,attribute6
4173 	     ,attribute7
4174 	     ,attribute8
4175 	     ,attribute9
4176 	     ,attribute10
4177 	     ,attribute11
4178 	     ,attribute12
4179 	     ,attribute13
4180 	     ,attribute14
4181 	     ,attribute15
4182 	     ,revision_label
4183 	     ,revision_reason
4184 	     ,transaction_id
4185      FROM   mtl_item_revisions_interface
4186      WHERE  process_flag = 1
4187      AND   set_process_id  = xset_id
4188      AND   (organization_id = org_id or all_org = 1);
4189 
4190    CURSOR c_get_rev_defaults(cp_org_id   NUMBER,
4191 		             cp_item_id  NUMBER,
4192 			     cp_revision VARCHAR2) IS
4193      SELECT   revision_id
4194 	     ,description
4195              ,change_notice
4196 	     ,ecn_initiation_date
4197 	     ,implementation_date
4198 	     --,implemented_serial_number
4199 	     ,effectivity_date
4200 	     ,attribute_category
4201 	     ,attribute1
4202 	     ,attribute2
4203 	     ,attribute3
4204 	     ,attribute4
4205 	     ,attribute5
4206 	     ,attribute6
4207 	     ,attribute7
4208 	     ,attribute8
4209 	     ,attribute9
4210 	     ,attribute10
4211 	     ,attribute11
4212 	     ,attribute12
4213 	     ,attribute13
4214 	     ,attribute14
4215 	     ,attribute15
4216 	     ,revision_label
4217 	     ,revision_reason
4218 	     ,revised_item_sequence_id
4219 	     ,lifecycle_id
4220 	     ,current_phase_id
4221      FROM   mtl_item_revisions
4222      WHERE  organization_id   = cp_org_id
4223      AND    inventory_item_id = cp_item_id
4224      AND    revision          = cp_revision;
4225 
4226    l_process_flag_1    CONSTANT  NUMBER :=  1;
4227    l_process_flag_2    CONSTANT  NUMBER :=  2;
4228    l_process_flag_3    CONSTANT  NUMBER :=  3;
4229    flex_id		         NUMBER;
4230    l_rev_rec		         c_get_rev_defaults%ROWTYPE;
4231    status                        NUMBER := 0;
4232    dumm_status                   NUMBER := 0;
4233    tran_id                       NUMBER := 0;
4234    ASSIGN_ERROR                  EXCEPTION;
4235    LOGGING_ERROR                 EXCEPTION;
4236    l_sysdate                     DATE := SYSDATE;
4237    l_all_org           CONSTANT  NUMBER :=  1;
4238    l_default_revision  VARCHAR2(3);
4239 
4240 BEGIN
4241 
4242    --Assign Orgnization Id for missing ones
4243    UPDATE mtl_item_revisions_interface i
4244    SET    i.organization_id = (SELECT o.organization_id
4245 			       FROM   mtl_parameters o
4246 			       WHERE  o.organization_code = i.organization_code)
4247    WHERE i.organization_id is NULL
4248    AND   set_process_id  = xset_id
4249    AND   i.process_flag = l_process_flag_1;
4250 
4251    --Assign Item Id
4252    FOR cr IN c_fill_Item_Id loop
4253 
4254       status := INVPUOPI.mtl_pr_parse_flex_name (
4255                         cr.organization_id, 'MSTK',
4256                         cr.item_number,   flex_id,
4257                         0, err_text);
4258       IF status <> 0 THEN
4259 ----Bug: 3019435 Changed the code with in IF st.
4260 	 UPDATE mtl_item_revisions_interface
4261 	 SET    process_flag     = l_process_flag_3,
4262 	        transaction_id   = NVL(transaction_id,MTL_SYSTEM_ITEMS_INTERFACE_S.nextval)
4263 	 WHERE  item_number      = cr.item_number
4264 	 AND    inventory_item_id IS NULL
4265 	 AND    process_flag     = l_process_flag_1
4266          AND    set_process_id   = xset_id
4267 	 AND    organization_id  = cr.organization_id
4268 	 RETURNING transaction_id INTO tran_id;
4269 /*
4270          SELECT MTL_SYSTEM_ITEMS_INTERFACE_S.nextval
4271 	 INTO  tran_id
4272 	 FROM dual;
4273 */
4274          dumm_status := INVPUOPI.mtl_log_interface_err(
4275                                 cr.organization_id,
4276                                 user_id,
4277                                 login_id,
4278                                 prog_appid,
4279                                 prog_id,
4280                                 request_id,
4281                                 tran_id,
4282                                 err_text,
4283 				'item_number',
4284                                 'MTL_ITEM_REVISIONS_INTERFACE',
4285                                 'BOM_OP_VALIDATION_ERR',
4286                                 err_text);
4287          IF dumm_status < 0 THEN
4288             raise LOGGING_ERROR ;
4289          END IF;
4290 
4291 /*	 UPDATE mtl_item_revisions_interface
4292 	 SET    process_flag     = l_process_flag_3,
4293 	        transaction_id   = tran_id
4294 	 WHERE  item_number      = cr.item_number
4295 	 AND    inventory_item_id IS NULL
4296 	 AND    process_flag     = l_process_flag_1
4297          AND    set_process_id   = xset_id
4298 	 AND    organization_id  = cr.organization_id;
4299 */
4300 	 IF status < 0 THEN
4301 	    raise ASSIGN_ERROR;
4302 	 END IF;
4303 
4304       ELSIF status = 0 THEN
4305 
4306          UPDATE mtl_item_revisions_interface
4307          SET   inventory_item_id = flex_id
4308          WHERE item_number = cr.item_number
4309          AND   set_process_id   = xset_id
4310 	 AND   organization_id  = cr.organization_id;
4311 
4312       END IF;
4313 
4314    END LOOP; -- Fill Item Id LOOP.
4315 
4316    --Assign Transaction Id
4317    FOR cr IN c_fill_transaction_id LOOP
4318 
4319       SELECT MTL_SYSTEM_ITEMS_INTERFACE_S.nextval
4320       INTO   tran_id FROM dual;
4321 
4322       UPDATE  mtl_item_revisions_interface
4323       SET     transaction_id     = tran_id
4324       WHERE   inventory_item_id  = cr.inventory_item_id
4325       AND     organization_id    = cr.organization_id
4326       AND     transaction_type   = cr.transaction_type
4327       AND     set_process_id + 0 = xset_id
4328       AND     process_flag       = l_process_flag_1;
4329 
4330    END LOOP;
4331 
4332 
4333    --Fill Revision id, default values
4334    FOR cr IN c_fill_Revision_details LOOP
4335 
4336       OPEN  c_get_rev_defaults(cp_org_id   => cr.organization_id,
4337 			       cp_item_id  => cr.inventory_item_id,
4338 			       cp_revision => cr.revision);
4339       FETCH c_get_rev_defaults INTO l_rev_rec;
4340       CLOSE c_get_rev_defaults;
4341 
4342       IF l_rev_rec.revision_id IS NOT NULL THEN
4343 
4344          SELECT  starting_revision
4345 	 INTO    l_default_revision
4346 	 FROM    mtl_parameters
4347 	 WHERE   organization_id = cr.organization_id;
4348 
4349 	 IF l_default_revision = cr.revision THEN
4350 
4351 	    UPDATE  mtl_item_revisions_interface
4352 	    SET     effectivity_date = l_rev_rec.effectivity_date
4353 	    WHERE   rowid = cr.rowid;
4354 
4355 	 END IF;
4356 
4357 
4358          UPDATE  mtl_item_revisions_interface
4359          SET      revision_id               = l_rev_rec.revision_id
4360 	         ,description               = decode(description,NULL,l_rev_rec.description,'!',NULL,g_FND_Upd_Null_Char,NULL,description)
4361 		 ,change_notice             = l_rev_rec.change_notice
4362 	         ,ecn_initiation_date       = l_rev_rec.ecn_initiation_date
4363 		 ,implementation_date       = NVL(implementation_date,l_rev_rec.implementation_date)
4364 	 	 --,implemented_serial_number = NVL(implemented_serial_number,l_rev_rec.implemented_serial_number)
4365 	         ,effectivity_date          = NVL(effectivity_date,l_rev_rec.effectivity_date)
4366 		 ,attribute_category        = decode(attribute_category,NULL,l_rev_rec.attribute_category,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute_category)
4367 		 ,attribute1                = decode(attribute1,NULL,l_rev_rec.attribute1,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute1)
4368 		 ,attribute2                = decode(attribute2,NULL,l_rev_rec.attribute2,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute2)
4369 		 ,attribute3                = decode(attribute3,NULL,l_rev_rec.attribute3,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute3)
4370 		 ,attribute4                = decode(attribute4,NULL,l_rev_rec.attribute4,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute4)
4371 		 ,attribute5                = decode(attribute5,NULL,l_rev_rec.attribute5,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute5)
4372 		 ,attribute6                = decode(attribute6,NULL,l_rev_rec.attribute6,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute6)
4373 		 ,attribute7                = decode(attribute7,NULL,l_rev_rec.attribute7,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute7)
4374 		 ,attribute8                = decode(attribute8,NULL,l_rev_rec.attribute8,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute8)
4375 		 ,attribute9                = decode(attribute9,NULL,l_rev_rec.attribute9,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute9)
4376 		 ,attribute10               = decode(attribute10,NULL,l_rev_rec.attribute10,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute10)
4377 		 ,attribute11               = decode(attribute11,NULL,l_rev_rec.attribute11,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute11)
4378 		 ,attribute12               = decode(attribute12,NULL,l_rev_rec.attribute12,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute12)
4379 		 ,attribute13               = decode(attribute13,NULL,l_rev_rec.attribute13,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute13)
4380 		 ,attribute14               = decode(attribute14,NULL,l_rev_rec.attribute14,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute14)
4381 		 ,attribute15               = decode(attribute15,NULL,l_rev_rec.attribute15,'!',NULL, g_FND_Upd_Null_Char, NULL, attribute15)
4382 		 ,revision_label            = decode(revision_label,NULL,l_rev_rec.revision_label,'!',NULL, g_FND_Upd_Null_Char, NULL, revision_label)
4383 		 ,revision_reason           = decode(revision_reason,NULL,l_rev_rec.revision_reason,'!',NULL, g_FND_Upd_Null_Char, NULL, revision_reason)
4384 		 ,revised_item_sequence_id  = decode(revised_item_sequence_id,NULL,l_rev_rec.revised_item_sequence_id,g_Upd_Null_NUM,NULL, g_FND_Upd_Null_NUM, NULL, revised_item_sequence_id)
4385 		 ,lifecycle_id              = decode(lifecycle_id,NULL,l_rev_rec.lifecycle_id,g_Upd_Null_NUM,NULL, g_FND_Upd_Null_NUM, NULL, lifecycle_id)
4386 		 ,current_phase_id          = decode(current_phase_id,NULL,l_rev_rec.current_phase_id,g_Upd_Null_NUM,NULL, g_FND_Upd_Null_NUM, NULL, current_phase_id)
4387 	 WHERE  rowid = cr.rowid;
4388 
4389       ELSE
4390 
4391          dumm_status := INVPUOPI.mtl_log_interface_err(
4392                                 cr.organization_id,
4393                                 user_id,
4394                                 login_id,
4395                                 prog_appid,
4396                                 prog_id,
4397                                 request_id,
4398                                 cr.transaction_id,
4399                                 err_text,
4400 				'REVISION',
4401                                 'MTL_ITEM_REVISIONS_INTERFACE',
4402                                 'INV_INVALID_REVISION',
4403                                 err_text);
4404          IF dumm_status < 0 THEN
4405             raise LOGGING_ERROR ;
4406          END IF;
4407 
4408          UPDATE mtl_item_revisions_interface
4409 	 SET    process_flag     = l_process_flag_3
4410 	 WHERE  rowid            = cr.rowid;
4411 
4412       END IF;
4413 
4414    END LOOP; --Revision defaults fill LOOP
4415 
4416    --Update process flag , at last
4417    UPDATE mtl_item_revisions_interface
4418    SET    process_flag        = l_process_flag_2 ,
4419 	  last_update_date    = l_sysdate,
4420           last_updated_by     =  decode(last_updated_by,NULL,user_id,last_updated_by),
4421 	  creation_date       = l_sysdate,
4422 	  created_by          = decode(created_by, NULL, user_id,created_by)
4423 	  --3070781 :Revision defaults fill LOOP is enough to fill below columns
4424 	  --This routine gets called only during revision update.
4425           --implementation_date = nvl(effectivity_date, l_sysdate),
4426 	  --effectivity_date    = nvl(effectivity_date, l_sysdate)
4427    WHERE  inventory_item_id is not null
4428    AND    process_flag        = l_process_flag_1
4429    AND    set_process_id      = xset_id
4430    AND    (organization_id    = org_id or all_org = l_all_org);
4431 
4432    --Set process flag for the records with errors
4433    UPDATE mtl_item_revisions_interface i
4434    SET    i.process_flag     = l_process_flag_3,
4435           i.last_update_date = sysdate,
4436           i.last_updated_by  = decode(i.last_updated_by, NULL, user_id,i.last_updated_by),
4437           i.creation_date    = l_sysdate,
4438           i.created_by       = decode(i.created_by, NULL, user_id,i.created_by)
4439    WHERE (i.inventory_item_id is NULL or  i.organization_id is NULL)
4440    AND   i.set_process_id    = xset_id
4441    AND   i.process_flag      = l_process_flag_1
4442    AND  (i.organization_id   = org_id or  all_org = l_all_org );
4443 
4444    RETURN (0);
4445 
4446 EXCEPTION
4447    WHEN OTHERS THEN
4448       RETURN (1);
4449 END assign_item_rev_data_update;
4450 --End Bug: 2808277 Supporting Item Revision Update
4451 
4452 
4453 end INVUPD1B; -- }