DBA Data[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;