1 PACKAGE BODY GMD_OPERATION_ACTIVITIES_PUB AS
2 /* $Header: GMDPOPAB.pls 120.0 2005/05/25 19:17:14 appldev noship $
3 +=========================================================================+
4 | FILENAME |
5 | GMDPOPAB.pls |
6 | |
7 | DESCRIPTION |
8 | This package contains public definitions for |
9 | creating, modifying, deleting operation activities |
10 | |
11 | HISTORY |
12 | 21-AUG-2002 Sandra Dulyk Created |
13 | 20-FEB-2004 NSRIVAST Bug# 3222090 |
14 | Removed call to FND_PROFILE.VALUE('AFLOG_ENABLED')|
15 +=========================================================================+
16 API Name : GMD_OPERATION_ACTIVITIES_PUB
17 Type : Public
18 Function : This package contains public procedures used to create, modify, and delete operation activties
19 Pre-reqs : N/A
20 Parameters: Per function
21
22 Current Vers : 1.0
23
24 Previous Vers : 1.0
25
26 Initial Vers : 1.0
27 Notes
28 */
29
30 --Bug 3222090, NSRIVAST 20-FEB-2004, BEGIN
31 --Forward declaration.
32 FUNCTION set_debug_flag RETURN VARCHAR2;
33 l_debug VARCHAR2(1) := set_debug_flag;
34
35 FUNCTION set_debug_flag RETURN VARCHAR2 IS
36 l_debug VARCHAR2(1):= 'N';
37 BEGIN
38 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
39 l_debug := 'Y';
40 END IF;
41 RETURN l_debug;
42 END set_debug_flag;
43 --Bug 3222090, NSRIVAST 20-FEB-2004, END
44
45 /*==============================================
46 Procedure
47 insert_operation_activity
48 Description
49 This particular procedure is used to insert an
50 operation activity Parameters
51 ================================================ */
52 PROCEDURE insert_operation_activity
53 ( p_api_version IN NUMBER
54 , p_init_msg_list IN BOOLEAN
55 , p_commit IN BOOLEAN
56 , p_oprn_no IN gmd_operations.oprn_no%TYPE
57 , p_oprn_vers IN gmd_operations.oprn_vers%TYPE
58 , p_oprn_activity IN OUT NOCOPY gmd_operation_activities%ROWTYPE
59 , p_oprn_rsrc_tbl IN gmd_operation_resources_pub.gmd_oprn_resources_tbl_type
60 , x_message_count OUT NOCOPY NUMBER
61 , x_message_list OUT NOCOPY VARCHAR2
62 , x_return_status OUT NOCOPY VARCHAR2) IS
63
64 v_activity gmd_operation_activities.activity%TYPE;
65 v_oprn_line_Id gmd_operation_activities.oprn_line_id%TYPE;
66 v_oprn_id gmd_operation_activities.oprn_id%TYPE;
67 v_count NUMBER;
68
69 l_retn_status VARCHAR2(1);
70 l_api_version NUMBER := 1.0;
71
72 setup_failure EXCEPTION;
73 invalid_version EXCEPTION;
74 ins_oprn_actv_err EXCEPTION;
75
76 CURSOR check_oprn_id (p_oprn_id gmd_operations.oprn_id%TYPE)IS
77 SELECT 1
78 FROM gmd_operations_b
79 WHERE oprn_id = p_oprn_id
80 AND delete_mark = 0;
81
82 CURSOR check_oprn_no_vers(p_oprn_no gmd_operations.oprn_no%TYPE
83 , p_oprn_vers gmd_operations.oprn_vers%TYPE ) IS
84 SELECT oprn_id
85 FROM gmd_operations_b
86 WHERE oprn_No = p_oprn_no
87 AND oprn_vers = p_oprn_vers
88 and delete_Mark = 0;
89
90 CURSOR check_activity(v_activity gmd_operation_activities.activity%TYPE) IS
91 SELECT 1
92 FROM gmd_activities
93 WHERE activity = v_activity
94 and delete_mark = 0;
95
96 CURSOR Cur_gen_oprnline_id IS
97 SELECT GEM5_OPRNLINE_ID_S.NEXTVAL
98 FROM FND_DUAL;
99
100 BEGIN
101 SAVEPOINT insert_oprn_actv;
102
103 /* Initialize message list and count if needed */
104 IF p_init_msg_list THEN
105 fnd_msg_pub.initialize;
106 END IF;
107
108 IF (l_debug = 'Y') THEN
109 gmd_debug.put_line('In insert_operation_activity public.');
110 END IF;
111
112 /* Initially let us assign the return status to success */
113 x_return_status := FND_API.g_ret_sts_success;
114
115 IF NOT gmd_api_grp.setup_done THEN
116 gmd_api_grp.setup_done := gmd_api_grp.setup;
117 END IF;
118 IF NOT gmd_api_grp.setup_done THEN
119 RAISE setup_failure;
120 END IF;
121
122 /* Make sure we are call compatible */
123 IF NOT FND_API.compatible_api_call(l_api_version
124 ,p_api_version
125 ,'insert_operation_activity'
126 ,'gmd_operation_activities_pub') THEN
127 RAISE invalid_version;
128 END IF;
129
130 /* Operation number ID must be passed, otherwise give error, also check operation exists */
131 IF (p_oprn_activity.oprn_id IS NULL) THEN
132 IF ((p_oprn_no IS NULL) OR (p_oprn_vers IS NULL)) THEN
133 FND_MESSAGE.SET_NAME ('GMI', 'GMI_MISSING');
134 FND_MESSAGE.SET_TOKEN ('MISSING', 'OPRN_NO');
135 FND_MSG_PUB.ADD;
136 ELSE
137 OPEN check_oprn_no_vers(p_oprn_no, p_oprn_vers);
138 FETCH check_oprn_no_vers INTO v_oprn_id;
139 IF check_oprn_no_vers%NOTFOUND THEN
140 /* must pass existing operation no and vers */
141 FND_MESSAGE.SET_NAME('GMD','FM_INVOPRN');
142 FND_MSG_PUB.ADD;
143 RAISE ins_oprn_actv_err;
144 END IF;
145 CLOSE check_oprn_no_vers;
146 END IF;
147 ELSE
148 v_oprn_id := p_oprn_activity.oprn_id;
149 END IF;
150
151 /* Operation Security Validation */
152 /* Validation: Check if this users performing update has access to this
153 operation owner orgn code */
154 IF NOT GMD_API_GRP.Check_orgn_access(Entity => 'OPERATION'
155 ,Entity_id => v_oprn_id) THEN
156 RAISE ins_oprn_actv_err;
157 END IF;
158
159 /* Activity must be passed, otherwise give error */
160 IF p_oprn_activity.activity IS NULL THEN
161 IF (l_debug = 'Y') THEN
162 gmd_debug.put_line('operation activity required');
163 END IF;
164
165 FND_MESSAGE.SET_NAME ('GMI', 'GMI_MISSING');
166 FND_MESSAGE.SET_TOKEN ('MISSING', 'ACTIVITY');
167 FND_MSG_PUB.ADD;
168 RAISE ins_oprn_actv_err;
169 ELSE
170 v_activity := p_oprn_activity.activity;
171 OPEN check_activity(v_activity);
172 FETCH check_activity INTO v_count;
173 IF check_activity%NOTFOUND THEN
174 /* must pass existing activity */
175 FND_MESSAGE.SET_NAME('GMD','FM_INVACTIVITY');
176 FND_MSG_PUB.ADD;
177 RAISE ins_oprn_actv_err;
178 END IF;
179 CLOSE check_activity;
180 END IF;
181
182 /* check activity factor has a value else default */
183 IF p_oprn_activity.activity_factor IS NULL THEN
184 p_oprn_activity.activity_factor := 1;
185 ELSIF p_oprn_activity.activity_factor < 0 THEN
186 gmd_api_grp.log_message ('GMD_NEGATIVE_FIELDS',
187 'FIELD', 'ACTIVITY_FACTOR');
188 RAISE ins_oprn_actv_err;
189 END IF;
190
191 /* check offset interval has a value else default */
192 IF p_oprn_activity.offset_interval IS NULL THEN
193 p_oprn_activity.offset_interval := 0;
194 ELSIF p_oprn_activity.offset_interval < 0 THEN
195 gmd_api_grp.log_message ('GMD_NEGATIVE_FIELDS',
196 'FIELD','OFFSET_INTERVAL');
197 RAISE ins_oprn_actv_err;
198 END IF;
199
200 /* check sequence_dependent_ind has a value else default */
201 IF p_oprn_activity.sequence_dependent_ind IS NULL THEN
202 p_oprn_activity.sequence_dependent_ind := 0;
203 ELSIF p_oprn_activity.sequence_dependent_ind NOT IN (1,0) THEN
204 FND_MESSAGE.SET_NAME('GMD','GMD_INVALID_SEQ_DEP_IND');
205 FND_MSG_PUB.ADD;
206 RAISE ins_oprn_actv_err;
207 END IF;
208
209 /* generate oprnline_id */
210 OPEN Cur_gen_oprnline_id;
211 FETCH Cur_gen_oprnline_id INTO p_oprn_activity.oprn_line_id;
212 CLOSE Cur_gen_oprnline_id;
213
214 IF x_return_status = 'S' THEN
215 IF (l_debug = 'Y') THEN
216 gmd_debug.put_line('before PVT insert_oprn_activity routine called');
217 END IF;
218
219 /* call insert operation activity routine using oprn_id */
220 GMD_OPERATION_ACTIVITIES_PVT.insert_operation_activity(
221 p_oprn_id => v_oprn_id,
222 p_oprn_activity => p_oprn_activity,
223 x_message_count => x_message_count,
224 x_message_list => x_message_list,
225 x_return_status => l_retn_status);
226
227 IF l_retn_status <> FND_API.g_ret_sts_success THEN
228 RAISE ins_oprn_actv_err;
229 END IF;
230
231 IF p_oprn_rsrc_tbl.count > 0 THEN
232 /* call insert operation resources */
233 GMD_OPERATION_RESOURCES_PUB.insert_operation_resources(
234 p_init_msg_list => FALSE,
235 p_oprn_line_id => p_oprn_activity.oprn_line_id,
236 p_oprn_rsrc_tbl => p_oprn_rsrc_tbl,
237 x_message_count => x_message_count,
238 x_message_list => x_message_list,
239 x_return_status => l_retn_status);
240 IF l_retn_status <> FND_API.g_ret_sts_success THEN
241 RAISE ins_oprn_actv_err;
242 END IF;
243 END IF;
244
245 IF p_commit THEN
246 COMMIT;
247 END IF;
248 END IF;
249
250 FND_MSG_PUB.count_and_get(p_count => x_message_count
251 ,p_data => x_message_list);
252 EXCEPTION
253 WHEN setup_failure OR invalid_version THEN
254 ROLLBACK TO SAVEPOINT insert_oprn_actv;
255 x_return_status := FND_API.G_RET_STS_ERROR;
256 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
257 P_data => x_message_list);
258 WHEN ins_oprn_actv_err THEN
259 ROLLBACK TO SAVEPOINT insert_oprn_actv;
260 x_return_status := FND_API.G_RET_STS_ERROR;
261 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
262 P_data => x_message_list);
263 WHEN OTHERS THEN
264 ROLLBACK TO SAVEPOINT insert_oprn_actv;
265 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
266 FND_MESSAGE.SET_NAME('GMD', 'GMD_UNEXPECTED_ERROR');
267 FND_MESSAGE.SET_TOKEN('ERROR', sqlerrm);
268 FND_MSG_PUB.ADD;
269 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
270 P_data => x_message_list);
271 END insert_operation_activity;
272
273 /*===============================================
274 Procedure
275 update_operation_activity
276 Description
277 This particular procedure is used to update
278 an operation activity Parameters
279 ================================================ */
280 PROCEDURE update_operation_activity
281 ( p_api_version IN NUMBER
282 , p_init_msg_list IN BOOLEAN
283 , p_commit IN BOOLEAN
284 , p_oprn_line_id IN gmd_operation_activities.oprn_line_id%TYPE
285 , p_update_table IN gmd_operation_activities_pub.update_tbl_type
286 , x_message_count OUT NOCOPY NUMBER
287 , x_message_list OUT NOCOPY VARCHAR2
288 , x_return_status OUT NOCOPY VARCHAR2) IS
289
290 v_oprn_id gmd_operations.oprn_id%TYPE;
291 l_retn_status VARCHAR2(1);
292 l_api_version NUMBER := 1.0;
293
294 invalid_version EXCEPTION;
295 setup_failure EXCEPTION;
296 upd_oprn_actv_err EXCEPTION;
297
298 CURSOR get_oprn_id(p_oprN_line_id gmd_operation_activities.oprn_line_id%TYPE) IS
299 SELECT oprn_id
300 FROM gmd_operation_activities
301 WHERE oprn_line_id = p_oprn_line_id
302 AND delete_mark = 0;
303
304 BEGIN
305 SAVEPOINT upd_oprn_actv;
306
307 /* Initialize message list and count if needed */
308 IF p_init_msg_list THEN
309 fnd_msg_pub.initialize;
310 END IF;
311
312 /* Initially let us assign the return status to success */
313 x_return_status := FND_API.g_ret_sts_success;
314
315 IF NOT gmd_api_grp.setup_done THEN
316 gmd_api_grp.setup_done := gmd_api_grp.setup;
317 END IF;
318 IF NOT gmd_api_grp.setup_done THEN
319 RAISE setup_failure;
320 END IF;
321
322 /* Make sure we are call compatible */
323 IF NOT FND_API.compatible_api_call(l_api_version
324 ,p_api_version
325 ,'update_operation_activity'
326 ,'gmd_operation_activities_pub') THEN
327 RAISE invalid_version;
328 END IF;
329
330 IF (l_debug = 'Y') THEN
331 gmd_debug.put_line('Start of update_operation_activity PUB');
332 END IF;
333
334 /* Oprn_line_id must be passed, otherwise give error */
335 IF p_oprn_line_id IS NULL THEN
336 IF (l_debug = 'Y') THEN
337 gmd_debug.put_line('operation line id is required');
338 END IF;
339
340 FND_MESSAGE.SET_NAME ('GMI', 'GMI_MISSING');
341 FND_MESSAGE.SET_TOKEN ('MISSING', 'OPRN_LINE_ID');
342 FND_MSG_PUB.ADD;
343 RAISE upd_oprn_actv_err;
344 END IF;
345
346 /* Loop thru cols to be updated - verify col and value are present */
347 FOR i in 1 .. p_update_table.count LOOP
348 /* Col_to_update and value must be passed, otherwise give error */
349 IF p_update_table(i).p_col_to_update IS NULL THEN
350 IF (l_debug = 'Y') THEN
351 gmd_debug.put_line('col_to_update required');
352 END IF;
353
354 FND_MESSAGE.SET_NAME ('GMI', 'GMI_MISSING');
355 FND_MESSAGE.SET_TOKEN ('MISSING', 'COL_TO_UPDATE');
356 FND_MSG_PUB.ADD;
357 RAISE upd_oprn_actv_err;
358 ELSIF p_update_table(i).p_value IS NULL THEN
359 IF (l_debug = 'Y') THEN
360 gmd_debug.put_line('value required');
361 END IF;
362
363 FND_MESSAGE.SET_NAME ('GMI', 'GMI_MISSING');
364 FND_MESSAGE.SET_TOKEN ('MISSING', 'P_VALUE');
365 FND_MSG_PUB.ADD;
366 RAISE upd_oprn_actv_err;
367 END IF;
368 END LOOP;
369
370 /* Validation : Verify Operation status is not On Hold nor Obsolete/Archived
371 and Operation is not logically deleted */
372 OPEN get_oprn_id(p_oprn_line_id);
373 FETCH get_oprn_id INTO v_oprn_id;
374 IF get_oprn_id%NOTFOUND THEN
375 gmd_api_grp.log_message('GMD_INVALID_OPRNLINE_ID');
376 x_return_status := FND_API.g_ret_sts_error;
377 END IF;
378 CLOSE get_oprn_id;
379
380 /* Operation Security Validation */
381 /* Validation: Check if this users performing update has access to this
382 operation owner orgn code */
383 IF NOT GMD_API_GRP.Check_orgn_access(Entity => 'OPERATION'
384 ,Entity_id => v_oprn_id) THEN
385 RAISE upd_oprn_actv_err;
386 END IF;
387
388 IF NOT GMD_COMMON_VAL.UPDATE_ALLOWED(Entity => 'OPERATION',
389 Entity_id => v_oprn_id ) THEN
390 FND_MESSAGE.SET_NAME('GMD', 'GMD_OPRN_NOT_VALID');
391 FND_MSG_PUB.ADD;
392 RAISE upd_oprn_actv_err;
393 END IF;
394
395 /* delete_mark validation */
396 FOR a IN 1 .. p_update_table.count LOOP
397 /* check activity factor has a value else default */
398 IF (UPPER(p_update_table(a).p_col_to_update) = 'ACTIVITY_FACTOR' AND
399 p_update_table(a).p_value < 0) THEN
400 gmd_api_grp.log_message ('GMD_NEGATIVE_FIELDS',
401 'FIELD', p_update_table(a).p_col_to_update);
402 RAISE upd_oprn_actv_err;
403 /* check offset interval has a value else default */
404 ELSIF (UPPER(p_update_table(a).p_col_to_update) = 'OFFSET_INTERVAL' AND
405 p_update_table(a).p_value < 0) THEN
406 gmd_api_grp.log_message ('GMD_NEGATIVE_FIELDS',
407 'FIELD', p_update_table(a).p_col_to_update);
408 RAISE upd_oprn_actv_err;
409 ELSIF (UPPER(p_update_table(a).p_col_to_update) = 'SEQUENCE_DEPENDENT_IND' AND
410 p_update_table(a).p_value NOT IN (1,0)) THEN
411 FND_MESSAGE.SET_NAME('GMD','GMD_INVALID_SEQ_DEP_IND');
412 FND_MSG_PUB.ADD;
413 RAISE upd_oprn_actv_err;
414 END IF;
415 END LOOP;
416
417 IF x_return_status = 'S' THEN
418 GMD_OPERATION_ACTIVITIES_PVT.update_operation_activity(p_oprn_line_id => p_oprn_line_id
419 , p_update_table => p_update_table
420 , x_message_count => x_message_count
421 , x_message_list => x_message_list
422 , x_return_status => l_retn_status);
423 IF l_retn_status <> FND_API.g_ret_sts_success THEN
424 RAISE upd_oprn_actv_err;
425 END IF;
426
427 IF p_commit THEN
428 COMMIT;
429 END IF;
430
431 END IF;
432
433 FND_MSG_PUB.count_and_get(p_count => x_message_count
434 ,p_data => x_message_list);
435
436 EXCEPTION
437 WHEN setup_failure OR invalid_version THEN
438 ROLLBACK TO SAVEPOINT upd_oprn_actv;
439 x_return_status := FND_API.G_RET_STS_ERROR;
440 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
441 P_data => x_message_list);
442 WHEN upd_oprn_actv_err THEN
443 ROLLBACK TO SAVEPOINT upd_oprn_actv;
444 x_return_status := FND_API.G_RET_STS_ERROR;
445 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
446 P_data => x_message_list);
447
448 WHEN OTHERS THEN
449 ROLLBACK TO SAVEPOINT upd_oprn_actv;
450 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
451 FND_MESSAGE.SET_NAME('GMD', 'GMD_UNEXPECTED_ERROR');
452 FND_MESSAGE.SET_TOKEN('ERROR', sqlerrm);
453 FND_MSG_PUB.ADD;
454 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
455 P_data => x_message_list);
456
457
458 END update_operation_activity;
459
460 /*================================================
461 Procedure
462 delete_operation_activity
463 Description
464 This particular procedure is used to delete an
465 operation activity Parameters
466 ================================================ */
467 PROCEDURE delete_operation_activity
468 ( p_api_version IN NUMBER
469 , p_init_msg_list IN BOOLEAN
470 , p_commit IN BOOLEAN
471 , p_oprn_line_id IN gmd_operation_activities.oprn_line_id%TYPE
472 , x_message_count OUT NOCOPY NUMBER
473 , x_message_list OUT NOCOPY VARCHAR2
474 , x_return_status OUT NOCOPY VARCHAR2) IS
475
476 v_update_table gmd_operation_activities_pub.update_tbl_type;
477 v_count NUMBER;
478 l_retn_status VARCHAR2(1);
479 l_api_version NUMBER := 1.0;
480 l_oprn_id NUMBER(15);
481
482 invalid_version EXCEPTION;
483 setup_failure EXCEPTION;
484 del_oprn_actv_err EXCEPTION;
485
486 CURSOR chk_oprn_line_id(v_oprN_line_id NUMBER) IS
487 SELECT oprn_id
488 FROM gmd_operation_activities
489 WHERE oprn_line_id = v_oprn_line_id;
490
491 CURSOR get_activity_count (v_oprn_id NUMBER) IS
492 SELECT COUNT(1)
493 FROM gmd_operation_activities a
494 WHERE a.oprn_id = v_oprn_id;
495
496 BEGIN
497 SAVEPOINT delete_oprn_actv;
498
499 /* Initialize message list and count if needed */
500 IF p_init_msg_list THEN
501 fnd_msg_pub.initialize;
502 END IF;
503
504 /* Initially let us assign the return status to success */
505 x_return_status := FND_API.g_ret_sts_success;
506
507 IF NOT gmd_api_grp.setup_done THEN
508 gmd_api_grp.setup_done := gmd_api_grp.setup;
509 END IF;
510 IF NOT gmd_api_grp.setup_done THEN
511 RAISE setup_failure;
512 END IF;
513
514
515 /* Make sure we are call compatible */
516 IF NOT FND_API.compatible_api_call(l_api_version
517 ,p_api_version
518 ,'delete_operation_activity'
519 ,'gmd_operation_activities_pvt') THEN
520 RAISE invalid_version;
521 END IF;
522
523 IF (l_debug = 'Y') THEN
524 gmd_debug.put_line('START of delete_operation_activity PUB');
525 END IF;
526
527
528 /* Operation Line ID must be passed, otherwise give error */
529 IF p_oprn_line_id IS NULL THEN
530 IF (l_debug = 'Y') THEN
531 gmd_debug.put_line('Operation Line id is required');
532 END IF;
533
534 FND_MESSAGE.SET_NAME ('GMI', 'GMI_MISSING');
535 FND_MESSAGE.SET_TOKEN ('MISSING', 'OPRN_LINE_ID');
536 FND_MSG_PUB.ADD;
537 RAISE del_oprn_actv_err;
538 ELSE
539 OPEN chk_oprn_line_id(p_oprn_line_id);
540 FETCH chk_oprn_line_Id INTO l_oprn_id;
541 IF chk_oprn_line_ID%NOTFOUND THEN
542 FND_MESSAGE.SET_NAME('GMD','GMD_INVALID_OPRNLINE_ID');
543 FND_MSG_PUB.ADD;
544 RAISE del_oprn_actv_err;
545 ELSE
546 OPEN get_activity_count (l_oprn_id);
547 FETCH get_activity_count INTO v_count;
548 CLOSE get_activity_count;
549 IF v_count = 1 THEN
550 gmd_api_grp.log_message ('GMD_DETAILS_REQUIRED');
551 RAISE del_oprn_actv_err;
552 END IF;
553 END IF;
554 CLOSE chk_oprN_line_id;
555 END IF;
556
557 /* Operation Security Validation */
558 /* Validation: Check if this users performing update has access to this
559 operation owner orgn code */
560 IF NOT GMD_API_GRP.Check_orgn_access(Entity => 'OPERATION'
561 ,Entity_id => l_oprn_id) THEN
562 RAISE del_oprn_actv_err;
563 END IF;
564
565 IF x_return_status = 'S' THEN
566 gmd_operation_activities_pvt.delete_operation_activity
567 (p_oprn_line_id => p_oprn_line_id
568 , x_message_count => x_message_count
569 , x_message_list => x_message_list
570 , x_return_status => l_retn_status);
571 IF l_retn_status <> FND_API.g_ret_sts_success THEN
572 RAISE del_oprn_actv_err;
573 END IF;
574
575 IF p_commit THEN
576 COMMIT;
577 END IF;
578 END IF;
579
580 FND_MSG_PUB.count_and_get(p_count => x_message_count
581 ,p_data => x_message_list);
582
583 EXCEPTION
584 WHEN setup_failure OR invalid_version THEN
585 ROLLBACK TO SAVEPOINT delete_oprn_actv;
586 x_return_status := FND_API.G_RET_STS_ERROR;
587 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
588 P_data => x_message_list);
589 WHEN del_oprn_actv_err THEN
590 ROLLBACK TO SAVEPOINT delete_oprn_actv;
591 x_return_status := FND_API.G_RET_STS_ERROR;
592 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
593 P_data => x_message_list);
594 WHEN OTHERS THEN
595 ROLLBACK TO SAVEPOINT delete_oprn_actv;
596 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
597 FND_MESSAGE.SET_NAME('GMD', 'GMD_UNEXPECTED_ERROR');
598 FND_MESSAGE.SET_TOKEN('ERROR', sqlerrm);
599 FND_MSG_PUB.ADD;
600 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
601 P_data => x_message_list);
602 END delete_operation_activity;
603
604 END GMD_OPERATION_ACTIVITIES_PUB;