DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_QP_FORM_FNA

Source


1 PACKAGE BODY QP_QP_Form_Fna AS
2 /* $Header: QPXFFNAB.pls 120.2 2005/08/18 15:56:06 sfiresto noship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_QP_Form_Fna';
7 
8 --  Global variables holding cached record.
9 
10 g_FNA_rec                     QP_Attr_Map_PUB.Fna_Rec_Type;
11 g_db_FNA_rec                  QP_Attr_Map_PUB.Fna_Rec_Type;
12 
13 --  Forward declaration of procedures maintaining entity record cache.
14 
15 PROCEDURE Write_FNA
16 (   p_FNA_rec                       IN  QP_Attr_Map_PUB.Fna_Rec_Type
17 ,   p_db_record                     IN  BOOLEAN := FALSE
18 );
19 
20 FUNCTION Get_FNA
21 (   p_db_record                     IN  BOOLEAN := FALSE
22 ,   p_pte_sourcesystem_fnarea_id    IN  NUMBER
23 )
24 RETURN QP_Attr_Map_PUB.Fna_Rec_Type;
25 
26 PROCEDURE Clear_FNA;
27 
28 --  Global variable holding performed operations.
29 
30 g_opr__tbl                    QP_Attr_Map_PUB.Fna_Tbl_Type;
31 
32 --  Procedure : Check_Enabled_Fnas
33 --
34 
35 PROCEDURE Check_Enabled_Fnas(x_msg_count OUT NOCOPY NUMBER,
36                              x_msg_data OUT NOCOPY VARCHAR2,
37                              x_return_status OUT NOCOPY VARCHAR2)
38 IS
39 BEGIN
40 
41   QP_Attr_Map_Pvt.Check_Enabled_Fnas
42         ( x_msg_data      => x_msg_data
43         , x_msg_count     => x_msg_count
44         , x_return_status => x_return_status);
45 
46 END Check_Enabled_Fnas;
47 
48 --  Procedure : Default_Attributes
49 --
50 
51 PROCEDURE Default_Attributes
52 (   x_return_status                 OUT NOCOPY VARCHAR2
53 ,   x_msg_count                     OUT NOCOPY NUMBER
54 ,   x_msg_data                      OUT NOCOPY VARCHAR2
55 ,   x_attribute1                    OUT NOCOPY VARCHAR2
56 ,   x_attribute10                   OUT NOCOPY VARCHAR2
57 ,   x_attribute11                   OUT NOCOPY VARCHAR2
58 ,   x_attribute12                   OUT NOCOPY VARCHAR2
59 ,   x_attribute13                   OUT NOCOPY VARCHAR2
60 ,   x_attribute14                   OUT NOCOPY VARCHAR2
61 ,   x_attribute15                   OUT NOCOPY VARCHAR2
62 ,   x_attribute2                    OUT NOCOPY VARCHAR2
63 ,   x_attribute3                    OUT NOCOPY VARCHAR2
64 ,   x_attribute4                    OUT NOCOPY VARCHAR2
65 ,   x_attribute5                    OUT NOCOPY VARCHAR2
66 ,   x_attribute6                    OUT NOCOPY VARCHAR2
67 ,   x_attribute7                    OUT NOCOPY VARCHAR2
68 ,   x_attribute8                    OUT NOCOPY VARCHAR2
69 ,   x_attribute9                    OUT NOCOPY VARCHAR2
70 ,   x_context                       OUT NOCOPY VARCHAR2
71 ,   x_enabled_flag                  OUT NOCOPY VARCHAR2
72 ,   x_functional_area_id            OUT NOCOPY NUMBER
73 ,   x_pte_sourcesystem_fnarea_id    OUT NOCOPY NUMBER
74 ,   x_pte_source_system_id          OUT NOCOPY NUMBER
75 ,   x_seeded_flag                   OUT NOCOPY VARCHAR2
76 ,   x_enabled                       OUT NOCOPY VARCHAR2
77 ,   x_functional_area               OUT NOCOPY VARCHAR2
78 ,   x_pte_sourcesystem_fnarea       OUT NOCOPY VARCHAR2
79 ,   x_pte_source_system             OUT NOCOPY VARCHAR2
80 ,   x_seeded                        OUT NOCOPY VARCHAR2
81 )
82 IS
83 l_FNA_rec                     QP_Attr_Map_PUB.Fna_Rec_Type;
84 l_FNA_val_rec                 QP_Attr_Map_PUB.Fna_Val_Rec_Type;
85 l_FNA_tbl                     QP_Attr_Map_PUB.Fna_Tbl_Type;
86 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
87 l_return_status               VARCHAR2(1);
88 l_x_PTE_rec                   QP_Attr_Map_PUB.Pte_Rec_Type;
89 l_x_RQT_rec                   QP_Attr_Map_PUB.Rqt_Rec_Type;
90 l_x_RQT_tbl                   QP_Attr_Map_PUB.Rqt_Tbl_Type;
91 l_x_SSC_rec                   QP_Attr_Map_PUB.Ssc_Rec_Type;
92 l_x_SSC_tbl                   QP_Attr_Map_PUB.Ssc_Tbl_Type;
93 l_x_PSG_rec                   QP_Attr_Map_PUB.Psg_Rec_Type;
94 l_x_PSG_tbl                   QP_Attr_Map_PUB.Psg_Tbl_Type;
95 l_x_SOU_rec                   QP_Attr_Map_PUB.Sou_Rec_Type;
96 l_x_SOU_tbl                   QP_Attr_Map_PUB.Sou_Tbl_Type;
97 l_x_FNA_rec                   QP_Attr_Map_PUB.Fna_Rec_Type;
98 l_x_FNA_tbl                   QP_Attr_Map_PUB.Fna_Tbl_Type;
99 BEGIN
100 
101     --  Set control flags.
102 
103     l_control_rec.controlled_operation := TRUE;
104     l_control_rec.default_attributes   := TRUE;
105 
106     l_control_rec.change_attributes    := FALSE;
107     l_control_rec.validate_entity      := FALSE;
108     l_control_rec.write_to_DB          := FALSE;
109     l_control_rec.process              := FALSE;
110 
111     --  Instruct API to retain its caches
112 
113     l_control_rec.clear_api_cache      := FALSE;
114     l_control_rec.clear_api_requests   := FALSE;
115 
116     --  Load IN parameters if any exist
117 
118 
119     --  Defaulting of flex values is currently done by the form.
120     --  Set flex attributes to NULL in order to avoid defaulting them.
121 
122     l_FNA_rec.attribute1                          := NULL;
123     l_FNA_rec.attribute10                         := NULL;
124     l_FNA_rec.attribute11                         := NULL;
125     l_FNA_rec.attribute12                         := NULL;
126     l_FNA_rec.attribute13                         := NULL;
127     l_FNA_rec.attribute14                         := NULL;
128     l_FNA_rec.attribute15                         := NULL;
129     l_FNA_rec.attribute2                          := NULL;
130     l_FNA_rec.attribute3                          := NULL;
131     l_FNA_rec.attribute4                          := NULL;
132     l_FNA_rec.attribute5                          := NULL;
133     l_FNA_rec.attribute6                          := NULL;
134     l_FNA_rec.attribute7                          := NULL;
135     l_FNA_rec.attribute8                          := NULL;
136     l_FNA_rec.attribute9                          := NULL;
137     l_FNA_rec.context                             := NULL;
138 
139     --  Set Operation to Create
140 
141     l_FNA_rec.operation := QP_GLOBALS.G_OPR_CREATE;
142 
143     --  Populate FNA table
144 
145     l_FNA_tbl(1) := l_FNA_rec;
146 
147     --  Call QP_Attr_Map_PVT.Process_Attr_Mapping
148 
149     QP_Attr_Map_PVT.Process_Attr_Mapping
150     (   p_api_version_number          => 1.0
151     ,   p_init_msg_list               => FND_API.G_TRUE
152     ,   x_return_status               => l_return_status
153     ,   x_msg_count                   => x_msg_count
154     ,   x_msg_data                    => x_msg_data
155     ,   p_control_rec                 => l_control_rec
156     ,   p_FNA_tbl                     => l_FNA_tbl
157     ,   x_PTE_rec                     => l_x_PTE_rec
158     ,   x_RQT_tbl                     => l_x_RQT_tbl
159     ,   x_SSC_tbl                     => l_x_SSC_tbl
160     ,   x_PSG_tbl                     => l_x_PSG_tbl
161     ,   x_SOU_tbl                     => l_x_SOU_tbl
162     ,   x_FNA_tbl                     => l_x_FNA_tbl
163     );
164 
165     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
166         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
167     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
168         RAISE FND_API.G_EXC_ERROR;
169     END IF;
170 
171 
172     --  Unload out tbl
173 
174     l_x_FNA_rec := l_x_FNA_tbl(1);
175 
176     --  Load OUT parameters.
177 
178     x_attribute1                   := l_x_FNA_rec.attribute1;
179     x_attribute10                  := l_x_FNA_rec.attribute10;
180     x_attribute11                  := l_x_FNA_rec.attribute11;
181     x_attribute12                  := l_x_FNA_rec.attribute12;
182     x_attribute13                  := l_x_FNA_rec.attribute13;
183     x_attribute14                  := l_x_FNA_rec.attribute14;
184     x_attribute15                  := l_x_FNA_rec.attribute15;
185     x_attribute2                   := l_x_FNA_rec.attribute2;
186     x_attribute3                   := l_x_FNA_rec.attribute3;
187     x_attribute4                   := l_x_FNA_rec.attribute4;
188     x_attribute5                   := l_x_FNA_rec.attribute5;
189     x_attribute6                   := l_x_FNA_rec.attribute6;
190     x_attribute7                   := l_x_FNA_rec.attribute7;
191     x_attribute8                   := l_x_FNA_rec.attribute8;
192     x_attribute9                   := l_x_FNA_rec.attribute9;
193     x_context                      := l_x_FNA_rec.context;
194     x_enabled_flag                 := l_x_FNA_rec.enabled_flag;
195     x_functional_area_id           := l_x_FNA_rec.functional_area_id;
196     x_pte_sourcesystem_fnarea_id   := l_x_FNA_rec.pte_sourcesystem_fnarea_id;
197     x_pte_source_system_id         := l_x_FNA_rec.pte_source_system_id;
198     x_seeded_flag                  := l_x_FNA_rec.seeded_flag;
199 
200     --  Load display out parameters if any
201 
202     l_FNA_val_rec := QP_Fna_Util.Get_Values
203     (   p_FNA_rec                     => l_x_FNA_rec
204     );
205     x_enabled                      := l_FNA_val_rec.enabled;
206     x_functional_area              := l_FNA_val_rec.functional_area;
207     x_pte_sourcesystem_fnarea      := l_FNA_val_rec.pte_sourcesystem_fnarea;
208     x_pte_source_system            := l_FNA_val_rec.pte_source_system;
209     x_seeded                       := l_FNA_val_rec.seeded;
210 
211     --  Write to cache.
212     --  Set db_flag to False before writing to cache
213 
214     l_x_FNA_rec.db_flag := FND_API.G_FALSE;
215 
216     Write_FNA
217     (   p_FNA_rec                     => l_x_FNA_rec
218     );
219 
220     --  Set return status.
221 
222     x_return_status := FND_API.G_RET_STS_SUCCESS;
223 
224     --  Get message count and data
225 
226     OE_MSG_PUB.Count_And_Get
227     (   p_count                       => x_msg_count
228     ,   p_data                        => x_msg_data
229     );
230 
231 
232 EXCEPTION
233 
234     WHEN FND_API.G_EXC_ERROR THEN
235 
236         x_return_status := FND_API.G_RET_STS_ERROR;
237 
238         --  Get message count and data
239 
240         OE_MSG_PUB.Count_And_Get
241         (   p_count                       => x_msg_count
242         ,   p_data                        => x_msg_data
243         );
244 
245     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
246 
247         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
248 
249         --  Get message count and data
250 
251         OE_MSG_PUB.Count_And_Get
252         (   p_count                       => x_msg_count
253         ,   p_data                        => x_msg_data
254         );
255 
256     WHEN OTHERS THEN
257 
258         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
259 
260         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
261         THEN
262             OE_MSG_PUB.Add_Exc_Msg
263             (   G_PKG_NAME
264             ,   'Default_Attributes'
265             );
266         END IF;
267 
268         --  Get message count and data
269 
270         OE_MSG_PUB.Count_And_Get
271         (   p_count                       => x_msg_count
272         ,   p_data                        => x_msg_data
273         );
274 
275 END Default_Attributes;
276 
277 --  Procedure   :   Change_Attribute
278 --
279 
280 PROCEDURE Change_Attribute
281 (   x_return_status                 OUT NOCOPY VARCHAR2
282 ,   x_msg_count                     OUT NOCOPY NUMBER
283 ,   x_msg_data                      OUT NOCOPY VARCHAR2
284 ,   p_pte_sourcesystem_fnarea_id    IN  NUMBER
285 ,   p_attr_id                       IN  NUMBER
286 ,   p_attr_value                    IN  VARCHAR2
287 ,   p_attribute1                    IN  VARCHAR2
288 ,   p_attribute10                   IN  VARCHAR2
289 ,   p_attribute11                   IN  VARCHAR2
290 ,   p_attribute12                   IN  VARCHAR2
291 ,   p_attribute13                   IN  VARCHAR2
292 ,   p_attribute14                   IN  VARCHAR2
293 ,   p_attribute15                   IN  VARCHAR2
294 ,   p_attribute2                    IN  VARCHAR2
295 ,   p_attribute3                    IN  VARCHAR2
296 ,   p_attribute4                    IN  VARCHAR2
297 ,   p_attribute5                    IN  VARCHAR2
298 ,   p_attribute6                    IN  VARCHAR2
299 ,   p_attribute7                    IN  VARCHAR2
300 ,   p_attribute8                    IN  VARCHAR2
301 ,   p_attribute9                    IN  VARCHAR2
302 ,   p_context                       IN  VARCHAR2
303 ,   x_attribute1                    OUT NOCOPY VARCHAR2
304 ,   x_attribute10                   OUT NOCOPY VARCHAR2
305 ,   x_attribute11                   OUT NOCOPY VARCHAR2
306 ,   x_attribute12                   OUT NOCOPY VARCHAR2
307 ,   x_attribute13                   OUT NOCOPY VARCHAR2
308 ,   x_attribute14                   OUT NOCOPY VARCHAR2
309 ,   x_attribute15                   OUT NOCOPY VARCHAR2
310 ,   x_attribute2                    OUT NOCOPY VARCHAR2
311 ,   x_attribute3                    OUT NOCOPY VARCHAR2
312 ,   x_attribute4                    OUT NOCOPY VARCHAR2
313 ,   x_attribute5                    OUT NOCOPY VARCHAR2
314 ,   x_attribute6                    OUT NOCOPY VARCHAR2
315 ,   x_attribute7                    OUT NOCOPY VARCHAR2
316 ,   x_attribute8                    OUT NOCOPY VARCHAR2
317 ,   x_attribute9                    OUT NOCOPY VARCHAR2
318 ,   x_context                       OUT NOCOPY VARCHAR2
319 ,   x_enabled_flag                  OUT NOCOPY VARCHAR2
320 ,   x_functional_area_id            OUT NOCOPY NUMBER
321 ,   x_pte_sourcesystem_fnarea_id    OUT NOCOPY NUMBER
322 ,   x_pte_source_system_id          OUT NOCOPY NUMBER
323 ,   x_seeded_flag                   OUT NOCOPY VARCHAR2
324 ,   x_enabled                       OUT NOCOPY VARCHAR2
325 ,   x_functional_area               OUT NOCOPY VARCHAR2
326 ,   x_pte_sourcesystem_fnarea       OUT NOCOPY VARCHAR2
327 ,   x_pte_source_system             OUT NOCOPY VARCHAR2
328 ,   x_seeded                        OUT NOCOPY VARCHAR2
329 )
330 IS
331 l_FNA_rec                     QP_Attr_Map_PUB.Fna_Rec_Type;
332 l_old_FNA_rec                 QP_Attr_Map_PUB.Fna_Rec_Type;
333 l_FNA_val_rec                 QP_Attr_Map_PUB.Fna_Val_Rec_Type;
334 l_FNA_tbl                     QP_Attr_Map_PUB.Fna_Tbl_Type;
335 l_old_FNA_tbl                 QP_Attr_Map_PUB.Fna_Tbl_Type;
336 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
337 l_return_status               VARCHAR2(1);
338 l_x_PTE_rec                   QP_Attr_Map_PUB.Pte_Rec_Type;
339 l_x_RQT_rec                   QP_Attr_Map_PUB.Rqt_Rec_Type;
340 l_x_RQT_tbl                   QP_Attr_Map_PUB.Rqt_Tbl_Type;
341 l_x_SSC_rec                   QP_Attr_Map_PUB.Ssc_Rec_Type;
342 l_x_SSC_tbl                   QP_Attr_Map_PUB.Ssc_Tbl_Type;
343 l_x_PSG_rec                   QP_Attr_Map_PUB.Psg_Rec_Type;
344 l_x_PSG_tbl                   QP_Attr_Map_PUB.Psg_Tbl_Type;
345 l_x_SOU_rec                   QP_Attr_Map_PUB.Sou_Rec_Type;
346 l_x_SOU_tbl                   QP_Attr_Map_PUB.Sou_Tbl_Type;
347 l_x_FNA_rec                   QP_Attr_Map_PUB.Fna_Rec_Type;
348 l_x_FNA_tbl                   QP_Attr_Map_PUB.Fna_Tbl_Type;
349 BEGIN
350 
351     --  Set control flags.
352 
353     l_control_rec.controlled_operation := TRUE;
354     l_control_rec.change_attributes    := TRUE;
355 
356     l_control_rec.default_attributes   := FALSE;
357     l_control_rec.validate_entity      := FALSE;
358     l_control_rec.write_to_DB          := FALSE;
359     l_control_rec.process              := FALSE;
360 
361     --  Instruct API to retain its caches
362 
363     l_control_rec.clear_api_cache      := FALSE;
364     l_control_rec.clear_api_requests   := FALSE;
365 
366     --  Read FNA from cache
367 
368     l_FNA_rec := Get_FNA
369     (   p_db_record                   => FALSE
370     ,   p_pte_sourcesystem_fnarea_id  => p_pte_sourcesystem_fnarea_id
371     );
372 
373     l_old_FNA_rec                  := l_FNA_rec;
374 
375     IF p_attr_id = QP_Fna_Util.G_ENABLED THEN
376         l_FNA_rec.enabled_flag := p_attr_value;
377     ELSIF p_attr_id = QP_Fna_Util.G_FUNCTIONAL_AREA THEN
378         l_FNA_rec.functional_area_id := TO_NUMBER(p_attr_value);
379     ELSIF p_attr_id = QP_Fna_Util.G_PTE_SOURCESYSTEM_FNAREA THEN
380         l_FNA_rec.pte_sourcesystem_fnarea_id := TO_NUMBER(p_attr_value);
381     ELSIF p_attr_id = QP_Fna_Util.G_PTE_SOURCE_SYSTEM THEN
382         l_FNA_rec.pte_source_system_id := TO_NUMBER(p_attr_value);
383     ELSIF p_attr_id = QP_Fna_Util.G_SEEDED THEN
384         l_FNA_rec.seeded_flag := p_attr_value;
385     ELSIF p_attr_id = QP_Fna_Util.G_ATTRIBUTE1
386     OR     p_attr_id = QP_Fna_Util.G_ATTRIBUTE10
387     OR     p_attr_id = QP_Fna_Util.G_ATTRIBUTE11
388     OR     p_attr_id = QP_Fna_Util.G_ATTRIBUTE12
389     OR     p_attr_id = QP_Fna_Util.G_ATTRIBUTE13
390     OR     p_attr_id = QP_Fna_Util.G_ATTRIBUTE15
391     OR     p_attr_id = QP_Fna_Util.G_ATTRIBUTE2
392     OR     p_attr_id = QP_Fna_Util.G_ATTRIBUTE3
393     OR     p_attr_id = QP_Fna_Util.G_ATTRIBUTE4
394     OR     p_attr_id = QP_Fna_Util.G_ATTRIBUTE5
395     OR     p_attr_id = QP_Fna_Util.G_ATTRIBUTE6
396     OR     p_attr_id = QP_Fna_Util.G_ATTRIBUTE7
397     OR     p_attr_id = QP_Fna_Util.G_ATTRIBUTE8
398     OR     p_attr_id = QP_Fna_Util.G_ATTRIBUTE9
399     OR     p_attr_id = QP_Fna_Util.G_CONTEXT
400     THEN
401 
402         l_FNA_rec.attribute1           := p_attribute1;
403         l_FNA_rec.attribute10          := p_attribute10;
404         l_FNA_rec.attribute11          := p_attribute11;
405         l_FNA_rec.attribute12          := p_attribute12;
406         l_FNA_rec.attribute13          := p_attribute13;
407         l_FNA_rec.attribute15          := p_attribute15;
408         l_FNA_rec.attribute2           := p_attribute2;
409         l_FNA_rec.attribute3           := p_attribute3;
410         l_FNA_rec.attribute4           := p_attribute4;
411         l_FNA_rec.attribute5           := p_attribute5;
412         l_FNA_rec.attribute6           := p_attribute6;
413         l_FNA_rec.attribute7           := p_attribute7;
414         l_FNA_rec.attribute8           := p_attribute8;
415         l_FNA_rec.attribute9           := p_attribute9;
416         l_FNA_rec.context              := p_context;
417 
418     ELSE
419 
420         --  Unexpected error, unrecognized attribute
421 
422         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
423         THEN
424             OE_MSG_PUB.Add_Exc_Msg
425             (   G_PKG_NAME
426             ,   'Change_Attribute'
427             ,   'Unrecognized attribute'
428             );
429         END IF;
430 
431         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
432 
433     END IF;
434 
435     --  Set Operation.
436 
437     IF FND_API.To_Boolean(l_FNA_rec.db_flag) THEN
438         l_FNA_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
439     ELSE
440         l_FNA_rec.operation := QP_GLOBALS.G_OPR_CREATE;
441     END IF;
442 
443     --  Populate FNA table
444 
445     l_FNA_tbl(1) := l_FNA_rec;
446     l_old_FNA_tbl(1) := l_old_FNA_rec;
447 
448     --  Call QP_Attr_Map_PVT.Process_Attr_Mapping
449 
450     QP_Attr_Map_PVT.Process_Attr_Mapping
451     (   p_api_version_number          => 1.0
452     ,   p_init_msg_list               => FND_API.G_TRUE
453     ,   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
454     ,   x_return_status               => l_return_status
455     ,   x_msg_count                   => x_msg_count
456     ,   x_msg_data                    => x_msg_data
457     ,   p_control_rec                 => l_control_rec
458     ,   p_FNA_tbl                     => l_FNA_tbl
459     ,   p_old_FNA_tbl                 => l_old_FNA_tbl
460     ,   x_PTE_rec                     => l_x_PTE_rec
461     ,   x_RQT_tbl                     => l_x_RQT_tbl
462     ,   x_SSC_tbl                     => l_x_SSC_tbl
463     ,   x_PSG_tbl                     => l_x_PSG_tbl
464     ,   x_SOU_tbl                     => l_x_SOU_tbl
465     ,   x_FNA_tbl                     => l_x_FNA_tbl
466     );
467 
468     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
469         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
470     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
471         RAISE FND_API.G_EXC_ERROR;
472     END IF;
473 
474 
475     --  Unload out tbl
476 
477     l_x_FNA_rec := l_x_FNA_tbl(1);
478 
479     --  Init OUT parameters to missing.
480 
481     x_attribute1                   := FND_API.G_MISS_CHAR;
482     x_attribute10                  := FND_API.G_MISS_CHAR;
483     x_attribute11                  := FND_API.G_MISS_CHAR;
484     x_attribute12                  := FND_API.G_MISS_CHAR;
485     x_attribute13                  := FND_API.G_MISS_CHAR;
486     x_attribute14                  := FND_API.G_MISS_CHAR;
487     x_attribute15                  := FND_API.G_MISS_CHAR;
488     x_attribute2                   := FND_API.G_MISS_CHAR;
489     x_attribute3                   := FND_API.G_MISS_CHAR;
490     x_attribute4                   := FND_API.G_MISS_CHAR;
491     x_attribute5                   := FND_API.G_MISS_CHAR;
492     x_attribute6                   := FND_API.G_MISS_CHAR;
493     x_attribute7                   := FND_API.G_MISS_CHAR;
494     x_attribute8                   := FND_API.G_MISS_CHAR;
495     x_attribute9                   := FND_API.G_MISS_CHAR;
496     x_context                      := FND_API.G_MISS_CHAR;
497     x_enabled_flag                 := FND_API.G_MISS_CHAR;
498     x_functional_area_id           := FND_API.G_MISS_NUM;
499     x_pte_sourcesystem_fnarea_id   := FND_API.G_MISS_NUM;
500     x_pte_source_system_id         := FND_API.G_MISS_NUM;
501     x_seeded_flag                  := FND_API.G_MISS_CHAR;
502     x_enabled                      := FND_API.G_MISS_CHAR;
503     x_functional_area              := FND_API.G_MISS_CHAR;
504     x_pte_sourcesystem_fnarea      := FND_API.G_MISS_CHAR;
505     x_pte_source_system            := FND_API.G_MISS_CHAR;
506     x_seeded                       := FND_API.G_MISS_CHAR;
507 
508     --  Load display out parameters if any
509 
510     l_FNA_val_rec := QP_Fna_Util.Get_Values
511     (   p_FNA_rec                     => l_x_FNA_rec
512     ,   p_old_FNA_rec                 => l_FNA_rec
513     );
514 
515     --  Return changed attributes.
516 
517     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute1,
518                             l_FNA_rec.attribute1)
519     THEN
520         x_attribute1 := l_x_FNA_rec.attribute1;
521     END IF;
522 
523     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute10,
524                             l_FNA_rec.attribute10)
525     THEN
526         x_attribute10 := l_x_FNA_rec.attribute10;
527     END IF;
528 
529     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute11,
530                             l_FNA_rec.attribute11)
531     THEN
532         x_attribute11 := l_x_FNA_rec.attribute11;
533     END IF;
534 
535     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute12,
536                             l_FNA_rec.attribute12)
537     THEN
538         x_attribute12 := l_x_FNA_rec.attribute12;
539     END IF;
540 
541     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute13,
542                             l_FNA_rec.attribute13)
543     THEN
544         x_attribute13 := l_x_FNA_rec.attribute13;
545     END IF;
546 
547     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute14,
548                             l_FNA_rec.attribute14)
549     THEN
550         x_attribute14 := l_x_FNA_rec.attribute14;
551     END IF;
552 
553     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute15,
554                             l_FNA_rec.attribute15)
555     THEN
556         x_attribute15 := l_x_FNA_rec.attribute15;
557     END IF;
558 
559     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute2,
560                             l_FNA_rec.attribute2)
561     THEN
562         x_attribute2 := l_x_FNA_rec.attribute2;
563     END IF;
564 
565     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute3,
566                             l_FNA_rec.attribute3)
567     THEN
568         x_attribute3 := l_x_FNA_rec.attribute3;
569     END IF;
570 
571     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute4,
572                             l_FNA_rec.attribute4)
573     THEN
574         x_attribute4 := l_x_FNA_rec.attribute4;
575     END IF;
576 
577     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute5,
578                             l_FNA_rec.attribute5)
579     THEN
580         x_attribute5 := l_x_FNA_rec.attribute5;
581     END IF;
582 
583     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute6,
584                             l_FNA_rec.attribute6)
585     THEN
586         x_attribute6 := l_x_FNA_rec.attribute6;
587     END IF;
588 
589     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute7,
590                             l_FNA_rec.attribute7)
591     THEN
592         x_attribute7 := l_x_FNA_rec.attribute7;
593     END IF;
594 
595     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute8,
596                             l_FNA_rec.attribute8)
597     THEN
598         x_attribute8 := l_x_FNA_rec.attribute8;
599     END IF;
600 
601     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.attribute9,
602                             l_FNA_rec.attribute9)
603     THEN
604         x_attribute9 := l_x_FNA_rec.attribute9;
605     END IF;
606 
607     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.context,
608                             l_FNA_rec.context)
609     THEN
610         x_context := l_x_FNA_rec.context;
611     END IF;
612 
613     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.enabled_flag,
614                             l_FNA_rec.enabled_flag)
615     THEN
616         x_enabled_flag := l_x_FNA_rec.enabled_flag;
617         x_enabled := l_FNA_val_rec.enabled;
618     END IF;
619 
620     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.functional_area_id,
621                             l_FNA_rec.functional_area_id)
622     THEN
623         x_functional_area_id := l_x_FNA_rec.functional_area_id;
624         x_functional_area := l_FNA_val_rec.functional_area;
625     END IF;
626 
627     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.pte_sourcesystem_fnarea_id,
628                             l_FNA_rec.pte_sourcesystem_fnarea_id)
629     THEN
630         x_pte_sourcesystem_fnarea_id := l_x_FNA_rec.pte_sourcesystem_fnarea_id;
631         x_pte_sourcesystem_fnarea := l_FNA_val_rec.pte_sourcesystem_fnarea;
632     END IF;
633 
634     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.pte_source_system_id,
635                             l_FNA_rec.pte_source_system_id)
636     THEN
637         x_pte_source_system_id := l_x_FNA_rec.pte_source_system_id;
638         x_pte_source_system := l_FNA_val_rec.pte_source_system;
639     END IF;
640 
641     IF NOT QP_GLOBALS.Equal(l_x_FNA_rec.seeded_flag,
642                             l_FNA_rec.seeded_flag)
643     THEN
644         x_seeded_flag := l_x_FNA_rec.seeded_flag;
645         x_seeded := l_FNA_val_rec.seeded;
646     END IF;
647 
648 
649     --  Write to cache.
650 
651     Write_FNA
652     (   p_FNA_rec                     => l_x_FNA_rec
653     );
654 
655     --  Set return status.
656 
657     x_return_status := FND_API.G_RET_STS_SUCCESS;
658 
659     --  Get message count and data
660 
661     OE_MSG_PUB.Count_And_Get
662     (   p_count                       => x_msg_count
663     ,   p_data                        => x_msg_data
664     );
665 
666 
667 EXCEPTION
668 
669     WHEN FND_API.G_EXC_ERROR THEN
670 
671         x_return_status := FND_API.G_RET_STS_ERROR;
672 
673         --  Get message count and data
674 
675         OE_MSG_PUB.Count_And_Get
676         (   p_count                       => x_msg_count
677         ,   p_data                        => x_msg_data
678         );
679 
680     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
681 
682         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
683 
684         --  Get message count and data
685 
686         OE_MSG_PUB.Count_And_Get
687         (   p_count                       => x_msg_count
688         ,   p_data                        => x_msg_data
689         );
690 
691     WHEN OTHERS THEN
692 
693         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
694 
695         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
696         THEN
697             OE_MSG_PUB.Add_Exc_Msg
698             (   G_PKG_NAME
699             ,   'Change_Attribute'
700             );
701         END IF;
702 
703         --  Get message count and data
704 
705         OE_MSG_PUB.Count_And_Get
706         (   p_count                       => x_msg_count
707         ,   p_data                        => x_msg_data
708         );
709 
710 END Change_Attribute;
711 
712 --  Procedure       Validate_And_Write
713 --
714 
715 PROCEDURE Validate_And_Write
716 (   x_return_status                 OUT NOCOPY VARCHAR2
717 ,   x_msg_count                     OUT NOCOPY NUMBER
718 ,   x_msg_data                      OUT NOCOPY VARCHAR2
719 ,   p_pte_sourcesystem_fnarea_id    IN  NUMBER
720 ,   x_creation_date                 OUT NOCOPY DATE
721 ,   x_created_by                    OUT NOCOPY NUMBER
722 ,   x_last_update_date              OUT NOCOPY DATE
723 ,   x_last_updated_by               OUT NOCOPY NUMBER
724 ,   x_last_update_login             OUT NOCOPY NUMBER
725 )
726 IS
727 l_FNA_rec                     QP_Attr_Map_PUB.Fna_Rec_Type;
728 l_old_FNA_rec                 QP_Attr_Map_PUB.Fna_Rec_Type;
729 l_FNA_tbl                     QP_Attr_Map_PUB.Fna_Tbl_Type;
730 l_old_FNA_tbl                 QP_Attr_Map_PUB.Fna_Tbl_Type;
731 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
732 l_return_status               VARCHAR2(1);
733 l_x_PTE_rec                   QP_Attr_Map_PUB.Pte_Rec_Type;
734 l_x_RQT_rec                   QP_Attr_Map_PUB.Rqt_Rec_Type;
735 l_x_RQT_tbl                   QP_Attr_Map_PUB.Rqt_Tbl_Type;
736 l_x_SSC_rec                   QP_Attr_Map_PUB.Ssc_Rec_Type;
737 l_x_SSC_tbl                   QP_Attr_Map_PUB.Ssc_Tbl_Type;
738 l_x_PSG_rec                   QP_Attr_Map_PUB.Psg_Rec_Type;
739 l_x_PSG_tbl                   QP_Attr_Map_PUB.Psg_Tbl_Type;
740 l_x_SOU_rec                   QP_Attr_Map_PUB.Sou_Rec_Type;
741 l_x_SOU_tbl                   QP_Attr_Map_PUB.Sou_Tbl_Type;
742 l_x_FNA_rec                   QP_Attr_Map_PUB.Fna_Rec_Type;
743 l_x_FNA_tbl                   QP_Attr_Map_PUB.Fna_Tbl_Type;
744 BEGIN
745 
746     --  Set control flags.
747 
748     l_control_rec.controlled_operation := TRUE;
749     l_control_rec.validate_entity      := TRUE;
750     l_control_rec.write_to_DB          := TRUE;
751 
752     l_control_rec.default_attributes   := FALSE;
753     l_control_rec.change_attributes    := FALSE;
754     l_control_rec.process              := FALSE;
755 
756     --  Instruct API to retain its caches
757 
758     l_control_rec.clear_api_cache      := FALSE;
759     l_control_rec.clear_api_requests   := FALSE;
760 
761     --  Read FNA from cache
762 
763     l_old_FNA_rec := Get_FNA
764     (   p_db_record                   => TRUE
765     ,   p_pte_sourcesystem_fnarea_id  => p_pte_sourcesystem_fnarea_id
766     );
767 
768     l_FNA_rec := Get_FNA
769     (   p_db_record                   => FALSE
770     ,   p_pte_sourcesystem_fnarea_id  => p_pte_sourcesystem_fnarea_id
771     );
772 
773     --  Set Operation.
774 
775     IF FND_API.To_Boolean(l_FNA_rec.db_flag) THEN
776         l_FNA_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
777     ELSE
778         l_FNA_rec.operation := QP_GLOBALS.G_OPR_CREATE;
779     END IF;
780 
781     --  Populate FNA table
782 
783     l_FNA_tbl(1) := l_FNA_rec;
784     l_old_FNA_tbl(1) := l_old_FNA_rec;
785 
786     --  Call QP_Attr_Map_PVT.Process_Attr_Mapping
787 
788     QP_Attr_Map_PVT.Process_Attr_Mapping
789     (   p_api_version_number          => 1.0
790     ,   p_init_msg_list               => FND_API.G_TRUE
791     ,   x_return_status               => l_return_status
792     ,   x_msg_count                   => x_msg_count
793     ,   x_msg_data                    => x_msg_data
794     ,   p_control_rec                 => l_control_rec
795     ,   p_FNA_tbl                     => l_FNA_tbl
796     ,   p_old_FNA_tbl                 => l_old_FNA_tbl
797     ,   x_PTE_rec                     => l_x_PTE_rec
798     ,   x_RQT_tbl                     => l_x_RQT_tbl
799     ,   x_SSC_tbl                     => l_x_SSC_tbl
800     ,   x_PSG_tbl                     => l_x_PSG_tbl
801     ,   x_SOU_tbl                     => l_x_SOU_tbl
802     ,   x_FNA_tbl                     => l_x_FNA_tbl
803     );
804 
805     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
806         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
807     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
808         RAISE FND_API.G_EXC_ERROR;
809     END IF;
810 
811 
812     --  Load OUT parameters.
813 
814     l_x_FNA_rec := l_x_FNA_tbl(1);
815 
816     x_creation_date                := l_x_FNA_rec.creation_date;
817     x_created_by                   := l_x_FNA_rec.created_by;
818     x_last_update_date             := l_x_FNA_rec.last_update_date;
819     x_last_updated_by              := l_x_FNA_rec.last_updated_by;
820     x_last_update_login            := l_x_FNA_rec.last_update_login;
821 
822     --  Clear FNA record cache
823 
824     Clear_FNA;
825 
826     --  Keep track of performed operations.
827 
828     l_old_FNA_rec.operation := l_FNA_rec.operation;
829 
830 
831     --  Set return status.
832 
833     x_return_status := FND_API.G_RET_STS_SUCCESS;
834 
835     --  Get message count and data
836 
837     OE_MSG_PUB.Count_And_Get
838     (   p_count                       => x_msg_count
839     ,   p_data                        => x_msg_data
840     );
841 
842 
843 EXCEPTION
844 
845     WHEN FND_API.G_EXC_ERROR THEN
846 
847         x_return_status := FND_API.G_RET_STS_ERROR;
848 
849         --  Get message count and data
850 
851         OE_MSG_PUB.Count_And_Get
852         (   p_count                       => x_msg_count
853         ,   p_data                        => x_msg_data
854         );
855 
856     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
857 
858         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
859 
860         --  Get message count and data
861 
862         OE_MSG_PUB.Count_And_Get
863         (   p_count                       => x_msg_count
864         ,   p_data                        => x_msg_data
865         );
866 
867     WHEN OTHERS THEN
868 
869         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
870 
871         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
872         THEN
873             OE_MSG_PUB.Add_Exc_Msg
874             (   G_PKG_NAME
875             ,   'Validate_And_Write'
876             );
877         END IF;
878 
879         --  Get message count and data
880 
881         OE_MSG_PUB.Count_And_Get
882         (   p_count                       => x_msg_count
883         ,   p_data                        => x_msg_data
884         );
885 
886 END Validate_And_Write;
887 
888 --  Procedure       Delete_Row
889 --
890 
891 PROCEDURE Delete_Row
892 (   x_return_status                 OUT NOCOPY VARCHAR2
893 ,   x_msg_count                     OUT NOCOPY NUMBER
894 ,   x_msg_data                      OUT NOCOPY VARCHAR2
895 ,   p_pte_sourcesystem_fnarea_id    IN  NUMBER
896 )
897 IS
898 l_FNA_rec                     QP_Attr_Map_PUB.Fna_Rec_Type;
899 l_FNA_tbl                     QP_Attr_Map_PUB.Fna_Tbl_Type;
900 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
901 l_return_status               VARCHAR2(1);
902 l_x_PTE_rec                   QP_Attr_Map_PUB.Pte_Rec_Type;
903 l_x_RQT_rec                   QP_Attr_Map_PUB.Rqt_Rec_Type;
904 l_x_RQT_tbl                   QP_Attr_Map_PUB.Rqt_Tbl_Type;
905 l_x_SSC_rec                   QP_Attr_Map_PUB.Ssc_Rec_Type;
906 l_x_SSC_tbl                   QP_Attr_Map_PUB.Ssc_Tbl_Type;
907 l_x_PSG_rec                   QP_Attr_Map_PUB.Psg_Rec_Type;
908 l_x_PSG_tbl                   QP_Attr_Map_PUB.Psg_Tbl_Type;
909 l_x_SOU_rec                   QP_Attr_Map_PUB.Sou_Rec_Type;
910 l_x_SOU_tbl                   QP_Attr_Map_PUB.Sou_Tbl_Type;
911 l_x_FNA_rec                   QP_Attr_Map_PUB.Fna_Rec_Type;
912 l_x_FNA_tbl                   QP_Attr_Map_PUB.Fna_Tbl_Type;
913 BEGIN
914 
915     --  Set control flags.
916 
917     l_control_rec.controlled_operation := TRUE;
918     l_control_rec.validate_entity      := TRUE;
919     l_control_rec.write_to_DB          := TRUE;
920 
921     l_control_rec.default_attributes   := FALSE;
922     l_control_rec.change_attributes    := FALSE;
923     l_control_rec.process              := FALSE;
924 
925     --  Instruct API to retain its caches
926 
927     l_control_rec.clear_api_cache      := FALSE;
928     l_control_rec.clear_api_requests   := FALSE;
929 
930     --  Read DB record from cache
931 
932     l_FNA_rec := Get_FNA
933     (   p_db_record                   => TRUE
934     ,   p_pte_sourcesystem_fnarea_id  => p_pte_sourcesystem_fnarea_id
935     );
936 
937     --  Set Operation.
938 
939     l_FNA_rec.operation := QP_GLOBALS.G_OPR_DELETE;
940 
941     --  Populate FNA table
942 
943     l_FNA_tbl(1) := l_FNA_rec;
944 
945     --  Call QP_Attr_Map_PVT.Process_Attr_Mapping
946 
947     QP_Attr_Map_PVT.Process_Attr_Mapping
948     (   p_api_version_number          => 1.0
949     ,   p_init_msg_list               => FND_API.G_TRUE
950     ,   x_return_status               => l_return_status
951     ,   x_msg_count                   => x_msg_count
952     ,   x_msg_data                    => x_msg_data
953     ,   p_control_rec                 => l_control_rec
954     ,   p_FNA_tbl                     => l_FNA_tbl
955     ,   x_PTE_rec                     => l_x_PTE_rec
956     ,   x_RQT_tbl                     => l_x_RQT_tbl
957     ,   x_SSC_tbl                     => l_x_SSC_tbl
958     ,   x_PSG_tbl                     => l_x_PSG_tbl
959     ,   x_SOU_tbl                     => l_x_SOU_tbl
960     ,   x_FNA_tbl                     => l_x_FNA_tbl
961     );
962 
963     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
964         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
965     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
966         RAISE FND_API.G_EXC_ERROR;
967     END IF;
968 
969 
970     --  Clear FNA record cache
971 
972     Clear_FNA;
973 
974     --  Set return status.
975 
976     x_return_status := FND_API.G_RET_STS_SUCCESS;
977 
978     --  Get message count and data
979 
980     OE_MSG_PUB.Count_And_Get
981     (   p_count                       => x_msg_count
982     ,   p_data                        => x_msg_data
983     );
984 
985 
986 EXCEPTION
987 
988     WHEN FND_API.G_EXC_ERROR THEN
989 
990         x_return_status := FND_API.G_RET_STS_ERROR;
991 
992         --  Get message count and data
993 
994         OE_MSG_PUB.Count_And_Get
995         (   p_count                       => x_msg_count
996         ,   p_data                        => x_msg_data
997         );
998 
999     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1000 
1001         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1002 
1003         --  Get message count and data
1004 
1005         OE_MSG_PUB.Count_And_Get
1006         (   p_count                       => x_msg_count
1007         ,   p_data                        => x_msg_data
1008         );
1009 
1010     WHEN OTHERS THEN
1011 
1012         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1013 
1014         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1015         THEN
1016             OE_MSG_PUB.Add_Exc_Msg
1017             (   G_PKG_NAME
1018             ,   'Delete_Row'
1019             );
1020         END IF;
1021 
1022         --  Get message count and data
1023 
1024         OE_MSG_PUB.Count_And_Get
1025         (   p_count                       => x_msg_count
1026         ,   p_data                        => x_msg_data
1027         );
1028 
1029 END Delete_Row;
1030 
1031 --  Procedure       Process_Entity
1032 --
1033 
1034 PROCEDURE Process_Entity
1035 (   x_return_status                 OUT NOCOPY VARCHAR2
1036 ,   x_msg_count                     OUT NOCOPY NUMBER
1037 ,   x_msg_data                      OUT NOCOPY VARCHAR2
1038 )
1039 IS
1040 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1041 l_return_status               VARCHAR2(1);
1042 l_x_PTE_rec                   QP_Attr_Map_PUB.Pte_Rec_Type;
1043 l_x_RQT_rec                   QP_Attr_Map_PUB.Rqt_Rec_Type;
1044 l_x_RQT_tbl                   QP_Attr_Map_PUB.Rqt_Tbl_Type;
1045 l_x_SSC_rec                   QP_Attr_Map_PUB.Ssc_Rec_Type;
1046 l_x_SSC_tbl                   QP_Attr_Map_PUB.Ssc_Tbl_Type;
1047 l_x_PSG_rec                   QP_Attr_Map_PUB.Psg_Rec_Type;
1048 l_x_PSG_tbl                   QP_Attr_Map_PUB.Psg_Tbl_Type;
1049 l_x_SOU_rec                   QP_Attr_Map_PUB.Sou_Rec_Type;
1050 l_x_SOU_tbl                   QP_Attr_Map_PUB.Sou_Tbl_Type;
1051 l_x_FNA_rec                   QP_Attr_Map_PUB.Fna_Rec_Type;
1052 l_x_FNA_tbl                   QP_Attr_Map_PUB.Fna_Tbl_Type;
1053 BEGIN
1054 
1055     --  Set control flags.
1056 
1057     l_control_rec.controlled_operation := TRUE;
1058     l_control_rec.process              := TRUE;
1059     l_control_rec.process_entity       := QP_GLOBALS.G_ENTITY_FNA;
1060 
1061     l_control_rec.default_attributes   := FALSE;
1062     l_control_rec.change_attributes    := FALSE;
1063     l_control_rec.validate_entity      := FALSE;
1064     l_control_rec.write_to_DB          := FALSE;
1065 
1066     --  Instruct API to clear its request table
1067 
1068     l_control_rec.clear_api_cache      := FALSE;
1069     l_control_rec.clear_api_requests   := FALSE;
1070 
1071     --  Call QP_Attr_Map_PVT.Process_Attr_Mapping
1072 
1073     QP_Attr_Map_PVT.Process_Attr_Mapping
1074     (   p_api_version_number          => 1.0
1075     ,   p_init_msg_list               => FND_API.G_TRUE
1076     ,   x_return_status               => l_return_status
1077     ,   x_msg_count                   => x_msg_count
1078     ,   x_msg_data                    => x_msg_data
1079     ,   p_control_rec                 => l_control_rec
1080     ,   x_PTE_rec                     => l_x_PTE_rec
1081     ,   x_RQT_tbl                     => l_x_RQT_tbl
1082     ,   x_SSC_tbl                     => l_x_SSC_tbl
1083     ,   x_PSG_tbl                     => l_x_PSG_tbl
1084     ,   x_SOU_tbl                     => l_x_SOU_tbl
1085     ,   x_FNA_tbl                     => l_x_FNA_tbl
1086     );
1087 
1088     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1089         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1090     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1091         RAISE FND_API.G_EXC_ERROR;
1092     END IF;
1093 
1094 
1095     --  Set return status.
1096 
1097     x_return_status := FND_API.G_RET_STS_SUCCESS;
1098 
1099     --  Get message count and data
1100 
1101     OE_MSG_PUB.Count_And_Get
1102     (   p_count                       => x_msg_count
1103     ,   p_data                        => x_msg_data
1104     );
1105 
1106 
1107 EXCEPTION
1108 
1109     WHEN FND_API.G_EXC_ERROR THEN
1110 
1111         x_return_status := FND_API.G_RET_STS_ERROR;
1112 
1113         --  Get message count and data
1114 
1115         OE_MSG_PUB.Count_And_Get
1116         (   p_count                       => x_msg_count
1117         ,   p_data                        => x_msg_data
1118         );
1119 
1120     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1121 
1122         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1123 
1124         --  Get message count and data
1125 
1126         OE_MSG_PUB.Count_And_Get
1127         (   p_count                       => x_msg_count
1128         ,   p_data                        => x_msg_data
1129         );
1130 
1131     WHEN OTHERS THEN
1132 
1133         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1134 
1135         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1136         THEN
1137             OE_MSG_PUB.Add_Exc_Msg
1138             (   G_PKG_NAME
1139             ,   'Process_Entity'
1140             );
1141         END IF;
1142 
1143         --  Get message count and data
1144 
1145         OE_MSG_PUB.Count_And_Get
1146         (   p_count                       => x_msg_count
1147         ,   p_data                        => x_msg_data
1148         );
1149 
1150 END Process_Entity;
1151 
1152 --  Procedure       lock_Row
1153 --
1154 
1155 PROCEDURE Lock_Row
1156 (   x_return_status                 OUT NOCOPY VARCHAR2
1157 ,   x_msg_count                     OUT NOCOPY NUMBER
1158 ,   x_msg_data                      OUT NOCOPY VARCHAR2
1159 ,   p_attribute1                    IN  VARCHAR2
1160 ,   p_attribute10                   IN  VARCHAR2
1161 ,   p_attribute11                   IN  VARCHAR2
1162 ,   p_attribute12                   IN  VARCHAR2
1163 ,   p_attribute13                   IN  VARCHAR2
1164 ,   p_attribute14                   IN  VARCHAR2
1165 ,   p_attribute15                   IN  VARCHAR2
1166 ,   p_attribute2                    IN  VARCHAR2
1167 ,   p_attribute3                    IN  VARCHAR2
1168 ,   p_attribute4                    IN  VARCHAR2
1169 ,   p_attribute5                    IN  VARCHAR2
1170 ,   p_attribute6                    IN  VARCHAR2
1171 ,   p_attribute7                    IN  VARCHAR2
1172 ,   p_attribute8                    IN  VARCHAR2
1173 ,   p_attribute9                    IN  VARCHAR2
1174 ,   p_context                       IN  VARCHAR2
1175 ,   p_created_by                    IN  NUMBER
1176 ,   p_creation_date                 IN  DATE
1177 ,   p_enabled_flag                  IN  VARCHAR2
1178 ,   p_functional_area_id            IN  NUMBER
1179 ,   p_last_updated_by               IN  NUMBER
1180 ,   p_last_update_date              IN  DATE
1181 ,   p_last_update_login             IN  NUMBER
1182 ,   p_program_application_id        IN  NUMBER
1183 ,   p_program_id                    IN  NUMBER
1184 ,   p_program_update_date           IN  DATE
1185 ,   p_pte_sourcesystem_fnarea_id    IN  NUMBER
1186 ,   p_pte_source_system_id          IN  NUMBER
1187 ,   p_request_id                    IN  NUMBER
1188 ,   p_seeded_flag                   IN  VARCHAR2
1189 )
1190 IS
1191 l_return_status               VARCHAR2(1);
1192 l_FNA_rec                     QP_Attr_Map_PUB.Fna_Rec_Type;
1193 l_FNA_tbl                     QP_Attr_Map_PUB.Fna_Tbl_Type;
1194 l_x_PTE_rec                   QP_Attr_Map_PUB.Pte_Rec_Type;
1195 l_x_RQT_rec                   QP_Attr_Map_PUB.Rqt_Rec_Type;
1196 l_x_RQT_tbl                   QP_Attr_Map_PUB.Rqt_Tbl_Type;
1197 l_x_SSC_rec                   QP_Attr_Map_PUB.Ssc_Rec_Type;
1198 l_x_SSC_tbl                   QP_Attr_Map_PUB.Ssc_Tbl_Type;
1199 l_x_PSG_rec                   QP_Attr_Map_PUB.Psg_Rec_Type;
1200 l_x_PSG_tbl                   QP_Attr_Map_PUB.Psg_Tbl_Type;
1201 l_x_SOU_rec                   QP_Attr_Map_PUB.Sou_Rec_Type;
1202 l_x_SOU_tbl                   QP_Attr_Map_PUB.Sou_Tbl_Type;
1203 l_x_FNA_rec                   QP_Attr_Map_PUB.Fna_Rec_Type;
1204 l_x_FNA_tbl                   QP_Attr_Map_PUB.Fna_Tbl_Type;
1205 BEGIN
1206 
1207     --  Load FNA record
1208 
1209     l_FNA_rec.attribute1           := p_attribute1;
1210     l_FNA_rec.attribute10          := p_attribute10;
1211     l_FNA_rec.attribute11          := p_attribute11;
1212     l_FNA_rec.attribute12          := p_attribute12;
1213     l_FNA_rec.attribute13          := p_attribute13;
1214     l_FNA_rec.attribute14          := p_attribute14;
1215     l_FNA_rec.attribute15          := p_attribute15;
1216     l_FNA_rec.attribute2           := p_attribute2;
1217     l_FNA_rec.attribute3           := p_attribute3;
1218     l_FNA_rec.attribute4           := p_attribute4;
1219     l_FNA_rec.attribute5           := p_attribute5;
1220     l_FNA_rec.attribute6           := p_attribute6;
1221     l_FNA_rec.attribute7           := p_attribute7;
1222     l_FNA_rec.attribute8           := p_attribute8;
1223     l_FNA_rec.attribute9           := p_attribute9;
1224     l_FNA_rec.context              := p_context;
1225     l_FNA_rec.created_by           := p_created_by;
1226     l_FNA_rec.creation_date        := p_creation_date;
1227     l_FNA_rec.enabled_flag         := p_enabled_flag;
1228     l_FNA_rec.functional_area_id   := p_functional_area_id;
1229     l_FNA_rec.last_updated_by      := p_last_updated_by;
1230     l_FNA_rec.last_update_date     := p_last_update_date;
1231     l_FNA_rec.last_update_login    := p_last_update_login;
1232     l_FNA_rec.program_application_id := p_program_application_id;
1233     l_FNA_rec.program_id           := p_program_id;
1234     l_FNA_rec.program_update_date  := p_program_update_date;
1235     l_FNA_rec.pte_sourcesystem_fnarea_id := p_pte_sourcesystem_fnarea_id;
1236     l_FNA_rec.pte_source_system_id := p_pte_source_system_id;
1237     l_FNA_rec.request_id           := p_request_id;
1238     l_FNA_rec.seeded_flag          := p_seeded_flag;
1239 
1240     --  Populate FNA table
1241 
1242     l_FNA_tbl(1) := l_FNA_rec;
1243 
1244     --  Call QP_Attr_Map_PVT.Lock_Attr_Mapping
1245 
1246     QP_Attr_Map_PVT.Lock_Attr_Mapping
1247     (   p_api_version_number          => 1.0
1248     ,   p_init_msg_list               => FND_API.G_TRUE
1249     ,   x_return_status               => l_return_status
1250     ,   x_msg_count                   => x_msg_count
1251     ,   x_msg_data                    => x_msg_data
1252     ,   p_FNA_tbl                     => l_FNA_tbl
1253     ,   x_PTE_rec                     => l_x_PTE_rec
1254     ,   x_RQT_tbl                     => l_x_RQT_tbl
1255     ,   x_SSC_tbl                     => l_x_SSC_tbl
1256     ,   x_PSG_tbl                     => l_x_PSG_tbl
1257     ,   x_SOU_tbl                     => l_x_SOU_tbl
1258     ,   x_FNA_tbl                     => l_x_FNA_tbl
1259     );
1260 
1261     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1262 
1263         --  Set DB flag and write record to cache.
1264 
1265         l_x_FNA_rec.db_flag := FND_API.G_TRUE;
1266 
1267         Write_FNA
1268         (   p_FNA_rec                     => l_x_FNA_rec
1269         ,   p_db_record                   => TRUE
1270         );
1271 
1272     END IF;
1273 
1274     --  Set return status.
1275 
1276     x_return_status := l_return_status;
1277 
1278     --  Get message count and data
1279 
1280     OE_MSG_PUB.Count_And_Get
1281     (   p_count                       => x_msg_count
1282     ,   p_data                        => x_msg_data
1283     );
1284 
1285 
1286 EXCEPTION
1287 
1288     WHEN OTHERS THEN
1289 
1290         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1291         THEN
1292             OE_MSG_PUB.Add_Exc_Msg
1293             (   G_PKG_NAME
1294             ,   'Lock_Row'
1295             );
1296         END IF;
1297 
1298         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1299 
1300         --  Get message count and data
1301 
1302         OE_MSG_PUB.Count_And_Get
1303         (   p_count                       => x_msg_count
1304         ,   p_data                        => x_msg_data
1305         );
1306 
1307 
1308 
1309 END Lock_Row;
1310 
1311 --  Procedures maintaining FNA record cache.
1312 
1313 PROCEDURE Write_FNA
1314 (   p_FNA_rec                       IN  QP_Attr_Map_PUB.Fna_Rec_Type
1315 ,   p_db_record                     IN  BOOLEAN := FALSE
1316 )
1317 IS
1318 BEGIN
1319 
1320     g_FNA_rec := p_FNA_rec;
1321 
1322     IF p_db_record THEN
1323 
1324         g_db_FNA_rec := p_FNA_rec;
1325 
1326     END IF;
1327 
1328 END Write_Fna;
1329 
1330 FUNCTION Get_FNA
1331 (   p_db_record                     IN  BOOLEAN := FALSE
1332 ,   p_pte_sourcesystem_fnarea_id    IN  NUMBER
1333 )
1334 RETURN QP_Attr_Map_PUB.Fna_Rec_Type
1335 IS
1336 BEGIN
1337 
1338     IF  p_pte_sourcesystem_fnarea_id <> g_FNA_rec.pte_sourcesystem_fnarea_id
1339     THEN
1340 
1341         --  Query row from DB
1342 
1343         g_FNA_rec := QP_Fna_Util.Query_Row
1344         (   p_pte_sourcesystem_fnarea_id  => p_pte_sourcesystem_fnarea_id
1345         );
1346 
1347         g_FNA_rec.db_flag              := FND_API.G_TRUE;
1348 
1349         --  Load DB record
1350 
1351         g_db_FNA_rec                   := g_FNA_rec;
1352 
1353     END IF;
1354 
1355     IF p_db_record THEN
1356 
1357         RETURN g_db_FNA_rec;
1358 
1359     ELSE
1360 
1361         RETURN g_FNA_rec;
1362 
1363     END IF;
1364 
1365 END Get_Fna;
1366 
1367 PROCEDURE Clear_Fna
1368 IS
1369 BEGIN
1370 
1371     g_FNA_rec                      := QP_Attr_Map_PUB.G_MISS_FNA_REC;
1372     g_db_FNA_rec                   := QP_Attr_Map_PUB.G_MISS_FNA_REC;
1373 
1374 END Clear_Fna;
1375 
1376 END QP_QP_Form_Fna;