DBA Data[Home] [Help]

PACKAGE BODY: APPS.INVUPD1B

Source


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