DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_DA_REQ_FTRS_PKG

Source


1 PACKAGE BODY igs_da_req_ftrs_pkg AS
2 /* $Header: IGSKI42B.pls 115.1 2003/04/16 05:39:48 smanglm noship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_da_req_ftrs%ROWTYPE;
6   new_references igs_da_req_ftrs%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2,
11     x_batch_id                          IN     NUMBER,
12     x_feature_code                      IN     VARCHAR2,
13     x_feature_value                     IN     VARCHAR2,
14     x_creation_date                     IN     DATE,
15     x_created_by                        IN     NUMBER,
16     x_last_update_date                  IN     DATE,
17     x_last_updated_by                   IN     NUMBER,
18     x_last_update_login                 IN     NUMBER
19   ) AS
20   /*
21   ||  Created By :
22   ||  Created On : 27-MAR-2003
23   ||  Purpose : Initialises the Old and New references for the columns of the table.
24   ||  Known limitations, enhancements or remarks :
25   ||  Change History :
26   ||  Who             When            What
27   ||  (reverse chronological order - newest change first)
28   */
29 
30     CURSOR cur_old_ref_values IS
31       SELECT   *
32       FROM     igs_da_req_ftrs
33       WHERE    rowid = x_rowid;
34 
35   BEGIN
36 
37     l_rowid := x_rowid;
38 
39     -- Code for setting the Old and New Reference Values.
40     -- Populate Old Values.
41     OPEN cur_old_ref_values;
42     FETCH cur_old_ref_values INTO old_references;
43     IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
44       CLOSE cur_old_ref_values;
45       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
46       igs_ge_msg_stack.add;
47       app_exception.raise_exception;
48       RETURN;
49     END IF;
50     CLOSE cur_old_ref_values;
51 
52     -- Populate New Values.
53     new_references.batch_id                          := x_batch_id;
54     new_references.feature_code                      := x_feature_code;
55     new_references.feature_value                     := x_feature_value;
56 
57     IF (p_action = 'UPDATE') THEN
58       new_references.creation_date                   := old_references.creation_date;
59       new_references.created_by                      := old_references.created_by;
60     ELSE
61       new_references.creation_date                   := x_creation_date;
62       new_references.created_by                      := x_created_by;
63     END IF;
64 
65     new_references.last_update_date                  := x_last_update_date;
66     new_references.last_updated_by                   := x_last_updated_by;
67     new_references.last_update_login                 := x_last_update_login;
68 
69   END set_column_values;
70 
71 
72   PROCEDURE check_parent_existance AS
73   /*
74   ||  Created By :
75   ||  Created On : 27-MAR-2003
76   ||  Purpose : Checks for the existance of Parent records.
77   ||  Known limitations, enhancements or remarks :
78   ||  Change History :
79   ||  Who             When            What
80   ||  (reverse chronological order - newest change first)
81   */
82   BEGIN
83 
84     IF (((old_references.feature_code = new_references.feature_code)) OR
85         ((new_references.feature_code IS NULL))) THEN
86       NULL;
87     ELSIF NOT igs_da_ftr_val_map_pkg.get_pk_for_validation (
88                 new_references.feature_code
89               ) THEN
90       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
91       igs_ge_msg_stack.add;
92       app_exception.raise_exception;
93     END IF;
94 
95   END check_parent_existance;
96 
97 
98   FUNCTION get_pk_for_validation (
99     x_batch_id                          IN     NUMBER,
100     x_feature_code                      IN     VARCHAR2
101   ) RETURN BOOLEAN AS
102   /*
103   ||  Created By :
104   ||  Created On : 27-MAR-2003
105   ||  Purpose : Validates the Primary Key of the table.
106   ||  Known limitations, enhancements or remarks :
107   ||  Change History :
108   ||  Who             When            What
109   ||  (reverse chronological order - newest change first)
110   */
111     CURSOR cur_rowid IS
112       SELECT   rowid
113       FROM     igs_da_req_ftrs
114       WHERE    batch_id = x_batch_id
115       AND      feature_code = x_feature_code
116       FOR UPDATE NOWAIT;
117 
118     lv_rowid cur_rowid%RowType;
119 
120   BEGIN
121 
122     OPEN cur_rowid;
123     FETCH cur_rowid INTO lv_rowid;
124     IF (cur_rowid%FOUND) THEN
125       CLOSE cur_rowid;
126       RETURN(TRUE);
127     ELSE
128       CLOSE cur_rowid;
129       RETURN(FALSE);
130     END IF;
131 
132   END get_pk_for_validation;
133 
134 
135   PROCEDURE get_fk_igs_da_ftr_val_map (
136     x_feature_code                      IN     VARCHAR2
137   ) AS
138   /*
139   ||  Created By :
140   ||  Created On : 27-MAR-2003
141   ||  Purpose : Validates the Foreign Keys for the table.
142   ||  Known limitations, enhancements or remarks :
143   ||  Change History :
144   ||  Who             When            What
145   ||  (reverse chronological order - newest change first)
146   */
147     CURSOR cur_rowid IS
148       SELECT   rowid
149       FROM     igs_da_req_ftrs
150       WHERE   ((feature_code = x_feature_code));
151 
152     lv_rowid cur_rowid%RowType;
153 
154   BEGIN
155 
156     OPEN cur_rowid;
157     FETCH cur_rowid INTO lv_rowid;
158     IF (cur_rowid%FOUND) THEN
159       CLOSE cur_rowid;
160       fnd_message.set_name ('IGS', 'IGS_DA_FTR_REQ_FTR_FK');
161       igs_ge_msg_stack.add;
162       app_exception.raise_exception;
163       RETURN;
164     END IF;
165     CLOSE cur_rowid;
166 
167   END get_fk_igs_da_ftr_val_map;
168 
169  PROCEDURE get_fk_igs_da_rqst (
170     x_batch_id                          IN     NUMBER
171   ) AS
172   /*
173   ||  Created By :
174   ||  Created On : 27-MAR-2003
175   ||  Purpose : Validates the Foreign Keys for the table.
176   ||  Known limitations, enhancements or remarks :
177   ||  Change History :
178   ||  Who             When            What
179   ||  (reverse chronological order - newest change first)
180   */
181     CURSOR cur_rowid IS
182       SELECT   rowid
183       FROM     igs_da_req_ftrs
184       WHERE   ((batch_id = x_batch_id));
185 
186     lv_rowid cur_rowid%RowType;
187 
188   BEGIN
189 
190     OPEN cur_rowid;
191     FETCH cur_rowid INTO lv_rowid;
192     IF (cur_rowid%FOUND) THEN
193       CLOSE cur_rowid;
194       fnd_message.set_name ('IGS', 'IGS_DA_RQST_FTR_FK');
195       igs_ge_msg_stack.add;
196       app_exception.raise_exception;
197       RETURN;
198     END IF;
199     CLOSE cur_rowid;
200 
201   END get_fk_igs_da_rqst;
202 
203 
204   PROCEDURE before_dml (
205     p_action                            IN     VARCHAR2,
206     x_rowid                             IN     VARCHAR2,
207     x_batch_id                          IN     NUMBER,
208     x_feature_code                      IN     VARCHAR2,
209     x_feature_value                     IN     VARCHAR2,
210     x_creation_date                     IN     DATE,
211     x_created_by                        IN     NUMBER,
212     x_last_update_date                  IN     DATE,
213     x_last_updated_by                   IN     NUMBER,
214     x_last_update_login                 IN     NUMBER
215   ) AS
216   /*
217   ||  Created By :
218   ||  Created On : 27-MAR-2003
219   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
220   ||            Trigger Handlers for the table, before any DML operation.
221   ||  Known limitations, enhancements or remarks :
222   ||  Change History :
223   ||  Who             When            What
224   ||  (reverse chronological order - newest change first)
225   */
226   BEGIN
227 
228     set_column_values (
229       p_action,
230       x_rowid,
231       x_batch_id,
232       x_feature_code,
233       x_feature_value,
234       x_creation_date,
235       x_created_by,
236       x_last_update_date,
237       x_last_updated_by,
238       x_last_update_login
239     );
240 
241     IF (p_action = 'INSERT') THEN
242       -- Call all the procedures related to Before Insert.
243       IF ( get_pk_for_validation(
244              new_references.batch_id,
245              new_references.feature_code
246            )
247          ) THEN
248         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
249         igs_ge_msg_stack.add;
250         RAISE FND_API.G_EXC_ERROR;
251       END IF;
252       check_parent_existance;
253     ELSIF (p_action = 'UPDATE') THEN
254       -- Call all the procedures related to Before Update.
255       check_parent_existance;
256     ELSIF (p_action = 'VALIDATE_INSERT') THEN
257       -- Call all the procedures related to Before Insert.
258       IF ( get_pk_for_validation (
259              new_references.batch_id,
260              new_references.feature_code
261            )
262          ) THEN
263         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
264         igs_ge_msg_stack.add;
265         RAISE FND_API.G_EXC_ERROR;
266       END IF;
267     END IF;
268 
269   END before_dml;
270 
271   PROCEDURE insert_row (
272     x_rowid                             IN OUT NOCOPY VARCHAR2,
273     x_batch_id                          IN     NUMBER,
274     x_feature_code                      IN     VARCHAR2,
275     x_feature_value                     IN     VARCHAR2,
276     x_mode                              IN     VARCHAR2    DEFAULT 'R' ,
277     X_RETURN_STATUS                     OUT NOCOPY    VARCHAR2,
278     X_MSG_DATA                          OUT NOCOPY    VARCHAR2,
279     X_MSG_COUNT                         OUT NOCOPY    NUMBER
280   ) AS
281   /*
282   ||  Created By :
283   ||  Created On : 27-MAR-2003
284   ||  Purpose : Handles the INSERT DML logic for the table.
285   ||  Known limitations, enhancements or remarks :
286   ||  Change History :
287   ||  Who             When            What
288   ||  (reverse chronological order - newest change first)
289   */
290 
291     x_last_update_date           DATE;
292     x_last_updated_by            NUMBER;
293     x_last_update_login          NUMBER;
294 
295   BEGIN
296     FND_MSG_PUB.initialize;
297     x_last_update_date := SYSDATE;
298     IF (x_mode = 'I') THEN
299       x_last_updated_by := 1;
300       x_last_update_login := 0;
301     ELSIF (x_mode = 'R') THEN
302       x_last_updated_by := fnd_global.user_id;
303       IF (x_last_updated_by IS NULL) THEN
304         x_last_updated_by := -1;
305       END IF;
306       x_last_update_login := fnd_global.login_id;
307       IF (x_last_update_login IS NULL) THEN
308         x_last_update_login := -1;
309       END IF;
310     ELSE
311       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
312       fnd_message.set_token ('ROUTINE', 'IGS_DA_REQ_FTRS_PKG.INSERT_ROW');
313       igs_ge_msg_stack.add;
314       app_exception.raise_exception;
315     END IF;
316 
317     before_dml(
318       p_action                            => 'INSERT',
319       x_rowid                             => x_rowid,
320       x_batch_id                          => x_batch_id,
321       x_feature_code                      => x_feature_code,
322       x_feature_value                     => x_feature_value,
323       x_creation_date                     => x_last_update_date,
324       x_created_by                        => x_last_updated_by,
325       x_last_update_date                  => x_last_update_date,
326       x_last_updated_by                   => x_last_updated_by,
327       x_last_update_login                 => x_last_update_login
328     );
329 
330     INSERT INTO igs_da_req_ftrs (
331       batch_id,
332       feature_code,
333       feature_value,
334       creation_date,
335       created_by,
336       last_update_date,
337       last_updated_by,
338       last_update_login
339     ) VALUES (
340       new_references.batch_id,
341       new_references.feature_code,
342       new_references.feature_value,
343       x_last_update_date,
344       x_last_updated_by,
345       x_last_update_date,
346       x_last_updated_by,
347       x_last_update_login
348     ) RETURNING ROWID INTO x_rowid;
349 
350   -- Initialize API return status to success.
351      X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
352   -- Standard call to get message count and if count is 1, get message
353   -- info.
354      FND_MSG_PUB.Count_And_Get(
355                 p_encoded => FND_API.G_FALSE,
356                 p_count => x_MSG_COUNT,
357                 p_data  => X_MSG_DATA);
358 
359   EXCEPTION
360         WHEN FND_API.G_EXC_ERROR THEN
361             X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
362             FND_MSG_PUB.Count_And_Get(
363                      p_encoded => FND_API.G_FALSE,
364                      p_count => x_MSG_COUNT,
365                      p_data  => X_MSG_DATA);
366      RETURN;
367         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
368                     X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
369                     FND_MSG_PUB.Count_And_Get(
370                         p_encoded => FND_API.G_FALSE,
371                         p_count => x_MSG_COUNT,
372                         p_data  => X_MSG_DATA);
373      RETURN;
374         WHEN OTHERS THEN
375              X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
376              FND_MESSAGE.SET_NAME('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
377              FND_MESSAGE.SET_TOKEN('NAME','Insert_Row : '||SQLERRM);
378              FND_MSG_PUB.ADD;
379              FND_MSG_PUB.Count_And_Get(
380                                p_encoded => FND_API.G_FALSE,
381                                p_count => x_MSG_COUNT,
382                                p_data  => X_MSG_DATA);
383      RETURN;
384 
385   END insert_row;
386 
387 
388   PROCEDURE lock_row (
389     x_rowid                             IN     VARCHAR2,
390     x_batch_id                          IN     NUMBER,
391     x_feature_code                      IN     VARCHAR2,
392     x_feature_value                     IN     VARCHAR2,
393     X_RETURN_STATUS                     OUT NOCOPY    VARCHAR2,
394     X_MSG_DATA                          OUT NOCOPY    VARCHAR2,
395     X_MSG_COUNT                         OUT NOCOPY    NUMBER
396   ) AS
397   /*
398   ||  Created By :
399   ||  Created On : 27-MAR-2003
400   ||  Purpose : Handles the LOCK mechanism for the table.
401   ||  Known limitations, enhancements or remarks :
402   ||  Change History :
403   ||  Who             When            What
404   ||  (reverse chronological order - newest change first)
405   */
406     CURSOR c1 IS
407       SELECT
408         feature_value
409       FROM  igs_da_req_ftrs
410       WHERE rowid = x_rowid
411       FOR UPDATE NOWAIT;
412 
413     tlinfo c1%ROWTYPE;
414 
415   BEGIN
416     FND_MSG_PUB.initialize;
417     OPEN c1;
418     FETCH c1 INTO tlinfo;
419     IF (c1%notfound) THEN
420       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
421       igs_ge_msg_stack.add;
422       CLOSE c1;
423       app_exception.raise_exception;
424       RETURN;
425     END IF;
426     CLOSE c1;
427 
428     IF (
429         ((tlinfo.feature_value = x_feature_value) OR ((tlinfo.feature_value IS NULL) AND (X_feature_value IS NULL)))
430        ) THEN
431       NULL;
432     ELSE
433       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
434       igs_ge_msg_stack.add;
435       RAISE FND_API.G_EXC_ERROR;
436     END IF;
437 
438   -- Initialize API return status to success.
439      X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
440   -- Standard call to get message count and if count is 1, get message
441   -- info.
442         FND_MSG_PUB.Count_And_Get(
443                 p_encoded => FND_API.G_FALSE,
444                 p_count => x_MSG_COUNT,
445                 p_data  => X_MSG_DATA);
446      RETURN;
447  EXCEPTION
448   WHEN FND_API.G_EXC_ERROR THEN
449         X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
450         FND_MSG_PUB.Count_And_Get(
451                  p_encoded => FND_API.G_FALSE,
452                  p_count => x_MSG_COUNT,
453                  p_data  => X_MSG_DATA);
454  RETURN;
455     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
456                 X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
457                 FND_MSG_PUB.Count_And_Get(
458                     p_encoded => FND_API.G_FALSE,
459                     p_count => x_MSG_COUNT,
460                     p_data  => X_MSG_DATA);
461  RETURN;
462   WHEN OTHERS THEN
463          X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
464          FND_MESSAGE.SET_NAME('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
465          FND_MESSAGE.SET_TOKEN('NAME','Insert_Row : '||SQLERRM);
466          FND_MSG_PUB.ADD;
467          FND_MSG_PUB.Count_And_Get(
468                            p_encoded => FND_API.G_FALSE,
469                            p_count => x_MSG_COUNT,
470                            p_data  => X_MSG_DATA);
471  RETURN;
472 
473   END lock_row;
474 
475   PROCEDURE update_row (
476     x_rowid                             IN     VARCHAR2,
477     x_batch_id                          IN     NUMBER,
478     x_feature_code                      IN     VARCHAR2,
479     x_feature_value                     IN     VARCHAR2,
480     x_mode                              IN     VARCHAR2    DEFAULT 'R',
481     X_RETURN_STATUS                     OUT NOCOPY    VARCHAR2,
482     X_MSG_DATA                          OUT NOCOPY    VARCHAR2,
483     X_MSG_COUNT                         OUT NOCOPY    NUMBER
484   ) AS
485   /*
486   ||  Created By :
487   ||  Created On : 27-MAR-2003
488   ||  Purpose : Handles the UPDATE DML logic for the table.
489   ||  Known limitations, enhancements or remarks :
490   ||  Change History :
491   ||  Who             When            What
492   ||  (reverse chronological order - newest change first)
493   */
494     x_last_update_date           DATE ;
495     x_last_updated_by            NUMBER;
496     x_last_update_login          NUMBER;
497 
498   BEGIN
499     FND_MSG_PUB.initialize;
500     x_last_update_date := SYSDATE;
501     IF (X_MODE = 'I') THEN
502       x_last_updated_by := 1;
503       x_last_update_login := 0;
504     ELSIF (x_mode = 'R') THEN
505       x_last_updated_by := fnd_global.user_id;
506       IF x_last_updated_by IS NULL THEN
507         x_last_updated_by := -1;
508       END IF;
509       x_last_update_login := fnd_global.login_id;
510       IF (x_last_update_login IS NULL) THEN
511         x_last_update_login := -1;
512       END IF;
513     ELSE
514       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
515       fnd_message.set_token ('ROUTINE', 'IGS_DA_REQ_FTRS_PKG.UPDATE_ROW');
516       igs_ge_msg_stack.add;
517       app_exception.raise_exception;
518     END IF;
519 
520     before_dml(
521       p_action                            => 'UPDATE',
522       x_rowid                             => x_rowid,
523       x_batch_id                          => x_batch_id,
524       x_feature_code                      => x_feature_code,
525       x_feature_value                     => x_feature_value,
526       x_creation_date                     => x_last_update_date,
527       x_created_by                        => x_last_updated_by,
528       x_last_update_date                  => x_last_update_date,
529       x_last_updated_by                   => x_last_updated_by,
530       x_last_update_login                 => x_last_update_login
531     );
532 
533     UPDATE igs_da_req_ftrs
534       SET
535         feature_value                     = new_references.feature_value,
536         last_update_date                  = x_last_update_date,
537         last_updated_by                   = x_last_updated_by,
538         last_update_login                 = x_last_update_login
539       WHERE rowid = x_rowid;
540 
541     IF (SQL%NOTFOUND) THEN
542       RAISE NO_DATA_FOUND;
543     END IF;
544   -- Initialize API return status to success.
545         X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
546   -- Standard call to get message count and if count is 1, get message
547   -- info.
548         FND_MSG_PUB.Count_And_Get(
549                 p_encoded => FND_API.G_FALSE,
550                 p_count => x_MSG_COUNT,
551                 p_data  => X_MSG_DATA);
552 
553   EXCEPTION
554     WHEN FND_API.G_EXC_ERROR THEN
555           X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
556           FND_MSG_PUB.Count_And_Get(
557                    p_encoded => FND_API.G_FALSE,
558                    p_count => x_MSG_COUNT,
559                    p_data  => X_MSG_DATA);
560    RETURN;
561       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
562                   X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
563                   FND_MSG_PUB.Count_And_Get(
564                       p_encoded => FND_API.G_FALSE,
565                       p_count => x_MSG_COUNT,
566                       p_data  => X_MSG_DATA);
567    RETURN;
568     WHEN OTHERS THEN
569            X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
570            FND_MESSAGE.SET_NAME('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
571            FND_MESSAGE.SET_TOKEN('NAME','Update_Row : '||SQLERRM);
572            FND_MSG_PUB.ADD;
573            FND_MSG_PUB.Count_And_Get(
574                              p_encoded => FND_API.G_FALSE,
575                              p_count => x_MSG_COUNT,
576                              p_data  => X_MSG_DATA);
577    RETURN;
578 
579 
580   END update_row;
581 
582 
583   PROCEDURE add_row (
584     x_rowid                             IN OUT NOCOPY VARCHAR2,
585     x_batch_id                          IN     NUMBER,
586     x_feature_code                      IN     VARCHAR2,
587     x_feature_value                     IN     VARCHAR2,
588     x_mode                              IN     VARCHAR2
589   ) AS
590   /*
591   ||  Created By :
592   ||  Created On : 27-MAR-2003
593   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
594   ||  Known limitations, enhancements or remarks :
595   ||  Change History :
596   ||  Who             When            What
597   ||  (reverse chronological order - newest change first)
598   */
599     CURSOR c1 IS
600       SELECT   rowid
601       FROM     igs_da_req_ftrs
602       WHERE    batch_id                          = x_batch_id
603       AND      feature_code                      = x_feature_code;
604 
605     L_RETURN_STATUS                VARCHAR2(10);
606     L_MSG_DATA                     VARCHAR2(2000);
607     L_MSG_COUNT                    NUMBER(10);
608   BEGIN
609 
610     OPEN c1;
611     FETCH c1 INTO x_rowid;
612     IF (c1%NOTFOUND) THEN
613       CLOSE c1;
614 
615       insert_row (
616         x_rowid,
617         x_batch_id,
618         x_feature_code,
619         x_feature_value,
620         x_mode,
621 	L_RETURN_STATUS ,
622 	L_MSG_DATA      ,
623 	L_MSG_COUNT
624       );
625       RETURN;
626     END IF;
627     CLOSE c1;
628 
629     update_row (
630       x_rowid,
631       x_batch_id,
632       x_feature_code,
633       x_feature_value,
634       x_mode ,
635       L_RETURN_STATUS ,
636       L_MSG_DATA      ,
637       L_MSG_COUNT
638     );
639 
640   END add_row;
641 
642 
643   PROCEDURE delete_row (
644     x_rowid IN VARCHAR2,
645     X_RETURN_STATUS                     OUT NOCOPY    VARCHAR2,
646     X_MSG_DATA                          OUT NOCOPY    VARCHAR2,
647     X_MSG_COUNT                         OUT NOCOPY    NUMBER
648   ) AS
649   /*
650   ||  Created By :
651   ||  Created On : 27-MAR-2003
652   ||  Purpose : Handles the DELETE DML logic for the table.
653   ||  Known limitations, enhancements or remarks :
654   ||  Change History :
655   ||  Who             When            What
656   ||  (reverse chronological order - newest change first)
657   */
658   BEGIN
659     FND_MSG_PUB.initialize;
660     before_dml (
661       p_action => 'DELETE',
662       x_rowid => x_rowid
663     );
664 
665     DELETE FROM igs_da_req_ftrs
666     WHERE rowid = x_rowid;
667 
668     IF (SQL%NOTFOUND) THEN
669       RAISE NO_DATA_FOUND;
670     END IF;
671  -- Initialize API return status to success.
672         X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
673   -- Standard call to get message count and if count is 1, get message
674   -- info.
675         FND_MSG_PUB.Count_And_Get(
676                 p_encoded => FND_API.G_FALSE,
677                 p_count => x_MSG_COUNT,
678                 p_data  => X_MSG_DATA);
679 
680   EXCEPTION
681     WHEN FND_API.G_EXC_ERROR THEN
682           X_RETURN_STATUS := FND_API.G_RET_STS_ERROR;
683           FND_MSG_PUB.Count_And_Get(
684                    p_encoded => FND_API.G_FALSE,
685                    p_count => x_MSG_COUNT,
686                    p_data  => X_MSG_DATA);
687    RETURN;
688       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
689                   X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
690                   FND_MSG_PUB.Count_And_Get(
691                       p_encoded => FND_API.G_FALSE,
692                       p_count => x_MSG_COUNT,
693                       p_data  => X_MSG_DATA);
694    RETURN;
695     WHEN OTHERS THEN
696            X_RETURN_STATUS := FND_API.G_RET_STS_UNEXP_ERROR;
697            FND_MESSAGE.SET_NAME('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
698            FND_MESSAGE.SET_TOKEN('NAME','Insert_Row : '||SQLERRM);
699            FND_MSG_PUB.ADD;
700            FND_MSG_PUB.Count_And_Get(
701                              p_encoded => FND_API.G_FALSE,
702                              p_count => x_MSG_COUNT,
703                              p_data  => X_MSG_DATA);
704    RETURN;
705 
706 
707   END delete_row;
708 
709 
710 END igs_da_req_ftrs_pkg;