DBA Data[Home] [Help]

PACKAGE BODY: APPS.GR_SUB_HEADINGS_B_PKG

Source


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