[Home] [Help]
PACKAGE BODY: APPS.QP_PTE_UTIL
Source
1 PACKAGE BODY QP_Pte_Util AS
2 /* $Header: QPXUPTEB.pls 120.1 2005/06/12 23:51:52 appldev $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'QP_Pte_Util';
7
8 -- Procedure Clear_Dependent_Attr
9
10 PROCEDURE Clear_Dependent_Attr
11 ( p_attr_id IN NUMBER := FND_API.G_MISS_NUM
12 , p_PTE_rec IN QP_Attr_Map_PUB.Pte_Rec_Type
13 , p_old_PTE_rec IN QP_Attr_Map_PUB.Pte_Rec_Type :=
14 QP_Attr_Map_PUB.G_MISS_PTE_REC
15 , x_PTE_rec OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Pte_Rec_Type
16 )
17 IS
18 l_index NUMBER := 0;
19 l_src_attr_tbl QP_GLOBALS.NUMBER_Tbl_Type;
20 l_dep_attr_tbl QP_GLOBALS.NUMBER_Tbl_Type;
21 BEGIN
22
23 -- Load out record
24
25 x_PTE_rec := p_PTE_rec;
26
27 -- If attr_id is missing compare old and new records and for
28 -- every changed attribute clear its dependent fields.
29
30 IF p_attr_id = FND_API.G_MISS_NUM THEN
31
32 IF NOT QP_GLOBALS.Equal(p_PTE_rec.description,p_old_PTE_rec.description)
33 THEN
34 l_index := l_index + 1;
35 l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_DESCRIPTION;
36 END IF;
37
38 IF NOT QP_GLOBALS.Equal(p_PTE_rec.enabled_flag,p_old_PTE_rec.enabled_flag)
39 THEN
40 l_index := l_index + 1;
41 l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_ENABLED;
42 END IF;
43
44 IF NOT QP_GLOBALS.Equal(p_PTE_rec.end_date_active,p_old_PTE_rec.end_date_active)
45 THEN
46 l_index := l_index + 1;
47 l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_END_DATE_ACTIVE;
48 END IF;
49
50 IF NOT QP_GLOBALS.Equal(p_PTE_rec.lookup_code,p_old_PTE_rec.lookup_code)
51 THEN
52 l_index := l_index + 1;
53 l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_LOOKUP;
54 END IF;
55
56 IF NOT QP_GLOBALS.Equal(p_PTE_rec.lookup_type,p_old_PTE_rec.lookup_type)
57 THEN
58 l_index := l_index + 1;
59 l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_LOOKUP_TYPE;
60 END IF;
61
62 IF NOT QP_GLOBALS.Equal(p_PTE_rec.meaning,p_old_PTE_rec.meaning)
63 THEN
64 l_index := l_index + 1;
65 l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_MEANING;
66 END IF;
67
68 IF NOT QP_GLOBALS.Equal(p_PTE_rec.start_date_active,p_old_PTE_rec.start_date_active)
69 THEN
70 l_index := l_index + 1;
71 l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_START_DATE_ACTIVE;
72 END IF;
73
74 ELSIF p_attr_id = G_DESCRIPTION THEN
75 l_index := l_index + 1;
76 l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_DESCRIPTION;
77 ELSIF p_attr_id = G_ENABLED THEN
78 l_index := l_index + 1;
79 l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_ENABLED;
80 ELSIF p_attr_id = G_END_DATE_ACTIVE THEN
81 l_index := l_index + 1;
82 l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_END_DATE_ACTIVE;
83 ELSIF p_attr_id = G_LOOKUP THEN
84 l_index := l_index + 1;
85 l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_LOOKUP;
86 ELSIF p_attr_id = G_LOOKUP_TYPE THEN
87 l_index := l_index + 1;
88 l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_LOOKUP_TYPE;
89 ELSIF p_attr_id = G_MEANING THEN
90 l_index := l_index + 1;
91 l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_MEANING;
92 ELSIF p_attr_id = G_START_DATE_ACTIVE THEN
93 l_index := l_index + 1;
94 l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_START_DATE_ACTIVE;
95 END IF;
96
97 END Clear_Dependent_Attr;
98
99 -- Procedure Apply_Attribute_Changes
100
101 PROCEDURE Apply_Attribute_Changes
102 ( p_PTE_rec IN QP_Attr_Map_PUB.Pte_Rec_Type
103 , p_old_PTE_rec IN QP_Attr_Map_PUB.Pte_Rec_Type :=
104 QP_Attr_Map_PUB.G_MISS_PTE_REC
105 , x_PTE_rec OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Pte_Rec_Type
106 )
107 IS
108 BEGIN
109
110 -- Load out record
111
112 x_PTE_rec := p_PTE_rec;
113
114 IF NOT QP_GLOBALS.Equal(p_PTE_rec.description,p_old_PTE_rec.description)
115 THEN
116 NULL;
117 END IF;
118
119 IF NOT QP_GLOBALS.Equal(p_PTE_rec.enabled_flag,p_old_PTE_rec.enabled_flag)
120 THEN
121 NULL;
122 END IF;
123
124 IF NOT QP_GLOBALS.Equal(p_PTE_rec.end_date_active,p_old_PTE_rec.end_date_active)
125 THEN
126 NULL;
127 END IF;
128
129 IF NOT QP_GLOBALS.Equal(p_PTE_rec.lookup_code,p_old_PTE_rec.lookup_code)
130 THEN
131 NULL;
132 END IF;
133
134 IF NOT QP_GLOBALS.Equal(p_PTE_rec.lookup_type,p_old_PTE_rec.lookup_type)
135 THEN
136 NULL;
137 END IF;
138
139 IF NOT QP_GLOBALS.Equal(p_PTE_rec.meaning,p_old_PTE_rec.meaning)
140 THEN
141 NULL;
142 END IF;
143
144 IF NOT QP_GLOBALS.Equal(p_PTE_rec.start_date_active,p_old_PTE_rec.start_date_active)
145 THEN
146 NULL;
147 END IF;
148
149 END Apply_Attribute_Changes;
150
151 -- Function Complete_Record
152
153 FUNCTION Complete_Record
154 ( p_PTE_rec IN QP_Attr_Map_PUB.Pte_Rec_Type
155 , p_old_PTE_rec IN QP_Attr_Map_PUB.Pte_Rec_Type
156 ) RETURN QP_Attr_Map_PUB.Pte_Rec_Type
157 IS
158 l_PTE_rec QP_Attr_Map_PUB.Pte_Rec_Type := p_PTE_rec;
159 BEGIN
160
161 IF l_PTE_rec.description = FND_API.G_MISS_CHAR THEN
162 l_PTE_rec.description := p_old_PTE_rec.description;
163 END IF;
164
165 IF l_PTE_rec.enabled_flag = FND_API.G_MISS_CHAR THEN
166 l_PTE_rec.enabled_flag := p_old_PTE_rec.enabled_flag;
167 END IF;
168
169 IF l_PTE_rec.end_date_active = FND_API.G_MISS_DATE THEN
170 l_PTE_rec.end_date_active := p_old_PTE_rec.end_date_active;
171 END IF;
172
173 IF l_PTE_rec.lookup_code = FND_API.G_MISS_CHAR THEN
174 l_PTE_rec.lookup_code := p_old_PTE_rec.lookup_code;
175 END IF;
176
177 IF l_PTE_rec.lookup_type = FND_API.G_MISS_CHAR THEN
178 l_PTE_rec.lookup_type := p_old_PTE_rec.lookup_type;
179 END IF;
180
181 IF l_PTE_rec.meaning = FND_API.G_MISS_CHAR THEN
182 l_PTE_rec.meaning := p_old_PTE_rec.meaning;
183 END IF;
184
185 IF l_PTE_rec.start_date_active = FND_API.G_MISS_DATE THEN
186 l_PTE_rec.start_date_active := p_old_PTE_rec.start_date_active;
187 END IF;
188
189 RETURN l_PTE_rec;
190
191 END Complete_Record;
192
193 -- Function Convert_Miss_To_Null
194
195 FUNCTION Convert_Miss_To_Null
196 ( p_PTE_rec IN QP_Attr_Map_PUB.Pte_Rec_Type
197 ) RETURN QP_Attr_Map_PUB.Pte_Rec_Type
198 IS
199 l_PTE_rec QP_Attr_Map_PUB.Pte_Rec_Type := p_PTE_rec;
200 BEGIN
201
202 IF l_PTE_rec.description = FND_API.G_MISS_CHAR THEN
203 l_PTE_rec.description := NULL;
204 END IF;
205
206 IF l_PTE_rec.enabled_flag = FND_API.G_MISS_CHAR THEN
207 l_PTE_rec.enabled_flag := NULL;
208 END IF;
209
210 IF l_PTE_rec.end_date_active = FND_API.G_MISS_DATE THEN
211 l_PTE_rec.end_date_active := NULL;
212 END IF;
213
214 IF l_PTE_rec.lookup_code = FND_API.G_MISS_CHAR THEN
215 l_PTE_rec.lookup_code := NULL;
216 END IF;
217
218 IF l_PTE_rec.lookup_type = FND_API.G_MISS_CHAR THEN
219 l_PTE_rec.lookup_type := NULL;
220 END IF;
221
222 IF l_PTE_rec.meaning = FND_API.G_MISS_CHAR THEN
223 l_PTE_rec.meaning := NULL;
224 END IF;
225
226 IF l_PTE_rec.start_date_active = FND_API.G_MISS_DATE THEN
227 l_PTE_rec.start_date_active := NULL;
228 END IF;
229
230 RETURN l_PTE_rec;
231
232 END Convert_Miss_To_Null;
233
234 -- Procedure Update_Row
235
236 PROCEDURE Update_Row
237 ( p_PTE_rec IN QP_Attr_Map_PUB.Pte_Rec_Type
238 )
239 IS
240 BEGIN
241
242 null;
243 /*
244 UPDATE QP_LOOKUPS
245 SET DESCRIPTION = p_PTE_rec.description
246 , ENABLED_FLAG = p_PTE_rec.enabled_flag
247 , END_DATE_ACTIVE = p_PTE_rec.end_date_active
248 , LOOKUP_CODE = p_PTE_rec.lookup_code
249 , LOOKUP_TYPE = p_PTE_rec.lookup_type
250 , MEANING = p_PTE_rec.meaning
251 , START_DATE_ACTIVE = p_PTE_rec.start_date_active
252 WHERE LOOKUP_CODE = p_PTE_rec.lookup_code
253 ;
254 */
255
256 EXCEPTION
257
258 WHEN OTHERS THEN
259
260 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
261 THEN
262 FND_MSG_PUB.Add_Exc_Msg
263 ( G_PKG_NAME
264 , 'Update_Row'
265 );
266 END IF;
267
268 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
269
270 END Update_Row;
271
272 -- Procedure Insert_Row
273
274 PROCEDURE Insert_Row
275 ( p_PTE_rec IN QP_Attr_Map_PUB.Pte_Rec_Type
276 )
277 IS
278 BEGIN
279
280 null;
281 /*
282 INSERT INTO QP_LOOKUPS
283 ( DESCRIPTION
284 , ENABLED_FLAG
285 , END_DATE_ACTIVE
286 , LOOKUP_CODE
287 , LOOKUP_TYPE
288 , MEANING
289 , START_DATE_ACTIVE
290 )
291 VALUES
292 ( p_PTE_rec.description
293 , p_PTE_rec.enabled_flag
294 , p_PTE_rec.end_date_active
295 , p_PTE_rec.lookup_code
296 , p_PTE_rec.lookup_type
297 , p_PTE_rec.meaning
298 , p_PTE_rec.start_date_active
299 );
300 */
301
302 EXCEPTION
303
304 WHEN OTHERS THEN
305
306 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
307 THEN
308 FND_MSG_PUB.Add_Exc_Msg
309 ( G_PKG_NAME
310 , 'Insert_Row'
311 );
312 END IF;
313
314 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
315
316 END Insert_Row;
317
318 -- Procedure Delete_Row
319
320 PROCEDURE Delete_Row
321 ( p_lookup_code IN VARCHAR2
322 )
323 IS
324 BEGIN
325 null;
326 /*
327 DELETE FROM QP_LOOKUPS
328 WHERE LOOKUP_CODE = p_lookup_code
329 ;
330 */
331
332 EXCEPTION
333
334 WHEN OTHERS THEN
335
336 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
337 THEN
338 FND_MSG_PUB.Add_Exc_Msg
339 ( G_PKG_NAME
340 , 'Delete_Row'
341 );
342 END IF;
343
344 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
345
346 END Delete_Row;
347
348 -- Function Query_Row
349
350 FUNCTION Query_Row
351 ( p_lookup_code IN VARCHAR2
352 ) RETURN QP_Attr_Map_PUB.Pte_Rec_Type
353 IS
354 l_PTE_rec QP_Attr_Map_PUB.Pte_Rec_Type;
355 BEGIN
356
357 SELECT DESCRIPTION
358 , ENABLED_FLAG
359 , END_DATE_ACTIVE
360 , LOOKUP_CODE
361 , LOOKUP_TYPE
362 , MEANING
363 , START_DATE_ACTIVE
364 INTO l_PTE_rec.description
365 , l_PTE_rec.enabled_flag
366 , l_PTE_rec.end_date_active
367 , l_PTE_rec.lookup_code
368 , l_PTE_rec.lookup_type
369 , l_PTE_rec.meaning
370 , l_PTE_rec.start_date_active
371 FROM QP_LOOKUPS
372 WHERE LOOKUP_CODE = p_lookup_code
373 ;
374
375 RETURN l_PTE_rec;
376
377 EXCEPTION
378
379 WHEN OTHERS THEN
380
381 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
382 THEN
383 FND_MSG_PUB.Add_Exc_Msg
384 ( G_PKG_NAME
385 , 'Query_Row'
386 );
387 END IF;
388
389 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
390
391 END Query_Row;
392
393 -- Procedure lock_Row
394 --
395
396 PROCEDURE Lock_Row
397 ( x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
398 , p_PTE_rec IN QP_Attr_Map_PUB.Pte_Rec_Type
399 , x_PTE_rec OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Pte_Rec_Type
400 )
401 IS
402 l_PTE_rec QP_Attr_Map_PUB.Pte_Rec_Type;
403 BEGIN
404 null;
405 /*
406 SELECT DESCRIPTION
407 , ENABLED_FLAG
408 , END_DATE_ACTIVE
409 , LOOKUP_CODE
410 , LOOKUP_TYPE
411 , MEANING
412 , START_DATE_ACTIVE
413 INTO l_PTE_rec.description
414 , l_PTE_rec.enabled_flag
415 , l_PTE_rec.end_date_active
416 , l_PTE_rec.lookup_code
417 , l_PTE_rec.lookup_type
418 , l_PTE_rec.meaning
419 , l_PTE_rec.start_date_active
420 FROM QP_LOOKUPS
421 WHERE LOOKUP_CODE = p_PTE_rec.lookup_code
422 FOR UPDATE NOWAIT;
423
424 -- Row locked. Compare IN attributes to DB attributes.
425
426 IF QP_GLOBALS.Equal(p_PTE_rec.description,
427 l_PTE_rec.description)
428 AND QP_GLOBALS.Equal(p_PTE_rec.enabled_flag,
429 l_PTE_rec.enabled_flag)
430 AND QP_GLOBALS.Equal(p_PTE_rec.end_date_active,
431 l_PTE_rec.end_date_active)
432 AND QP_GLOBALS.Equal(p_PTE_rec.lookup_code,
433 l_PTE_rec.lookup_code)
434 AND QP_GLOBALS.Equal(p_PTE_rec.lookup_type,
435 l_PTE_rec.lookup_type)
436 AND QP_GLOBALS.Equal(p_PTE_rec.meaning,
437 l_PTE_rec.meaning)
438 AND QP_GLOBALS.Equal(p_PTE_rec.start_date_active,
439 l_PTE_rec.start_date_active)
440 THEN
441
442 -- Row has not changed. Set out parameter.
443
444 x_PTE_rec := l_PTE_rec;
445
446 -- Set return status
447
448 x_return_status := FND_API.G_RET_STS_SUCCESS;
449 x_PTE_rec.return_status := FND_API.G_RET_STS_SUCCESS;
450
451 ELSE
452
453 -- Row has changed by another user.
454
455 x_return_status := FND_API.G_RET_STS_ERROR;
456 x_PTE_rec.return_status := FND_API.G_RET_STS_ERROR;
457
458 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
459 THEN
460
461 FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_CHANGED');
462 FND_MSG_PUB.Add;
463
464 END IF;
465
466 END IF;
467 */
468 EXCEPTION
469
470 WHEN NO_DATA_FOUND THEN
471
472 x_return_status := FND_API.G_RET_STS_ERROR;
473 x_PTE_rec.return_status := FND_API.G_RET_STS_ERROR;
474
475 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
476 THEN
477
478 FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_DELETED');
479 FND_MSG_PUB.Add;
480
481 END IF;
482 WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
483
484 x_return_status := FND_API.G_RET_STS_ERROR;
485 x_PTE_rec.return_status := FND_API.G_RET_STS_ERROR;
486
487 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
488 THEN
489
490 FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_ALREADY_LOCKED');
491 FND_MSG_PUB.Add;
492
493 END IF;
494 WHEN OTHERS THEN
495
496 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
497 x_PTE_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
498
499 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
500 THEN
501 FND_MSG_PUB.Add_Exc_Msg
502 ( G_PKG_NAME
503 , 'Lock_Row'
504 );
505 END IF;
506
507 END Lock_Row;
508
509 -- Function Get_Values
510
511 FUNCTION Get_Values
512 ( p_PTE_rec IN QP_Attr_Map_PUB.Pte_Rec_Type
513 , p_old_PTE_rec IN QP_Attr_Map_PUB.Pte_Rec_Type :=
514 QP_Attr_Map_PUB.G_MISS_PTE_REC
515 ) RETURN QP_Attr_Map_PUB.Pte_Val_Rec_Type
516 IS
517 l_PTE_val_rec QP_Attr_Map_PUB.Pte_Val_Rec_Type;
518 BEGIN
519
520 IF p_PTE_rec.enabled_flag IS NOT NULL AND
521 p_PTE_rec.enabled_flag <> FND_API.G_MISS_CHAR AND
522 NOT QP_GLOBALS.Equal(p_PTE_rec.enabled_flag,
523 p_old_PTE_rec.enabled_flag)
524 THEN
525 l_PTE_val_rec.enabled := QP_Id_To_Value.Enabled
526 ( p_enabled_flag => p_PTE_rec.enabled_flag
527 );
528 END IF;
529
530 IF p_PTE_rec.lookup_code IS NOT NULL AND
531 p_PTE_rec.lookup_code <> FND_API.G_MISS_CHAR AND
532 NOT QP_GLOBALS.Equal(p_PTE_rec.lookup_code,
533 p_old_PTE_rec.lookup_code)
534 THEN
535 l_PTE_val_rec.lookup := QP_Id_To_Value.Lookup
536 ( p_lookup_code => p_PTE_rec.lookup_code
537 );
538 END IF;
539
540 RETURN l_PTE_val_rec;
541
542 END Get_Values;
543
544 -- Function Get_Ids
545
546 FUNCTION Get_Ids
547 ( p_PTE_rec IN QP_Attr_Map_PUB.Pte_Rec_Type
548 , p_PTE_val_rec IN QP_Attr_Map_PUB.Pte_Val_Rec_Type
549 ) RETURN QP_Attr_Map_PUB.Pte_Rec_Type
550 IS
551 l_PTE_rec QP_Attr_Map_PUB.Pte_Rec_Type;
552 BEGIN
553
554 -- initialize return_status.
555
556 l_PTE_rec.return_status := FND_API.G_RET_STS_SUCCESS;
557
558 -- initialize l_PTE_rec.
559
560 l_PTE_rec := p_PTE_rec;
561
562 IF p_PTE_val_rec.enabled <> FND_API.G_MISS_CHAR
563 THEN
564
565 IF p_PTE_rec.enabled_flag <> FND_API.G_MISS_CHAR THEN
566
567 l_PTE_rec.enabled_flag := p_PTE_rec.enabled_flag;
568
569 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
570 THEN
571
572 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
573 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','enabled');
574 FND_MSG_PUB.Add;
575
576 END IF;
577
578 ELSE
579
580 l_PTE_rec.enabled_flag := QP_Value_To_Id.enabled
581 ( p_enabled => p_PTE_val_rec.enabled
582 );
583
584 IF l_PTE_rec.enabled_flag = FND_API.G_MISS_CHAR THEN
585 l_PTE_rec.return_status := FND_API.G_RET_STS_ERROR;
586 END IF;
587
588 END IF;
589
590 END IF;
591
592 IF p_PTE_val_rec.lookup <> FND_API.G_MISS_CHAR
593 THEN
594
595 IF p_PTE_rec.lookup_code <> FND_API.G_MISS_CHAR THEN
596
597 l_PTE_rec.lookup_code := p_PTE_rec.lookup_code;
598
599 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
600 THEN
601
602 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
603 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','lookup');
604 FND_MSG_PUB.Add;
605
606 END IF;
607
608 ELSE
609
610 l_PTE_rec.lookup_code := QP_Value_To_Id.lookup
611 ( p_lookup => p_PTE_val_rec.lookup
612 );
613
614 IF l_PTE_rec.lookup_code = FND_API.G_MISS_CHAR THEN
615 l_PTE_rec.return_status := FND_API.G_RET_STS_ERROR;
616 END IF;
617
618 END IF;
619
620 END IF;
621
622
623 RETURN l_PTE_rec;
624
625 END Get_Ids;
626
627 END QP_Pte_Util;