DBA Data[Home] [Help]

PACKAGE BODY: APPS.FND_PROFILE_CAT_OPTIONS_PKG

Source


1 package body FND_PROFILE_CAT_OPTIONS_PKG as
2 /* $Header: FNDPRCTB.pls 120.7 2006/09/21 10:28:13 stadepal noship $ */
3 procedure INSERT_ROW (
4   X_ROWID in out nocopy VARCHAR2,
5   X_PROFILE_OPTION_ID in NUMBER,
6   X_CATEGORY_NAME in VARCHAR2,
7   X_PROFILE_OPTION_APPLICATION_I in NUMBER,
8   X_DISPLAY_SEQUENCE in NUMBER,
9   X_DISPLAY_TYPE in VARCHAR2,
10   X_CREATION_DATE in DATE,
11   X_CREATED_BY in NUMBER,
12   X_LAST_UPDATE_DATE in DATE,
13   X_LAST_UPDATED_BY in NUMBER,
14   X_LAST_UPDATE_LOGIN in NUMBER,
15   X_APPLICATION_ID in NUMBER
16 ) is
17   cursor C is select ROWID from FND_PROFILE_CAT_OPTIONS
18     where PROFILE_OPTION_ID = X_PROFILE_OPTION_ID
19     and CATEGORY_NAME = upper(X_CATEGORY_NAME)
20     and PROFILE_OPTION_APPLICATION_ID = X_PROFILE_OPTION_APPLICATION_I
21     and APPLICATION_ID = X_APPLICATION_ID
22     ;
23 begin
24   insert into FND_PROFILE_CAT_OPTIONS (
25     PROFILE_OPTION_APPLICATION_ID,
26     PROFILE_OPTION_ID,
27     CATEGORY_NAME,
28     APPLICATION_ID,
29     DISPLAY_SEQUENCE,
30     DISPLAY_TYPE,
31     CREATION_DATE,
32     CREATED_BY,
33     LAST_UPDATE_DATE,
34     LAST_UPDATED_BY,
35     LAST_UPDATE_LOGIN
36   ) values (
37     X_PROFILE_OPTION_APPLICATION_I,
38     X_PROFILE_OPTION_ID,
39     upper(X_CATEGORY_NAME),
40     X_APPLICATION_ID,
41     X_DISPLAY_SEQUENCE,
42     X_DISPLAY_TYPE,
43     X_CREATION_DATE,
44     X_CREATED_BY,
45     X_LAST_UPDATE_DATE,
46     X_LAST_UPDATED_BY,
47     X_LAST_UPDATE_LOGIN
48   );
49 
50 /******************Commented. Since TL table is dropped
51   insert into FND_PROFILE_CAT_OPTIONS_TL (
52     PROFILE_OPTION_APPLICATION_ID,
53     PROFILE_OPTION_ID,
54     CATEGORY_NAME,
55     APPLICATION_ID,
56     CREATED_BY,
57     CREATION_DATE,
58     LAST_UPDATED_BY,
59     LAST_UPDATE_DATE,
60     LAST_UPDATE_LOGIN,
61     DESCRIPTION_OVERRIDE,
62     LANGUAGE,
63     SOURCE_LANG
64   ) select
65     X_PROFILE_OPTION_APPLICATION_I,
66     X_PROFILE_OPTION_ID,
67     X_CATEGORY_NAME,
68     X_APPLICATION_ID,
69     X_CREATED_BY,
70     X_CREATION_DATE,
71     X_LAST_UPDATED_BY,
72     X_LAST_UPDATE_DATE,
73     X_LAST_UPDATE_LOGIN,
74     X_DESCRIPTION_OVERRIDE,
75     L.LANGUAGE_CODE,
76     userenv('LANG')
77   from FND_LANGUAGES L
78   where L.INSTALLED_FLAG in ('I', 'B')
79   and not exists
80     (select NULL
81     from FND_PROFILE_CAT_OPTIONS_TL T
82     where T.PROFILE_OPTION_ID = X_PROFILE_OPTION_ID
83     and T.CATEGORY_NAME = X_CATEGORY_NAME
84     and T.PROFILE_OPTION_APPLICATION_ID = X_PROFILE_OPTION_APPLICATION_I
85     and T.APPLICATION_ID = X_APPLICATION_ID
86     and T.LANGUAGE = L.LANGUAGE_CODE);
87   ***********************************/
88 
89   open c;
90   fetch c into X_ROWID;
91   if (c%notfound) then
92     close c;
93     raise no_data_found;
94   end if;
95   close c;
96 
97 end INSERT_ROW;
98 
99 procedure LOCK_ROW (
100   X_PROFILE_OPTION_ID in NUMBER,
101   X_CATEGORY_NAME in VARCHAR2,
102   X_PROFILE_OPTION_APPLICATION_I in NUMBER,
103   X_DISPLAY_SEQUENCE in NUMBER,
104   X_DISPLAY_TYPE in VARCHAR2,
105   X_APPLICATION_ID in NUMBER
106 ) is
107   cursor c is select
108       DISPLAY_SEQUENCE,
109       DISPLAY_TYPE
110     from FND_PROFILE_CAT_OPTIONS
111     where PROFILE_OPTION_ID = X_PROFILE_OPTION_ID
112     and CATEGORY_NAME = upper(X_CATEGORY_NAME)
113     and PROFILE_OPTION_APPLICATION_ID = X_PROFILE_OPTION_APPLICATION_I
114     and APPLICATION_ID = X_APPLICATION_ID
115     for update of PROFILE_OPTION_ID nowait;
116   recinfo c%rowtype;
117 
118 /******************Commented. Since TL table is dropped
119   cursor c1 is select
120       DESCRIPTION_OVERRIDE,
121       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
122     from FND_PROFILE_CAT_OPTIONS_TL
123     where PROFILE_OPTION_ID = X_PROFILE_OPTION_ID
124     and CATEGORY_NAME = X_CATEGORY_NAME
125     and PROFILE_OPTION_APPLICATION_ID = X_PROFILE_OPTION_APPLICATION_I
126     and APPLICATION_ID = X_APPLICATION_ID
127     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
128     for update of PROFILE_OPTION_ID nowait;
129 ***********************/
130 begin
131   open c;
132   fetch c into recinfo;
133   if (c%notfound) then
134     close c;
135     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
136     app_exception.raise_exception;
137   end if;
138   close c;
139   if (    ((recinfo.DISPLAY_SEQUENCE = X_DISPLAY_SEQUENCE)
140            OR ((recinfo.DISPLAY_SEQUENCE is null) AND (X_DISPLAY_SEQUENCE is null)))
141       AND ((recinfo.DISPLAY_TYPE = X_DISPLAY_TYPE)
142            OR ((recinfo.DISPLAY_TYPE is null) AND (X_DISPLAY_TYPE is null)))
143   ) then
144     null;
145   else
146     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
147     app_exception.raise_exception;
148   end if;
149 
150 /******************Commented. Since TL table is dropped
151   for tlinfo in c1 loop
152     if (tlinfo.BASELANG = 'Y') then
153       if (    ((tlinfo.DESCRIPTION_OVERRIDE = X_DESCRIPTION_OVERRIDE)
154                OR ((tlinfo.DESCRIPTION_OVERRIDE is null) AND (X_DESCRIPTION_OVERRIDE is null)))
155       ) then
156         null;
157       else
158         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
159         app_exception.raise_exception;
160       end if;
161     end if;
162   end loop;
163 ***********************/
164   return;
165 end LOCK_ROW;
166 
167 procedure UPDATE_ROW (
168   X_PROFILE_OPTION_ID in NUMBER,
169   X_CATEGORY_NAME in VARCHAR2,
170   X_PROFILE_OPTION_APPLICATION_I in NUMBER,
171   X_DISPLAY_SEQUENCE in NUMBER,
172   X_DISPLAY_TYPE in VARCHAR2,
173   X_LAST_UPDATE_DATE in DATE,
174   X_LAST_UPDATED_BY in NUMBER,
175   X_LAST_UPDATE_LOGIN in NUMBER,
176   X_APPLICATION_ID in NUMBER
177 ) is
178 begin
179   update FND_PROFILE_CAT_OPTIONS set
180     DISPLAY_SEQUENCE = X_DISPLAY_SEQUENCE,
181     DISPLAY_TYPE = X_DISPLAY_TYPE,
182     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
183     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
184     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
185   where PROFILE_OPTION_ID = X_PROFILE_OPTION_ID
186   and CATEGORY_NAME = upper(X_CATEGORY_NAME)
187   and PROFILE_OPTION_APPLICATION_ID = X_PROFILE_OPTION_APPLICATION_I
188   and APPLICATION_ID = X_APPLICATION_ID;
189 
190   if (sql%notfound) then
191     raise no_data_found;
192   end if;
193 
194 /******************Commented. Since TL table is dropped
195   update FND_PROFILE_CAT_OPTIONS_TL set
196     DESCRIPTION_OVERRIDE = X_DESCRIPTION_OVERRIDE,
197     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
198     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
199     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
200     SOURCE_LANG = userenv('LANG')
201   where PROFILE_OPTION_ID = X_PROFILE_OPTION_ID
202   and CATEGORY_NAME = X_CATEGORY_NAME
203   and PROFILE_OPTION_APPLICATION_ID = X_PROFILE_OPTION_APPLICATION_I
204   and APPLICATION_ID = X_APPLICATION_ID
205   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
206 
207   if (sql%notfound) then
208     raise no_data_found;
209   end if;
210 ***********************/
211 end UPDATE_ROW;
212 
213 procedure DELETE_ROW (
214   X_PROFILE_OPTION_ID in NUMBER,
215   X_CATEGORY_NAME in VARCHAR2,
216   X_PROFILE_OPTION_APPLICATION_I in NUMBER,
217   X_APPLICATION_ID in NUMBER
218 ) is
219 begin
220 /******************Commented. Since TL table is dropped
221   delete from FND_PROFILE_CAT_OPTIONS_TL
222   where PROFILE_OPTION_ID = X_PROFILE_OPTION_ID
223   and CATEGORY_NAME = X_CATEGORY_NAME
224   and PROFILE_OPTION_APPLICATION_ID = X_PROFILE_OPTION_APPLICATION_I
225   and APPLICATION_ID = X_APPLICATION_ID;
226 
227   if (sql%notfound) then
228     raise no_data_found;
229   end if;
230 ***********************/
231 
232   delete from FND_PROFILE_CAT_OPTIONS
233   where PROFILE_OPTION_ID = X_PROFILE_OPTION_ID
234   and CATEGORY_NAME = upper(X_CATEGORY_NAME)
235   and PROFILE_OPTION_APPLICATION_ID = X_PROFILE_OPTION_APPLICATION_I
236   and APPLICATION_ID = X_APPLICATION_ID;
237 
238   if (sql%notfound) then
239     raise no_data_found;
240   end if;
241 end DELETE_ROW;
242 
243 /*** DEPRECATED, DEPRECATED, DEPRECATED  ***/
244 procedure ADD_LANGUAGE
245 is
246 begin
247   /** deleted all the code instead of commenting the ADD_LANGUAGE to remove
248    ** the dependency between this change and FNDNLINS.sql which has call to
249    ** Fnd_profile_cat_options_pkg.add_language. If the api is commented,
250    ** then this change requires a change in FNDNLINS.sql.
251    **/
252   null;
253 end ADD_LANGUAGE;
254 
255 /******************Commented ADD_LANGUAGE and TRANSLATE_ROW.
256  ******************Since TL table is dropped.
257  **/
258 /*****
259 procedure TRANSLATE_ROW (
260   X_PROFILE_OPTION_APP_NAME in      VARCHAR2,
261   X_PROFILE_OPTION_NAME 	 in      VARCHAR2,
262   X_CATEGORY_NAME 	   in      VARCHAR2,
263   X_APPLICATION_SHORT_NAME   in      VARCHAR2,
264   X_DESCRIPTION_OVERRIDE         in      VARCHAR2,
265   X_CUSTOM_MODE                 in      VARCHAR2,
266   X_OWNER                       in      VARCHAR2,
267   X_LAST_UPDATE_DATE            in      VARCHAR2)
268 is
269   f_luby    number;  -- entity owner in file
270   f_ludate  date;    -- entity update date in file
271   db_luby   number;  -- entity owner in db
272   db_ludate date;    -- entity update date in db
273   prof_app_id number;
274   prof_id number;
275   app_id number;
276 begin
277 
278   select application_id into app_id
279       from fnd_application
280       where application_short_name = X_APPLICATION_SHORT_NAME;
281 
282   select profile_option_id, application_id into prof_id, prof_app_id
283       from fnd_profile_options
284       where profile_option_name = X_PROFILE_OPTION_NAME;
285 
286   -- Translate owner to file_last_updated_by
287   f_luby := fnd_load_util.owner_id(x_owner);
288 
289   -- Translate char last_update_date to date
290   f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
291 
292   begin
293     select LAST_UPDATED_BY, LAST_UPDATE_DATE
294     into db_luby, db_ludate
295     from FND_PROFILE_CAT_OPTIONS_TL
296     where PROFILE_OPTION_APPLICATION_ID = prof_app_id
297     and PROFILE_OPTION_ID = prof_id
298     and CATEGORY_NAME = X_CATEGORY_NAME
299     and APPLICATION_ID = app_id
300     and LANGUAGE = userenv('LANG');
301 
302     if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
303                                   db_ludate, X_CUSTOM_MODE)) then
304 
305         update FND_PROFILE_CAT_OPTIONS_TL set
306                DESCRIPTION_OVERRIDE = X_DESCRIPTION_OVERRIDE,
307                LAST_UPDATE_DATE = f_ludate,
308                LAST_UPDATED_BY = f_luby,
309                LAST_UPDATE_LOGIN = f_luby,
310                SOURCE_LANG = userenv('LANG')
311                where PROFILE_OPTION_APPLICATION_ID = prof_app_id
312                and PROFILE_OPTION_ID = prof_id
313                and CATEGORY_NAME = X_CATEGORY_NAME
314                and APPLICATION_ID = app_id
315                and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
316     end if;
317   exception
318     when no_data_found then
319       null;
320   end;
321 end TRANSLATE_ROW;
322 ***********************/
323 
324 /*** Bug 5060938. Added default param X_PROF_APPL_SHORT_NAME to LOAD_ROW api.
325  *** This is required to create a Dummy profile option in Fnd_Profile_Options
326  *** table when category ldt is uploaded before it's corresponding profile ldt
327  *** to handle No-Data-Found issues.
328  ***/
329 procedure LOAD_ROW (
330   X_PROFILE_OPTION_NAME		   in      VARCHAR2,
331   X_CATEGORY_NAME 		   in      VARCHAR2,
332   X_DISPLAY_SEQUENCE 		   in      VARCHAR2,
333   X_DISPLAY_TYPE 		   in      VARCHAR2,
334   X_OWNER                          in      VARCHAR2,
335   X_CUSTOM_MODE                    in      VARCHAR2,
336   X_LAST_UPDATE_DATE               in      VARCHAR2,
337   X_APPLICATION_SHORT_NAME         in      VARCHAR2,
338   X_PROF_APPL_SHORT_NAME           in      VARCHAR2 default NULL)
339 is
340   row_id    varchar2(64);
341   prof_app_id    number;
342   prof_id   number;
343   f_luby    number;  -- entity owner in file
344   f_ludate  date;    -- entity update date in file
345   db_luby   number;  -- entity owner in db
346   db_ludate date;    -- entity update date in db
347   app_id    number;
348   retVal    number;
349 
350  begin
351 
352   select application_id into app_id
353 	from fnd_application
354         where application_short_name = X_APPLICATION_SHORT_NAME;
355 
356   -- Translate owner to file_last_updated_by
357   f_luby := fnd_load_util.owner_id(x_owner);
358 
359   -- Translate char last_update_date to date
360   f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
361 
362   begin
363      select profile_option_id, application_id into prof_id, prof_app_id
364             from FND_PROFILE_OPTIONS
365             where PROFILE_OPTION_NAME = X_PROFILE_OPTION_NAME;
366   exception
367    when no_data_found then
368      /* The profile option doesn't yet exist so create a dummy profile*/
369      /* to serve as a temporary placeholder.  This solves bug */
370      /* 5060938 about uploading category ldt before it's related profiles */
371      /* hadn't yet been uploaded.  This dummy profile will end up getting */
372      /* updated with the real profile information later on during */
373      /* the load when the real profile data gets uploaded. */
374 
375      /********** WARNING !!!!!!!!!!!! *********/
376      /* Here fnd_profile_options_pkg.INSERT_ROW() is called instead of
377       * fnd_profile_options_pkg.LOAD_ROW() since in this case there's an extra
378       * processing for the values passed to Last_Updated_By and Last_Update_Date
379 
380       * In this case, the Creation_Date should be set to X_LAST_UPDATE_DATE
381       * whereas the Last_Update_Date should be set to FND_API.G_MISS_DATE.
382       * Similarly, Created_By is set to OWNER  and Last_Updated_By to 'SEED'/1.
383       * This is to ensure that, 'fnd_load_util.upload_test()' succeeds for this
384       * dummy row and consequently this Dummy profile definition always gets
385       * updated with the actual definition when the profile ldt shipping the
386       * right definition is uploaded.
387       */
388 
389        select fnd_profile_options_s.nextval
390        into prof_id
391        from dual;
392 
393        /* If X_PROF_APPL_SHORT_NAME is not passed then profile is created with
394         * the same application as that of it's category.
395         */
396 
397        select application_id into prof_app_id
398        from   fnd_application
399        where  application_short_name = nvl(X_PROF_APPL_SHORT_NAME, X_APPLICATION_SHORT_NAME);
400 
401        begin
402          fnd_profile_options_pkg.insert_row (
403             x_rowid =>                    row_id,
404             x_profile_option_name =>      X_PROFILE_OPTION_NAME,
405             x_application_id =>           prof_app_id,
406             x_profile_option_id =>        prof_id,
407             x_write_allowed_flag =>       'N',
408             x_read_allowed_flag =>        'N',
409             x_user_changeable_flag =>     'N',
410             x_user_visible_flag =>        'N',
411             x_site_enabled_flag =>        'N',
412             x_site_update_allowed_flag => 'N',
413             x_app_enabled_flag =>         'N',
414             x_app_update_allowed_flag =>  'N',
415             x_resp_enabled_flag =>        'N',
416             x_resp_update_allowed_flag => 'N',
417             x_user_enabled_flag =>        'N',
418             x_user_update_allowed_flag => 'N',
419             x_start_date_active =>        FND_API.G_MISS_DATE,
420             x_sql_validation =>           NULL,
421             x_end_date_active =>          FND_API.G_MISS_DATE,
422             x_user_profile_option_name => X_PROFILE_OPTION_NAME,
423             x_description =>              NULL,
424             x_creation_date =>            f_ludate,
425             x_created_by =>               f_luby,
426             x_last_update_date =>         FND_API.G_MISS_DATE,
427             x_last_updated_by =>          fnd_load_util.owner_id('SEED'),
428             x_last_update_login =>        0,
429             x_hierarchy_type =>		'SECURITY',
430             x_server_enabled_flag =>      'N',
431             x_server_update_allowed_flag => 'N',
432             x_org_enabled_flag => 'N',
433             x_org_update_allowed_flag => 'N',
434             x_serverresp_enabled_flag =>    'N',
435             x_serverresp_upd_allow_fl =>    'N');
436        exception
437         when dup_val_on_index then
438         -- Bug 5453931.
439         -- It means actual profile is already inserted by another ldt parallely.
440         -- So ignore creation of this dummy profile and get the
441         -- Profile_Option_Id and Application_Id of the real profile option from
442         -- Fnd_Profile_Options table.
443             select profile_option_id, application_id
444             into prof_id, prof_app_id
445             from FND_PROFILE_OPTIONS
446             where PROFILE_OPTION_NAME = X_PROFILE_OPTION_NAME;
447        end;
448   end;
449 
450   begin
451       select 1 into retVal
452             from FND_PROFILE_CATS
453             where NAME = X_CATEGORY_NAME
454             and   APPLICATION_ID = app_id;
455   exception
456   when no_data_found then
457     -- Bug 5060938.
458     -- While uploading profile ldt (with link info), the referenced category
459     -- is not yet uploaded. Hence postpone the upload of this category->option
460     -- link info till the category ldt with the definition for this category
461     -- and this link info is uploaded.
462 
463    /********** WARNING !!!!!!!!!!!! *********/
464    /* Placeholder/Stub needs to be created only for the missing profiles when
465     * uploading categories. This is not required for this case (missing category
466     * when uploading profiles).
467     * The main reason for doing this way is, for backward compatibility.
468     * The profile ldt's that were extracted with the default behaviour of
469     * old 'afscprof.lct' (<= (115.50=120.10)) will not have profile->category
470     * link information. So while uploading the category ldt, IF upload of
471     * category->option link info is skipped for the missing profiles THEN
472     * we can never upload the above information(if profile ldt's were
473     * extracted with default behaviour of old afscprof.lct). It's equivalent to
474     * loosing this information.
475 
476     * We don't have any issues if we skip the upload of this link info for the
477     * missing category while uploading the profile ldt. Because this info
478     * is always available in the category ldt.
479 
480     * NOTE: The new version afscprof.lct(115.51=120.11) always extracts the
481     * profile->category information. So, if profiles are re-extracted with
485 
482     * the latest version of 'afscprof.lct' then by default they pick up
483     * profile->category information also.
484     */
486     return;
487   end;
488 
489   begin
490     select LAST_UPDATED_BY, LAST_UPDATE_DATE
491     into db_luby, db_ludate
492     from FND_PROFILE_CAT_OPTIONS
493     where PROFILE_OPTION_APPLICATION_ID = prof_app_id
494     and PROFILE_OPTION_ID = prof_id
495     and CATEGORY_NAME = upper(X_CATEGORY_NAME)
496     and APPLICATION_ID = app_id;
497 
498     if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
499                                   db_ludate, X_CUSTOM_MODE)) then
500 
501 	FND_PROFILE_CAT_OPTIONS_PKG.UPDATE_ROW (
502            	X_PROFILE_OPTION_APPLICATION_I => prof_app_id,
503   		X_PROFILE_OPTION_ID => prof_id,
504   		X_CATEGORY_NAME => X_CATEGORY_NAME,
505   		X_APPLICATION_ID => app_id,
506   		X_DISPLAY_SEQUENCE => X_DISPLAY_SEQUENCE,
507   		X_DISPLAY_TYPE => X_DISPLAY_TYPE,
508   		X_LAST_UPDATE_DATE => f_ludate,
509             X_LAST_UPDATED_BY => f_luby,
510   		X_LAST_UPDATE_LOGIN => f_luby);
511    end if;
512   exception
513      when no_data_found then
514          begin
515 	    FND_PROFILE_CAT_OPTIONS_PKG.INSERT_ROW (
516         	   X_ROWID => row_id,
517                    X_PROFILE_OPTION_APPLICATION_I => prof_app_id,
518      		   X_PROFILE_OPTION_ID => prof_id,
519   		   X_CATEGORY_NAME => X_CATEGORY_NAME,
520   		   X_APPLICATION_ID => app_id,
521   		   X_DISPLAY_SEQUENCE => X_DISPLAY_SEQUENCE,
522   		   X_DISPLAY_TYPE => X_DISPLAY_TYPE,
523   		   X_CREATION_DATE => f_ludate,
524   		   X_CREATED_BY => f_luby,
525                    X_LAST_UPDATE_DATE => f_ludate,
526                    X_LAST_UPDATED_BY => f_luby,
527                    X_LAST_UPDATE_LOGIN => f_luby);
528          exception
529            when dup_val_on_index then
530            -- Bug 5453931.
531            -- It means profile->category link information is already inserted
532            -- by another ldt parallely. For a given profile->category link,
533            -- since the data for this link info is always same from different
534            -- ldt's, we can ignore this dup_val_on_index exception while
535            -- inserting profile->category link data.
536            -- (Only Display_Sequence and Display_Type fields are updateable
537            --  in Fnd_Profile_Cat_Options table. But there is no UI feature
538            --  to update the above updateable columns. Hence data in
539            --  different ldt's is always same for this Fnd_Profile_Cat_Options
540            --  entity)
541 
542                null;
543          end;
544   end;
545 end LOAD_ROW;
546 
547 end FND_PROFILE_CAT_OPTIONS_PKG;