[Home] [Help]
PACKAGE BODY: APPS.GR_ITEM_EXPLOSION_PROP_PKG
Source
1 PACKAGE BODY GR_ITEM_EXPLOSION_PROP_PKG AS
2 /*$Header: GRHIEPB.pls 120.0 2005/07/08 11:03:55 methomas noship $*/
3 PROCEDURE Insert_Row
4 (p_commit IN VARCHAR2,
5 p_called_by_form IN VARCHAR2,
6 p_ingredient_flag IN VARCHAR2,
7 p_explode_ingredient_flag IN VARCHAR2,
8 p_organization_id IN NUMBER,
9 p_inventory_item_id IN NUMBER,
10 p_actual_hazard IN NUMBER,
11 p_created_by IN NUMBER,
12 p_creation_date IN DATE,
13 p_last_updated_by IN NUMBER,
14 p_last_update_date IN DATE,
15 p_last_update_login IN NUMBER,
16 x_rowid OUT NOCOPY VARCHAR2,
17 x_return_status OUT NOCOPY VARCHAR2,
18 x_oracle_error OUT NOCOPY NUMBER,
19 x_msg_data OUT NOCOPY VARCHAR2)
20 IS
21 /* Alpha Variables */
22
23 L_RETURN_STATUS VARCHAR2(1) := 'S';
24 L_KEY_EXISTS VARCHAR2(1);
25 L_MSG_DATA VARCHAR2(2000);
26 L_ROWID VARCHAR2(18);
27
28 /* Number Variables */
29
30 L_ORACLE_ERROR NUMBER;
31
32 /* Exceptions */
33
34 FOREIGN_KEY_ERROR EXCEPTION;
35 ITEM_EXISTS_ERROR EXCEPTION;
36 ROW_MISSING_ERROR EXCEPTION;
37
38 /* Declare cursors */
39
40
41 BEGIN
42
43 /* Initialization Routine */
44
45 SAVEPOINT Insert_Row;
46 x_return_status := 'S';
47 x_oracle_error := 0;
48 x_msg_data := NULL;
49
50 /* Now call the check foreign key procedure */
51
52 Check_Foreign_Keys
53 (p_ingredient_flag,
54 p_explode_ingredient_flag,
55 p_organization_id,
56 p_inventory_item_id,
57 p_actual_hazard,
58 l_return_status,
59 l_oracle_error,
60 l_msg_data);
61 IF l_return_status <> 'S' THEN
62 RAISE Foreign_Key_Error;
63 END IF;
64
65 /* Now check the primary key doesn't already exist */
66
67 Check_Primary_Key
68 (p_organization_id,
69 p_inventory_item_id,
70 'F',
71 l_rowid,
72 l_key_exists);
73
74 IF FND_API.To_Boolean(l_key_exists) THEN
75 RAISE Item_Exists_Error;
76 END IF;
77
78 INSERT INTO gr_item_explosion_properties
79 (organization_id,
80 inventory_item_id,
81 ingredient_flag,
82 explode_ingredient_flag,
83 actual_hazard,
84 created_by,
85 creation_date,
86 last_updated_by,
87 last_update_date,
88 last_update_login)
89 VALUES
90 (p_organization_id,
91 p_inventory_item_id,
92 p_ingredient_flag,
93 p_explode_ingredient_flag,
94 p_actual_hazard,
95 p_created_by,
96 p_creation_date,
97 p_last_updated_by,
98 p_last_update_date,
99 p_last_update_login);
100
101 /* Now get the row id of the inserted record */
102
103 Check_Primary_Key
104 (p_organization_id,
105 p_inventory_item_id,
106 'F',
107 l_rowid,
108 l_key_exists);
109
110 IF FND_API.To_Boolean(l_key_exists) THEN
111 x_rowid := l_rowid;
112 ELSE
113 RAISE Row_Missing_Error;
114 END IF;
115
116 /* Check the commit flag and if set, then commit the work. */
117
118 IF FND_API.To_Boolean(p_commit) THEN
119 COMMIT WORK;
120 END IF;
121
122 EXCEPTION
123
124 WHEN Foreign_Key_Error THEN
125 ROLLBACK TO SAVEPOINT Insert_Row;
126 x_return_status := l_return_status;
127 x_oracle_error := l_oracle_error;
128 FND_MESSAGE.SET_NAME('GR',
129 'GR_FOREIGN_KEY_ERROR');
130 FND_MESSAGE.SET_TOKEN('TEXT',
131 l_msg_data,
132 FALSE);
133 IF FND_API.To_Boolean(p_called_by_form) THEN
134 APP_EXCEPTION.Raise_Exception;
135 ELSE
136 x_msg_data := FND_MESSAGE.Get;
137 END IF;
138
139 WHEN Item_Exists_Error THEN
140 ROLLBACK TO SAVEPOINT Insert_Row;
141 x_return_status := 'E';
142 x_oracle_error := APP_EXCEPTION.Get_Code;
143 FND_MESSAGE.SET_NAME('GR',
144 'GR_RECORD_EXISTS');
145 FND_MESSAGE.SET_TOKEN('CODE',
146 p_inventory_item_id,
147 FALSE);
148 IF FND_API.To_Boolean(p_called_by_form) THEN
149 APP_EXCEPTION.Raise_Exception;
150 ELSE
151 x_msg_data := FND_MESSAGE.Get;
152 END IF;
153
154 WHEN Row_Missing_Error THEN
155 ROLLBACK TO SAVEPOINT Insert_Row;
156 x_return_status := 'E';
157 x_oracle_error := APP_EXCEPTION.Get_Code;
158 FND_MESSAGE.SET_NAME('GR',
159 'GR_NO_RECORD_INSERTED');
160 FND_MESSAGE.SET_TOKEN('CODE',
161 p_inventory_item_id,
162 FALSE);
163 IF FND_API.To_Boolean(p_called_by_form) THEN
164 APP_EXCEPTION.Raise_Exception;
165 ELSE
166 x_msg_data := FND_MESSAGE.Get;
167 END IF;
168
169 WHEN OTHERS THEN
170 ROLLBACK TO SAVEPOINT Insert_Row;
171 x_return_status := 'U';
172 x_oracle_error := APP_EXCEPTION.Get_Code;
173 l_msg_data := APP_EXCEPTION.Get_Text;
174 FND_MESSAGE.SET_NAME('GR',
175 'GR_UNEXPECTED_ERROR');
176 FND_MESSAGE.SET_TOKEN('TEXT',
177 l_msg_data,
178 FALSE);
179 IF FND_API.To_Boolean(p_called_by_form) THEN
180 APP_EXCEPTION.Raise_Exception;
181 ELSE
182 x_msg_data := FND_MESSAGE.Get;
183 END IF;
184
185 END Insert_Row;
186
187 PROCEDURE Update_Row
188 (p_commit IN VARCHAR2,
189 p_called_by_form IN VARCHAR2,
190 p_rowid IN VARCHAR2,
191 p_ingredient_flag IN VARCHAR2,
192 p_explode_ingredient_flag IN VARCHAR2,
193 p_organization_id IN NUMBER,
194 p_inventory_item_id IN NUMBER,
195 p_actual_hazard IN NUMBER,
196 p_created_by IN NUMBER,
197 p_creation_date IN DATE,
198 p_last_updated_by IN NUMBER,
199 p_last_update_date IN DATE,
200 p_last_update_login IN NUMBER,
201 x_return_status OUT NOCOPY VARCHAR2,
202 x_oracle_error OUT NOCOPY NUMBER,
203 x_msg_data OUT NOCOPY VARCHAR2)
204 IS
205
206 /* Alpha Variables */
207
208 L_RETURN_STATUS VARCHAR2(1) := 'S';
209 L_MSG_DATA VARCHAR2(2000);
210
211 /* Number Variables */
212
213 L_ORACLE_ERROR NUMBER;
214
215 /* Exceptions */
216
217 FOREIGN_KEY_ERROR EXCEPTION;
218 ROW_MISSING_ERROR EXCEPTION;
219 BEGIN
220
221 /* Initialization Routine */
222
223 SAVEPOINT Update_Row;
224 x_return_status := 'S';
225 x_oracle_error := 0;
226 x_msg_data := NULL;
227
228 /* Now call the check foreign key procedure */
229
230 Check_Foreign_Keys
231 (p_ingredient_flag,
232 p_explode_ingredient_flag,
233 p_organization_id,
234 p_inventory_item_id,
235 p_actual_hazard,
236 l_return_status,
237 l_oracle_error,
238 l_msg_data);
239
240 IF l_return_status <> 'S' THEN
241 RAISE Foreign_Key_Error;
242 ELSE
243 UPDATE gr_item_explosion_properties
244 SET organization_id = p_organization_id,
245 inventory_item_id = p_inventory_item_id,
246 ingredient_flag = p_ingredient_flag,
247 explode_ingredient_flag = p_explode_ingredient_flag,
248 actual_hazard = p_actual_hazard,
249 created_by = p_created_by,
250 creation_date = p_creation_date,
251 last_updated_by = p_last_updated_by,
252 last_update_date = p_last_update_date,
253 last_update_login = p_last_update_login
254 WHERE rowid = p_rowid;
255 IF SQL%NOTFOUND THEN
256 RAISE Row_Missing_Error;
257 END IF;
258 END IF;
259
260 /* Check the commit flag and if set, then commit the work. */
261
262 IF FND_API.To_Boolean(p_commit) THEN
263 COMMIT WORK;
264 END IF;
265
266 EXCEPTION
267
268 WHEN Foreign_Key_Error THEN
269 ROLLBACK TO SAVEPOINT Update_Row;
270 x_return_status := l_return_status;
271 x_oracle_error := l_oracle_error;
272 FND_MESSAGE.SET_NAME('GR',
273 'GR_FOREIGN_KEY_ERROR');
274 FND_MESSAGE.SET_TOKEN('TEXT',
275 l_msg_data,
276 FALSE);
277 IF FND_API.To_Boolean(p_called_by_form) THEN
278 APP_EXCEPTION.Raise_Exception;
279 ELSE
280 x_msg_data := FND_MESSAGE.Get;
281 END IF;
282
283 WHEN Row_Missing_Error THEN
284 ROLLBACK TO SAVEPOINT Update_Row;
285 x_return_status := 'E';
286 x_oracle_error := APP_EXCEPTION.Get_Code;
287 FND_MESSAGE.SET_NAME('GR',
288 'GR_NO_RECORD_INSERTED');
289 FND_MESSAGE.SET_TOKEN('CODE',
290 p_inventory_item_id,
291 FALSE);
292 IF FND_API.To_Boolean(p_called_by_form) THEN
293 APP_EXCEPTION.Raise_Exception;
294 ELSE
295 x_msg_data := FND_MESSAGE.Get;
296 END IF;
297
298 WHEN OTHERS THEN
299 ROLLBACK TO SAVEPOINT Update_Row;
300 x_return_status := 'U';
301 x_oracle_error := APP_EXCEPTION.Get_Code;
302 l_msg_data := APP_EXCEPTION.Get_Text;
303 FND_MESSAGE.SET_NAME('GR',
304 'GR_UNEXPECTED_ERROR');
305 FND_MESSAGE.SET_TOKEN('TEXT',
306 l_msg_data,
307 FALSE);
308 IF FND_API.To_Boolean(p_called_by_form) THEN
309 APP_EXCEPTION.Raise_Exception;
310 ELSE
311 x_msg_data := FND_MESSAGE.Get;
312 END IF;
313
314 END Update_Row;
315
316 PROCEDURE Lock_Row
317 (p_commit IN VARCHAR2,
318 p_called_by_form IN VARCHAR2,
319 p_rowid IN VARCHAR2,
320 p_ingredient_flag IN VARCHAR2,
321 p_explode_ingredient_flag IN VARCHAR2,
322 p_organization_id IN NUMBER,
323 p_inventory_item_id IN NUMBER,
324 p_actual_hazard IN NUMBER,
325 p_created_by IN NUMBER,
326 p_creation_date IN DATE,
327 p_last_updated_by IN NUMBER,
328 p_last_update_date IN DATE,
329 p_last_update_login IN NUMBER,
330 x_return_status OUT NOCOPY VARCHAR2,
331 x_oracle_error OUT NOCOPY NUMBER,
332 x_msg_data OUT NOCOPY VARCHAR2)
333 IS
334
335 /* Alpha Variables */
336
337 L_RETURN_STATUS VARCHAR2(1) := 'S';
338 L_MSG_DATA VARCHAR2(2000);
339
340 /* Number Variables */
341
342 L_ORACLE_ERROR NUMBER;
343
344 /* Exceptions */
345
346 NO_DATA_FOUND_ERROR EXCEPTION;
347 ROW_ALREADY_LOCKED_ERROR EXCEPTION;
348 PRAGMA EXCEPTION_INIT(ROW_ALREADY_LOCKED_ERROR,-54);
349
350 /* Define the cursors */
351
352 CURSOR c_lock_item
353 IS
354 SELECT *
355 FROM gr_item_explosion_properties
356 WHERE rowid = p_rowid
357 FOR UPDATE NOWAIT;
358 LockItemRcd c_lock_item%ROWTYPE;
359 BEGIN
360
361 /* Initialization Routine */
362
363 SAVEPOINT Lock_Row;
364 x_return_status := 'S';
365 x_oracle_error := 0;
366 x_msg_data := NULL;
367
368 /* Now lock the record */
369
370 OPEN c_lock_item;
371 FETCH c_lock_item INTO LockItemRcd;
372 IF c_lock_item%NOTFOUND THEN
373 CLOSE c_lock_item;
374 RAISE No_Data_Found_Error;
375 END IF;
376 CLOSE c_lock_item;
377
378 IF FND_API.To_Boolean(p_commit) THEN
379 COMMIT WORK;
380 END IF;
381
382 EXCEPTION
383
384 WHEN No_Data_Found_Error THEN
385 ROLLBACK TO SAVEPOINT Lock_Row;
386 x_return_status := 'E';
387 FND_MESSAGE.SET_NAME('GR',
388 'GR_RECORD_NOT_FOUND');
389 FND_MESSAGE.SET_TOKEN('CODE',
390 p_inventory_item_id,
391 FALSE);
392 IF FND_API.To_Boolean(p_called_by_form) THEN
393 APP_EXCEPTION.Raise_Exception;
394 ELSE
395 x_msg_data := FND_MESSAGE.Get;
396 END IF;
397
398 WHEN Row_Already_Locked_Error THEN
399 ROLLBACK TO SAVEPOINT Lock_Row;
400 x_return_status := 'E';
401 x_oracle_error := APP_EXCEPTION.Get_Code;
402 FND_MESSAGE.SET_NAME('GR',
403 'GR_ROW_IS_LOCKED');
404 IF FND_API.To_Boolean(p_called_by_form) THEN
405 APP_EXCEPTION.Raise_Exception;
406 ELSE
407 x_msg_data := FND_MESSAGE.Get;
408 END IF;
409
410 WHEN OTHERS THEN
411 ROLLBACK TO SAVEPOINT Lock_Row;
412 x_return_status := 'U';
413 x_oracle_error := APP_EXCEPTION.Get_Code;
414 l_msg_data := APP_EXCEPTION.Get_Text;
415 FND_MESSAGE.SET_NAME('GR',
416 'GR_UNEXPECTED_ERROR');
417 FND_MESSAGE.SET_TOKEN('TEXT',
418 l_msg_data,
419 FALSE);
420 IF FND_API.To_Boolean(p_called_by_form) THEN
421 APP_EXCEPTION.Raise_Exception;
422 ELSE
423 x_msg_data := FND_MESSAGE.Get;
424 END IF;
425
426 END Lock_Row;
427
428 PROCEDURE Delete_Row
429 (p_commit IN VARCHAR2,
430 p_called_by_form IN VARCHAR2,
431 p_rowid IN VARCHAR2,
432 p_ingredient_flag IN VARCHAR2,
433 p_explode_ingredient_flag IN VARCHAR2,
434 p_organization_id IN NUMBER,
435 p_inventory_item_id IN NUMBER,
436 p_actual_hazard IN NUMBER,
440 p_last_update_date IN DATE,
437 p_created_by IN NUMBER,
438 p_creation_date IN DATE,
439 p_last_updated_by IN NUMBER,
441 p_last_update_login IN NUMBER,
442 x_return_status OUT NOCOPY VARCHAR2,
443 x_oracle_error OUT NOCOPY NUMBER,
444 x_msg_data OUT NOCOPY VARCHAR2)
445 IS
446
447 /* Alpha Variables */
448
449 L_RETURN_STATUS VARCHAR2(1) := 'S';
450 L_MSG_DATA VARCHAR2(2000);
451 L_CALLED_BY_FORM VARCHAR2(1);
452
453 /* Number Variables */
454
455 L_ORACLE_ERROR NUMBER;
456
457 /* Exceptions */
458
459 CHECK_INTEGRITY_ERROR EXCEPTION;
460 ROW_MISSING_ERROR EXCEPTION;
461 PRAGMA EXCEPTION_INIT(Row_Missing_Error,100);
462
463 BEGIN
464
465 /* Initialization Routine */
466
467 SAVEPOINT Delete_Row;
468 x_return_status := 'S';
469 l_called_by_form := 'F';
470 x_oracle_error := 0;
471 x_msg_data := NULL;
472
473 /* Now call the check integrity procedure */
474
475 Check_Integrity
476 (l_called_by_form,
477 p_ingredient_flag,
478 p_explode_ingredient_flag,
479 p_organization_id,
480 p_inventory_item_id,
481 p_actual_hazard,
482 l_return_status,
483 l_oracle_error,
484 l_msg_data);
485
486 IF l_return_status <> 'S' THEN
487 RAISE Check_Integrity_Error;
488 END IF;
489
490 DELETE FROM gr_item_general
491 WHERE rowid = p_rowid;
492
493 /* Check the commit flag and if set, then commit the work. */
494
495 IF FND_API.TO_Boolean(p_commit) THEN
496 COMMIT WORK;
497 END IF;
498
499 EXCEPTION
500
501 WHEN Check_Integrity_Error THEN
502 ROLLBACK TO SAVEPOINT Delete_Row;
503 x_return_status := l_return_status;
504 x_oracle_error := l_oracle_error;
505 IF FND_API.To_Boolean(p_called_by_form) THEN
506 APP_EXCEPTION.Raise_Exception;
507 ELSE
508 x_msg_data := FND_MESSAGE.Get;
509 END IF;
510
511 WHEN Row_Missing_Error THEN
512 ROLLBACK TO SAVEPOINT Delete_Row;
513 x_return_status := 'E';
514 x_oracle_error := APP_EXCEPTION.Get_Code;
515 FND_MESSAGE.SET_NAME('GR',
516 'GR_RECORD_NOT_FOUND');
517 FND_MESSAGE.SET_TOKEN('CODE',
518 p_inventory_item_id,
519 FALSE);
520 IF FND_API.To_Boolean(p_called_by_form) THEN
521 APP_EXCEPTION.Raise_Exception;
522 ELSE
523 x_msg_data := FND_MESSAGE.Get;
524 END IF;
525
526 WHEN OTHERS THEN
527 ROLLBACK TO SAVEPOINT Delete_Row;
528 x_return_status := 'U';
529 x_oracle_error := APP_EXCEPTION.Get_Code;
530 l_msg_data := APP_EXCEPTION.Get_Text;
531 l_msg_data := APP_EXCEPTION.Get_Text;
532 FND_MESSAGE.SET_NAME('GR',
533 'GR_UNEXPECTED_ERROR');
534 FND_MESSAGE.SET_TOKEN('TEXT',
535 l_msg_data,
536 FALSE);
537 IF FND_API.To_Boolean(p_called_by_form) THEN
538 APP_EXCEPTION.Raise_Exception;
539 ELSE
540 x_msg_data := FND_MESSAGE.Get;
541 END IF;
542
543 END Delete_Row;
544
545 PROCEDURE Check_Foreign_Keys
546 (p_ingredient_flag IN VARCHAR2,
547 p_explode_ingredient_flag IN VARCHAR2,
548 p_organization_id IN NUMBER,
549 p_inventory_item_id IN NUMBER,
550 p_actual_hazard IN NUMBER,
551 x_return_status OUT NOCOPY VARCHAR2,
552 x_oracle_error OUT NOCOPY NUMBER,
553 x_msg_data OUT NOCOPY VARCHAR2)
554 IS
555
556 /* Alpha Variables */
557
558 L_RETURN_STATUS VARCHAR2(1) := 'S';
559 L_MSG_DATA VARCHAR2(2000);
560
561 /* Number Variables */
562
563 L_ORACLE_ERROR NUMBER;
564
565 /* Define the cursors */
566
567 BEGIN
568
569 /* Initialization Routine */
570
571 SAVEPOINT Check_Foreign_Keys;
572 x_return_status := 'S';
573 x_oracle_error := 0;
574 x_msg_data := NULL;
575
576 EXCEPTION
577
578 WHEN OTHERS THEN
579 ROLLBACK TO SAVEPOINT Check_Foreign_Keys;
580 x_return_status := 'U';
581 x_oracle_error := APP_EXCEPTION.Get_Code;
582 l_msg_data := APP_EXCEPTION.Get_Text;
583 FND_MESSAGE.SET_NAME('GR',
584 'GR_UNEXPECTED_ERROR');
585 FND_MESSAGE.SET_TOKEN('TEXT',
586 l_msg_data,
587 FALSE);
588 x_msg_data := FND_MESSAGE.Get;
589
590 END Check_Foreign_Keys;
591
592 PROCEDURE Check_Integrity
593 (p_called_by_form IN VARCHAR2,
594 p_ingredient_flag IN VARCHAR2,
595 p_explode_ingredient_flag IN VARCHAR2,
596 p_organization_id IN NUMBER,
597 p_inventory_item_id IN NUMBER,
598 p_actual_hazard IN NUMBER,
599 x_return_status OUT NOCOPY VARCHAR2,
600 x_oracle_error OUT NOCOPY NUMBER,
601 x_msg_data OUT NOCOPY VARCHAR2)
602 IS
603
604 /* Alpha Variables */
605
606 L_RETURN_STATUS VARCHAR2(1) := 'S';
607 L_MSG_DATA VARCHAR2(2000);
608 L_CODE_BLOCK VARCHAR2(2000);
609
610 /* Number Variables */
611
612 L_ORACLE_ERROR NUMBER;
613 L_RECORD_COUNT NUMBER;
614
615 /* Exceptions */
616 INTEGRITY_ERROR EXCEPTION;
617
618 /* Define the Cursors */
619
620 /* Item Properties */
621
625 FROM gr_inv_item_properties ip
622 CURSOR c_get_item_properties
623 IS
624 SELECT COUNT(*)
626 WHERE ip.organization_id = p_organization_id
627 AND ip.inventory_item_id = p_inventory_item_id;
628
629 BEGIN
630
631 /* Initialization Routine */
632
633 SAVEPOINT Check_Integrity;
634 x_return_status := 'S';
635 x_oracle_error := 0;
636 x_msg_data := NULL;
637
638 /* Now read the cursors to make sure the item code isn't used. */
639
640 /* Item Properties */
641
642 l_record_count := 0;
643 l_code_block := 'c_get_item_properties';
644 OPEN c_get_item_properties;
645 FETCH c_get_item_properties INTO l_record_count;
646 IF l_record_count <> 0 THEN
647 l_return_status := 'E';
648 l_msg_data := l_msg_data || 'gr_inv_item_properties, ';
649 END IF;
650 CLOSE c_get_item_properties;
651
652 /* Now sort out the error messaging */
653
654 IF l_return_status <> 'S' THEN
655 RAISE INTEGRITY_ERROR;
656 END IF;
657
658 EXCEPTION
659
660 WHEN INTEGRITY_ERROR THEN
661 x_return_status := 'E';
662 FND_MESSAGE.SET_NAME('GR',
663 'GR_INTEGRITY_HEADER');
664 FND_MESSAGE.SET_TOKEN('CODE',
665 p_inventory_item_id,
666 FALSE);
667 FND_MESSAGE.SET_TOKEN('TABLES',
668 SUBSTR(l_msg_data,1,LENGTH(l_msg_data)-1),
669 FALSE);
670 IF FND_API.To_Boolean(p_called_by_form) THEN
671 APP_EXCEPTION.Raise_Exception;
672 ELSE
673 x_msg_data := FND_MESSAGE.Get;
674 END IF;
675 WHEN OTHERS THEN
676 ROLLBACK TO SAVEPOINT Check_Integrity;
677 x_return_status := 'U';
678 x_oracle_error := APP_EXCEPTION.Get_Code;
679 l_msg_data := APP_EXCEPTION.Get_Text;
680 FND_MESSAGE.SET_NAME('GR',
681 'GR_UNEXPECTED_ERROR');
682 FND_MESSAGE.SET_TOKEN('TEXT',
683 l_msg_data,
684 FALSE);
685 IF FND_API.To_Boolean(p_called_by_form) THEN
686 APP_EXCEPTION.Raise_Exception;
687 ELSE
688 x_msg_data := FND_MESSAGE.Get;
689 END IF;
690
691 END Check_Integrity;
692
693 PROCEDURE Check_Primary_Key
694 /* p_inventory_item_id is the item code to check.
695 ** p_called_by_form is 'T' if called by a form or 'F' if not.
696 ** x_rowid is the row id of the record if found.
697 ** x_key_exists is 'T' is the record is found, 'F' if not.
698 */
699 (p_organization_id IN NUMBER,
700 p_inventory_item_id IN NUMBER,
701 p_called_by_form IN VARCHAR2,
702 x_rowid OUT NOCOPY VARCHAR2,
703 x_key_exists OUT NOCOPY VARCHAR2)
704 IS
705 /* Alphanumeric variables */
706
707 L_MSG_DATA VARCHAR2(80);
708
709 /* Declare any variables and the cursor */
710
711
712 CURSOR c_get_item_rowid
713 IS
714 SELECT ig.rowid
715 FROM gr_item_explosion_properties ig
716 WHERE ig.organization_id = p_organization_id
717 AND ig.inventory_item_id = p_inventory_item_id;
718 ItemRecord c_get_item_rowid%ROWTYPE;
719
720 BEGIN
721
722 l_msg_data := p_inventory_item_id;
723 x_key_exists := 'F';
724
725 OPEN c_get_item_rowid;
726 FETCH c_get_item_rowid INTO ItemRecord;
727 IF c_get_item_rowid%FOUND THEN
728 x_key_exists := 'T';
729 x_rowid := ItemRecord.rowid;
730 ELSE
731 x_key_exists := 'F';
732 END IF;
733 CLOSE c_get_item_rowid;
734
735 EXCEPTION
736
737 WHEN Others THEN
738 l_msg_data := APP_EXCEPTION.Get_Text;
739 FND_MESSAGE.SET_NAME('GR',
740 'GR_UNEXPECTED_ERROR');
741 FND_MESSAGE.SET_TOKEN('TEXT',
742 l_msg_data,
743 FALSE);
744 IF FND_API.To_Boolean(p_called_by_form) THEN
745 APP_EXCEPTION.Raise_Exception;
746 END IF;
747
748 END Check_Primary_Key;
749
750 END GR_ITEM_EXPLOSION_PROP_PKG;