[Home] [Help]
PACKAGE BODY: APPS.AHL_RM_RT_OPER_PANEL_PVT
Source
1 PACKAGE BODY AHL_RM_RT_OPER_PANEL_PVT AS
2 /* $Header: AHLVRAPB.pls 120.0.12000000.1 2007/10/18 13:45:11 adivenka noship $ */
3
4 G_PKG_NAME VARCHAR2(30) := 'AHL_RM_RT_OPER_PANEL_PVT';
5 G_API_NAME1 VARCHAR2(30) := 'process_rt_oper_panel';
6 G_DEBUG VARCHAR2(1) := NVL(AHL_DEBUG_PUB.is_log_enabled,'N');
7
8 -- constants for WHO Columns
9 G_LAST_UPDATE_DATE DATE := SYSDATE;
10 G_LAST_UPDATED_BY NUMBER(15) := FND_GLOBAL.user_id;
11 G_LAST_UPDATE_LOGIN NUMBER(15) := FND_GLOBAL.login_id;
12 G_CREATION_DATE DATE := SYSDATE;
13 G_CREATED_BY NUMBER(15) := FND_GLOBAL.user_id;
14
15 -- Function to get the Record Identifier for Error Messages
16 FUNCTION get_record_identifier
17 (
18 p_rt_oper_panel_rec IN rt_oper_panel_rec_type
19 ) RETURN VARCHAR2
20 IS
21
22 l_record_identifier VARCHAR2(2000) := '';
23
24 BEGIN
25
26 IF ( p_rt_oper_panel_rec.panel_type IS NOT NULL AND
27 p_rt_oper_panel_rec.panel_type <> FND_API.G_MISS_CHAR ) THEN
28 l_record_identifier := l_record_identifier || p_rt_oper_panel_rec.panel_type;
29 END IF;
30
31 l_record_identifier := l_record_identifier;
32
33 RETURN l_record_identifier;
34
35 END get_record_identifier;
36
37 -- Procedure to validate the all the inputs except the table structure of the API
38 PROCEDURE validate_api_inputs
39 (
40 p_rt_oper_panel_tbl IN rt_oper_panel_tbl_type,
41 p_association_type_code IN VARCHAR2,
42 p_object_id IN NUMBER,
43 x_return_status OUT NOCOPY VARCHAR2
44 )
45 IS
46
47 l_return_status VARCHAR2(1);
48 l_msg_data VARCHAR2(2000);
49
50 BEGIN
51 x_return_status := FND_API.G_RET_STS_SUCCESS;
52
53 -- Check if a valid value is passed in p_association_type_code
54 IF ( p_association_type_code = FND_API.G_MISS_CHAR OR
55 p_association_type_code IS NULL ) THEN
56 FND_MESSAGE.set_name( 'AHL', 'AHL_RM_ASSOC_TYPE_NULL' );
57 FND_MSG_PUB.add;
58 x_return_status := FND_API.G_RET_STS_ERROR;
59 RETURN;
60 ELSIF ( p_association_type_code <> 'OPERATION' AND
61 p_association_type_code <> 'ROUTE' ) THEN
62 FND_MESSAGE.set_name( 'AHL', 'AHL_RM_ASSOC_TYPE_INVALID' );
63 FND_MESSAGE.set_token( 'FIELD', p_association_type_code );
64 FND_MSG_PUB.add;
65 x_return_status := FND_API.G_RET_STS_ERROR;
66 RETURN;
67 END IF;
68
69 -- Check if a valid value is passed in p_object_id
70 IF (p_association_type_code = 'OPERATION') THEN
71 AHL_RM_ROUTE_UTIL.validate_operation_status
72 (
73 p_operation_id => p_object_id,
74 x_return_status => l_return_status,
75 x_msg_data => l_msg_data
76 );
77 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
78 FND_MESSAGE.set_name( 'AHL', l_msg_data );
79 FND_MSG_PUB.add;
80 x_return_status := FND_API.G_RET_STS_ERROR;
81 RETURN;
82 END IF;
83 ELSIF (p_association_type_code = 'ROUTE') THEN
84 AHL_RM_ROUTE_UTIL.validate_route_status
85 (
86 p_route_id => p_object_id,
87 x_return_status => l_return_status,
88 x_msg_data => l_msg_data
89 );
90 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
91 FND_MESSAGE.set_name( 'AHL', l_msg_data );
92 FND_MSG_PUB.add;
93 x_return_status := FND_API.G_RET_STS_ERROR;
94 RETURN;
95 END IF;
96 END IF;
97
98 -- Check if at least one record is passed in p_rt_oper_panel_tbl
99 IF ( p_rt_oper_panel_tbl.count < 1 ) THEN
100 FND_MESSAGE.set_name( 'AHL', 'AHL_COM_INVALID_PROCEDURE_CALL' );
101 FND_MESSAGE.set_token( 'PROCEDURE', G_PKG_NAME || '.' || G_API_NAME1 );
102 FND_MSG_PUB.add;
103 x_return_status := FND_API.G_RET_STS_ERROR;
104 RETURN;
105 END IF;
106
107 -- Validate DML Operation
108 FOR i IN 1..p_rt_oper_panel_tbl.count LOOP
109 IF ( p_rt_oper_panel_tbl(i).dml_operation IS NULL OR
110 (
111 p_rt_oper_panel_tbl(i).dml_operation <> 'C' AND
112 p_rt_oper_panel_tbl(i).dml_operation <> 'U' AND
113 p_rt_oper_panel_tbl(i).dml_operation <> 'D'
114 )
115 )
116 THEN
117 FND_MESSAGE.set_name( 'AHL', 'AHL_COM_INVALID_DML_REC' );
118 FND_MESSAGE.set_token( 'FIELD', p_rt_oper_panel_tbl(i).dml_operation );
119 FND_MSG_PUB.add;
120 x_return_status := FND_API.G_RET_STS_ERROR;
121 RETURN;
122 END IF;
123 END LOOP;
124
125 END validate_api_inputs;
126
127 -- Procedure to Default NULL / G_MISS Values for LOV attributes
128 PROCEDURE clear_lov_attribute_ids
129 (
130 p_x_rt_oper_panel_rec IN OUT NOCOPY rt_oper_panel_rec_type
131 )
132 IS
133
134 BEGIN
135 IF ( p_x_rt_oper_panel_rec.panel_type IS NULL ) THEN
136 p_x_rt_oper_panel_rec.panel_type_id := NULL;
137 ELSIF ( p_x_rt_oper_panel_rec.panel_type = FND_API.G_MISS_CHAR ) THEN
138 p_x_rt_oper_panel_rec.panel_type_id := FND_API.G_MISS_CHAR;
139 END IF;
140
141 END clear_lov_attribute_ids;
142
143 -- Procedure to perform Value to ID conversion and validation for LOV attributes
144 PROCEDURE convert_values_to_ids
145 (
146 p_x_rt_oper_panel_rec IN OUT NOCOPY rt_oper_panel_rec_type,
147 x_return_status OUT NOCOPY VARCHAR2
148 )
149 IS
150
151 l_return_status VARCHAR2(1);
152 l_msg_data VARCHAR2(2000);
153
154 BEGIN
155 x_return_status := FND_API.G_RET_STS_SUCCESS;
156
157 -- Convert / Validate panel_type_id
158 IF ( ( p_x_rt_oper_panel_rec.panel_type_id IS NOT NULL AND
159 p_x_rt_oper_panel_rec.panel_type_id <> FND_API.G_MISS_CHAR ) OR
160 ( p_x_rt_oper_panel_rec.panel_type IS NOT NULL AND
161 p_x_rt_oper_panel_rec.panel_type <> FND_API.G_MISS_CHAR ) ) THEN
162
163 AHL_RM_ROUTE_UTIL.validate_lookup
164 (
165 x_return_status => l_return_status,
166 x_msg_data => l_msg_data,
167 p_lookup_type => 'AHL_RM_ACCESS_PANELS',
168 p_lookup_meaning => p_x_rt_oper_panel_rec.panel_type,
169 p_x_lookup_code => p_x_rt_oper_panel_rec.panel_type_id
170 );
171
172 IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS ) THEN
173 IF ( l_msg_data = 'AHL_COM_INVALID_LOOKUP' ) THEN
174 FND_MESSAGE.set_name( 'AHL', 'AHL_RM_INVALID_PANEL_TYPE' );
175 ELSIF ( l_msg_data = 'AHL_COM_TOO_MANY_LOOKUPS' ) THEN
176 FND_MESSAGE.set_name( 'AHL', 'AHL_RM_TOO_MANY_PANEL_TYPES' );
177 ELSE
178 FND_MESSAGE.set_name( 'AHL', l_msg_data );
179 END IF;
180
181 IF ( p_x_rt_oper_panel_rec.panel_type IS NULL OR
182 p_x_rt_oper_panel_rec.panel_type = FND_API.G_MISS_CHAR ) THEN
183 FND_MESSAGE.set_token( 'FIELD', TO_CHAR( p_x_rt_oper_panel_rec.panel_type_id ) );
184 ELSE
185 FND_MESSAGE.set_token( 'FIELD', p_x_rt_oper_panel_rec.panel_type );
186 END IF;
187
188 FND_MSG_PUB.add;
189 END IF;
190
191 END IF;
192
193 END convert_values_to_ids;
194
195 -- Procedure to add Default values for missing attributes (CREATE)
196 PROCEDURE default_missing_attributes
197 (
198 p_x_rt_oper_panel_rec IN OUT NOCOPY rt_oper_panel_rec_type
199 )
200 IS
201
202 BEGIN
203
204 -- Convert G_MISS values to NULL
205 IF ( p_x_rt_oper_panel_rec.panel_type_id = FND_API.G_MISS_CHAR ) THEN
206 p_x_rt_oper_panel_rec.panel_type_id := null;
207 END IF;
208
209 IF ( p_x_rt_oper_panel_rec.panel_type = FND_API.G_MISS_CHAR ) THEN
210 p_x_rt_oper_panel_rec.panel_type := null;
211 END IF;
212
213 IF ( p_x_rt_oper_panel_rec.attribute_category = FND_API.G_MISS_CHAR ) THEN
214 p_x_rt_oper_panel_rec.attribute_category := null;
215 END IF;
216
217 IF ( p_x_rt_oper_panel_rec.attribute1 = FND_API.G_MISS_CHAR ) THEN
218 p_x_rt_oper_panel_rec.attribute1 := null;
219 END IF;
220
221 IF ( p_x_rt_oper_panel_rec.attribute2 = FND_API.G_MISS_CHAR ) THEN
222 p_x_rt_oper_panel_rec.attribute2 := null;
223 END IF;
224
225 IF ( p_x_rt_oper_panel_rec.attribute3 = FND_API.G_MISS_CHAR ) THEN
226 p_x_rt_oper_panel_rec.attribute3 := null;
227 END IF;
228
229 IF ( p_x_rt_oper_panel_rec.attribute4 = FND_API.G_MISS_CHAR ) THEN
230 p_x_rt_oper_panel_rec.attribute4 := null;
231 END IF;
232
233 IF ( p_x_rt_oper_panel_rec.attribute5 = FND_API.G_MISS_CHAR ) THEN
234 p_x_rt_oper_panel_rec.attribute5 := null;
235 END IF;
236
237 IF ( p_x_rt_oper_panel_rec.attribute6 = FND_API.G_MISS_CHAR ) THEN
238 p_x_rt_oper_panel_rec.attribute6 := null;
239 END IF;
240
241 IF ( p_x_rt_oper_panel_rec.attribute7 = FND_API.G_MISS_CHAR ) THEN
242 p_x_rt_oper_panel_rec.attribute7 := null;
243 END IF;
244
245 IF ( p_x_rt_oper_panel_rec.attribute8 = FND_API.G_MISS_CHAR ) THEN
246 p_x_rt_oper_panel_rec.attribute8 := null;
247 END IF;
248
249 IF ( p_x_rt_oper_panel_rec.attribute9 = FND_API.G_MISS_CHAR ) THEN
250 p_x_rt_oper_panel_rec.attribute9 := null;
251 END IF;
252
253 IF ( p_x_rt_oper_panel_rec.attribute10 = FND_API.G_MISS_CHAR ) THEN
254 p_x_rt_oper_panel_rec.attribute10 := null;
255 END IF;
256
257 IF ( p_x_rt_oper_panel_rec.attribute11 = FND_API.G_MISS_CHAR ) THEN
258 p_x_rt_oper_panel_rec.attribute11 := null;
259 END IF;
260
261 IF ( p_x_rt_oper_panel_rec.attribute12 = FND_API.G_MISS_CHAR ) THEN
262 p_x_rt_oper_panel_rec.attribute12 := null;
263 END IF;
264
265 IF ( p_x_rt_oper_panel_rec.attribute13 = FND_API.G_MISS_CHAR ) THEN
266 p_x_rt_oper_panel_rec.attribute13 := null;
267 END IF;
268
269 IF ( p_x_rt_oper_panel_rec.attribute14 = FND_API.G_MISS_CHAR ) THEN
270 p_x_rt_oper_panel_rec.attribute14 := null;
271 END IF;
272
273 IF ( p_x_rt_oper_panel_rec.attribute15 = FND_API.G_MISS_CHAR ) THEN
274 p_x_rt_oper_panel_rec.attribute15 := null;
275 END IF;
276
277 END default_missing_attributes;
278
279 -- Procedure to add Default values for unchanged attributes (UPDATE)
280 PROCEDURE default_unchanged_attributes
281 (
282 p_x_rt_oper_panel_rec IN OUT NOCOPY rt_oper_panel_rec_type
283 )
284 IS
285
286 l_old_rt_oper_panel_rec rt_oper_panel_rec_type;
287
288 CURSOR get_old_rec ( c_rt_oper_panel_id NUMBER )
289 IS
290 SELECT panel_type_id,
291 attribute_category,
292 attribute1,
293 attribute2,
294 attribute3,
295 attribute4,
296 attribute5,
297 attribute6,
298 attribute7,
299 attribute8,
300 attribute9,
301 attribute10,
302 attribute11,
303 attribute12,
304 attribute13,
305 attribute14,
306 attribute15
307 FROM AHL_RT_OPER_ACCESS_PANELS
308 WHERE rt_oper_panel_id = c_rt_oper_panel_id;
309
310 BEGIN
311
312 -- Get the old record from AHL_RT_OPER_ACCESS_PANELS.
313 OPEN get_old_rec( p_x_rt_oper_panel_rec.rt_oper_panel_id );
314
315 FETCH get_old_rec INTO
316 l_old_rt_oper_panel_rec.panel_type_id,
317 l_old_rt_oper_panel_rec.attribute_category,
318 l_old_rt_oper_panel_rec.attribute1,
319 l_old_rt_oper_panel_rec.attribute2,
320 l_old_rt_oper_panel_rec.attribute3,
321 l_old_rt_oper_panel_rec.attribute4,
322 l_old_rt_oper_panel_rec.attribute5,
323 l_old_rt_oper_panel_rec.attribute6,
324 l_old_rt_oper_panel_rec.attribute7,
325 l_old_rt_oper_panel_rec.attribute8,
326 l_old_rt_oper_panel_rec.attribute9,
327 l_old_rt_oper_panel_rec.attribute10,
328 l_old_rt_oper_panel_rec.attribute11,
329 l_old_rt_oper_panel_rec.attribute12,
330 l_old_rt_oper_panel_rec.attribute13,
331 l_old_rt_oper_panel_rec.attribute14,
332 l_old_rt_oper_panel_rec.attribute15;
333
334 IF get_old_rec%NOTFOUND THEN
335 FND_MESSAGE.set_name( 'AHL', 'AHL_RM_INVALID_PANEL_REC' );
336 FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_x_rt_oper_panel_rec ) );
337 FND_MSG_PUB.add;
338 CLOSE get_old_rec;
339 RAISE FND_API.G_EXC_ERROR;
340 END IF;
341
342 CLOSE get_old_rec;
343
344 -- Convert G_MISS values to NULL and NULL values to Old values
345 IF ( p_x_rt_oper_panel_rec.panel_type_id = FND_API.G_MISS_CHAR ) THEN
346 p_x_rt_oper_panel_rec.panel_type_id := null;
347 ELSIF ( p_x_rt_oper_panel_rec.panel_type_id IS NULL ) THEN
348 p_x_rt_oper_panel_rec.panel_type_id := l_old_rt_oper_panel_rec.panel_type_id;
349 END IF;
350
351 IF ( p_x_rt_oper_panel_rec.panel_type = FND_API.G_MISS_CHAR ) THEN
352 p_x_rt_oper_panel_rec.panel_type := null;
353 ELSIF ( p_x_rt_oper_panel_rec.panel_type IS NULL ) THEN
354 p_x_rt_oper_panel_rec.panel_type := l_old_rt_oper_panel_rec.panel_type;
355 END IF;
356
357 IF ( p_x_rt_oper_panel_rec.attribute_category = FND_API.G_MISS_CHAR ) THEN
358 p_x_rt_oper_panel_rec.attribute_category := null;
359 ELSIF ( p_x_rt_oper_panel_rec.attribute_category IS NULL ) THEN
360 p_x_rt_oper_panel_rec.attribute_category := l_old_rt_oper_panel_rec.attribute_category;
361 END IF;
362
363 IF ( p_x_rt_oper_panel_rec.attribute1 = FND_API.G_MISS_CHAR ) THEN
364 p_x_rt_oper_panel_rec.attribute1 := null;
365 ELSIF ( p_x_rt_oper_panel_rec.attribute1 IS NULL ) THEN
366 p_x_rt_oper_panel_rec.attribute1 := l_old_rt_oper_panel_rec.attribute1;
367 END IF;
368
369 IF ( p_x_rt_oper_panel_rec.attribute2 = FND_API.G_MISS_CHAR ) THEN
370 p_x_rt_oper_panel_rec.attribute2 := null;
371 ELSIF ( p_x_rt_oper_panel_rec.attribute2 IS NULL ) THEN
372 p_x_rt_oper_panel_rec.attribute2 := l_old_rt_oper_panel_rec.attribute2;
373 END IF;
374
375 IF ( p_x_rt_oper_panel_rec.attribute3 = FND_API.G_MISS_CHAR ) THEN
376 p_x_rt_oper_panel_rec.attribute3 := null;
377 ELSIF ( p_x_rt_oper_panel_rec.attribute3 IS NULL ) THEN
378 p_x_rt_oper_panel_rec.attribute3 := l_old_rt_oper_panel_rec.attribute3;
379 END IF;
380
381 IF ( p_x_rt_oper_panel_rec.attribute4 = FND_API.G_MISS_CHAR ) THEN
382 p_x_rt_oper_panel_rec.attribute4 := null;
383 ELSIF ( p_x_rt_oper_panel_rec.attribute4 IS NULL ) THEN
384 p_x_rt_oper_panel_rec.attribute4 := l_old_rt_oper_panel_rec.attribute4;
385 END IF;
386
387 IF ( p_x_rt_oper_panel_rec.attribute5 = FND_API.G_MISS_CHAR ) THEN
388 p_x_rt_oper_panel_rec.attribute5 := null;
389 ELSIF ( p_x_rt_oper_panel_rec.attribute5 IS NULL ) THEN
390 p_x_rt_oper_panel_rec.attribute5 := l_old_rt_oper_panel_rec.attribute5;
391 END IF;
392
393 IF ( p_x_rt_oper_panel_rec.attribute6 = FND_API.G_MISS_CHAR ) THEN
394 p_x_rt_oper_panel_rec.attribute6 := null;
395 ELSIF ( p_x_rt_oper_panel_rec.attribute6 IS NULL ) THEN
396 p_x_rt_oper_panel_rec.attribute6 := l_old_rt_oper_panel_rec.attribute6;
397 END IF;
398
399 IF ( p_x_rt_oper_panel_rec.attribute7 = FND_API.G_MISS_CHAR ) THEN
400 p_x_rt_oper_panel_rec.attribute7 := null;
401 ELSIF ( p_x_rt_oper_panel_rec.attribute7 IS NULL ) THEN
402 p_x_rt_oper_panel_rec.attribute7 := l_old_rt_oper_panel_rec.attribute7;
403 END IF;
404
405 IF ( p_x_rt_oper_panel_rec.attribute8 = FND_API.G_MISS_CHAR ) THEN
406 p_x_rt_oper_panel_rec.attribute8 := null;
407 ELSIF ( p_x_rt_oper_panel_rec.attribute8 IS NULL ) THEN
408 p_x_rt_oper_panel_rec.attribute8 := l_old_rt_oper_panel_rec.attribute8;
409 END IF;
410
411 IF ( p_x_rt_oper_panel_rec.attribute9 = FND_API.G_MISS_CHAR ) THEN
412 p_x_rt_oper_panel_rec.attribute9 := null;
413 ELSIF ( p_x_rt_oper_panel_rec.attribute9 IS NULL ) THEN
414 p_x_rt_oper_panel_rec.attribute9 := l_old_rt_oper_panel_rec.attribute9;
415 END IF;
416
417 IF ( p_x_rt_oper_panel_rec.attribute10 = FND_API.G_MISS_CHAR ) THEN
418 p_x_rt_oper_panel_rec.attribute10 := null;
419 ELSIF ( p_x_rt_oper_panel_rec.attribute10 IS NULL ) THEN
420 p_x_rt_oper_panel_rec.attribute10 := l_old_rt_oper_panel_rec.attribute10;
421 END IF;
422
423 IF ( p_x_rt_oper_panel_rec.attribute11 = FND_API.G_MISS_CHAR ) THEN
424 p_x_rt_oper_panel_rec.attribute11 := null;
425 ELSIF ( p_x_rt_oper_panel_rec.attribute11 IS NULL ) THEN
426 p_x_rt_oper_panel_rec.attribute11 := l_old_rt_oper_panel_rec.attribute11;
427 END IF;
428
429 IF ( p_x_rt_oper_panel_rec.attribute12 = FND_API.G_MISS_CHAR ) THEN
430 p_x_rt_oper_panel_rec.attribute12 := null;
431 ELSIF ( p_x_rt_oper_panel_rec.attribute12 IS NULL ) THEN
432 p_x_rt_oper_panel_rec.attribute12 := l_old_rt_oper_panel_rec.attribute12;
433 END IF;
434
435 IF ( p_x_rt_oper_panel_rec.attribute13 = FND_API.G_MISS_CHAR ) THEN
436 p_x_rt_oper_panel_rec.attribute13 := null;
437 ELSIF ( p_x_rt_oper_panel_rec.attribute13 IS NULL ) THEN
438 p_x_rt_oper_panel_rec.attribute13 := l_old_rt_oper_panel_rec.attribute13;
439 END IF;
440
441 IF ( p_x_rt_oper_panel_rec.attribute14 = FND_API.G_MISS_CHAR ) THEN
442 p_x_rt_oper_panel_rec.attribute14 := null;
443 ELSIF ( p_x_rt_oper_panel_rec.attribute14 IS NULL ) THEN
444 p_x_rt_oper_panel_rec.attribute14 := l_old_rt_oper_panel_rec.attribute14;
445 END IF;
446
447 IF ( p_x_rt_oper_panel_rec.attribute15 = FND_API.G_MISS_CHAR ) THEN
448 p_x_rt_oper_panel_rec.attribute15 := null;
449 ELSIF ( p_x_rt_oper_panel_rec.attribute15 IS NULL ) THEN
450 p_x_rt_oper_panel_rec.attribute15 := l_old_rt_oper_panel_rec.attribute15;
451 END IF;
452
453 END default_unchanged_attributes;
454
455 -- Procedure to validate individual rt_oper_panel attributes
456 PROCEDURE validate_attributes
457 (
458 p_object_id IN NUMBER,
459 p_association_type_code IN VARCHAR2,
460 p_rt_oper_panel_rec IN rt_oper_panel_rec_type,
461 x_return_status OUT NOCOPY VARCHAR2
462 )
463 IS
464
465 l_return_status VARCHAR2(1);
466 l_msg_count NUMBER;
467 l_msg_data VARCHAR2(2000);
468 l_max_rt_time_span NUMBER;
469 l_dummy VARCHAR2(1);
470
471 BEGIN
472 x_return_status := FND_API.G_RET_STS_SUCCESS;
473
474 -- Get all the error messages from the previous steps (if any) and raise the appropriate Exception
475 l_msg_count := FND_MSG_PUB.count_msg;
476 IF l_msg_count > 0 THEN
477 RAISE FND_API.G_EXC_ERROR;
478 END IF;
479
480 IF ( p_rt_oper_panel_rec.dml_operation = 'C' ) THEN
481 RETURN;
482 END IF;
483
484 -- Check if the mandatory Object Version Number column contains a null value.
485 IF ( p_rt_oper_panel_rec.object_version_number IS NULL OR
486 p_rt_oper_panel_rec.object_version_number = FND_API.G_MISS_NUM ) THEN
487 FND_MESSAGE.set_name( 'AHL','AHL_RM_PANEL_VERSION_NULL' );
488 FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_rt_oper_panel_rec ) );
489 FND_MSG_PUB.add;
490 END IF;
491
492 -- Check if the mandatory rt_oper_panel ID column contains a null value.
493 IF ( p_rt_oper_panel_rec.rt_oper_panel_id IS NULL OR
494 p_rt_oper_panel_rec.rt_oper_panel_id = FND_API.G_MISS_NUM ) THEN
495 FND_MESSAGE.set_name( 'AHL','AHL_RM_RT_OPER_PANEL_ID_NULL' );
496 FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_rt_oper_panel_rec ) );
497 FND_MSG_PUB.add;
498 END IF;
499
500 -- Get all the error messages from the previous steps (if any) and raise the appropriate Exception
501 l_msg_count := FND_MSG_PUB.count_msg;
502 IF l_msg_count > 0 THEN
503 RAISE FND_API.G_EXC_ERROR;
504 END IF;
505
506
507 END validate_attributes;
508
509 -- Procedure to Perform cross records validation and duplicate checks
510 PROCEDURE validate_records
511 (
512 p_object_id IN NUMBER,
513 p_association_type_code IN VARCHAR2,
514 x_return_status OUT NOCOPY VARCHAR2
515 )
516 IS
517
518 CURSOR get_dup_rec ( c_object_id NUMBER, c_association_type_code VARCHAR2 )
519 IS
520 SELECT panel_type_id,
521 panel_type
522 FROM AHL_RT_OPER_ACCESS_PANELS_V
523 WHERE object_id = c_object_id
524 AND association_type_code = c_association_type_code
525 GROUP BY panel_type_id,
526 panel_type
527 HAVING count(*) > 1;
528
529 l_rt_oper_panel_rec rt_oper_panel_rec_type;
530
531 BEGIN
532
533 x_return_status := FND_API.G_RET_STS_SUCCESS;
534 -- Check whether any duplicate rt_oper_panel records for the given object_ID
535 OPEN get_dup_rec( p_object_id, p_association_type_code );
536
537 LOOP
538 FETCH get_dup_rec INTO
539 l_rt_oper_panel_rec.panel_type_id,
540 l_rt_oper_panel_rec.panel_type;
541
542 EXIT WHEN get_dup_rec%NOTFOUND;
543 END LOOP;
544
545 IF ( get_dup_rec%ROWCOUNT > 0 ) THEN
546 CLOSE get_dup_rec;
547 FND_MESSAGE.set_name( 'AHL', 'AHL_RM_RT_OPER_PANEL_DUP' );
548 FND_MESSAGE.set_token( 'RECORD', get_record_identifier( l_rt_oper_panel_rec ) );
549 FND_MSG_PUB.add;
550 x_return_status := FND_API.G_RET_STS_ERROR;
551 RETURN;
552 END IF;
553
554 CLOSE get_dup_rec;
555
556 END validate_records;
557
558 PROCEDURE process_rt_oper_panel
559 (
560 p_api_version IN NUMBER := 1.0,
561 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE,
562 p_commit IN VARCHAR2 := FND_API.G_FALSE,
563 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
564 p_default IN VARCHAR2 := FND_API.G_FALSE,
565 p_module_type IN VARCHAR2 := NULL,
566 x_return_status OUT NOCOPY VARCHAR2,
567 x_msg_count OUT NOCOPY NUMBER,
568 x_msg_data OUT NOCOPY VARCHAR2,
569 p_x_rt_oper_panel_tbl IN OUT NOCOPY rt_oper_panel_tbl_type,
570 p_association_type_code IN VARCHAR2,
571 p_object_id IN NUMBER
572 )
573 IS
574
575 cursor get_route_status (p_route_id in number)
576 is
577 select revision_status_code
578 from ahl_routes_app_v
579 where route_id = p_route_id;
580
581 l_obj_status VARCHAR2(30);
582
583 cursor get_oper_status (p_operation_id in number)
584 is
585 select revision_status_code
586 from ahl_operations_b
587 where operation_id = p_operation_id;
588
589 l_api_version CONSTANT NUMBER := 1.0;
590 l_return_status VARCHAR2(1);
591 l_msg_count NUMBER;
592 l_msg_data VARCHAR2(2000);
593 l_rt_oper_panel_id NUMBER;
594 l_x_operation_rec AHL_RM_OPERATION_PVT.operation_rec_type ;
595 l_x_route_rec AHL_RM_ROUTE_PVT.route_rec_type ;
596 BEGIN
597 -- Initialize API return status to success
598 x_return_status := FND_API.G_RET_STS_SUCCESS;
599
600 -- Standard Start of API savepoint
601 SAVEPOINT process_rt_oper_panel_pvt;
602
603 -- Standard call to check for call compatibility.
604 IF NOT FND_API.compatible_api_call
605 (
606 l_api_version,
607 p_api_version,
608 G_API_NAME1,
609 G_PKG_NAME
610 )
611 THEN
612 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
613 END IF;
614
615 -- Initialize message list if p_init_msg_list is set to TRUE.
616 IF FND_API.to_boolean( p_init_msg_list ) THEN
617 FND_MSG_PUB.initialize;
618 END IF;
619
620 IF G_DEBUG = 'Y' THEN
621 AHL_DEBUG_PUB.enable_debug;
622 AHL_DEBUG_PUB.debug( G_PKG_NAME || '.' || G_API_NAME1 || ' : Begin API' );
623 END IF;
624
625
626 --This is to be added before calling validate_api_inputs()
627 -- Validate Application Usage
628 IF (p_association_type_code = 'ROUTE')
629 THEN
630 AHL_RM_ROUTE_UTIL.validate_ApplnUsage
631 (
632 p_object_id => p_object_id,
633 p_association_type => p_association_type_code ,
634 x_return_status => x_return_status,
635 x_msg_data => x_msg_data
636 );
637
638 -- If any severe error occurs, then, abort API.
639 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
640 RAISE FND_API.G_EXC_ERROR;
641 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
642 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
643 END IF;
644 END IF ;
645
646
647 -- Validate all the inputs of the API
648 validate_api_inputs
649 (
650 p_x_rt_oper_panel_tbl,
651 p_association_type_code,
652 p_object_id,
653 l_return_status
654 );
655
656 -- If any severe error occurs, then, abort API.
657 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
658 RAISE FND_API.G_EXC_ERROR;
659 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
660 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
661 END IF;
662
663 -- If the module type is JSP, then default values for ID columns of LOV attributes
664 IF ( p_module_type = 'JSP' ) THEN
665 FOR i IN 1..p_x_rt_oper_panel_tbl.count LOOP
666 IF ( p_x_rt_oper_panel_tbl(i).dml_operation <> 'D' ) THEN
667 clear_lov_attribute_ids
668 (
669 p_x_rt_oper_panel_tbl(i) -- IN OUT Record with Values and Ids
670 );
671 END IF;
672 END LOOP;
673 END IF;
674
675 -- Convert Values into Ids.
676 -- Balaji removed p_validation_level check in 11510+ as a part of public api cleanup.
677 --IF ( p_validation_level = FND_API.G_VALID_LEVEL_FULL ) THEN
678 FOR i IN 1..p_x_rt_oper_panel_tbl.count LOOP
679 IF ( p_x_rt_oper_panel_tbl(i).dml_operation <> 'D' ) THEN
680 convert_values_to_ids
681 (
682 p_x_rt_oper_panel_tbl(i) , -- IN OUT Record with Values and Ids
683 l_return_status -- OUT
684 );
685
686 -- If any severe error occurs, then, abort API.
687 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
688 RAISE FND_API.G_EXC_ERROR;
689 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
690 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
691 END IF;
692 END IF;
693 END LOOP;
694 --END IF;
695
696 IF G_DEBUG = 'Y' THEN
697 AHL_DEBUG_PUB.debug( G_PKG_NAME || '.' || G_API_NAME1 || ' : after convert_values_to_ids' );
698 END IF;
699
700 -- Default rt_oper_panel attributes.
701 /* Removed as a part of public API cleanup in 11510+.
702 IF FND_API.to_boolean( p_default ) THEN
703 FOR i IN 1..p_x_rt_oper_panel_tbl.count LOOP
704 IF ( p_x_rt_oper_panel_tbl(i).dml_operation <> 'D' ) THEN
705 default_attributes
706 (
707 p_x_rt_oper_panel_tbl(i) -- IN OUT
708 );
709 END IF;
710 END LOOP;
711 END IF;
712 */
713
714 IF G_DEBUG = 'Y' THEN
715 AHL_DEBUG_PUB.debug( G_PKG_NAME || '.' || G_API_NAME1 || ' : after default_attributes' );
716 END IF;
717
718 -- Validate all attributes (Item level validation)
719 -- Balaji removed p_validation_level check in 11510+ as a part of public api cleanup.
720 --IF ( p_validation_level = FND_API.G_VALID_LEVEL_FULL ) THEN
721 FOR i IN 1..p_x_rt_oper_panel_tbl.count LOOP
722 validate_attributes
723 (
724 p_object_id, -- IN
725 p_association_type_code, -- IN
726 p_x_rt_oper_panel_tbl(i), -- IN
727 l_return_status -- OUT
728 );
729
730 -- If any severe error occurs, then, abort API.
731 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
732 RAISE FND_API.G_EXC_ERROR;
733 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
734 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
735 END IF;
736 END LOOP;
737 --END IF;
738
739 IF G_DEBUG = 'Y' THEN
740 AHL_DEBUG_PUB.debug( G_PKG_NAME || '.' || G_API_NAME1 || ' : after validate_attributes' );
741 END IF;
742
743 -- Default missing and unchanged attributes.
744 FOR i IN 1..p_x_rt_oper_panel_tbl.count LOOP
745 IF ( p_x_rt_oper_panel_tbl(i).dml_operation = 'U' ) THEN
746 default_unchanged_attributes
747 (
748 p_x_rt_oper_panel_tbl(i) -- IN OUT
749 );
750 ELSIF ( p_x_rt_oper_panel_tbl(i).dml_operation = 'C' ) THEN
751 default_missing_attributes
752 (
753 p_x_rt_oper_panel_tbl(i) -- IN OUT
754 );
755 END IF;
756 END LOOP;
757
758 IF G_DEBUG = 'Y' THEN
759 AHL_DEBUG_PUB.debug( G_PKG_NAME || '.' || G_API_NAME1 || ' : after default_unchanged_attributes / default_missing_attributes' );
760 END IF;
761
762 IF G_DEBUG='Y' THEN
763 AHL_DEBUG_PUB.debug( 'Starting updating parent route/operation');
764 END IF;
765
766 IF ( p_association_type_code = 'OPERATION')
767 THEN
768 IF G_DEBUG='Y' THEN
769 AHL_DEBUG_PUB.debug( 'p_association_type_code = OPERATION');
770 END IF;
771
772 AHL_RM_ROUTE_UTIL.validate_operation_status
773 (
774 p_object_id,
775 l_msg_data,
776 l_return_status
777 );
778
779 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
780 FND_MESSAGE.SET_NAME('AHL',l_msg_data);
781 FND_MSG_PUB.ADD;
782 x_return_status := l_return_status;
783 RETURN;
784 END IF;
785
786 -- Update route status from APPROVAL_REJECTED to DRAFT
787 OPEN get_oper_status (p_object_id);
788 FETCH get_oper_status INTO l_obj_status;
789 IF (get_oper_status%FOUND AND l_obj_status = 'APPROVAL_REJECTED')
790 THEN
791 UPDATE ahl_operations_b
792 SET revision_status_code = 'DRAFT'
793 WHERE operation_id = p_object_id;
794 END IF;
795 CLOSE get_oper_status;
796
797 ELSIF ( p_association_type_code = 'ROUTE')
798 THEN
799 IF G_DEBUG='Y' THEN
800 AHL_DEBUG_PUB.debug( 'p_association_type_code = ROUTE');
801 END IF;
802 -- Check if the Route is existing and in Draft status
803 AHL_RM_ROUTE_UTIL.validate_route_status
804 (
805 p_object_id,
806 l_msg_data,
807 l_return_status
808 );
809
810 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
811 FND_MESSAGE.SET_NAME('AHL',l_msg_data);
812 FND_MSG_PUB.ADD;
813 x_return_status := l_return_status;
814 RETURN;
815 END IF;
816
817 -- Update route status from APPROVAL_REJECTED to DRAFT
818 OPEN get_route_status (p_object_id);
819 FETCH get_route_status INTO l_obj_status;
820 IF (get_route_status%FOUND AND l_obj_status = 'APPROVAL_REJECTED')
821 THEN
822 UPDATE ahl_routes_b
823 SET revision_status_code = 'DRAFT'
824 WHERE route_id = p_object_id;
825 END IF;
826 CLOSE get_route_status;
827
828 END IF ;
829
830
831 -- Get all the error messages from the previous steps (if any) and raise the appropriate Exception
832 l_msg_count := FND_MSG_PUB.count_msg;
833 IF l_msg_count > 0 THEN
834 x_msg_count := l_msg_count;
835 RAISE FND_API.G_EXC_ERROR;
836 END IF;
837
838 -- Perform the DML statement directly.
839 FOR i IN 1..p_x_rt_oper_panel_tbl.count LOOP
840 IF ( p_x_rt_oper_panel_tbl(i).dml_operation = 'C' ) THEN
841
842 BEGIN
843 -- Insert the record
844 INSERT INTO AHL_RT_OPER_ACCESS_PANELS
845 (
846 rt_oper_panel_id,
847 OBJECT_VERSION_NUMBER,
848 LAST_UPDATE_DATE,
849 LAST_UPDATED_BY,
850 CREATION_DATE,
851 CREATED_BY,
852 LAST_UPDATE_LOGIN,
853 association_type_code,
854 object_ID,
855 panel_type_id,
856 ATTRIBUTE_CATEGORY,
857 ATTRIBUTE1,
858 ATTRIBUTE2,
859 ATTRIBUTE3,
860 ATTRIBUTE4,
861 ATTRIBUTE5,
862 ATTRIBUTE6,
863 ATTRIBUTE7,
864 ATTRIBUTE8,
865 ATTRIBUTE9,
866 ATTRIBUTE10,
867 ATTRIBUTE11,
868 ATTRIBUTE12,
869 ATTRIBUTE13,
870 ATTRIBUTE14,
871 ATTRIBUTE15
872 ) VALUES
873 (
874 AHL_RT_OPER_ACCESS_PANELS_S.NEXTVAL,
875 1,
876 G_LAST_UPDATE_DATE,
877 G_LAST_UPDATED_BY,
878 G_CREATION_DATE,
879 G_CREATED_BY,
880 G_LAST_UPDATE_LOGIN,
881 p_association_type_code,
882 p_object_id,
883 p_x_rt_oper_panel_tbl(i).panel_type_id,
884 p_x_rt_oper_panel_tbl(i).attribute_category,
885 p_x_rt_oper_panel_tbl(i).attribute1,
886 p_x_rt_oper_panel_tbl(i).attribute2,
887 p_x_rt_oper_panel_tbl(i).attribute3,
888 p_x_rt_oper_panel_tbl(i).attribute4,
889 p_x_rt_oper_panel_tbl(i).attribute5,
890 p_x_rt_oper_panel_tbl(i).attribute6,
891 p_x_rt_oper_panel_tbl(i).attribute7,
892 p_x_rt_oper_panel_tbl(i).attribute8,
893 p_x_rt_oper_panel_tbl(i).attribute9,
894 p_x_rt_oper_panel_tbl(i).attribute10,
895 p_x_rt_oper_panel_tbl(i).attribute11,
896 p_x_rt_oper_panel_tbl(i).attribute12,
897 p_x_rt_oper_panel_tbl(i).attribute13,
898 p_x_rt_oper_panel_tbl(i).attribute14,
899 p_x_rt_oper_panel_tbl(i).attribute15
900 ) RETURNING rt_oper_panel_id INTO l_rt_oper_panel_id;
901
902 -- Set OUT values
903 p_x_rt_oper_panel_tbl(i).rt_oper_panel_id := l_rt_oper_panel_id;
904
905 EXCEPTION
906 WHEN OTHERS THEN
907 IF ( SQLCODE = -1 ) THEN
908 FND_MESSAGE.set_name( 'AHL', 'AHL_RM_RT_OPER_PANEL_DUP' );
909 FND_MESSAGE.set_token( 'RECORD', get_record_identifier(p_x_rt_oper_panel_tbl(i) ) );
910 FND_MSG_PUB.add;
911 ELSE
912 IF (fnd_log.level_unexpected >= fnd_log.g_current_runtime_level)THEN
913 fnd_log.string
914 (
915 fnd_log.level_unexpected,
916 'ahl.plsql.'||G_PKG_NAME||'.'||G_API_NAME1,
917 'AHL_RT_OPER_ACCESS_PANELS insert error = ['||SQLERRM||']'
918 );
919 END IF;
920 END IF;
921 END;
922
923 ELSIF ( p_x_rt_oper_panel_tbl(i).dml_operation = 'U' ) THEN
924
925 BEGIN
926 -- Update the record
927 UPDATE AHL_RT_OPER_ACCESS_PANELS SET
928 object_version_number = object_version_number + 1,
929 last_update_date = G_LAST_UPDATE_DATE,
930 last_updated_by = G_LAST_UPDATED_BY,
931 last_update_login = G_LAST_UPDATE_LOGIN,
932 panel_type_id = p_x_rt_oper_panel_tbl(i).panel_type_id,
933 attribute_category = p_x_rt_oper_panel_tbl(i).attribute_category,
934 attribute1 = p_x_rt_oper_panel_tbl(i).attribute1,
935 attribute2 = p_x_rt_oper_panel_tbl(i).attribute2,
936 attribute3 = p_x_rt_oper_panel_tbl(i).attribute3,
937 attribute4 = p_x_rt_oper_panel_tbl(i).attribute4,
938 attribute5 = p_x_rt_oper_panel_tbl(i).attribute5,
939 attribute6 = p_x_rt_oper_panel_tbl(i).attribute6,
940 attribute7 = p_x_rt_oper_panel_tbl(i).attribute7,
941 attribute8 = p_x_rt_oper_panel_tbl(i).attribute8,
942 attribute9 = p_x_rt_oper_panel_tbl(i).attribute9,
943 attribute10 = p_x_rt_oper_panel_tbl(i).attribute10,
944 attribute11 = p_x_rt_oper_panel_tbl(i).attribute11,
945 attribute12 = p_x_rt_oper_panel_tbl(i).attribute12,
946 attribute13 = p_x_rt_oper_panel_tbl(i).attribute13,
947 attribute14 = p_x_rt_oper_panel_tbl(i).attribute14,
948 attribute15 = p_x_rt_oper_panel_tbl(i).attribute15
949 WHERE rt_oper_panel_id = p_x_rt_oper_panel_tbl(i).rt_oper_panel_id
950 AND object_version_number = p_x_rt_oper_panel_tbl(i).object_version_number;
951
952 -- If the record does not exist, then, abort API.
953 IF ( SQL%ROWCOUNT = 0 ) THEN
954 FND_MESSAGE.set_name('AHL','AHL_RM_RECORD_CHANGED');
955 FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_x_rt_oper_panel_tbl(i) ) );
956 FND_MSG_PUB.add;
957 END IF;
958
959 -- Set OUT values
960 p_x_rt_oper_panel_tbl(i).object_version_number := p_x_rt_oper_panel_tbl(i).object_version_number + 1;
961
962 EXCEPTION
963 WHEN OTHERS THEN
964 IF ( SQLCODE = -1 ) THEN
965 FND_MESSAGE.set_name( 'AHL', 'AHL_RM_RT_OPER_PANEL_DUP' );
966 FND_MESSAGE.set_token( 'RECORD', get_record_identifier( p_x_rt_oper_panel_tbl(i) ) );
967 FND_MSG_PUB.add;
968 ELSE
969 IF (fnd_log.level_unexpected >= fnd_log.g_current_runtime_level)THEN
970 fnd_log.string
971 (
972 fnd_log.level_unexpected,
973 'ahl.plsql.'||G_PKG_NAME||'.'||G_API_NAME1,
974 'AHL_RT_OPER_ACCESS_PANELS update error = ['||SQLERRM||']'
975 );
976 END IF;
977 END IF;
978 END;
979
980 ELSIF ( p_x_rt_oper_panel_tbl(i).dml_operation = 'D' ) THEN
981
982 -- Delete the record
983 DELETE FROM AHL_RT_OPER_ACCESS_PANELS
984 WHERE rt_oper_panel_id = p_x_rt_oper_panel_tbl(i).rt_oper_panel_id
985 AND object_version_number = p_x_rt_oper_panel_tbl(i).object_version_number;
986
987 -- If the record does not exist, then, abort API.
988 IF ( SQL%ROWCOUNT = 0 ) THEN
989 FND_MESSAGE.set_name('AHL','AHL_RM_RECORD_CHANGED');
990 FND_MESSAGE.set_token( 'RECORD', TO_CHAR( i ) );
991 FND_MSG_PUB.add;
992 END IF;
993 END IF;
994 END LOOP;
995
996 IF G_DEBUG = 'Y' THEN
997 AHL_DEBUG_PUB.debug( G_PKG_NAME || '.' || G_API_NAME1 || ' : after DML operation' );
998 END IF;
999
1000 -- Get all the error messages from the previous steps (if any) and raise the appropriate Exception
1001 l_msg_count := FND_MSG_PUB.count_msg;
1002 IF l_msg_count > 0 THEN
1003 x_msg_count := l_msg_count;
1004 RAISE FND_API.G_EXC_ERROR;
1005 END IF;
1006
1007 -- Perform cross records validations and duplicate records check
1008 validate_records
1009 (
1010 p_object_id, -- IN
1011 p_association_type_code,
1012 l_return_status -- OUT
1013 );
1014
1015 -- If any severe error occurs, then, abort API.
1016 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1017 RAISE FND_API.G_EXC_ERROR;
1018 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1019 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1020 END IF;
1021
1022 IF G_DEBUG = 'Y' THEN
1023 AHL_DEBUG_PUB.debug( G_PKG_NAME || '.' || G_API_NAME1 || ' : after validate_records' );
1024 END IF;
1025
1026 -- Perform the Commit (if requested)
1027 IF FND_API.to_boolean( p_commit ) THEN
1028 COMMIT WORK;
1029 END IF;
1030
1031 -- Count and Get messages (optional)
1032 FND_MSG_PUB.count_and_get
1033 (
1034 p_encoded => FND_API.G_FALSE,
1035 p_count => x_msg_count,
1036 p_data => x_msg_data
1037 );
1038
1039 -- Disable debug (if enabled)
1040 IF G_DEBUG = 'Y' THEN
1041 AHL_DEBUG_PUB.disable_debug;
1042 END IF;
1043 EXCEPTION
1044 WHEN FND_API.G_EXC_ERROR THEN
1045 ROLLBACK TO process_rt_oper_panel_PVT;
1046 x_return_status := FND_API.G_RET_STS_ERROR ;
1047 FND_MSG_PUB.count_and_get
1048 (
1049 p_encoded => FND_API.G_FALSE,
1050 p_count => x_msg_count,
1051 p_data => x_msg_data
1052 );
1053
1054 -- Disable debug (if enabled)
1055 IF G_DEBUG = 'Y' THEN
1056 AHL_DEBUG_PUB.disable_debug;
1057 END IF;
1058
1059 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1060 ROLLBACK TO process_rt_oper_panel_PVT;
1061 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1062 FND_MSG_PUB.count_and_get
1063 (
1064 p_encoded => FND_API.G_FALSE,
1065 p_count => x_msg_count,
1066 p_data => x_msg_data
1067 );
1068
1069 -- Disable debug (if enabled)
1070 IF G_DEBUG = 'Y' THEN
1071 AHL_DEBUG_PUB.disable_debug;
1072 END IF;
1073
1074 WHEN OTHERS THEN
1075 ROLLBACK TO process_rt_oper_panel_PVT;
1076 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1077 IF FND_MSG_PUB.check_msg_level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
1078 THEN
1079 FND_MSG_PUB.add_exc_msg
1080 (
1081 p_pkg_name => G_PKG_NAME,
1082 p_procedure_name => G_API_NAME1,
1083 p_error_text => SUBSTRB(SQLERRM,1,240)
1084 );
1085 END IF;
1086 FND_MSG_PUB.count_and_get
1087 (
1088 p_encoded => FND_API.G_FALSE,
1089 p_count => x_msg_count,
1090 p_data => x_msg_data
1091 );
1092
1093 -- Disable debug (if enabled)
1094 IF G_DEBUG = 'Y' THEN
1095 AHL_DEBUG_PUB.disable_debug;
1096 END IF;
1097
1098 END process_rt_oper_panel;
1099
1100 END AHL_RM_RT_OPER_PANEL_PVT;