1 package body BSC_KPI_GROUP_PUB as
2 /* $Header: BSCPKGPB.pls 120.0 2005/06/01 15:25:33 appldev noship $ */
3
4 G_PKG_NAME CONSTANT varchar2(30) := 'BSC_KPI_GROUP_PUB';
5
6
7 --New procedure with OUT parameter
8 procedure Create_Kpi_Group(
9 p_commit IN varchar2 := FND_API.G_FALSE
10 ,p_Bsc_Kpi_Group_Rec IN BSC_KPI_GROUP_PUB.Bsc_Kpi_Group_Rec
11 ,x_Bsc_Kpi_Group_Rec OUT NOCOPY BSC_KPI_GROUP_PUB.Bsc_Kpi_Group_Rec
12 ,x_return_status OUT NOCOPY varchar2
13 ,x_msg_count OUT NOCOPY number
14 ,x_msg_data OUT NOCOPY varchar2
15 ) is
16
17 l_Bsc_Kpi_Group_Rec BSC_KPI_GROUP_PUB.Bsc_Kpi_Group_Rec;
18
19 begin
20 FND_MSG_PUB.Initialize;
21 x_return_status := FND_API.G_RET_STS_SUCCESS;
22 SAVEPOINT BSCCreateKPIGROUP;
23 -- Assign all values in the passed "Record" parameter to the locally defined
24 -- "Record" variable.
25 l_Bsc_Kpi_Group_Rec := p_Bsc_Kpi_Group_Rec;
26
27 -- The action of assigning a KPI Group to a tab creates a new record (row) therefore
28 -- we need to insert a new record. But before we need to know whether this record is really
29 -- a new Group, or just a new assignment. If Tab Id is -1 or null then it is a new Kpi Group.
30 if l_Bsc_Kpi_Group_Rec.Bsc_Tab_Id is null or l_Bsc_Kpi_Group_Rec.Bsc_Tab_Id = -1 then
31
32 -- Check that this Kpi Group name does not exist.
33 if l_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Name is not null then
34 if BSC_SCORECARD_PVT.Validate_Kpi_Group(l_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Name) <> 0 then
35 FND_MESSAGE.SET_NAME('BSC','BSC_KGROUP_NAME_EXISTS');
36 FND_MESSAGE.SET_TOKEN('BSC_KGROUP', l_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Name);
37 FND_MSG_PUB.ADD;
38 RAISE FND_API.G_EXC_ERROR;
39 end if;
40 end if;
41
42 -- Bug #3236356
43 SELECT (NVL(MAX(IND_GROUP_ID), 0) + 1)
44 INTO l_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Id
45 FROM BSC_TAB_IND_GROUPS_B;
46
47 -- Give Default name to Kpi Group if Group name is originally null.
48 if l_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Name is null then
49 l_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Name := BSC_APPS.GET_LOOKUP_VALUE('BSC_UI_COMMON', 'GROUP')|| ' ' || l_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Id;
50 end if;
51
52 -- If help is null then set it equal to the name.
53 if l_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Help is null then
54 --l_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Help := l_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Name;
55 --Fix Bug #2608683
56 l_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Help := l_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Help;
57 end if;
58
59 -- This is a "Create_Procedure" therefore it does not assign the KPI group
60 -- to any Tab. -1 is assigned as the tab_id, that's the BSC default.
61 if l_Bsc_Kpi_Group_Rec.Bsc_Tab_Id is null then
62 l_Bsc_Kpi_Group_Rec.Bsc_Tab_Id := -1;
63 end if;
64
65 end if;
66
67 BSC_KPI_GROUP_PVT.Create_Kpi_Group( p_commit
68 ,l_Bsc_Kpi_Group_Rec
69 ,x_return_status
70 ,x_msg_count
71 ,x_msg_data);
72 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
73 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
74 END IF;
75
76 x_Bsc_Kpi_Group_Rec := l_Bsc_Kpi_Group_Rec;
77
78 EXCEPTION
79 WHEN FND_API.G_EXC_ERROR THEN
80 ROLLBACK TO BSCCreateKPIGROUP;
81 IF (x_msg_data IS NULL) THEN
82 FND_MSG_PUB.Count_And_Get
83 ( p_encoded => FND_API.G_FALSE
84 , p_count => x_msg_count
85 , p_data => x_msg_data
86 );
87 END IF;
88 --DBMS_OUTPUT.PUT_LINE('EXCEPTION FND_API.G_EXC_ERROR '||x_msg_data);
89 x_return_status := FND_API.G_RET_STS_ERROR;
90 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
91 ROLLBACK TO BSCCreateKPIGROUP;
92 IF (x_msg_data IS NULL) THEN
93 FND_MSG_PUB.Count_And_Get
94 ( p_encoded => FND_API.G_FALSE
95 , p_count => x_msg_count
96 , p_data => x_msg_data
97 );
98 END IF;
99 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
100 --DBMS_OUTPUT.PUT_LINE('EXCEPTION FND_API.G_EXC_UNEXPECTED_ERROR '||x_msg_data);
101 WHEN NO_DATA_FOUND THEN
102 ROLLBACK TO BSCCreateKPIGROUP;
103 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
104 IF (x_msg_data IS NOT NULL) THEN
105 x_msg_data := x_msg_data||' -> BSC_KPI_GROUP_PUB.Create_Kpi_Group with parameter x_Bsc_Kpi_Group_Rec ';
106 ELSE
107 x_msg_data := SQLERRM||' at BSC_KPI_GROUP_PUB.Create_Kpi_Group with parameter x_Bsc_Kpi_Group_Rec ';
108 END IF;
109 --DBMS_OUTPUT.PUT_LINE('EXCEPTION NO_DATA_FOUND '||x_msg_data);
110 WHEN OTHERS THEN
111 ROLLBACK TO BSCCreateKPIGROUP;
112 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
113 IF (x_msg_data IS NOT NULL) THEN
114 x_msg_data := x_msg_data||' -> BSC_KPI_GROUP_PUB.Create_Kpi_Group with parameter x_Bsc_Kpi_Group_Rec ';
115 ELSE
116 x_msg_data := SQLERRM||' at BSC_KPI_GROUP_PUB.Create_Kpi_Group with parameter x_Bsc_Kpi_Group_Rec ';
117 END IF;
118 --DBMS_OUTPUT.PUT_LINE('EXCEPTION OTHERS '||x_msg_data);
119
120 end Create_Kpi_Group;
121
122
123 /************************************************************************************
124 ************************************************************************************/
125 --Modified procedure without OUT parameter
126 procedure Create_Kpi_Group(
127 p_commit IN varchar2 := FND_API.G_FALSE
128 ,p_Bsc_Kpi_Group_Rec IN BSC_KPI_GROUP_PUB.Bsc_Kpi_Group_Rec
129 ,x_return_status OUT NOCOPY varchar2
130 ,x_msg_count OUT NOCOPY number
131 ,x_msg_data OUT NOCOPY varchar2
132 ) is
133
134 l_Bsc_Kpi_Group_Rec BSC_KPI_GROUP_PUB.Bsc_Kpi_Group_Rec;
135 l_Bsc_Kpi_Group_Rec_Out BSC_KPI_GROUP_PUB.Bsc_Kpi_Group_Rec;
136
137 begin
138 FND_MSG_PUB.Initialize;
139 x_return_status := FND_API.G_RET_STS_SUCCESS;
140
141 l_Bsc_Kpi_Group_Rec := p_Bsc_Kpi_Group_Rec;
142
143 -- Call the create kpi group API with OUT parameter for kpi group record.
144 BSC_KPI_GROUP_PUB.Create_Kpi_Group( p_commit => p_commit
145 ,p_Bsc_Kpi_Group_Rec => l_Bsc_Kpi_Group_Rec
146 ,x_Bsc_Kpi_Group_Rec => l_Bsc_Kpi_Group_Rec_Out
147 ,x_return_status => x_return_status
148 ,x_msg_count => x_msg_count
149 ,x_msg_data => x_msg_data);
150 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
151 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
152 END IF;
153
154
155 EXCEPTION
156 WHEN FND_API.G_EXC_ERROR THEN
157 IF (x_msg_data IS NULL) THEN
158 FND_MSG_PUB.Count_And_Get
159 ( p_encoded => FND_API.G_FALSE
160 , p_count => x_msg_count
161 , p_data => x_msg_data
162 );
163 END IF;
164 --DBMS_OUTPUT.PUT_LINE('EXCEPTION FND_API.G_EXC_ERROR '||x_msg_data);
165 x_return_status := FND_API.G_RET_STS_ERROR;
166 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
167 IF (x_msg_data IS NULL) THEN
168 FND_MSG_PUB.Count_And_Get
169 ( p_encoded => FND_API.G_FALSE
170 , p_count => x_msg_count
171 , p_data => x_msg_data
172 );
173 END IF;
174 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
175 --DBMS_OUTPUT.PUT_LINE('EXCEPTION FND_API.G_EXC_UNEXPECTED_ERROR '||x_msg_data);
176 WHEN NO_DATA_FOUND THEN
177 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
178 IF (x_msg_data IS NOT NULL) THEN
179 x_msg_data := x_msg_data||' -> BSC_KPI_GROUP_PUB.Create_Kpi_Group ';
180 ELSE
181 x_msg_data := SQLERRM||' at BSC_KPI_GROUP_PUB.Create_Kpi_Group ';
182 END IF;
183 --DBMS_OUTPUT.PUT_LINE('EXCEPTION NO_DATA_FOUND '||x_msg_data);
184 WHEN OTHERS THEN
185 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
186 IF (x_msg_data IS NOT NULL) THEN
187 x_msg_data := x_msg_data||' -> BSC_KPI_GROUP_PUB.Create_Kpi_Group ';
188 ELSE
189 x_msg_data := SQLERRM||' at BSC_KPI_GROUP_PUB.Create_Kpi_Group ';
190 END IF;
191 --DBMS_OUTPUT.PUT_LINE('EXCEPTION OTHERS '||x_msg_data);
192
193 end Create_Kpi_Group;
194
195
196 /************************************************************************************
197 ************************************************************************************/
198 --new procedure. Initializing the kpi group record.
199 procedure Initialize_Kpi_Group_Rec(
200 p_Bsc_Kpi_Group_Rec IN BSC_KPI_GROUP_PUB.Bsc_Kpi_Group_Rec
201 ,x_Bsc_Kpi_Group_Rec OUT NOCOPY BSC_KPI_GROUP_PUB.Bsc_Kpi_Group_Rec
202 ,x_return_status OUT NOCOPY varchar2
203 ,x_msg_count OUT NOCOPY number
204 ,x_msg_data OUT NOCOPY varchar2
205 ) is
206
207 begin
208 FND_MSG_PUB.Initialize;
209 x_return_status := FND_API.G_RET_STS_SUCCESS;
210
211 x_Bsc_Kpi_Group_Rec := p_Bsc_Kpi_Group_Rec;
212
213 -- set some default values.
214 x_Bsc_Kpi_Group_Rec.Bsc_Csf_Id := 0;
215 x_Bsc_Kpi_Group_Rec.Bsc_Group_Height := 1000;
216 x_Bsc_Kpi_Group_Rec.Bsc_Group_Width := 2000;
217 x_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Type := 0;
218 x_Bsc_Kpi_Group_Rec.Bsc_Language := 'US';
219 x_Bsc_Kpi_Group_Rec.Bsc_Left_Position_In_Tab := 1380;
220 x_Bsc_Kpi_Group_Rec.Bsc_Name_Justif_In_Tab := 0;
221 x_Bsc_Kpi_Group_Rec.Bsc_Name_Pos_In_Tab := 1;
222 x_Bsc_Kpi_Group_Rec.Bsc_Source_Language := 'US';
223 x_Bsc_Kpi_Group_Rec.Bsc_Top_Position_In_Tab := 0;
224
225 EXCEPTION
226 WHEN OTHERS THEN
227 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
228 IF (x_msg_data IS NOT NULL) THEN
229 x_msg_data := x_msg_data||' -> BSC_KPI_GROUP_PUB.Initialize_Kpi_Group_Rec ';
230 ELSE
231 x_msg_data := SQLERRM||' at BSC_KPI_GROUP_PUB.Initialize_Kpi_Group_Rec ';
232 END IF;
233 RAISE;
234 end Initialize_Kpi_Group_Rec;
235
236 /************************************************************************************
237 ************************************************************************************/
238
239 procedure Retrieve_Kpi_Group(
240 p_commit IN varchar2 := FND_API.G_FALSE
241 ,p_Bsc_Kpi_Group_Rec IN BSC_KPI_GROUP_PUB.Bsc_Kpi_Group_Rec
242 ,x_Bsc_Kpi_Group_Rec IN OUT NOCOPY BSC_KPI_GROUP_PUB.Bsc_Kpi_Group_Rec
243 ,x_return_status OUT NOCOPY varchar2
244 ,x_msg_count OUT NOCOPY number
245 ,x_msg_data OUT NOCOPY varchar2
246 ) is
247
248 begin
249 FND_MSG_PUB.Initialize;
250 x_return_status := FND_API.G_RET_STS_SUCCESS;
251 BSC_KPI_GROUP_PVT.Retrieve_Kpi_Group( p_commit
252 ,p_Bsc_Kpi_Group_Rec
253 ,x_Bsc_Kpi_Group_Rec
254 ,x_return_status
255 ,x_msg_count
256 ,x_msg_data);
257
258 EXCEPTION
259 WHEN FND_API.G_EXC_ERROR THEN
260 IF (x_msg_data IS NULL) THEN
261 FND_MSG_PUB.Count_And_Get
262 ( p_encoded => FND_API.G_FALSE
263 , p_count => x_msg_count
264 , p_data => x_msg_data
265 );
266 END IF;
267 --DBMS_OUTPUT.PUT_LINE('EXCEPTION FND_API.G_EXC_ERROR '||x_msg_data);
268 x_return_status := FND_API.G_RET_STS_ERROR;
269 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
270 IF (x_msg_data IS NULL) THEN
271 FND_MSG_PUB.Count_And_Get
272 ( p_encoded => FND_API.G_FALSE
273 , p_count => x_msg_count
274 , p_data => x_msg_data
275 );
276 END IF;
277 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
278 --DBMS_OUTPUT.PUT_LINE('EXCEPTION FND_API.G_EXC_UNEXPECTED_ERROR '||x_msg_data);
279 WHEN NO_DATA_FOUND THEN
280 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
281 IF (x_msg_data IS NOT NULL) THEN
282 x_msg_data := x_msg_data||' -> BSC_KPI_GROUP_PUB.Retrieve_Kpi_Group ';
283 ELSE
284 x_msg_data := SQLERRM||' at BSC_KPI_GROUP_PUB.Retrieve_Kpi_Group ';
285 END IF;
286 --DBMS_OUTPUT.PUT_LINE('EXCEPTION NO_DATA_FOUND '||x_msg_data);
287 WHEN OTHERS THEN
288 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
289 IF (x_msg_data IS NOT NULL) THEN
290 x_msg_data := x_msg_data||' -> BSC_KPI_GROUP_PUB.Retrieve_Kpi_Group ';
291 ELSE
292 x_msg_data := SQLERRM||' at BSC_KPI_GROUP_PUB.Retrieve_Kpi_Group ';
293 END IF;
294 --DBMS_OUTPUT.PUT_LINE('EXCEPTION OTHERS '||x_msg_data);
295
296 end Retrieve_Kpi_Group;
297
298 /************************************************************************************
299 ************************************************************************************/
300
301 procedure Update_Kpi_Group(
302 p_commit IN varchar2 := FND_API.G_FALSE
303 ,p_Bsc_Kpi_Group_Rec IN BSC_KPI_GROUP_PUB.Bsc_Kpi_Group_Rec
304 ,x_return_status OUT NOCOPY varchar2
305 ,x_msg_count OUT NOCOPY number
306 ,x_msg_data OUT NOCOPY varchar2
307 ) is
308
309 begin
310 FND_MSG_PUB.Initialize;
311 x_return_status := FND_API.G_RET_STS_SUCCESS;
312 SAVEPOINT BSCUpdateKPIGROUP;
313 BSC_KPI_GROUP_PVT.Update_Kpi_Group( p_commit
314 ,p_Bsc_Kpi_Group_Rec
315 ,x_return_status
316 ,x_msg_count
317 ,x_msg_data);
318
319 EXCEPTION
320 WHEN FND_API.G_EXC_ERROR THEN
321 ROLLBACK TO BSCUpdateKPIGROUP;
322 IF (x_msg_data IS NULL) THEN
323 FND_MSG_PUB.Count_And_Get
324 ( p_encoded => FND_API.G_FALSE
325 , p_count => x_msg_count
326 , p_data => x_msg_data
327 );
328 END IF;
329 --DBMS_OUTPUT.PUT_LINE('EXCEPTION FND_API.G_EXC_ERROR '||x_msg_data);
330 x_return_status := FND_API.G_RET_STS_ERROR;
331 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
332 ROLLBACK TO BSCUpdateKPIGROUP;
333 IF (x_msg_data IS NULL) THEN
334 FND_MSG_PUB.Count_And_Get
335 ( p_encoded => FND_API.G_FALSE
336 , p_count => x_msg_count
337 , p_data => x_msg_data
338 );
339 END IF;
340 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
341 --DBMS_OUTPUT.PUT_LINE('EXCEPTION FND_API.G_EXC_UNEXPECTED_ERROR '||x_msg_data);
342 WHEN NO_DATA_FOUND THEN
343 ROLLBACK TO BSCUpdateKPIGROUP;
344 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
345 IF (x_msg_data IS NOT NULL) THEN
346 x_msg_data := x_msg_data||' -> BSC_KPI_GROUP_PUB.Update_Kpi_Group ';
347 ELSE
348 x_msg_data := SQLERRM||' at BSC_KPI_GROUP_PUB.Update_Kpi_Group ';
349 END IF;
350 --DBMS_OUTPUT.PUT_LINE('EXCEPTION NO_DATA_FOUND '||x_msg_data);
351 WHEN OTHERS THEN
352 ROLLBACK TO BSCUpdateKPIGROUP;
353 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
354 IF (x_msg_data IS NOT NULL) THEN
355 x_msg_data := x_msg_data||' -> BSC_KPI_GROUP_PUB.Update_Kpi_Group ';
356 ELSE
357 x_msg_data := SQLERRM||' at BSC_KPI_GROUP_PUB.Update_Kpi_Group ';
358 END IF;
359 --DBMS_OUTPUT.PUT_LINE('EXCEPTION OTHERS '||x_msg_data);
360
361 end Update_Kpi_Group;
362
363 /************************************************************************************
364 ************************************************************************************/
365
366 procedure Delete_Kpi_Group(
367 p_commit IN varchar2 := FND_API.G_FALSE
368 ,p_Bsc_Kpi_Group_Rec IN BSC_KPI_GROUP_PUB.Bsc_Kpi_Group_Rec
369 ,x_return_status OUT NOCOPY varchar2
370 ,x_msg_count OUT NOCOPY number
371 ,x_msg_data OUT NOCOPY varchar2
372 ) is
373
374 l_Bsc_Kpi_Group_Rec BSC_KPI_GROUP_PUB.Bsc_Kpi_Group_Rec;
375
376 begin
377 FND_MSG_PUB.Initialize;
378 x_return_status := FND_API.G_RET_STS_SUCCESS;
379 SAVEPOINT BSCDeleteKPIGROUP;
380 l_Bsc_Kpi_Group_Rec := p_Bsc_Kpi_Group_Rec;
381
382 -- Get the Group name.
383 -- Aditya, changed to VL Table for bug 2796033
384 select distinct(name)
385 into l_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Name
386 from BSC_TAB_IND_GROUPS_VL
387 where ind_group_id = l_Bsc_Kpi_Group_Rec.Bsc_Kpi_Group_Id;
388
389
390 BSC_KPI_GROUP_PVT.Delete_Kpi_Group( p_commit
391 ,l_Bsc_Kpi_Group_Rec
392 ,x_return_status
393 ,x_msg_count
394 ,x_msg_data);
395
396 EXCEPTION
397 WHEN FND_API.G_EXC_ERROR THEN
398 ROLLBACK TO BSCDeleteKPIGROUP;
399 IF (x_msg_data IS NULL) THEN
400 FND_MSG_PUB.Count_And_Get
401 ( p_encoded => FND_API.G_FALSE
402 , p_count => x_msg_count
403 , p_data => x_msg_data
404 );
405 END IF;
406 --DBMS_OUTPUT.PUT_LINE('EXCEPTION FND_API.G_EXC_ERROR '||x_msg_data);
407 x_return_status := FND_API.G_RET_STS_ERROR;
408 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
409 ROLLBACK TO BSCDeleteKPIGROUP;
410 IF (x_msg_data IS NULL) THEN
411 FND_MSG_PUB.Count_And_Get
412 ( p_encoded => FND_API.G_FALSE
413 , p_count => x_msg_count
414 , p_data => x_msg_data
415 );
416 END IF;
417 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
418 --DBMS_OUTPUT.PUT_LINE('EXCEPTION FND_API.G_EXC_UNEXPECTED_ERROR '||x_msg_data);
419 WHEN NO_DATA_FOUND THEN
420 ROLLBACK TO BSCDeleteKPIGROUP;
421 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
422 IF (x_msg_data IS NOT NULL) THEN
423 x_msg_data := x_msg_data||' -> BSC_KPI_GROUP_PUB.Delete_Kpi_Group ';
424 ELSE
425 x_msg_data := SQLERRM||' at BSC_KPI_GROUP_PUB.Delete_Kpi_Group ';
426 END IF;
427 --DBMS_OUTPUT.PUT_LINE('EXCEPTION NO_DATA_FOUND '||x_msg_data);
428 WHEN OTHERS THEN
429 ROLLBACK TO BSCDeleteKPIGROUP;
430 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
431 IF (x_msg_data IS NOT NULL) THEN
432 x_msg_data := x_msg_data||' -> BSC_KPI_GROUP_PUB.Delete_Kpi_Group ';
433 ELSE
434 x_msg_data := SQLERRM||' at BSC_KPI_GROUP_PUB.Delete_Kpi_Group ';
435 END IF;
436 --DBMS_OUTPUT.PUT_LINE('EXCEPTION OTHERS '||x_msg_data);
437
438 end Delete_Kpi_Group;
439
440 /************************************************************************************
441 ************************************************************************************/
442
443 end BSC_KPI_GROUP_PUB;