[Home] [Help]
PACKAGE BODY: APPS.AHL_UC_VALIDATION_PUB
Source
1 PACKAGE BODY AHL_UC_VALIDATION_PUB AS
2 /* $Header: AHLPUCVB.pls 120.2.12020000.2 2012/12/10 15:54:56 prakkum ship $ */
3
4
5 G_PKG_NAME CONSTANT VARCHAR2(30) := 'AHL_UC_VALIDATION_PUB';
6
7 -------------------------------------------------------------------------------
8 -- Start of Comments --
9 -- Procedure name : Validate_Completeness
10 -- Type : Private
11 -- Function : Validates the unit's completeness and checks for ALL validations.
12 -- Pre-reqs :
13 -- Parameters :
14 --
15 -- Validate_Completeness Parameters:
16 -- p_unit_header_id IN NUMBER Required.
17 -- The header identifier of the Unit Configuration
18 -- x_error_tbl OUT NOCOPY Error_Tbl_Type Required
19 -- A table listing all the Errors.
20 --
21 -- End of Comments.
22 -------------------------------------------------------------------------------
23 PROCEDURE Validate_Completeness (
24 p_api_version IN NUMBER,
25 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
26 p_commit IN VARCHAR2 := FND_API.G_FALSE,
27 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
28 x_return_status OUT NOCOPY VARCHAR2,
29 x_msg_count OUT NOCOPY NUMBER,
30 x_msg_data OUT NOCOPY VARCHAR2,
31 p_unit_header_id IN NUMBER,
32 -- SATHAPLI::Service Bulletin Effectivity, 03-May-2011, accept visit id too
33 p_visit_id IN NUMBER := NULL,
34 x_error_tbl OUT NOCOPY Error_Tbl_Type)
35 IS
36 --
37 CURSOR validate_uc_header_id_csr (c_unit_header_id IN NUMBER) IS
38 SELECT unit_config_status_code
39 FROM ahl_unit_config_headers
40 WHERE unit_config_header_id = c_unit_header_id
41 AND trunc(nvl(active_start_date,sysdate)) <= trunc(sysdate)
42 AND trunc(sysdate) < trunc(nvl(active_end_date, sysdate+1))
43 FOR UPDATE OF unit_config_status_code NOWAIT;
44 --
45 l_api_version CONSTANT NUMBER := 1.0;
46 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Completeness';
47
48 l_uc_status_code ahl_unit_config_headers.unit_config_status_code%TYPE;
49 l_error_table Error_Tbl_Type;
50 l_evaluation_status VARCHAR2(1);
51 --
52 BEGIN
53
54 -- Standard start of API savepoint
55 SAVEPOINT Validate_Completeness;
56
57 -- Standard call to check for call compatibility
58 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
59 G_PKG_NAME) THEN
60 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
61 END IF;
62
63 -- Initialize message list if p_init_msg_list is set to TRUE
64 IF FND_API.To_Boolean(p_init_msg_list) THEN
65 FND_MSG_PUB.Initialize;
66 END IF;
67
68 -- Initialize API return status to success
69 x_return_status := FND_API.G_RET_STS_SUCCESS;
70
71 IF (p_unit_header_id IS NULL OR p_unit_header_id = FND_API.G_MISS_NUM) THEN
72 FND_MESSAGE.set_name('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
73 FND_MESSAGE.set_token('PROCEDURE', G_PKG_NAME);
74 FND_MSG_PUB.add;
75 RAISE FND_API.G_EXC_ERROR;
76 END IF;
77
78 -- ACL :: Changes for R12
79 IF (ahl_util_uc_pkg.IS_UNIT_QUARANTINED(p_unit_header_id => p_unit_header_id , p_instance_id => null) = FND_API.G_TRUE) THEN
80 FND_MESSAGE.set_name( 'AHL','AHL_UC_INVALID_Q_ACTION' );
81 FND_MSG_PUB.add;
82 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
83 END IF;
84
85 --List Extra nodes
86 AHL_UC_POS_NECES_PVT.list_extra_nodes(
87 p_api_version => 1.0,
88 p_init_msg_list => p_init_msg_list,
89 p_validation_level => p_validation_level,
90 p_uc_header_id => p_unit_header_id,
91 p_csi_instance_id => null,
92 x_evaluation_status => l_evaluation_status,
93 p_x_error_table => l_error_table,
94 x_return_status => x_return_status,
95 x_msg_count => x_msg_count,
96 x_msg_data => x_msg_data
97 );
98
99 --List Missing Positions
100 AHL_UC_POS_NECES_PVT.list_missing_positions(
101 p_api_version => 1.0,
102 p_init_msg_list => p_init_msg_list,
103 p_validation_level => p_validation_level,
104 p_uc_header_id => p_unit_header_id,
105 p_csi_instance_id => null,
106 x_evaluation_status => l_evaluation_status,
107 p_x_error_table => l_error_table,
108 x_return_status => x_return_status,
109 x_msg_count => x_msg_count,
110 x_msg_data => x_msg_data
111 );
112
113
114 --Validate Rules
115 AHL_MC_RULE_ENGINE_PVT.Validate_Rules_For_Unit (
116 p_api_version => 1.0,
117 p_init_msg_list => p_init_msg_list,
118 p_validation_level => p_validation_level,
119 x_return_status => x_return_status,
120 x_msg_count => x_msg_count,
121 x_msg_data => x_msg_data,
122 p_unit_header_id => p_unit_header_id,
123 p_rule_type => 'MANDATORY',
124 p_check_subconfig_flag => FND_API.G_TRUE,
125 p_x_error_tbl => l_error_table,
126 x_evaluation_status => l_evaluation_status
127 );
128
129 -- SATHAPLI::FP OGMA Issue# 105 - Non-Serialized Item Maintenance, 05-Dec-2007
130 -- Perform Quantity Validations
131 AHL_UC_POS_NECES_PVT.Validate_Position_Quantities (
132 p_api_version => 1.0,
133 p_init_msg_list => p_init_msg_list,
134 p_validation_level => p_validation_level,
135 p_uc_header_id => p_unit_header_id,
136 p_csi_instance_id => null,
137 x_evaluation_status => l_evaluation_status,
138 p_x_error_table => l_error_table,
139 x_return_status => x_return_status,
140 x_msg_count => x_msg_count,
141 x_msg_data => x_msg_data
142 );
143
144 -- SATHAPLI::Service Bulletin Effectivity, 15-Mar-2011
145 -- Check for SB rules
146 AHL_SB_RULES_PVT.Check_Unit_Completeness(
147 p_api_version => 1.0,
148 p_init_msg_list => p_init_msg_list,
149 p_validation_level => p_validation_level,
150 p_uc_header_id => p_unit_header_id,
151 p_visit_id => p_visit_id,
152 p_x_erring_rules_tbl => l_error_table,
153 x_return_status => x_return_status,
154 x_msg_count => x_msg_count,
155 x_msg_data => x_msg_data
156 );
157
158 -- Check Error Message stack.
159 x_msg_count := FND_MSG_PUB.count_msg;
160 IF x_msg_count > 0 THEN
161 RAISE FND_API.G_EXC_ERROR;
162 END IF;
163
164 --validate the uc header id
165 OPEN validate_uc_header_id_csr(p_unit_header_id);
166 FETCH validate_uc_header_id_csr INTO l_uc_status_code;
167 IF (validate_uc_header_id_csr%NOTFOUND) THEN
168 FND_MESSAGE.Set_Name('AHL','AHL_UC_HEADER_ID_INVALID');
169 FND_MESSAGE.Set_Token('UC_HEADER_ID', p_unit_header_id);
170 FND_MSG_PUB.ADD;
171 CLOSE validate_uc_header_id_csr;
172 RAISE FND_API.G_EXC_ERROR;
173 END IF;
174 CLOSE validate_uc_header_id_csr;
175
176 IF (l_uc_status_code = 'INCOMPLETE' AND
177 l_error_table.COUNT = 0) THEN
178 UPDATE AHL_UNIT_CONFIG_HEADERS
179 SET UNIT_CONFIG_STATUS_CODE = 'COMPLETE',
180 OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER+1,
181 LAST_UPDATE_DATE = sysdate,
182 LAST_UPDATED_BY = fnd_global.USER_ID,
183 LAST_UPDATE_LOGIN = fnd_global.LOGIN_ID
184 WHERE unit_config_header_id = p_unit_header_id;
185 ELSIF (l_error_table.COUNT >0 AND
186 l_uc_status_code = 'COMPLETE') THEN
187 UPDATE AHL_UNIT_CONFIG_HEADERS
188 SET UNIT_CONFIG_STATUS_CODE = 'INCOMPLETE',
189 OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER+1,
190 LAST_UPDATE_DATE = sysdate,
191 LAST_UPDATED_BY = fnd_global.USER_ID,
192 LAST_UPDATE_LOGIN = fnd_global.LOGIN_ID
193 WHERE unit_config_header_id = p_unit_header_id;
194 END IF;
195
196 --Setting output parameters
197 x_error_tbl := l_error_table;
198
199 -- Standard check of p_commit
200 IF FND_API.TO_BOOLEAN(p_commit) THEN
201 COMMIT WORK;
202 END IF;
203
204 -- Standard call to get message count and if count is 1, get message info
205 FND_MSG_PUB.Count_And_Get
206 ( p_count => x_msg_count,
207 p_data => x_msg_data,
208 p_encoded => fnd_api.g_false
209 );
210
211 EXCEPTION
212 WHEN FND_API.G_EXC_ERROR THEN
213 x_return_status := FND_API.G_RET_STS_ERROR;
214 Rollback to Validate_Completeness;
215 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
216 p_data => x_msg_data,
217 p_encoded => fnd_api.g_false);
218 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
219 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
220 Rollback to Validate_Completeness;
221 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
222 p_data => x_msg_data,
223 p_encoded => fnd_api.g_false);
224 WHEN OTHERS THEN
225 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
226 Rollback to Validate_Completeness;
227 FND_MSG_PUB.add_exc_msg( p_pkg_name => G_PKG_NAME,
228 p_procedure_name => l_api_name,
229 p_error_text => SQLERRM);
230
231 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
232 p_data => x_msg_data,
233 p_encoded => fnd_api.g_false);
234
235 END Validate_Completeness;
236
237
238 --------------------------------
239 -- Start of Comments --
240 -- Procedure name : Validate_Complete_For_Pos
241 -- Type : Private
242 -- Function : Validates the unit's completeness and checks for ALL validations.
243 -- Pre-reqs :
244 -- Parameters :
245 --
246 -- Validate_Complete_For_Pos Parameters:
247 -- p_unit_header_id IN NUMBER Required.
248 -- p_csi_instance_id IN NUMBER Required.
249 -- x_error_tbl OUT NOCOPY AHL_MC_VALIDATION_PUB.error_tbl_Type Required
250 --
251 -- End of Comments.
252
253 PROCEDURE Validate_Complete_For_Pos (
254 p_api_version IN NUMBER,
255 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
256 p_commit IN VARCHAR2 := FND_API.G_FALSE,
257 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
258 x_return_status OUT NOCOPY VARCHAR2,
259 x_msg_count OUT NOCOPY NUMBER,
260 x_msg_data OUT NOCOPY VARCHAR2,
261 p_csi_instance_id IN NUMBER,
262 x_error_tbl OUT NOCOPY Error_Tbl_Type)
263 IS
264 --
265 l_api_version CONSTANT NUMBER := 1.0;
266 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Complete_For_Pos';
267 l_error_table Error_Tbl_Type;
268 l_evaluation_status VARCHAR2(1);
269 --
270 BEGIN
271
272 -- Standard start of API savepoint
273 SAVEPOINT Validate_Complete_For_Pos;
274
275 -- Standard call to check for call compatibility
276 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
277 G_PKG_NAME) THEN
278 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
279 END IF;
280
281 -- Initialize message list if p_init_msg_list is set to TRUE
282 IF FND_API.To_Boolean(p_init_msg_list) THEN
283 FND_MSG_PUB.Initialize;
284 END IF;
285
286 -- Initialize API return status to success
287 x_return_status := FND_API.G_RET_STS_SUCCESS;
288
289 --List Extra nodes
290 AHL_UC_POS_NECES_PVT.list_extra_nodes(
291 p_api_version => 1.0,
292 p_init_msg_list => p_init_msg_list,
293 p_validation_level => p_validation_level,
294 p_uc_header_id => null,
295 p_csi_instance_id => p_csi_instance_id,
296 x_evaluation_status => l_evaluation_status,
297 p_x_error_table => l_error_table,
298 x_return_status => x_return_status,
299 x_msg_count => x_msg_count,
300 x_msg_data => x_msg_data
301 );
302
303 --List Missing Positions
304 AHL_UC_POS_NECES_PVT.list_missing_positions(
305 p_api_version => 1.0,
306 p_init_msg_list => p_init_msg_list,
307 p_validation_level => p_validation_level,
308 p_uc_header_id => null,
309 p_csi_instance_id => p_csi_instance_id,
310 x_evaluation_status => l_evaluation_status,
311 p_x_error_table => l_error_table,
312 x_return_status => x_return_status,
313 x_msg_count => x_msg_count,
314 x_msg_data => x_msg_data
315 );
316
317
318 --Validate Rules
319 AHL_MC_RULE_ENGINE_PVT.Validate_Rules_For_Position (
320 p_api_version => 1.0,
321 p_init_msg_list => p_init_msg_list,
322 p_validation_level => p_validation_level,
323 x_return_status => x_return_status,
324 x_msg_count => x_msg_count,
325 x_msg_data => x_msg_data,
326 p_item_instance_id => p_csi_instance_id,
327 p_rule_type => 'MANDATORY',
328 p_x_error_tbl => l_error_table,
329 x_evaluation_status => l_evaluation_status
330 );
331
332 -- SATHAPLI::FP OGMA Issue# 105 - Non-Serialized Item Maintenance, 05-Dec-2007
333 -- Perform Quantity Validations
334 AHL_UC_POS_NECES_PVT.Validate_Position_Quantities (
335 p_api_version => 1.0,
336 p_init_msg_list => p_init_msg_list,
337 p_validation_level => p_validation_level,
338 p_uc_header_id => null,
339 p_csi_instance_id => p_csi_instance_id,
340 x_evaluation_status => l_evaluation_status,
341 p_x_error_table => l_error_table,
342 x_return_status => x_return_status,
343 x_msg_count => x_msg_count,
344 x_msg_data => x_msg_data
345 );
346
347 -- SATHAPLI::Service Bulletin Effectivity, 28-Mar-2011
348 -- Check for SB rules
349 AHL_SB_RULES_PVT.Check_Inst_Completeness(
350 p_api_version => 1.0,
351 p_init_msg_list => p_init_msg_list,
352 p_validation_level => p_validation_level,
353 p_csi_instance_id => p_csi_instance_id,
354 p_x_erring_rules_tbl => l_error_table,
355 x_return_status => x_return_status,
356 x_msg_count => x_msg_count,
357 x_msg_data => x_msg_data
358 );
359
360 -- Check Error Message stack.
361 x_msg_count := FND_MSG_PUB.count_msg;
362 IF x_msg_count > 0 THEN
363 RAISE FND_API.G_EXC_ERROR;
364 END IF;
365
366 --Setting output parameters
367 x_error_tbl := l_error_table;
368
369 -- Standard check of p_commit
370 IF FND_API.TO_BOOLEAN(p_commit) THEN
371 COMMIT WORK;
372 END IF;
373
374 -- Standard call to get message count and if count is 1, get message info
375 FND_MSG_PUB.Count_And_Get
376 ( p_count => x_msg_count,
377 p_data => x_msg_data,
378 p_encoded => fnd_api.g_false
379 );
380
381 EXCEPTION
382 WHEN FND_API.G_EXC_ERROR THEN
383 x_return_status := FND_API.G_RET_STS_ERROR;
384 Rollback to Validate_Complete_For_Pos;
385 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
386 p_data => x_msg_data,
387 p_encoded => fnd_api.g_false);
388 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
389 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
390 Rollback to Validate_Complete_For_Pos;
391 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
392 p_data => x_msg_data,
393 p_encoded => fnd_api.g_false);
394 WHEN OTHERS THEN
395 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
396 Rollback to Validate_Complete_For_Pos;
397 FND_MSG_PUB.add_exc_msg( p_pkg_name => G_PKG_NAME,
398 p_procedure_name => l_api_name,
399 p_error_text => SQLERRM);
400
401 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
402 p_data => x_msg_data,
403 p_encoded => fnd_api.g_false);
404 END Validate_Complete_For_Pos;
405
406
407 -------------------------------------------------------------------------------
408 -- Start of Comments --
409 -- Procedure name : Check_Completeness
410 -- Type : Private
411 -- Function : Check the unit's completeness
412 -- Complete/Incomplete status if current status is complete or incomplete..
413 -- Pre-reqs :
414 -- Parameters :
415 --
416 -- Check_Completeness Parameters:
417 -- p_unit_header_id IN NUMBER Required.
418 -- The header identifier of the Unit Configuration
419 -- x_evaluation_status OUT NOCOPY VARCHAR2
420 -- The evaluation status of the Unit Configutation.Returns a FND_API.G_TRUE or FND_API.G_FALSE
421 -- End of Comments.
422 -------------------------------------------------------------------------------
423 PROCEDURE Check_Completeness (
424 p_api_version IN NUMBER,
425 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
426 p_commit IN VARCHAR2 := FND_API.G_FALSE,
427 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
428 x_return_status OUT NOCOPY VARCHAR2,
429 x_msg_count OUT NOCOPY NUMBER,
430 x_msg_data OUT NOCOPY VARCHAR2,
431 p_unit_header_id IN NUMBER,
432 x_evaluation_status OUT NOCOPY VARCHAR2)
433 IS
434 --
435 l_api_version CONSTANT NUMBER := 1.0;
436 l_api_name CONSTANT VARCHAR2(30) := 'Check_Completeness';
437 --
438 BEGIN
439
440 -- Standard start of API savepoint
441 SAVEPOINT Check_Completeness;
442
443 -- Standard call to check for call compatibility
444 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
445 G_PKG_NAME) THEN
446 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
447 END IF;
448
449 -- Initialize message list if p_init_msg_list is set to TRUE
450 IF FND_API.To_Boolean(p_init_msg_list) THEN
451 FND_MSG_PUB.Initialize;
452 END IF;
453
454 -- Initialize API return status to success
455 x_return_status := FND_API.G_RET_STS_SUCCESS;
456 x_evaluation_status := 'U';
457
458 IF (p_unit_header_id IS NULL OR p_unit_header_id = FND_API.G_MISS_NUM) THEN
459 FND_MESSAGE.set_name('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
460 FND_MESSAGE.set_token('PROCEDURE', G_PKG_NAME);
461 FND_MSG_PUB.add;
462 RAISE FND_API.G_EXC_ERROR;
463 END IF;
464
465 --Check for Extra nodes
466 AHL_UC_POS_NECES_PVT.check_extra_nodes(
467 p_api_version => 1.0,
468 p_init_msg_list => p_init_msg_list,
469 p_validation_level => p_validation_level,
470 p_uc_header_id => p_unit_header_id,
471 x_evaluation_status => x_evaluation_status,
472 x_return_status => x_return_status,
473 x_msg_count => x_msg_count,
474 x_msg_data => x_msg_data
475 );
476 -- Check Error Message stack.
477 x_msg_count := FND_MSG_PUB.count_msg;
478 IF x_msg_count > 0 THEN
479 RAISE FND_API.G_EXC_ERROR;
480 END IF;
481
482
483 IF ( x_evaluation_status = FND_API.G_TRUE ) THEN
484 --Check for Missing Positions
485 AHL_UC_POS_NECES_PVT.check_missing_positions(
486 p_api_version => 1.0,
487 p_init_msg_list => p_init_msg_list,
488 p_validation_level => p_validation_level,
489 p_uc_header_id => p_unit_header_id,
490 x_evaluation_status => x_evaluation_status,
491 x_return_status => x_return_status,
492 x_msg_count => x_msg_count,
493 x_msg_data => x_msg_data
494 );
495 -- Check Error Message stack.
496 x_msg_count := FND_MSG_PUB.count_msg;
497 IF x_msg_count > 0 THEN
498 RAISE FND_API.G_EXC_ERROR;
499 END IF;
500
501 END IF;
502
503 IF ( x_evaluation_status = FND_API.G_TRUE ) THEN
504 --Check for Rules
505 AHL_MC_RULE_ENGINE_PVT.Check_Rules_For_Unit (
506 p_api_version => 1.0,
507 p_init_msg_list => p_init_msg_list,
508 p_validation_level => p_validation_level,
509 p_unit_header_id => p_unit_header_id,
510 p_rule_type => 'MANDATORY',
511 p_check_subconfig_flag => FND_API.G_TRUE,
512 x_evaluation_status => x_evaluation_status,
513 x_return_status => x_return_status,
514 x_msg_count => x_msg_count,
515 x_msg_data => x_msg_data
516 );
517 -- Check Error Message stack.
518 x_msg_count := FND_MSG_PUB.count_msg;
519 IF x_msg_count > 0 THEN
520 RAISE FND_API.G_EXC_ERROR;
521 END IF;
522
523 -- SATHAPLI::FP OGMA Issue# 105 - Non-Serialized Item Maintenance, 05-Dec-2007
524 IF (x_evaluation_status <> 'F') THEN
525 -- Perform Quantity Checks
526 AHL_UC_POS_NECES_PVT.Check_Position_Quantities (
527 p_api_version => 1.0,
528 p_init_msg_list => p_init_msg_list,
529 p_validation_level => p_validation_level,
530 p_uc_header_id => p_unit_header_id,
531 x_evaluation_status => x_evaluation_status,
532 x_return_status => x_return_status,
533 x_msg_count => x_msg_count,
534 x_msg_data => x_msg_data
535 );
536
537 -- Check Error Message stack.
538 x_msg_count := FND_MSG_PUB.count_msg;
539 IF x_msg_count > 0 THEN
540 RAISE FND_API.G_EXC_ERROR;
541 END IF;
542 END IF;
543
544 END IF;
545
546 -- Standard check of p_commit
547 IF FND_API.TO_BOOLEAN(p_commit) THEN
548 COMMIT WORK;
549 END IF;
550
551 -- Standard call to get message count and if count is 1, get message info
552 FND_MSG_PUB.Count_And_Get
553 ( p_count => x_msg_count,
554 p_data => x_msg_data,
555 p_encoded => fnd_api.g_false
556 );
557
558 EXCEPTION
559 WHEN FND_API.G_EXC_ERROR THEN
560 x_return_status := FND_API.G_RET_STS_ERROR;
561 Rollback to Check_Completeness;
562 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
563 p_data => x_msg_data,
564 p_encoded => fnd_api.g_false);
565
566 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
567 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
568 Rollback to Check_Completeness;
569 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
570 p_data => x_msg_data,
571 p_encoded => fnd_api.g_false);
572
573 WHEN OTHERS THEN
574 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
575 Rollback to Check_Completeness;
576 FND_MSG_PUB.add_exc_msg( p_pkg_name => G_PKG_NAME,
577 p_procedure_name => l_api_name,
578 p_error_text => SQLERRM);
579
580 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
581 p_data => x_msg_data,
582 p_encoded => fnd_api.g_false);
583
584 END Check_Completeness;
585
586
587 END AHL_UC_VALIDATION_PUB;