DBA Data[Home] [Help]

PACKAGE BODY: APPS.ICX_USER_SEC_ATTR_PVT

Source


1 PACKAGE BODY ICX_User_Sec_Attr_PVT AS
2 -- $Header: ICXVTUSB.pls 120.4 2005/10/26 14:08:59 tshort noship $
3 
4 PROCEDURE Create_User_Sec_Attr
5 (  p_api_version_number		IN	NUMBER,
6    p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE,
7    p_simulate			IN      VARCHAR2 := FND_API.G_FALSE,
8    p_commit			IN	VARCHAR2 := FND_API.G_FALSE,
9    p_validation_level		IN	NUMBER   := FND_API.G_VALID_LEVEL_FULL,
10    p_return_status		OUT NOCOPY	VARCHAR2,
11    p_msg_count			OUT NOCOPY	NUMBER,
12    p_msg_data			OUT NOCOPY	VARCHAR2,
13 --   p_msg_entity			OUT	VARCHAR2,
14 --   p_msg_entity_index		OUT	NUMBER,
15    p_web_user_id                IN      NUMBER,
16    p_attribute_code             IN      VARCHAR2,
17    p_attribute_appl_id          IN      NUMBER,
18    p_varchar2_value             IN      VARCHAR2,
19    p_date_value                 IN      DATE,
20    p_number_value               IN      NUMBER,
21    p_created_by			IN	NUMBER,
22    p_creation_date		IN	DATE,
23    p_last_updated_by		IN	NUMBER,
24    p_last_update_date		IN	DATE,
25    p_last_update_login		IN	NUMBER
26 )
27 IS
28 l_api_name		CONSTANT VARCHAR2(30) := 'Create_User_Sec_Attr';
29 l_api_version_number	CONSTANT NUMBER	      := 1.0;
30 
31 l_duplicate			 NUMBER       := 0;
32 
33 BEGIN
34    -- Standard Start of API savepoint
35 
36    SAVEPOINT Create_User_Sec_Attr_PVT;
37 
38    -- Standard call to check for call compatibility.
39 
40    if NOT FND_API.Compatible_API_Call
41    (
42 	l_api_version_number,
43 	p_api_version_number,
44 	l_api_name,
45 	G_PKG_NAME
46    )
47    then
48       raise FND_API.G_EXC_UNEXPECTED_ERROR;
49    end if;
50 
51    -- Initialize message list if p_init_msg_list is set to TRUE.
52 
53    if FND_API.to_Boolean( p_init_msg_list)
54    then
55       FND_MSG_PUB.initialize;
56    end if;
57 
58    -- Initialize API return status to success
59 
60    p_return_status := FND_API.G_RET_STS_SUCCESS;
61 
62    -- ************************************
63    -- VALIDATION - RESP_SEC_ATTR
64    -- ************************************
65 --   select responsibility_id
66    select count(*)
67      into l_duplicate
68      from ak_web_user_sec_attr_values
69     where web_user_id       = p_web_user_id
70       and attribute_code    = p_attribute_code
71       and attribute_application_id = p_attribute_appl_id
72       and ((varchar2_value  = p_varchar2_value)
73 	  or (varchar2_value is null and p_varchar2_value is null))
74       and ((date_value      = p_date_value)
75 	  or (date_value is null and p_date_value is null))
76       and ((number_value    = p_number_value)
77 	  or (number_value is null and p_number_value is null));
78 
79    if l_duplicate <> 0
80 --   if SQL%FOUND
81    then
82       -- responsibility-securing_attribute already exists
83 
84 -- !!!!Need create message through Rami
85 
86       fnd_message.set_name('FND','SECURITY-DUPLICATE USER RESP');
87       fnd_msg_pub.Add;
88       raise FND_API.G_EXC_ERROR;
89    else
90       INSERT into AK_WEB_USER_SEC_ATTR_VALUES
91       (
92 	 WEB_USER_ID			,
93 	 ATTRIBUTE_APPLICATION_ID	,
94          ATTRIBUTE_CODE			,
95 	 VARCHAR2_VALUE			,
96 	 DATE_VALUE			,
97 	 NUMBER_VALUE			,
98          CREATED_BY			,
99          CREATION_DATE			,
100          LAST_UPDATED_BY		,
101          LAST_UPDATE_DATE		,
102          LAST_UPDATE_LOGIN
103       )
104       values
105       (
106 	 p_web_user_id			,
107 	 p_attribute_appl_id		,
108          p_attribute_code		,
109 	 p_varchar2_value		,
110 	 p_date_value			,
111 	 p_number_value			,
112          p_created_by			,
113          p_creation_date		,
114          p_last_updated_by		,
115          p_last_update_date		,
116          p_last_update_login
117       );
118 
119 -- taken out per Peter's suggestion
120 
121 /*      if SQL%NOTFOUND
122       then
123          -- Unable to INSERT
124 
125          fnd_message.set_name('FND','SQL-NO INSERT');
126          fnd_message.set_token('TABLE','FND_USER');
127          fnd_msg_pub.Add;
128          raise FND_API.G_EXC_ERROR;
129       end if;
130 */
131    end if;
132 
133    -- Standard check of p_commit;
134 
135    if FND_API.To_Boolean( p_commit)
136    then
137       commit work;
138    end if;
139 
140    -- Standard call to get message count and if count is 1, get message info.
141 
142    FND_MSG_PUB.Count_And_Get
143    (
144       p_count		=> p_msg_count,
145       p_data		=> p_msg_data
146    );
147 
148 EXCEPTION
149 
150    WHEN FND_API.G_EXC_ERROR THEN
151 
152       Rollback to Create_User_Sec_Attr_PVT;
153       p_return_status := FND_API.G_RET_STS_ERROR;
154 
155       FND_MSG_PUB.Count_And_Get
156       (
157          p_count		=> p_msg_count,
158          p_data			=> p_msg_data
159       );
160 
161    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
162 
163       Rollback to Create_User_Sec_Attr_PVT;
164       p_return_status := FND_API.G_RET_STS_ERROR;
165 
166       FND_MSG_PUB.Count_And_Get
167       (
168          p_count		=> p_msg_count,
169          p_data			=> p_msg_data
170       );
171 
172    WHEN OTHERS THEN
173 
174       Rollback to Create_User_Sec_Attr_PVT;
175       p_return_status := FND_API.G_RET_STS_ERROR;
176 
177       if FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
178       then
179          FND_MSG_PUB.Add_Exc_Msg
180          (
181             G_FILE_NAME,
182             G_PKG_NAME,
183             l_api_name
184          );
185       end if;
186 
187       FND_MSG_PUB.Count_And_Get
188       (
189          p_count		=> p_msg_count,
190          p_data			=> p_msg_data
191       );
192 
193 end Create_User_Sec_Attr;
194 
195 
196 
197 PROCEDURE Delete_User_Sec_Attr
198 (  p_api_version_number		IN	NUMBER,
199    p_init_msg_list		IN	VARCHAR2 := FND_API.G_FALSE,
200    p_simulate			IN      VARCHAR2 := FND_API.G_FALSE,
201    p_commit			IN	VARCHAR2 := FND_API.G_FALSE,
202    p_validation_level		IN	NUMBER   := FND_API.G_VALID_LEVEL_FULL,
203    p_return_status		OUT NOCOPY	VARCHAR2,
204    p_msg_count			OUT NOCOPY	NUMBER,
205    p_msg_data			OUT NOCOPY	VARCHAR2,
206 --   p_msg_entity			OUT	VARCHAR2,
207 --   p_msg_entity_index		OUT	NUMBER,
208    p_web_user_id                IN      NUMBER,
209    p_attribute_code             IN      VARCHAR2,
210    p_attribute_appl_id          IN      NUMBER,
211    p_varchar2_value             IN      VARCHAR2,
212    p_date_value                 IN      DATE,
213    p_number_value               IN      NUMBER
214 
215 )
216 IS
217 l_api_name		CONSTANT VARCHAR2(30) := 'Delete_User_Sec_Attr';
218 l_api_version_number	CONSTANT NUMBER	      := 1.0;
219 
220 BEGIN
221 
222    -- Standard Start of API savepoint
223 
224    SAVEPOINT Delete_User_Sec_Attr_PVT;
225 
226    -- Standard call to check for call compatibility.
227 
228    if NOT FND_API.Compatible_API_Call
229    (
230 	l_api_version_number,
231 	p_api_version_number,
232 	l_api_name,
233 	G_PKG_NAME
234    )
235    then
236       raise FND_API.G_EXC_UNEXPECTED_ERROR;
237    end if;
238 
239    -- Initialize message list if p_init_msg_list is set to TRUE.
240 
241    if FND_API.to_Boolean( p_init_msg_list)
242    then
243       FND_MSG_PUB.initialize;
244    end if;
245 
246    -- Initialize API return status to success
247 
248    p_return_status := FND_API.G_RET_STS_SUCCESS;
249 
250    Delete from AK_WEB_USER_SEC_ATTR_VALUES
251     where web_user_id 	    = p_web_user_id
252       and attribute_code    = p_attribute_code
253       and attribute_application_id = p_attribute_appl_id
254       and ((varchar2_value  = p_varchar2_value)
255 	  or (varchar2_value is null and p_varchar2_value is null))
256       and ((date_value	    = p_date_value)
257 	  or (date_value is null and p_date_value is null))
258       and ((number_value    = p_number_value)
259 	  or (number_value is null and p_number_value is null));
260 
261    if SQL%NOTFOUND
262    then
263 
264 -- Need to replace message after creating messages through Rami
265 -- !!!!
266 
267       fnd_message.set_name('FND','SQL-NO DELETE');
268       fnd_message.set_token('TABLE','FND_USER_RESPONSIBILITY');
269       fnd_msg_pub.Add;
270       raise FND_API.G_EXC_ERROR;
271    end if;
272 
273    -- Standard check of p_commit;
274 
275    if FND_API.To_Boolean( p_commit)
276    then
277       commit work;
278    end if;
279 
280    -- Standard call to get message count and if count is 1, get message info.
281 
282    FND_MSG_PUB.Count_And_Get
283    (
284       p_count		=> p_msg_count,
285       p_data		=> p_msg_data
286    );
287 
288 EXCEPTION
289 
290    WHEN FND_API.G_EXC_ERROR THEN
291 
292       Rollback to Delete_User_Sec_Attr_PVT;
293       p_return_status := FND_API.G_RET_STS_ERROR;
294 
295       FND_MSG_PUB.Count_And_Get
296       (
297          p_count		=> p_msg_count,
298          p_data			=> p_msg_data
299       );
300 
301    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
302 
303       Rollback to Delete_User_Sec_Attr_PVT;
304       p_return_status := FND_API.G_RET_STS_ERROR;
305 
306       FND_MSG_PUB.Count_And_Get
307       (
308          p_count		=> p_msg_count,
309          p_data			=> p_msg_data
310       );
311 
312    WHEN OTHERS THEN
313 
314       Rollback to Delete_User_Sec_Attr_PVT;
315       p_return_status := FND_API.G_RET_STS_ERROR;
316 
317       if FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
318       then
319          FND_MSG_PUB.Add_Exc_Msg
320          (
321             G_FILE_NAME,
322             G_PKG_NAME,
323             l_api_name
324          );
325       end if;
326 
327       FND_MSG_PUB.Count_And_Get
328       (
329          p_count		=> p_msg_count,
330          p_data			=> p_msg_data
331       );
332 
333 end Delete_User_Sec_Attr;
334 
335 PROCEDURE Create_Def_User_Sec_Attr
336 (  p_api_version_number         IN      NUMBER,
337    p_init_msg_list              IN      VARCHAR2 := FND_API.G_FALSE,
338    p_simulate                   IN      VARCHAR2 := FND_API.G_FALSE,
339    p_commit                     IN      VARCHAR2 := FND_API.G_FALSE,
340    p_validation_level           IN      NUMBER   := FND_API.G_VALID_LEVEL_FULL,
341    p_web_user_id                    IN      NUMBER,
342    p_resp_application_id	IN	NUMBER,
343    p_responsibility_id          IN      NUMBER,
344    p_created_by                 IN      NUMBER,
345    p_creation_date              IN      DATE,
346    p_last_updated_by            IN      NUMBER,
347    p_last_update_date           IN      DATE,
348    p_last_update_login          IN      NUMBER,
349    p_return_status              OUT NOCOPY     VARCHAR2,
350    p_msg_count                  OUT NOCOPY     NUMBER,
351    p_msg_data                   OUT NOCOPY     VARCHAR2
352 ) is
353 
354 l_api_name              CONSTANT VARCHAR2(30) := 'Create_Def_User_Sec_Attr';
355 l_api_version_number    CONSTANT NUMBER       := 1.0;
356 
357 l_customer_contact_id	number;
358 l_vendor_contact_id	number;
359 l_internal_contact_id	number;
360 l_data_type		varchar2(30);
361 l_varchar2_value	varchar2(240);
362 l_date_value		date;
363 l_number_value		number;
364 
365 l_duplicate                      NUMBER       := 0;
366 
367 l_return_status varchar2(1);
368 l_msg_count number;
369 l_msg_data varchar2(2000);
370 
371 cursor cust_sec_attr is
372         select  b.REGION_APPLICATION_ID,b.REGION_CODE,
373                 a.ATTRIBUTE_APPLICATION_ID,a.ATTRIBUTE_CODE
374         from    AK_OBJECT_ATTRIBUTES c,
375                 AK_REGIONS b,
376                 AK_RESP_SECURITY_ATTRIBUTES a
377         where   a.RESPONSIBILITY_ID = p_responsibility_id
378         and     a.RESP_APPLICATION_ID = p_resp_application_id
379         and     a.ATTRIBUTE_CODE = b.REGION_CODE
380         and     b.DATABASE_OBJECT_NAME = c.DATABASE_OBJECT_NAME
381         and     c.ATTRIBUTE_CODE = 'ICX_CUSTOMER_CONTACT_ID';
382 
383 cursor int_sec_attr is
384         select  b.REGION_APPLICATION_ID,b.REGION_CODE,
385                 a.ATTRIBUTE_APPLICATION_ID,a.ATTRIBUTE_CODE
386         from    AK_OBJECT_ATTRIBUTES c,
387                 AK_REGIONS b,
388                 AK_RESP_SECURITY_ATTRIBUTES a
389         where   a.RESPONSIBILITY_ID = p_responsibility_id
390         and     a.RESP_APPLICATION_ID = p_resp_application_id
391         and     a.ATTRIBUTE_CODE = b.REGION_CODE
392         and     b.DATABASE_OBJECT_NAME = c.DATABASE_OBJECT_NAME
393         and     c.ATTRIBUTE_CODE = 'ICX_INTERNAL_CONTACT_ID';
394 
395 cursor supp_sec_attr is
396         select  b.REGION_APPLICATION_ID,b.REGION_CODE,
397                 a.ATTRIBUTE_APPLICATION_ID,a.ATTRIBUTE_CODE
398         from    AK_OBJECT_ATTRIBUTES c,
399                 AK_REGIONS b,
400                 AK_RESP_SECURITY_ATTRIBUTES a
401         where   a.RESPONSIBILITY_ID = p_responsibility_id
402         and     a.RESP_APPLICATION_ID = p_resp_application_id
403         and     a.ATTRIBUTE_CODE = b.REGION_CODE
404         and     b.DATABASE_OBJECT_NAME = c.DATABASE_OBJECT_NAME
405         and     c.ATTRIBUTE_CODE = 'ICX_SUPPLIER_CONTACT_ID';
406 
407 begin
408 
409    -- Standard Start of API savepoint
410 
411    SAVEPOINT Create_Def_User_Sec_Attr;
412 
413    -- Standard call to check for call compatibility.
414 
415    if NOT FND_API.Compatible_API_Call
416    (
417         l_api_version_number,
418         p_api_version_number,
419         l_api_name,
420         G_PKG_NAME
421    )
422    then
423       raise FND_API.G_EXC_UNEXPECTED_ERROR;
424    end if;
425 
426    -- Initialize message list if p_init_msg_list is set to TRUE.
427 
428    if FND_API.to_Boolean( p_init_msg_list)
429    then
430       FND_MSG_PUB.initialize;
431    end if;
432 
433    -- Initialize API return status to success
434 
435    p_return_status := FND_API.G_RET_STS_SUCCESS;
436 
437    -- ************************************
438    -- VALIDATION - RESP_SEC_ATTR
439    -- ************************************
440 
441 select  CUSTOMER_ID,SUPPLIER_ID,EMPLOYEE_ID
442 into    l_customer_contact_id,l_vendor_contact_id,l_internal_contact_id
443 from    FND_USER
444 where   USER_ID = p_web_user_id;
445 
446 if l_customer_contact_id is not null
447 then
448 for s in cust_sec_attr loop
449 
450 ak_query_pkg.exec_query(
451 P_PARENT_REGION_APPL_ID => s.REGION_APPLICATION_ID,
452 P_PARENT_REGION_CODE => s.REGION_CODE,
453 P_WHERE_CLAUSE => 'CONTACT_ID = '||l_customer_contact_id,
454 P_RETURN_PARENTS => 'T',
455 P_RETURN_CHILDREN => 'F');
456 
457 -- icx_on_utilities2.printPLSQLtables;
458 
459 select    DATA_TYPE
460 into      l_data_type
461 from      AK_ATTRIBUTES
462 where     ATTRIBUTE_CODE = s.ATTRIBUTE_CODE
463 and       ATTRIBUTE_APPLICATION_ID = s.ATTRIBUTE_APPLICATION_ID;
464 
465 for r in ak_query_pkg.g_results_table.FIRST..ak_query_pkg.g_results_table.LAST loop
466     if l_data_type = 'NUMBER'
467     then
468 	l_varchar2_value := '';
469 	l_date_value := '';
470 	l_number_value := to_number(ak_query_pkg.g_results_table(r).value1);
471     elsif l_data_type = 'DATE'
472     then
473         l_varchar2_value := '';
474         l_date_value := to_date(ak_query_pkg.g_results_table(r).value1,icx_sec.getID(icx_sec.PV_DATE_FORMAT));
475         l_number_value := '';
476     else
477         l_varchar2_value := ak_query_pkg.g_results_table(r).value1;
478         l_date_value := '';
479         l_number_value := '';
480     end if;
481 
482     ICX_User_Sec_Attr_PVT.Create_User_Sec_Attr(
483         p_api_version_number    => 1.0,
484         p_init_msg_list         => 'T',
485         p_commit                => 'T',
486         p_return_status         => l_return_status,
487         p_msg_count             => l_msg_count,
488         p_msg_data              => l_msg_data,
489         p_web_user_id           => p_web_user_id,
490         p_attribute_code        => s.ATTRIBUTE_CODE,
491         p_attribute_appl_id     => s.ATTRIBUTE_APPLICATION_ID,
492         p_varchar2_value        => l_varchar2_value,
493         p_date_value            => l_date_value,
494         p_number_value          => l_number_value,
495         p_created_by            => p_created_by,
496         p_creation_date         => p_creation_date,
497         p_last_updated_by       => p_last_updated_by,
498         p_last_update_date      => p_last_update_date,
499         p_last_update_login     => p_last_update_login);
500 
501 end loop; -- results
502 
503 end loop; -- cust_sec_attr
504 end if;
505 
506 if l_internal_contact_id is not null
507 then
508 for s in int_sec_attr loop
509 
510 ak_query_pkg.exec_query(
511 P_PARENT_REGION_APPL_ID => s.REGION_APPLICATION_ID,
512 P_PARENT_REGION_CODE => s.REGION_CODE,
513 P_WHERE_CLAUSE => 'CONTACT_ID = '||l_internal_contact_id,
514 P_RETURN_PARENTS => 'T',
515 P_RETURN_CHILDREN => 'F');
516 
517 -- icx_on_utilities2.printPLSQLtables;
518 
519 select    DATA_TYPE
520 into      l_data_type
521 from      AK_ATTRIBUTES
522 where     ATTRIBUTE_CODE = s.ATTRIBUTE_CODE
523 and       ATTRIBUTE_APPLICATION_ID = s.ATTRIBUTE_APPLICATION_ID;
524 
525 for r in ak_query_pkg.g_results_table.FIRST..ak_query_pkg.g_results_table.LAST loop
526     if l_data_type = 'NUMBER'
527     then
528         l_varchar2_value := '';
529         l_date_value := '';
530         l_number_value := to_number(ak_query_pkg.g_results_table(r).value1);
531     elsif l_data_type = 'DATE'
532     then
533         l_varchar2_value := '';
534         l_date_value := to_date(ak_query_pkg.g_results_table(r).value1,icx_sec.getID(icx_sec.PV_DATE_FORMAT));
535         l_number_value := '';
536     else
537         l_varchar2_value := ak_query_pkg.g_results_table(r).value1;
538         l_date_value := '';
539         l_number_value := '';
540     end if;
541 
542     ICX_User_Sec_Attr_PVT.Create_User_Sec_Attr(
543         p_api_version_number    => 1.0,
544         p_init_msg_list         => 'T',
545         p_commit                => 'T',
546         p_return_status         => l_return_status,
547         p_msg_count             => l_msg_count,
548         p_msg_data              => l_msg_data,
549         p_web_user_id           => p_web_user_id,
550         p_attribute_code        => s.ATTRIBUTE_CODE,
551         p_attribute_appl_id     => s.ATTRIBUTE_APPLICATION_ID,
552         p_varchar2_value        => l_varchar2_value,
553         p_date_value            => l_date_value,
554         p_number_value          => l_number_value,
555         p_created_by            => p_created_by,
556         p_creation_date         => p_creation_date,
557         p_last_updated_by       => p_last_updated_by,
558         p_last_update_date      => p_last_update_date,
559         p_last_update_login     => p_last_update_login);
560 
561 end loop; -- results
562 
563 end loop; -- int_sec_attr
564 end if;
565 
566 if l_vendor_contact_id is not null
567 then
568 for s in supp_sec_attr loop
569 
570 ak_query_pkg.exec_query(
571 P_PARENT_REGION_APPL_ID => s.REGION_APPLICATION_ID,
572 P_PARENT_REGION_CODE => s.REGION_CODE,
573 P_WHERE_CLAUSE => 'CONTACT_ID = '||l_vendor_contact_id,
574 P_RETURN_PARENTS => 'T',
575 P_RETURN_CHILDREN => 'F');
576 
577 -- icx_on_utilities2.printPLSQLtables;
578 
579 select    DATA_TYPE
580 into      l_data_type
581 from      AK_ATTRIBUTES
582 where     ATTRIBUTE_CODE = s.ATTRIBUTE_CODE
583 and       ATTRIBUTE_APPLICATION_ID = s.ATTRIBUTE_APPLICATION_ID;
584 
585 for r in ak_query_pkg.g_results_table.FIRST..ak_query_pkg.g_results_table.LAST loop
586     if l_data_type = 'NUMBER'
587     then
588         l_varchar2_value := '';
589         l_date_value := '';
590         l_number_value := to_number(ak_query_pkg.g_results_table(r).value1);
591     elsif l_data_type = 'DATE'
592     then
593         l_varchar2_value := '';
594         l_date_value := to_date(ak_query_pkg.g_results_table(r).value1,icx_sec.getID(icx_sec.PV_DATE_FORMAT));
595         l_number_value := '';
596     else
597         l_varchar2_value := ak_query_pkg.g_results_table(r).value1;
598         l_date_value := '';
599         l_number_value := '';
600     end if;
601 
602     ICX_User_Sec_Attr_PVT.Create_User_Sec_Attr(
603         p_api_version_number    => 1.0,
604         p_init_msg_list         => 'T',
605         p_commit                => 'T',
606         p_return_status         => l_return_status,
607         p_msg_count             => l_msg_count,
608         p_msg_data              => l_msg_data,
609         p_web_user_id           => p_web_user_id,
610         p_attribute_code        => s.ATTRIBUTE_CODE,
611         p_attribute_appl_id     => s.ATTRIBUTE_APPLICATION_ID,
612         p_varchar2_value        => l_varchar2_value,
613         p_date_value            => l_date_value,
614         p_number_value          => l_number_value,
615         p_created_by            => p_created_by,
616         p_creation_date         => p_creation_date,
617         p_last_updated_by       => p_last_updated_by,
618         p_last_update_date      => p_last_update_date,
619         p_last_update_login     => p_last_update_login);
620 
621 end loop; -- results
622 
623 end loop; -- supp_sec_attr
624 end if;
625 
626 
627 /*
628    if l_duplicate <> 0
629    then
630       -- responsibility-securing_attribute already exists
631 
632 -- !!!!Need create message through Rami
633 
634       fnd_message.set_name('FND','SECURITY-DUPLICATE USER RESP');
635       fnd_msg_pub.Add;
636       raise FND_API.G_EXC_ERROR;
637    else
638    end if;
639 */
640 
641    -- Standard check of p_commit;
642 
643    if FND_API.To_Boolean( p_commit)
644    then
645       commit work;
646    end if;
647 
648    -- Standard call to get message count and if count is 1, get message info.
649 
650    FND_MSG_PUB.Count_And_Get
651    (
652       p_count           => p_msg_count,
653       p_data            => p_msg_data
654    );
655 
656 EXCEPTION
657 
658    WHEN FND_API.G_EXC_ERROR THEN
659 
660       Rollback to Create_Def_User_Sec_Attr;
661       p_return_status := FND_API.G_RET_STS_ERROR;
662 
663       FND_MSG_PUB.Count_And_Get
664       (
665          p_count                => p_msg_count,
666          p_data                 => p_msg_data
667       );
668 
669    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
670 
671       Rollback to Create_Def_User_Sec_Attr;
672       p_return_status := FND_API.G_RET_STS_ERROR;
673 
674       FND_MSG_PUB.Count_And_Get
675       (
676          p_count                => p_msg_count,
677          p_data                 => p_msg_data
678       );
679 
680    WHEN OTHERS THEN
681 
682       Rollback to Create_Def_User_Sec_Attr;
683       p_return_status := FND_API.G_RET_STS_ERROR;
684 
685       if FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
686       then
687          FND_MSG_PUB.Add_Exc_Msg
688          (
689             G_FILE_NAME,
690             G_PKG_NAME,
691             l_api_name
692          );
693       end if;
694 
695       FND_MSG_PUB.Count_And_Get
696       (
697          p_count                => p_msg_count,
698          p_data                 => p_msg_data
699       );
700 
701 end Create_Def_User_Sec_Attr;
702 
703 end ICX_User_Sec_Attr_PVT;