[Home] [Help]
PACKAGE BODY: APPS.GMD_OPERATIONS_PVT
Source
1 PACKAGE BODY GMD_OPERATIONS_PVT AS
2 /* $Header: GMDVOPSB.pls 120.0 2005/05/25 19:47:44 appldev noship $
3 ********************************************************************
4 * *
5 * Package GMD_OPERATIONS_PVT *
6 * *
7 * Contents: INSERT_OPERATION *
8 * UPDATE_OPERATION *
9 * *
10 * Use This is the private layer of the GMD Operations API *
11 * *
12 * *
13 * History *
14 * Written by Sandra Dulyk, OPM Development *
15 * 25-NOV-2002 Thomas Daniel Bug# 2679110 *
16 * Added more validations and fixed the update proc *
17 * 20-FEB-2004 NSRIVAST Bug# 3222090,Removed call to *
18 * FND_PROFILE.VALUE('AFLOG_ENABLED') *
19 ********************************************************************
20 */
21
22 --Bug 3222090, NSRIVAST 20-FEB-2004, BEGIN
23 --Forward declaration.
24 FUNCTION set_debug_flag RETURN VARCHAR2;
25 l_debug VARCHAR2(1) := set_debug_flag;
26
27 FUNCTION set_debug_flag RETURN VARCHAR2 IS
28 l_debug VARCHAR2(1):= 'N';
29 BEGIN
30 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
31 l_debug := 'Y';
32 END IF;
33 RETURN l_debug;
34 END set_debug_flag;
35 --Bug 3222090, NSRIVAST 20-FEB-2004, END
36
37 /*======================================================
38 Procedure
39 insert_operation
40 Description
41 This particular procedure is used to insert an operation
42 Parameters
43 ================================================ */
44 PROCEDURE insert_operation
45 ( p_api_version IN NUMBER
46 , p_init_msg_list IN BOOLEAN
47 , p_commit IN BOOLEAN
48 , p_operations IN gmd_operations%ROWTYPE
49 , x_message_count OUT NOCOPY NUMBER
50 , x_message_list OUT NOCOPY VARCHAR2
51 , x_return_status OUT NOCOPY VARCHAR2) IS
52
53 l_rowid VARCHAR2(30);
54 setup_failure EXCEPTION;
55 BEGIN
56 IF (l_debug = 'Y') THEN
57 gmd_debug.put_line(' In insert_operation private');
58 END IF;
59
60 /* Initially let us assign the return status to success */
61 x_return_status := FND_API.g_ret_sts_success;
62
63 /* Set row who columns */
64 IF NOT gmd_api_grp.setup_done THEN
65 gmd_api_grp.setup_done := gmd_api_grp.setup;
66 END IF;
67 IF NOT gmd_api_grp.setup_done THEN
68 RAISE setup_failure;
69 END IF;
70
71 GMD_OPERATIONS_PKG.INSERT_ROW(
72 X_ROWID => l_rowid ,
73 X_OPRN_ID => p_operations.oprn_id,
74 X_ATTRIBUTE30 => p_operations.ATTRIBUTE30,
75 X_ATTRIBUTE_CATEGORY => p_operations.ATTRIBUTE_CATEGORY,
76 X_ATTRIBUTE25 => p_operations.ATTRIBUTE25,
77 X_ATTRIBUTE26 => p_operations.ATTRIBUTE26,
78 X_ATTRIBUTE27 => p_operations.ATTRIBUTE27,
79 X_ATTRIBUTE28 => p_operations.ATTRIBUTE28,
80 X_ATTRIBUTE29 => p_operations.ATTRIBUTE29,
81 X_ATTRIBUTE22 => p_operations.ATTRIBUTE22,
82 X_ATTRIBUTE23 => p_operations.ATTRIBUTE23,
83 X_ATTRIBUTE24 => p_operations.ATTRIBUTE24,
84 X_OPRN_NO => p_operations.OPRN_NO,
85 X_OPRN_VERS => p_operations.OPRN_VERS,
86 X_PROCESS_QTY_UOM => p_operations.PROCESS_QTY_UOM,
87 X_MINIMUM_TRANSFER_QTY => p_operations.MINIMUM_TRANSFER_QTY,
88 X_OPRN_CLASS => p_operations.OPRN_CLASS,
89 X_INACTIVE_IND => 0,
90 X_EFFECTIVE_START_DATE => p_operations.EFFECTIVE_START_DATE,
91 X_EFFECTIVE_END_DATE => p_operations.EFFECTIVE_END_DATE,
92 X_DELETE_MARK => 0,
93 X_TEXT_CODE => p_operations.TEXT_CODE,
94 X_ATTRIBUTE1 => p_operations.ATTRIBUTE1,
95 X_ATTRIBUTE2 => p_operations.ATTRIBUTE2,
96 X_ATTRIBUTE3 => p_operations.ATTRIBUTE3,
97 X_ATTRIBUTE4 => p_operations.ATTRIBUTE4,
98 X_ATTRIBUTE5 => p_operations.ATTRIBUTE5,
99 X_ATTRIBUTE6 => p_operations.ATTRIBUTE6,
100 X_ATTRIBUTE7 => p_operations.ATTRIBUTE7,
101 X_ATTRIBUTE8 => p_operations.ATTRIBUTE8,
102 X_ATTRIBUTE9 => p_operations.ATTRIBUTE9,
103 X_ATTRIBUTE10 => p_operations.ATTRIBUTE10,
104 X_ATTRIBUTE11 => p_operations.ATTRIBUTE11,
105 X_ATTRIBUTE12 => p_operations.ATTRIBUTE12,
106 X_ATTRIBUTE13 => p_operations.ATTRIBUTE13,
107 X_ATTRIBUTE14 => p_operations.ATTRIBUTE14,
108 X_ATTRIBUTE15 => p_operations.ATTRIBUTE15,
109 X_ATTRIBUTE16 => p_operations.ATTRIBUTE16,
110 X_ATTRIBUTE17 => p_operations.ATTRIBUTE17,
111 X_ATTRIBUTE18 => p_operations.ATTRIBUTE18,
112 X_ATTRIBUTE19 => p_operations.ATTRIBUTE19,
113 X_ATTRIBUTE20 => p_operations.ATTRIBUTE20,
114 X_ATTRIBUTE21 => p_operations.ATTRIBUTE21,
115 X_OPERATION_STATUS => 100,
116 X_OWNER_ORGANIZATION_ID => p_operations.OWNER_ORGANIZATION_ID,
117 X_OPRN_DESC => p_operations.OPRN_DESC,
118 X_CREATION_DATE => sysdate,
119 X_CREATED_BY => gmd_api_grp.user_id,
120 X_LAST_UPDATE_DATE => sysdate,
121 X_LAST_UPDATED_BY => gmd_api_grp.user_id,
122 X_LAST_UPDATE_LOGIN => gmd_api_grp.login_id);
123
124 IF (l_debug = 'Y') THEN
125 gmd_debug.put_line('END of Insert_operation private');
126 END IF;
127
128 EXCEPTION
129 WHEN setup_failure THEN
130 x_return_status := FND_API.G_RET_STS_ERROR;
131 WHEN OTHERS THEN
132 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
133 FND_MESSAGE.SET_NAME('GMD', 'GMD_UNEXPECTED_ERROR');
134 FND_MESSAGE.SET_TOKEN('ERROR', sqlerrm);
135 FND_MSG_PUB.ADD;
136 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
137 P_data => x_message_list);
138 END Insert_Operation;
139
140
141 /*===========================================================================================
142 Procedure
143 update_operation
144 Description
145 This particular procedure is used to update an operation
146 Parameters
147
148 ================================================ */
149 PROCEDURE update_operation
150 ( p_api_version IN NUMBER
151 , p_init_msg_list IN BOOLEAN
152 , p_commit IN BOOLEAN
153 , p_oprn_id IN gmd_operations.oprn_id%TYPE
154 , p_update_table IN gmd_operations_pub.update_tbl_type
155 , x_message_count OUT NOCOPY NUMBER
156 , x_message_list OUT NOCOPY VARCHAR2
157 , x_return_status OUT NOCOPY VARCHAR2) IS
158
159 CURSOR get_oprn_detail (v_oprn_id NUMBER) IS
160 SELECT *
161 FROM gmd_operations
162 WHERE oprn_Id = p_oprn_id
163 AND delete_mark = 0;
164
165 v_update_rec gmd_operations%ROWTYPE;
166 l_errmsg VARCHAR2(240);
167
168 setup_failure EXCEPTION;
169 inv_operation EXCEPTION;
170
171 l_rt_start_date Date;
172 l_rt_end_date Date;
173
174 CURSOR get_rt_start_end_dates(v_oprn_id NUMBER) IS
175 SELECT min(effective_start_date) effective_start_date,
176 max(NVL(effective_end_date, trunc(SYSDATE + 999999) )) effective_end_date
177 FROM fm_rout_dtl d, gmd_routings_b r
178 WHERE d.oprn_id = v_oprn_id
179 AND r.routing_id = d.routing_id
180 AND r.delete_mark = 0;
181
182 BEGIN
183 IF (l_debug = 'Y') THEN
184 gmd_debug.put_line(' In update_operation private');
185 END IF;
186
187 /* Initially let us assign the return status to success */
188 x_return_status := FND_API.g_ret_sts_success;
189
190 /* Set row who columns */
191 IF NOT gmd_api_grp.setup_done THEN
192 gmd_api_grp.setup_done := gmd_api_grp.setup;
193 END IF;
194 IF NOT gmd_api_grp.setup_done THEN
195 RAISE setup_failure;
196 END IF;
197
198 OPEN get_oprn_detail(p_oprn_id);
199 FETCH get_oprn_detail INTO v_update_rec;
200 IF get_oprn_detail%NOTFOUND THEN
201 gmd_api_grp.log_message ('FM_INVOPRN');
202 RAISE inv_operation;
203 END IF;
204 CLOSE get_oprn_detail;
205
206 FOR i IN 1 .. p_update_table.count LOOP
207 IF UPPER(p_update_table(i).p_col_to_update) = 'PROCESS_QTY_UOM' THEN
208 v_update_rec.PROCESS_QTY_UOM := p_update_table(i).p_value;
209 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'MINIMUM_TRANSFER_QTY' THEN
210 v_update_rec.minimum_transfer_qty := p_update_table(i).p_value;
211 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'OPRN_CLASS' THEN
212 v_update_rec.oprn_class := p_update_table(i).p_value;
213 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'OPRN_DESC' THEN
214 v_update_rec.oprn_desc := p_update_table(i).p_value;
215 ELSIF UPPER(p_update_table(i).p_col_to_update) like '%START_DATE%' THEN
216 IF (l_debug = 'Y') THEN
217 gmd_debug.put_line('The eff_start_date for operation prior to update = '||
218 p_update_table(i).p_value);
219 END IF;
220 v_update_rec.effective_start_date
221 := FND_DATE.canonical_to_date(p_update_table(i).p_value);
222 ELSIF UPPER(p_update_table(i).p_col_to_update) like '%END_DATE%' THEN
223 IF (l_debug = 'Y') THEN
224 gmd_debug.put_line('The eff_end_date for operation prior to update = '||
225 p_update_table(i).p_value) ;
226 END IF;
227 v_update_rec.effective_end_date
228 := FND_DATE.canonical_to_date(p_update_table(i).p_value);
229 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'OWNER_ORGANIZATION_ID' THEN
230 v_update_rec.owner_organization_id := p_update_table(i).p_value;
231 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'DELETE_MARK' THEN
232 v_update_rec.delete_mark := p_update_table(i).p_value;
233 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE1' THEN
234 v_update_rec.attribute1 := p_update_table(i).p_value;
235 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE2' THEN
236 v_update_rec.attribute2 := p_update_table(i).p_value;
237 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE3' THEN
238 v_update_rec.attribute3 := p_update_table(i).p_value;
239 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE4' THEN
240 v_update_rec.attribute4 := p_update_table(i).p_value;
241 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE5' THEN
242 v_update_rec.attribute5 := p_update_table(i).p_value;
243 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE6' THEN
244 v_update_rec.attribute6 := p_update_table(i).p_value;
245 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE7' THEN
246 v_update_rec.attribute7 := p_update_table(i).p_value;
247 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE8' THEN
248 v_update_rec.attribute8 := p_update_table(i).p_value;
249 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE9' THEN
250 v_update_rec.attribute9 := p_update_table(i).p_value;
251 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE10' THEN
252 v_update_rec.attribute10 := p_update_table(i).p_value;
253 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE11' THEN
254 v_update_rec.attribute11 := p_update_table(i).p_value;
255 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE12' THEN
256 v_update_rec.attribute12 := p_update_table(i).p_value;
257 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE13' THEN
258 v_update_rec.attribute13 := p_update_table(i).p_value;
259 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE14' THEN
260 v_update_rec.attribute14 := p_update_table(i).p_value;
261 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE15' THEN
262 v_update_rec.attribute15 := p_update_table(i).p_value;
263 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE16' THEN
264 v_update_rec.attribute16 := p_update_table(i).p_value;
265 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE17' THEN
266 v_update_rec.attribute17 := p_update_table(i).p_value;
267 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE18' THEN
268 v_update_rec.attribute18 := p_update_table(i).p_value;
269 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE19' THEN
270 v_update_rec.attribute19 := p_update_table(i).p_value;
271 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE20' THEN
272 v_update_rec.attribute20 := p_update_table(i).p_value;
273 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE21' THEN
274 v_update_rec.attribute21 := p_update_table(i).p_value;
275 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE22' THEN
276 v_update_rec.attribute22 := p_update_table(i).p_value;
277 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE23' THEN
278 v_update_rec.attribute23 := p_update_table(i).p_value;
279 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE24' THEN
280 v_update_rec.attribute24 := p_update_table(i).p_value;
281 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE25' THEN
282 v_update_rec.attribute25 := p_update_table(i).p_value;
283 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE26' THEN
284 v_update_rec.attribute26 := p_update_table(i).p_value;
285 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE27' THEN
286 v_update_rec.attribute27 := p_update_table(i).p_value;
287 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE28' THEN
288 v_update_rec.attribute28 := p_update_table(i).p_value;
289 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE29' THEN
290 v_update_rec.attribute29 := p_update_table(i).p_value;
291 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE30' THEN
292 v_update_rec.attribute30 := p_update_table(i).p_value;
293 ELSIF UPPER(p_update_table(i).p_col_to_update) = 'ATTRIBUTE_CATEGORY' THEN
294 v_update_rec.attribute_category := p_update_table(i).p_value;
295 END IF;
296
297 -- Compare Oprn start dtae with Routing Start Dtae
298 If (l_debug = 'Y') THEN
299 gmd_debug.put_line('The oprn id = '||v_update_rec.oprn_id);
300 END IF;
301
302 IF UPPER(p_update_table(i).p_col_to_update) like '%START_DATE%' THEN
303 OPEN get_rt_start_end_dates(v_update_rec.oprn_id);
304 FETCH get_rt_start_end_dates INTO l_rt_start_date, l_rt_end_date;
305
306 IF (l_rt_end_date = trunc(SYSDATE + 999999) ) THEN
307 l_rt_end_date := Null;
308 END IF;
309
310 IF l_rt_start_date IS NOT NULL THEN
311 IF (l_debug = 'Y') THEN
312 gmd_debug.put_line('In OPeration Pvt - Comparing OPrn start date '||
313 ' with routing start date '||
314 'Operation start and Rout Start date = '||
315 v_update_rec.effective_start_date||' - '||l_rt_start_date);
316
317 END IF;
318
319 IF (l_rt_start_date < v_update_rec.effective_start_date) THEN
320 FND_MESSAGE.SET_NAME('GMD', 'GMD_ROUTING_FROM_DATE');
321 FND_MESSAGE.set_token('OPRN_NO',v_update_rec.oprn_no);
322 FND_MESSAGE.set_token('VERSION_NO',v_update_rec.oprn_vers);
323 FND_MESSAGE.set_token('OPRN_DATE',p_update_table(i).p_value);
324 FND_MSG_PUB.ADD;
325 RAISE inv_operation;
326 END IF;
327 END IF;
328 CLOSE get_rt_start_end_dates;
329 END IF; -- comparing start dates
330
331 -- Compare Oprn end dtae with Routing end Dtae
332 IF UPPER(p_update_table(i).p_col_to_update) like '%END_DATE%' THEN
333 OPEN get_rt_start_end_dates(v_update_rec.oprn_id);
334 FETCH get_rt_start_end_dates INTO l_rt_start_date, l_rt_end_date;
335
336 IF (l_rt_end_date = trunc(SYSDATE + 999999) ) THEN
337 l_rt_end_date := Null;
338 END IF;
339
340 IF l_rt_start_date IS NOT NULL THEN
341 IF (l_debug = 'Y') THEN
342 gmd_debug.put_line('In OPeration Pvt - Comparing Oprn end date '||
343 ' with routing end date '||
344 'Oprn end date and Rout end date = '||
345 v_update_rec.effective_end_date||' - '||l_rt_end_date);
346
347 END IF;
348
349 IF ((l_rt_end_date IS NULL) AND
350 (v_update_rec.effective_end_date IS NOT NULL)) THEN
351 FND_MESSAGE.SET_NAME('GMD', 'GMD_OPER_EFF_END_DATE');
352 FND_MSG_PUB.ADD;
353 RAISE inv_operation;
354 END IF;
355
356 IF (l_rt_end_date > v_update_rec.effective_end_date) THEN
357 FND_MESSAGE.SET_NAME('GMD', 'GMD_OPER_EFF_END_DATE');
358 FND_MSG_PUB.ADD;
359 RAISE inv_operation;
360 END IF;
361 END IF;
362
363 CLOSE get_rt_start_end_dates;
364 END IF; -- comparing end dates
365 END LOOP;
366
367 -- Comparind Start and End dates of an operation.
368 IF v_update_rec.effective_end_date IS NOT NULL THEN
369 /* Effective end date must be greater than start date, otherwise give error */
370 IF v_update_rec.effective_start_date > v_update_rec.effective_end_date THEN
371 IF (l_debug = 'Y') THEN
372 gmd_debug.put_line('effective start date must be less then end date');
373 END IF;
374 FND_MESSAGE.SET_NAME('GMD', 'QC_MIN_MAX_DATE');
375 FND_MSG_PUB.ADD;
376 RAISE inv_operation;
377 END IF;
378 END IF;
379
380
381 IF x_return_status = 'S' THEN
382 GMD_OPERATIONS_PKG.UPDATE_ROW(
383 X_OPRN_ID => v_update_rec.oprn_id,
384 X_ATTRIBUTE30 => v_update_rec.ATTRIBUTE30,
385 X_ATTRIBUTE_CATEGORY => v_update_rec.ATTRIBUTE_CATEGORY,
386 X_ATTRIBUTE25 => v_update_rec.ATTRIBUTE25,
387 X_ATTRIBUTE26 => v_update_rec.ATTRIBUTE26,
388 X_ATTRIBUTE27 => v_update_rec.ATTRIBUTE27,
389 X_ATTRIBUTE28 => v_update_rec.ATTRIBUTE28,
390 X_ATTRIBUTE29 => v_update_rec.ATTRIBUTE29,
391 X_ATTRIBUTE22 => v_update_rec.ATTRIBUTE22,
392 X_ATTRIBUTE23 => v_update_rec.ATTRIBUTE23,
393 X_ATTRIBUTE24 => v_update_rec.ATTRIBUTE24,
394 X_OPRN_NO => v_update_rec.OPRN_NO,
395 X_OPRN_VERS => v_update_rec.OPRN_VERS,
396 X_PROCESS_QTY_UOM => v_update_rec.PROCESS_QTY_UOM,
397 X_MINIMUM_TRANSFER_QTY => v_update_rec.MINIMUM_TRANSFER_QTY,
398 X_OPRN_CLASS => v_update_rec.OPRN_CLASS,
399 X_INACTIVE_IND => v_update_rec.inactive_ind,
400 X_EFFECTIVE_START_DATE => v_update_rec.EFFECTIVE_START_DATE,
401 X_EFFECTIVE_END_DATE => v_update_rec.EFFECTIVE_END_DATE,
402 X_DELETE_MARK => v_update_rec.delete_mark,
403 X_TEXT_CODE => v_update_rec.TEXT_CODE,
404 X_ATTRIBUTE1 => v_update_rec.ATTRIBUTE1,
405 X_ATTRIBUTE2 => v_update_rec.ATTRIBUTE2,
406 X_ATTRIBUTE3 => v_update_rec.ATTRIBUTE3,
407 X_ATTRIBUTE4 => v_update_rec.ATTRIBUTE4,
408 X_ATTRIBUTE5 => v_update_rec.ATTRIBUTE5,
409 X_ATTRIBUTE6 => v_update_rec.ATTRIBUTE6,
410 X_ATTRIBUTE7 => v_update_rec.ATTRIBUTE7,
411 X_ATTRIBUTE8 => v_update_rec.ATTRIBUTE8,
412 X_ATTRIBUTE9 => v_update_rec.ATTRIBUTE9,
413 X_ATTRIBUTE10 => v_update_rec.ATTRIBUTE10,
414 X_ATTRIBUTE11 => v_update_rec.ATTRIBUTE11,
415 X_ATTRIBUTE12 => v_update_rec.ATTRIBUTE12,
416 X_ATTRIBUTE13 => v_update_rec.ATTRIBUTE13,
417 X_ATTRIBUTE14 => v_update_rec.ATTRIBUTE14,
418 X_ATTRIBUTE15 => v_update_rec.ATTRIBUTE15,
419 X_ATTRIBUTE16 => v_update_rec.ATTRIBUTE16,
420 X_ATTRIBUTE17 => v_update_rec.ATTRIBUTE17,
421 X_ATTRIBUTE18 => v_update_rec.ATTRIBUTE18,
422 X_ATTRIBUTE19 => v_update_rec.ATTRIBUTE19,
423 X_ATTRIBUTE20 => v_update_rec.ATTRIBUTE20,
424 X_ATTRIBUTE21 => v_update_rec.ATTRIBUTE21,
425 X_OPERATION_STATUS => v_update_rec.operation_status,
426 X_OWNER_ORGANIZATION_ID => v_update_rec.OWNER_ORGANIZATION_ID,
427 X_OPRN_DESC => v_update_rec.OPRN_DESC,
428 X_LAST_UPDATE_DATE => sysdate,
429 X_LAST_UPDATED_BY => gmd_api_grp.user_id,
430 X_LAST_UPDATE_LOGIN => gmd_api_grp.login_id);
431
432 END IF;
433 EXCEPTION
434 WHEN setup_failure OR inv_operation THEN
435 x_return_status := FND_API.G_RET_STS_ERROR;
436 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
437 P_data => x_message_list);
438 WHEN OTHERS THEN
439 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
440 FND_MESSAGE.SET_NAME('GMD', 'GMD_UNEXPECTED_ERROR');
441 FND_MESSAGE.SET_TOKEN('ERROR', sqlerrm);
442 FND_MSG_PUB.ADD;
443 FND_MSG_PUB.COUNT_AND_GET (P_count => x_message_count,
444 P_data => x_message_list);
445
446 END update_operation;
447
448 END GMD_OPERATIONS_PVT;