DBA Data[Home] [Help]

PACKAGE BODY: APPS.FND_LOOKUP_TYPES_PKG

Source


1 package body FND_LOOKUP_TYPES_PKG as
2 /* $Header: AFLVMLTB.pls 120.2 2007/10/05 18:49:52 dggriffi ship $ */
3 
4 
5 X_LANG VARCHAR2(2);
6 
7 procedure INSERT_ROW (
8   X_ROWID in out nocopy VARCHAR2,
9   X_LOOKUP_TYPE in VARCHAR2,
10   X_SECURITY_GROUP_ID in NUMBER,
11   X_VIEW_APPLICATION_ID in NUMBER,
12   X_APPLICATION_ID in NUMBER,
13   X_CUSTOMIZATION_LEVEL in VARCHAR2,
14   X_MEANING in VARCHAR2,
15   X_DESCRIPTION in VARCHAR2,
16   X_CREATION_DATE in DATE,
17   X_CREATED_BY in NUMBER,
18   X_LAST_UPDATE_DATE in DATE,
19   X_LAST_UPDATED_BY in NUMBER,
20   X_LAST_UPDATE_LOGIN in NUMBER
21 ) is
22   cursor C is select ROWID from FND_LOOKUP_TYPES
23     where LOOKUP_TYPE = X_LOOKUP_TYPE
24     and SECURITY_GROUP_ID = X_SECURITY_GROUP_ID
25     and VIEW_APPLICATION_ID = X_VIEW_APPLICATION_ID
26     ;
27 
28 
29 begin
30   insert into FND_LOOKUP_TYPES (
31     APPLICATION_ID,
32     LOOKUP_TYPE,
33     CUSTOMIZATION_LEVEL,
34     SECURITY_GROUP_ID,
35     VIEW_APPLICATION_ID,
36     CREATION_DATE,
37     CREATED_BY,
38     LAST_UPDATE_DATE,
39     LAST_UPDATED_BY,
40     LAST_UPDATE_LOGIN
41   ) values (
42     X_APPLICATION_ID,
43     X_LOOKUP_TYPE,
44     X_CUSTOMIZATION_LEVEL,
45     X_SECURITY_GROUP_ID,
46     X_VIEW_APPLICATION_ID,
47     X_CREATION_DATE,
48     X_CREATED_BY,
49     X_LAST_UPDATE_DATE,
50     X_LAST_UPDATED_BY,
51     X_LAST_UPDATE_LOGIN
52   );
53 
54   insert into FND_LOOKUP_TYPES_TL (
55     LOOKUP_TYPE,
56     SECURITY_GROUP_ID,
57     VIEW_APPLICATION_ID,
58     MEANING,
59     DESCRIPTION,
60     CREATED_BY,
61     CREATION_DATE,
62     LAST_UPDATED_BY,
63     LAST_UPDATE_DATE,
64     LAST_UPDATE_LOGIN,
65     LANGUAGE,
66     SOURCE_LANG
67   ) select
68     X_LOOKUP_TYPE,
69     X_SECURITY_GROUP_ID,
70     X_VIEW_APPLICATION_ID,
71     X_MEANING,
72     X_DESCRIPTION,
73     X_CREATED_BY,
74     X_CREATION_DATE,
75     X_LAST_UPDATED_BY,
76     X_LAST_UPDATE_DATE,
77     X_LAST_UPDATE_LOGIN,
78     L.LANGUAGE_CODE,
79     userenv('LANG')
80   from FND_LANGUAGES L
81   where L.INSTALLED_FLAG in ('I', 'B')
82   and not exists
83     (select NULL
84     from FND_LOOKUP_TYPES_TL T
85     where T.LOOKUP_TYPE = X_LOOKUP_TYPE
86     and T.SECURITY_GROUP_ID = X_SECURITY_GROUP_ID
87     and T.VIEW_APPLICATION_ID = X_VIEW_APPLICATION_ID
88     and T.LANGUAGE = L.LANGUAGE_CODE);
89 
90   open c;
91   fetch c into X_ROWID;
92   if (c%notfound) then
93     close c;
94     raise no_data_found;
95   end if;
96   close c;
97 
98 
99   begin
100 
101 
102   -- Calling WF_EVENT.RAISE per bug 3209508
103   -- Business Events need to be raised with any insert to the fnd lookups
104   -- Bug:6113227, added Lang Code parameter to key being used to raise the
105   -- workflow event.
106 
107   select userenv('LANG')
108   into X_LANG
109   from dual;
110 
111   wf_event.raise(p_event_name => 'oracle.apps.fnd.lookup.type.insert',
112                  p_event_key => X_LOOKUP_TYPE||':'||X_VIEW_APPLICATION_ID||
113                                 ':'||X_SECURITY_GROUP_ID||':'||X_LANG,
114                  p_event_data => NULL,
115                  p_parameters => NULL,
116                  p_send_date => Sysdate);
117   exception
118     when others then
119       null;
120   end;
121 
122 end INSERT_ROW;
123 
124 /* Overloaded */
125 procedure TRANSLATE_ROW (
126   X_LOOKUP_TYPE         in VARCHAR2,
127   X_SECURITY_GROUP_ID   in NUMBER,
128   X_VIEW_APPLICATION_ID in NUMBER,
129   X_OWNER               in VARCHAR2,
130   X_MEANING             in VARCHAR2,
131   X_DESCRIPTION         in VARCHAR2) is
132 begin
133   TRANSLATE_ROW (
134     X_LOOKUP_TYPE         => X_LOOKUP_TYPE,
135     X_SECURITY_GROUP_ID   => X_SECURITY_GROUP_ID,
136     X_VIEW_APPLICATION_ID => X_VIEW_APPLICATION_ID,
137     X_OWNER               => X_OWNER,
138     X_MEANING             => X_MEANING,
139     X_DESCRIPTION         => X_DESCRIPTION,
140     X_LAST_UPDATE_DATE    => null,
141     X_CUSTOM_MODE         => null);
142 end TRANSLATE_ROW;
143 
144 /* Overloaded */
145 procedure TRANSLATE_ROW (
146   X_LOOKUP_TYPE         in VARCHAR2,
147   X_SECURITY_GROUP_ID   in NUMBER,
148   X_VIEW_APPLICATION_ID in NUMBER,
149   X_OWNER               in VARCHAR2,
150   X_MEANING             in VARCHAR2,
151   X_DESCRIPTION         in VARCHAR2,
152   X_LAST_UPDATE_DATE    in VARCHAR2,
153   X_CUSTOM_MODE         in VARCHAR2)
154 is
155   f_luby    number;  -- entity owner in file
156   f_ludate  date;    -- entity update date in file
157   db_luby   number;  -- entity owner in db
158   db_ludate date;    -- entity update date in db
159 
160 
161 begin
162   -- Translate owner to file_last_updated_by
163   f_luby := fnd_load_util.owner_id(x_owner);
164 
165   -- Translate char last_update_date to date
166   f_ludate := nvl(to_date(X_LAST_UPDATE_DATE, 'YYYY/MM/DD'), sysdate);
167 
168   select last_updated_by, last_update_date
169   into db_luby, db_ludate
170   from fnd_lookup_types_tl
171   where lookup_type       = X_LOOKUP_TYPE
172   and security_group_id   = X_SECURITY_GROUP_ID
173   and view_application_id = X_VIEW_APPLICATION_ID
174   and language            = userenv('LANG');
175 
176   if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
177                                 db_ludate, X_CUSTOM_MODE)) then
178     update fnd_lookup_types_tl set
179       meaning           = nvl(X_MEANING, meaning),
180       description       = nvl(X_DESCRIPTION, description),
181       last_update_date  = f_ludate,
182       last_updated_by   = f_luby,
183       last_update_login = 0,
184       source_lang       = userenv('LANG')
185     where lookup_type       = X_LOOKUP_TYPE
186     and security_group_id   = X_SECURITY_GROUP_ID
187     and view_application_id = X_VIEW_APPLICATION_ID
188     and userenv('LANG') in (language, source_lang);
189 
190     begin
191     -- Calling WF_EVENT.RAISE per bug 3209508
192     -- Business Events need to be raised with any updates to the fnd lookups
193     -- Bug:6113227, added Lang Code parameter to key being used to raise the
194     -- workflow event.
195 
196     select userenv('LANG')
197     into X_LANG
198     from dual;
199 
200     wf_event.raise(p_event_name => 'oracle.apps.fnd.lookup.type.update',
201                    p_event_key => X_LOOKUP_TYPE||':'||X_VIEW_APPLICATION_ID||
202                                   ':'||X_SECURITY_GROUP_ID||':'||X_LANG,
203                    p_event_data => NULL,
204                    p_parameters => NULL,
205                    p_send_date => Sysdate);
206     exception
207       when others then
208         null;
209     end;
210 
211   end if;
212 end TRANSLATE_ROW;
213 
214 procedure LOCK_ROW (
215   X_LOOKUP_TYPE in VARCHAR2,
216   X_SECURITY_GROUP_ID in NUMBER,
217   X_VIEW_APPLICATION_ID in NUMBER,
218   X_APPLICATION_ID in NUMBER,
219   X_CUSTOMIZATION_LEVEL in VARCHAR2,
220   X_MEANING in VARCHAR2,
221   X_DESCRIPTION in VARCHAR2
222 ) is
223   cursor c is select
224       APPLICATION_ID,
225       CUSTOMIZATION_LEVEL
226     from FND_LOOKUP_TYPES
227     where LOOKUP_TYPE = X_LOOKUP_TYPE
228     and SECURITY_GROUP_ID = X_SECURITY_GROUP_ID
229     and VIEW_APPLICATION_ID = X_VIEW_APPLICATION_ID
230     for update of LOOKUP_TYPE nowait;
231   recinfo c%rowtype;
232 
233   cursor c1 is select
234       MEANING,
235       DESCRIPTION,
236       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
237     from FND_LOOKUP_TYPES_TL
238     where LOOKUP_TYPE = X_LOOKUP_TYPE
239     and SECURITY_GROUP_ID = X_SECURITY_GROUP_ID
240     and VIEW_APPLICATION_ID = X_VIEW_APPLICATION_ID
241     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
242     for update of LOOKUP_TYPE nowait;
243 
244 begin
245   open c;
246   fetch c into recinfo;
247   if (c%notfound) then
248     close c;
249     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
250     app_exception.raise_exception;
251   end if;
252   close c;
253   if (    (recinfo.APPLICATION_ID = X_APPLICATION_ID)
254       AND (recinfo.CUSTOMIZATION_LEVEL = X_CUSTOMIZATION_LEVEL)
255   ) then
256     null;
257   else
258     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
259     app_exception.raise_exception;
260   end if;
261 
262   for tlinfo in c1 loop
263     if (tlinfo.BASELANG = 'Y') then
264       if (    (tlinfo.MEANING = X_MEANING)
265           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
266                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
267       ) then
268         null;
269       else
270         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
271         app_exception.raise_exception;
272       end if;
273     end if;
274   end loop;
275   return;
276 end LOCK_ROW;
277 
278 procedure UPDATE_ROW (
279   X_LOOKUP_TYPE in VARCHAR2,
280   X_SECURITY_GROUP_ID in NUMBER,
281   X_VIEW_APPLICATION_ID in NUMBER,
282   X_APPLICATION_ID in NUMBER,
283   X_CUSTOMIZATION_LEVEL in VARCHAR2,
284   X_MEANING in VARCHAR2,
285   X_DESCRIPTION in VARCHAR2,
286   X_LAST_UPDATE_DATE in DATE,
287   X_LAST_UPDATED_BY in NUMBER,
288   X_LAST_UPDATE_LOGIN in NUMBER
289 ) is
290 
291 
292 begin
293   update FND_LOOKUP_TYPES set
294     APPLICATION_ID = X_APPLICATION_ID,
295     CUSTOMIZATION_LEVEL = X_CUSTOMIZATION_LEVEL,
296     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
297     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
298     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
299   where LOOKUP_TYPE = X_LOOKUP_TYPE
300   and SECURITY_GROUP_ID = X_SECURITY_GROUP_ID
301   and VIEW_APPLICATION_ID = X_VIEW_APPLICATION_ID;
302 
303   if (sql%notfound) then
304     raise no_data_found;
305   end if;
306 
307   update FND_LOOKUP_TYPES_TL set
308     MEANING = X_MEANING,
309     DESCRIPTION = X_DESCRIPTION,
310     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
311     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
312     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
313     SOURCE_LANG = userenv('LANG')
314   where LOOKUP_TYPE = X_LOOKUP_TYPE
315   and SECURITY_GROUP_ID = X_SECURITY_GROUP_ID
316   and VIEW_APPLICATION_ID = X_VIEW_APPLICATION_ID
317   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
318 
319   if (sql%notfound) then
320     raise no_data_found;
321   end if;
322 
323   begin
324   -- Calling WF_EVENT.RAISE per bug 3209508
325   -- Business Events need to be raised with any updates to the fnd lookups
326   -- Bug:6113227, added Lang Code parameter to key being used to raise the
327   -- workflow event.
328   select userenv('LANG')
329   into X_LANG
330   from dual;
331 
332   wf_event.raise(p_event_name => 'oracle.apps.fnd.lookup.type.update',
333                  p_event_key => X_LOOKUP_TYPE||':'||X_VIEW_APPLICATION_ID||
334                                 ':'||X_SECURITY_GROUP_ID||':'||X_LANG,
335                  p_event_data => NULL,
336                  p_parameters => NULL,
337                  p_send_date => Sysdate);
338   exception
339     when others then
340       null;
341   end;
342 
343 end UPDATE_ROW;
344 
345 procedure DELETE_ROW (
346   X_LOOKUP_TYPE in VARCHAR2,
347   X_SECURITY_GROUP_ID in NUMBER,
348   X_VIEW_APPLICATION_ID in NUMBER
349 ) is
350 begin
351   delete from FND_LOOKUP_TYPES_TL
352   where LOOKUP_TYPE = X_LOOKUP_TYPE
353   and SECURITY_GROUP_ID = X_SECURITY_GROUP_ID
354   and VIEW_APPLICATION_ID = X_VIEW_APPLICATION_ID;
355 
356   if (sql%notfound) then
357     raise no_data_found;
358   end if;
359 
360   delete from FND_LOOKUP_TYPES
361   where LOOKUP_TYPE = X_LOOKUP_TYPE
362   and SECURITY_GROUP_ID = X_SECURITY_GROUP_ID
363   and VIEW_APPLICATION_ID = X_VIEW_APPLICATION_ID;
364 
365   if (sql%notfound) then
366     raise no_data_found;
367   end if;
368 
369   begin
370   -- Calling WF_EVENT.RAISE per bug 3209508
371   -- Business Events need to be raised with any insert to the fnd lookups
372   -- Bug:6113227, added Lang Code parameter to key being used to raise the
373   -- workflow event.
374 
375   select userenv('LANG')
376   into X_LANG
377   from dual;
378 
379   wf_event.raise(p_event_name => 'oracle.apps.fnd.lookup.type.delete',
380                  p_event_key => X_LOOKUP_TYPE||':'||X_VIEW_APPLICATION_ID||
381                                 ':'||X_SECURITY_GROUP_ID||':'||X_LANG,
382                  p_event_data => NULL,
383                  p_parameters => NULL,
384                  p_send_date => Sysdate);
385   exception
386     when others then
387       null;
388   end;
389 end DELETE_ROW;
390 
391 procedure ADD_LANGUAGE
392 is
393 begin
394 /* Mar/19/03 requested by Ric Ginsberg */
395 /* The following delete and update statements are commented out */
396 /* as a quick workaround to fix the time-consuming table handler issue */
397 /* Eventually we'll need to turn them into a separate fix_language procedure */
398 /*
399 
400   delete from FND_LOOKUP_TYPES_TL T
401   where not exists
402     (select NULL
403     from FND_LOOKUP_TYPES B
404     where B.LOOKUP_TYPE = T.LOOKUP_TYPE
405     and B.SECURITY_GROUP_ID = T.SECURITY_GROUP_ID
406     and B.VIEW_APPLICATION_ID = T.VIEW_APPLICATION_ID
407     );
408 
409   update FND_LOOKUP_TYPES_TL T set (
410       MEANING,
411       DESCRIPTION
412     ) = (select
413       B.MEANING,
414       B.DESCRIPTION
415     from FND_LOOKUP_TYPES_TL B
416     where B.LOOKUP_TYPE = T.LOOKUP_TYPE
417     and B.SECURITY_GROUP_ID = T.SECURITY_GROUP_ID
418     and B.VIEW_APPLICATION_ID = T.VIEW_APPLICATION_ID
419     and B.LANGUAGE = T.SOURCE_LANG)
420   where (
421       T.LOOKUP_TYPE,
422       T.SECURITY_GROUP_ID,
423       T.VIEW_APPLICATION_ID,
424       T.LANGUAGE
425   ) in (select
426       SUBT.LOOKUP_TYPE,
427       SUBT.SECURITY_GROUP_ID,
428       SUBT.VIEW_APPLICATION_ID,
429       SUBT.LANGUAGE
430     from FND_LOOKUP_TYPES_TL SUBB, FND_LOOKUP_TYPES_TL SUBT
431     where SUBB.LOOKUP_TYPE = SUBT.LOOKUP_TYPE
432     and SUBB.SECURITY_GROUP_ID = SUBT.SECURITY_GROUP_ID
433     and SUBB.VIEW_APPLICATION_ID = SUBT.VIEW_APPLICATION_ID
434     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
435     and (SUBB.MEANING <> SUBT.MEANING
436       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
437       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
438       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
439   ))
440   -- ***** BEGIN NEW CLAUSE FOR UPDATE *****
441   and not exists
442     (select null
443     from FND_LOOKUP_TYPES_TL DUP
444     where DUP.VIEW_APPLICATION_ID = T.VIEW_APPLICATION_ID
445     and DUP.SECURITY_GROUP_ID = T.SECURITY_GROUP_ID
446     and DUP.LANGUAGE = T.LANGUAGE
447     and (DUP.MEANING) =
448       (select
449          B.MEANING
450        from FND_LOOKUP_TYPES_TL B
451        where B.LOOKUP_TYPE = T.LOOKUP_TYPE
452        and B.SECURITY_GROUP_ID = T.SECURITY_GROUP_ID
453        and B.VIEW_APPLICATION_ID = T.VIEW_APPLICATION_ID
454        and B.LANGUAGE = T.SOURCE_LANG));
455   -- ***** END NEW CLAUSE FOR UPDATE *****
456 
457   -- ***** NEW CODE FOR INSERT HERE *****
458   loop
459     update FND_LOOKUP_TYPES_TL set
460       MEANING = '@'||MEANING
461     where (
462          MEANING,
463          VIEW_APPLICATION_ID,
464          SECURITY_GROUP_ID,
465          LANGUAGE) in
469          B.SECURITY_GROUP_ID,
466       (select
467          B.MEANING,
468          B.VIEW_APPLICATION_ID,
470          L.LANGUAGE_CODE
471        from FND_LOOKUP_TYPES_TL B, FND_LANGUAGES L
472        where L.INSTALLED_FLAG in ('I', 'B')
473        and B.LANGUAGE = userenv('LANG')
474        and not exists
475          (select NULL
476          from FND_LOOKUP_TYPES_TL T
477          where T.LOOKUP_TYPE = B.LOOKUP_TYPE
478          and T.SECURITY_GROUP_ID = B.SECURITY_GROUP_ID
479          and T.VIEW_APPLICATION_ID = B.VIEW_APPLICATION_ID
480          and T.LANGUAGE = L.LANGUAGE_CODE));
481 
482      exit when SQL%ROWCOUNT = 0;
483    end loop;
484   -- ***** END CODE FOR INSERT HERE *****
485 */
486 
487   insert into FND_LOOKUP_TYPES_TL (
488     LOOKUP_TYPE,
489     SECURITY_GROUP_ID,
490     VIEW_APPLICATION_ID,
491     MEANING,
492     DESCRIPTION,
493     CREATED_BY,
494     CREATION_DATE,
495     LAST_UPDATED_BY,
496     LAST_UPDATE_DATE,
497     LAST_UPDATE_LOGIN,
498     LANGUAGE,
499     SOURCE_LANG
500   ) select
501     B.LOOKUP_TYPE,
502     B.SECURITY_GROUP_ID,
503     B.VIEW_APPLICATION_ID,
504     B.MEANING,
505     B.DESCRIPTION,
506     B.CREATED_BY,
507     B.CREATION_DATE,
508     B.LAST_UPDATED_BY,
509     B.LAST_UPDATE_DATE,
510     B.LAST_UPDATE_LOGIN,
511     L.LANGUAGE_CODE,
512     B.SOURCE_LANG
513   from FND_LOOKUP_TYPES_TL B, FND_LANGUAGES L
514   where L.INSTALLED_FLAG in ('I', 'B')
515   and B.LANGUAGE = userenv('LANG')
516   and not exists
517     (select NULL
518     from FND_LOOKUP_TYPES_TL T
519     where T.LOOKUP_TYPE = B.LOOKUP_TYPE
520     and T.SECURITY_GROUP_ID = B.SECURITY_GROUP_ID
521     and T.VIEW_APPLICATION_ID = B.VIEW_APPLICATION_ID
522     and T.LANGUAGE = L.LANGUAGE_CODE);
523 end ADD_LANGUAGE;
524 
525 procedure LOAD_ROW (
526   X_VIEW_APPSNAME               IN VARCHAR2,
527   X_LOOKUP_TYPE 		IN VARCHAR2,
528   X_APPLICATION_SHORT_NAME      IN VARCHAR2,
529   X_CUSTOMIZATION_LEVEL         IN VARCHAR2,
530   X_OWNER                       IN VARCHAR2,
531   X_LAST_UPDATE_DATE            IN VARCHAR2,
532   X_MEANING                     IN VARCHAR2,
533   X_DESCRIPTION                 IN VARCHAR2,
534   X_SECURITY_GROUP              IN VARCHAR2,
535   X_CUSTOM_MODE                 IN VARCHAR2)
536 is
537   secgrp_id number;
538   view_appid number;
539   owner_appid number;
540   row_id varchar2(64);
541   f_luby    number;  -- entity owner in file
542   f_ludate  date;    -- entity update date in file
543   db_luby   number;  -- entity owner in db
544   db_ludate date;    -- entity update date in db
545 
546   cursor secgrp_curs is
547     select SG.SECURITY_GROUP_ID
548     from FND_LOOKUP_TYPES LT, FND_SECURITY_GROUPS SG
549     where LT.LOOKUP_TYPE = x_lookup_type
550     and LT.VIEW_APPLICATION_ID = view_appid
551     and LT.SECURITY_GROUP_ID = SG.SECURITY_GROUP_ID
552     and SG.SECURITY_GROUP_KEY like nvl(x_security_group, 'STANDARD');
553 
554 begin
555 
556   select APPLICATION_ID
557   into view_appid
558   from FND_APPLICATION
559   where APPLICATION_SHORT_NAME = x_view_appsname;
560 
561   select APPLICATION_ID
562   into owner_appid
563   from FND_APPLICATION
564   where APPLICATION_SHORT_NAME = x_application_short_name;
565 
566   -- Translate owner to file_last_updated_by
567   f_luby := fnd_load_util.owner_id(x_owner);
568 
569   -- Translate char last_update_date to date
570   f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
571 
572   open secgrp_curs;
573   fetch secgrp_curs into secgrp_id;
574 
575   if (secgrp_curs%notfound) then
576     -- No matching rows in any security group.
577     -- Insert a single row in requested security group
578     select SECURITY_GROUP_ID
579     into secgrp_id
580     from FND_SECURITY_GROUPS
581     where SECURITY_GROUP_KEY = nvl(x_security_group, 'STANDARD');
582 
583     Fnd_Lookup_Types_Pkg.Insert_Row(
584       x_rowid               => row_id,
585       x_lookup_type         => x_lookup_type,
586       x_security_group_id   => secgrp_id,
587       x_view_application_id => view_appid,
588       x_application_id      => owner_appid,
589       x_customization_level => x_customization_level,
590       x_meaning             => x_meaning,
591       x_description         => x_description,
592       x_creation_date       => f_ludate,
593       x_created_by          => f_luby,
594       x_last_update_date    => f_ludate,
595       x_last_updated_by     => f_luby,
596       x_last_update_login   => 0);
597   else
598     loop
599       select LAST_UPDATED_BY, LAST_UPDATE_DATE
600       into db_luby, db_ludate
601       from FND_LOOKUP_TYPES_VL
602       where LOOKUP_TYPE = x_lookup_type
603       and SECURITY_GROUP_ID = secgrp_id
604       and VIEW_APPLICATION_ID = view_appid;
605 
606       if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
607                                     db_ludate, X_CUSTOM_MODE)) then
608         -- Update row in all matching security groups.
609         Fnd_Lookup_Types_Pkg.Update_Row(
613           x_application_id      => owner_appid,
610           x_lookup_type         => x_lookup_type,
611           x_security_group_id   => secgrp_id,
612           x_view_application_id => view_appid,
614           x_customization_level => x_customization_level,
615           x_meaning             => x_meaning,
616           x_description         => x_description,
617           x_last_update_date    => f_ludate,
618           x_last_updated_by     => f_luby,
619           x_last_update_login   => 0);
620       end if;
621 
622       fetch secgrp_curs into secgrp_id;
623       exit when secgrp_curs%notfound;
624     end loop;
625   end if;
626 
627   close secgrp_curs;
628 
629 end LOAD_ROW;
630 
631 end FND_LOOKUP_TYPES_PKG;