DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEU_CTRL_PVT

Source


1 PACKAGE BODY IEU_CTRL_PVT AS
2 /* $Header: IEUVCTLB.pls 120.1 2005/07/14 15:20:05 appldev ship $ */
3 ---------------------------------------------------------------------
4 ------------------------------------------------------------------------
5 --procedure for retrieving a IEU_CTRL_MESSAGE_OBJ table based on
6 --some criterion
7 ------------------------------------------------------------------------
8 ------------------------------------------------------------------------
9 PROCEDURE GET_CTRL_MESSAGES
10  (
11    P_RESOURCE_ID   IN NUMBER
12   ,P_STATUS_ID     IN NUMBER
13   ,P_AGE_FILTER    IN NUMBER
14   ,X_CTRL_MESSAGES_NST OUT NOCOPY SYSTEM.IEU_CTRL_MESSAGES_NST
15  )
16  AS
17  BEGIN
18     GET_CTRL_MESSAGES_T( P_RESOURCE_ID, P_STATUS_ID,
19                          0, P_AGE_FILTER,
20                          X_CTRL_MESSAGES_NST );
21  END GET_CTRL_MESSAGES;
22 
23 
24 PROCEDURE GET_CTRL_MESSAGES_T
25  (
26    P_RESOURCE_ID IN NUMBER,
27    P_STATUS_ID   IN NUMBER,
28    P_START_FILTER  IN NUMBER,
29    P_END_FILTER  IN NUMBER,
30    X_CTRL_MESSAGES_NST OUT NOCOPY SYSTEM.IEU_CTRL_MESSAGES_NST
31  )
32  AS
33    l_timediff NUMBER;
34 
35    CURSOR msg_cursor is
36      SELECT *
37      FROM
38        IEU_MSG_MESSAGES message_table
39      WHERE
40        message_table.RESOURCE_TYPE = 'RS_INDIVIDUAL' AND
41        message_table.RESOURCE_ID   =  P_RESOURCE_ID AND
42        message_table.STATUS_ID     <= P_STATUS_ID;
43  BEGIN
44 
45    --parameter check
46    IF ( ( P_RESOURCE_ID IS NULL ) OR
47         ( P_STATUS_ID   IS NULL ) OR
48         ( P_END_FILTER  IS NULL ) )
49    THEN
50      RAISE_APPLICATION_ERROR
51         (
52           -20000
53          ,'P_RESOURCE_ID, P_STATUS_ID OR P_START_FILTER invalid values' ||
54             '(P_RESOURCE_ID = '    || P_RESOURCE_ID ||
55           ') (P_STATUS_ID = '  || P_STATUS_ID ||
56           ') (P_END_FILTER = ' || P_END_FILTER ||')'
57          ,TRUE
58         );
59    END IF;
60 
61    IF ( ( P_END_FILTER < 0 ) OR
62         ( P_START_FILTER  < 0 ) )
63    THEN
64      RAISE_APPLICATION_ERROR
65         (
66           -20000
67          ,'P_START_FILTER OR P_END_FILTER invalid values' ||
68             '(P_START_FILTER = '    || P_START_FILTER ||
69           ') (P_END_FILTER = ' || P_END_FILTER ||')'
70          ,TRUE
71         );
72    END IF;
73 
74    X_CTRL_MESSAGES_NST := SYSTEM.IEU_CTRL_MESSAGES_NST();
75 
76    FOR msg_val IN msg_cursor
77    LOOP
78      --get the difference in the current time and the message create
79      --time and convert to minutes because the parameters are in minutes
80      l_timediff := 60*24*( SYSDATE - MSG_VAL.CREATION_DATE );
81 
82      IF ( ( l_timediff >= P_START_FILTER AND
83             l_timediff <= P_END_FILTER )
84           OR
85           ( P_START_FILTER = 0 AND
86             P_END_FILTER = 0 ) )
87      THEN
88        X_CTRL_MESSAGES_NST.extend( 1 );
89        X_CTRL_MESSAGES_NST( X_CTRL_MESSAGES_NST.LAST ) :=
90          SYSTEM.IEU_CTRL_MESSAGE_OBJ( msg_val.MESSAGE_ID,  msg_val.CREATION_DATE,
91                                msg_val.LAST_UPDATE_DATE, msg_val.APPLICATION_ID,                               msg_val.RESOURCE_TYPE, msg_val.RESOURCE_ID,
92                                msg_val.STATUS_ID, msg_val.TITLE,
93                                msg_val.BODY, msg_val.WORKITEM_OBJ_CODE,
94                                msg_val.WORKITEM_PK_ID );
95      END IF;
96 
97    END LOOP;
98 
99    EXCEPTION
100      WHEN OTHERS THEN
101        RAISE;
102 
103  END GET_CTRL_MESSAGES_T;
104 ------------------------------------------------------------------------
105 ------------------------------------------------------------------------
106 --procedure for saving a IEU_CTRL_MESSAGE_OBJ table based on
107 --some the message id and the new status
108 ------------------------------------------------------------------------
109 ------------------------------------------------------------------------
110 PROCEDURE SAVE_CTRL_MESSAGES
111  (
112    P_CTRL_MESSAGES_NST IN SYSTEM.IEU_CTRL_MESSAGES_NST
113  )
114  AS
115  BEGIN
116 
117    --parameter check
118    IF ( P_CTRL_MESSAGES_NST IS NULL )
119    THEN
120      RAISE_APPLICATION_ERROR
121         (
122           -20000
123          ,'P_CTRL_MESSAGES_NST cannot be NULL'
124          ,TRUE
125         );
126    END IF;
127 
128    --save the updated message
129    FOR i IN P_CTRL_MESSAGES_NST.FIRST..P_CTRL_MESSAGES_NST.LAST
130    LOOP
131     UPDATE IEU_MSG_MESSAGES SET
132         IEU_MSG_MESSAGES.STATUS_ID = P_CTRL_MESSAGES_NST(i).STATUS_ID,
133         IEU_MSG_MESSAGES.LAST_UPDATE_DATE = SYSDATE
134       WHERE P_CTRL_MESSAGES_NST(i).MESSAGE_ID =
135         IEU_MSG_MESSAGES.MESSAGE_ID;
136    END LOOP;
137 
138    EXCEPTION
139      WHEN OTHERS THEN
140        RAISE;
141 
142  END SAVE_CTRL_MESSAGES;
143 
144 
145 
146 ------------------------------------------------------------------------
147 ------------------------------------------------------------------------
148 --utility procedure for setting the lang info whereever required
149 ------------------------------------------------------------------------
150 ------------------------------------------------------------------------
151 PROCEDURE SET_LANG_INFO
152  (
153    P_USER_LANG     IN  VARCHAR2
154  )
155  AS
156    l_lang     VARCHAR2(100);
157  BEGIN
158    l_lang := 'ALTER SESSION SET NLS_LANGUAGE = '|| ''''||
159               SUBSTR ( P_USER_LANG,
160                        1,
161                        ( INSTR ( P_USER_LANG,'_',1,1 ) - 1 ) ) ||'''';
162    --insert into plsqldbug values( sysdate, l_lang );
163    --commit;
164 
165    EXECUTE IMMEDIATE l_lang;
166 
167 
168    l_lang := 'ALTER SESSION SET NLS_TERRITORY = '|| ''''||
169               SUBSTR( P_USER_LANG,
170                      ( INSTR ( P_USER_LANG,'_',1,1 ) + 1 ),
171                      ( INSTR ( P_USER_LANG,'.',1,1 ) -
172                               INSTR ( P_USER_LANG,'_',1,1) - 1 ) ) || '''';
173    --insert into plsqldbug values( sysdate, l_lang );
174    --commit;
175 
176    EXECUTE IMMEDIATE l_lang;
177 
178  END SET_LANG_INFO;
179 
180 ------------------------------------------------------------------------
181 ------------------------------------------------------------------------
182 --utility procedure for setting the lang info whereever required
183 --also returns the previous language setting which can be used to reset
184 ------------------------------------------------------------------------
185 ------------------------------------------------------------------------
186 PROCEDURE SET_LANG_INFO_X
187  (
188    P_USER_LANG IN VARCHAR2,
189    X_EXISTING_LANG OUT NOCOPY VARCHAR2
190  )
191 AS
192 BEGIN
193   SELECT userenv('LANGUAGE') INTO X_EXISTING_LANG FROM DUAL;
194 
195   SET_LANG_INFO( P_USER_LANG );
196 
197 END SET_LANG_INFO_X;
198 
199 ------------------------------------------------------------------------
200 ------------------------------------------------------------------------
201 --procedure for getting the plugin information for a particular resource
202 ------------------------------------------------------------------------
203 ------------------------------------------------------------------------
204 PROCEDURE GET_CTRL_PLUGINS
205  (
206    P_RESOURCE_ID IN NUMBER
207   ,P_AGENT_EXTN   IN NUMBER
208   ,P_USER_ID      IN NUMBER
209   ,P_RESP_ID      IN NUMBER
210   ,P_RESP_APPL_ID IN NUMBER
211   ,P_USER_LANG IN VARCHAR2
212   ,X_CTRL_PLUGINS_NST OUT NOCOPY SYSTEM.IEU_CTRL_PLUGINS_NST
213  )
214  AS
215    l_sql_clause  VARCHAR2(1000);
216    l_label_name  VARCHAR2(1990);
217    l_desc        VARCHAR2(1990);
218    l_load_plugin BOOLEAN;
219    l_func_return VARCHAR2(1);
220    l_error_text  VARCHAR(2000);
221    l_cur_lang    VARCHAR(100);
222    l_temp        VARCHAR(100);
223    l_app_name     VARCHAR2(32);
224 
225    CURSOR msg_cursor is
226      SELECT * FROM
227        IEU_CTL_PLUGINS_B;
228  BEGIN
229 
230    l_app_name := 'IEU';
231    --parameter check
232    IF ( ( P_RESOURCE_ID IS NULL ) OR
233         ( P_AGENT_EXTN IS NULL ) OR
234         ( P_USER_LANG IS NULL ) )
235    THEN
236      RAISE_APPLICATION_ERROR
237         (
238           -20000
239          ,'P_USER_LANG OR P_RESOURCE_ID cannot be NULL' ||
240             '(P_USER_LANG = '    || P_USER_LANG ||
241           ') (P_AGENT_EXTN = '  || P_AGENT_EXTN ||
242           ') (P_RESOURCE_ID = '  || P_RESOURCE_ID || ')'
243          ,TRUE
244         );
245    END IF;
246 
247    --set the language stuff
248    SET_LANG_INFO_X( P_USER_LANG, l_cur_lang );
249 
250    --initialize fnd env variables
251    FND_GLOBAL.APPS_INITIALIZE( P_USER_ID, P_RESP_ID, P_RESP_APPL_ID );
252 
253    X_CTRL_PLUGINS_NST := SYSTEM.IEU_CTRL_PLUGINS_NST();
254    FOR msg_val IN msg_cursor
255    LOOP
256 
257      --initialize the load plugin flag to false
258      l_load_plugin := FALSE;
259 
260      --select the translated stuff
261      SELECT tl.NAME, tl.DESCRIPTION INTO l_label_name, l_desc
262            FROM IEU_CTL_PLUGINS_TL tl
263            WHERE tl.PLUGIN_ID = msg_val.PLUGIN_ID AND
264                  tl.LANGUAGE = userenv( 'LANG' );
265 
266 
267      --select the error message txt
268      l_error_text :=
269          FND_MESSAGE.GET_STRING( l_app_name, msg_val.INIT_ERROR_MSG_NAME );
270 
271      --if the required flag for the plugin is set to T ot t
272      --the plugin is mandatory. else call the DO_LAUNCH function
273      --of the plugin and check if it has to be loaded
274 
275      IF( ( msg_val.IS_REQUIRED_FLAG = 'T' ) OR
276          ( msg_val.IS_REQUIRED_FLAG = 't' ) )
277      THEN
278        l_load_plugin := TRUE;
279      ELSE
280        IF (msg_val.DO_LAUNCH_FUNC = 'CCT_PLGN_FUNC_PVT.DO_LAUNCH_CLIENT_SDK')
281        THEN
282           l_sql_clause := 'BEGIN :l_func_return := ' ||
283              msg_val.DO_LAUNCH_FUNC || '( :1, :2, :3, :4, :5); END; ';
284 
285           EXECUTE IMMEDIATE l_sql_clause USING OUT l_func_return,
286           IN P_RESOURCE_ID, IN P_USER_ID, IN P_RESP_ID, IN P_RESP_APPL_ID,
287           IN P_USER_LANG ;
288 
289        ELSE
290 
291          l_sql_clause := 'BEGIN :l_func_return := ' ||
292              msg_val.DO_LAUNCH_FUNC || '( :1, :2, :3, :4, :5, :6); END; ';
293 
294          --insert into plsqldbug values( sysdate, l_sql_clause );
295          --commit;
296 
297          --tried to make the return BOOLEAN but PL/SQL complained
298          --at this statement.. !! DARN so I am leaving it
299          --VARCHAR2 - ssk
300          EXECUTE IMMEDIATE l_sql_clause USING OUT l_func_return,
301          IN P_RESOURCE_ID, IN P_AGENT_EXTN, IN P_USER_ID, IN P_RESP_ID, IN P_RESP_APPL_ID,
302          IN P_USER_LANG ;
303        END IF;
304 
305        --if the function returns T or t the plugin has to be loaded
306        --insert into plsqldbug values( sysdate, '##' || l_func_return || '##' );
307        --commit;
308 
309        IF ( l_func_return = 'Y' )
310        THEN
311          l_load_plugin := TRUE;
312        END IF;
313 
314      END IF;
315 
316 
317      IF ( l_load_plugin )
318      THEN
319        X_CTRL_PLUGINS_NST.extend( 1 );
320        X_CTRL_PLUGINS_NST( X_CTRL_PLUGINS_NST.LAST ) :=
321          SYSTEM.IEU_CTRL_PLUGIN_OBJ( msg_val.PLUGIN_ID, msg_val.CLASS_NAME,
322                               l_label_name, l_desc,
323                               msg_val.IMAGE_FILE_NAME, msg_val.AUDIO_FILE_NAME,
324                               l_error_text,
325                               msg_val.IS_REQUIRED_FLAG, msg_val.DO_LAUNCH_FUNC);
326      END IF;
327 
328    END LOOP;
329 
330    EXCEPTION
331      WHEN OTHERS THEN
332        RAISE;
333 
334    --reset the language stuff
335    SET_LANG_INFO_X( l_cur_lang, l_temp );
336 
337  END GET_CTRL_PLUGINS;
338 
339 
340 ------------------------------------------------------------------------
341 ------------------------------------------------------------------------
342 --procedure for getting all the error messages at startup
343 --this prevents multiple database roundtrips
344 ------------------------------------------------------------------------
345 ------------------------------------------------------------------------
346 PROCEDURE GET_FND_ERROR_MESSAGES
347  (
348    P_RESOURCE_ID   IN  NUMBER
349   ,P_FND_MESSAGES_NST   IN  SYSTEM.IEU_FND_MESSAGES_NST
350   ,P_USER_LANG     IN  VARCHAR2
351   ,X_FND_MESSAGES_NST  OUT NOCOPY SYSTEM.IEU_FND_MESSAGES_NST
352  )
353  AS
354    l_message_text VARCHAR2(4000);
355    l_cur_lang     VARCHAR2(100);
356    l_temp         VARCHAR2(100);
357    l_app_name     VARCHAR2(100);
358    l_number       NUMBER(9);
359  BEGIN
360 
361    --parameter check
362    IF ( ( P_USER_LANG IS NULL ) OR
363         ( P_RESOURCE_ID IS NULL ) OR
364         ( P_FND_MESSAGES_NST IS NULL ) )
365    THEN
366      RAISE_APPLICATION_ERROR
367         (
368           -20000
369          ,'P_USER_LANG, P_RESOURCE_ID OR P_FND_MESSAGES_NST cannot be NULL' ||
370             '(P_USER_LANG = '    || P_USER_LANG ||
371           ') (P_RESOURCE_ID = '  || P_RESOURCE_ID || ')'
372          ,TRUE
373         );
374    END IF;
375 
376    --set the language stuff
377    SET_LANG_INFO_X( P_USER_LANG, l_cur_lang );
378 
379    --initialize the nested table
380    X_FND_MESSAGES_NST := SYSTEM.IEU_FND_MESSAGES_NST();
381 
382    FOR i IN P_FND_MESSAGES_NST.FIRST..P_FND_MESSAGES_NST.LAST
383    LOOP
384 
385      IF ( P_FND_MESSAGES_NST( i ).NAME IS NOT NULL )
386      THEN
387 
388        l_app_name := P_FND_MESSAGES_NST( i ).APP_NAME;
389        if ( l_app_name IS NULL )
390        THEN
391          l_app_name := 'IEU';
392        END IF;
393 
394        --get the message text from the fnd function
395        l_message_text :=
396          FND_MESSAGE.GET_STRING( l_app_name, P_FND_MESSAGES_NST( i ).NAME );
397 
398        l_number :=
399          FND_MESSAGE.GET_NUMBER( l_app_name, P_FND_MESSAGES_NST( i ).NAME );
400 
401        --initialize the nested table and add the message object to it
402        X_FND_MESSAGES_NST.EXTEND( 1 );
403        X_FND_MESSAGES_NST( X_FND_MESSAGES_NST.LAST )
404              :=  SYSTEM.IEU_FND_MESSAGE_OBJ( P_FND_MESSAGES_NST( i ).NAME ,
405                                              l_message_text,
406                                              l_number,
407                                              l_app_name );
408      ELSE
409        NULL;
410      END IF;
411 
412    END LOOP;
413 
414    --reset the language stuff
415    SET_LANG_INFO_X( l_cur_lang, l_temp );
416 
417    EXCEPTION
418      WHEN OTHERS THEN
419        RAISE;
420 
421  END GET_FND_ERROR_MESSAGES;
422 
423 
424 ------------------------------------------------------------------------
425 ------------------------------------------------------------------------
426 --procedure for getting the  FND Lookup Codes and values based on
427 --lookup type and application id.
428 ------------------------------------------------------------------------
429 ------------------------------------------------------------------------
430 PROCEDURE GET_FND_LOOKUP_VALUES
431  (
432    P_RESOURCE_ID   IN  NUMBER
433   ,P_APP_ID        IN  NUMBER
437  )
434   ,P_LOOKUP_TYPE   IN  VARCHAR2
435   ,P_USER_LANG     IN  VARCHAR2
436   ,X_FND_MESSAGES_NST  OUT NOCOPY SYSTEM.IEU_FND_MESSAGES_NST
438  AS
439    l_cur_lang VARCHAR2(100);
440    l_temp     VARCHAR2(100);
441 
442    CURSOR msg_cursor is
443      SELECT
444        lookup_table.LOOKUP_CODE,
445        lookup_table.MEANING
446      FROM
447        FND_LOOKUP_VALUES_VL lookup_table
448      WHERE
449        lookup_table.LOOKUP_TYPE = P_LOOKUP_TYPE AND
450        lookup_table.VIEW_APPLICATION_ID = P_APP_ID AND
451        lookup_table.ENABLED_FLAG = 'Y';
452  BEGIN
453 
454    --parameter check
455    IF ( ( P_LOOKUP_TYPE IS NULL ) OR
456         ( P_USER_LANG   IS NULL ) OR
457         ( P_RESOURCE_ID IS NULL ) OR
458         ( P_APP_ID      IS NULL ) )
459    THEN
460      RAISE_APPLICATION_ERROR
461         (
462           -20000
463          ,'P_LOOKUP_TYPE, P_USER_LANG, P_RESOURCE_ID OR P_APP_ID ' ||
464                                                   'cannot be NULL' ||
465             '(P_LOOKUP_TYPE = '  || P_LOOKUP_TYPE ||
466             '(P_USER_LANG = '    || P_USER_LANG ||
467           ') (P_RESOURCE_ID = '  || P_RESOURCE_ID ||
468           ') (P_APP_ID = '  || P_APP_ID || ')'
469          ,TRUE
470         );
471    END IF;
472 
473    --set the language stuff
474    SET_LANG_INFO_X( P_USER_LANG, l_cur_lang );
475 
476    --initialize the nested table
477    X_FND_MESSAGES_NST := SYSTEM.IEU_FND_MESSAGES_NST();
478 
479    FOR msg_val IN msg_cursor
480       LOOP
481         X_FND_MESSAGES_NST.extend(1);
482         X_FND_MESSAGES_NST( X_FND_MESSAGES_NST.LAST )
483            := SYSTEM.IEU_FND_MESSAGE_OBJ( msg_val.LOOKUP_CODE ,
484                                           msg_val.MEANING,
485                                           null, null );
486    END LOOP;
487 
488    --set the language stuff
489    SET_LANG_INFO_X( l_cur_lang, l_temp );
490 
491    EXCEPTION
492      WHEN OTHERS THEN
493        RAISE;
494 
495  END GET_FND_LOOKUP_VALUES;
496 
497 
498 ------------------------------------------------------------------------
499 ------------------------------------------------------------------------
500 --procedure for getting the  FND Lookup Codes and values based on
501 --lookup type and application id and sort them based on meaning
502 ------------------------------------------------------------------------
503 ------------------------------------------------------------------------
504 PROCEDURE GET_FND_LOOKUP_VALUES_SRT
505  (
506    P_RESOURCE_ID   IN  NUMBER
507   ,P_APP_ID        IN  NUMBER
508   ,P_LOOKUP_TYPE   IN  VARCHAR2
509   ,P_USER_LANG     IN  VARCHAR2
510   ,X_FND_MESSAGES_NST  OUT NOCOPY SYSTEM.IEU_FND_MESSAGES_NST
511  )
512  AS
513    l_cur_lang VARCHAR2(100);
514    l_temp     VARCHAR2(100);
515 
516    CURSOR msg_cursor is
517      SELECT
518        lookup_table.LOOKUP_CODE,
519        lookup_table.MEANING
520      FROM
521        FND_LOOKUP_VALUES_VL lookup_table
522      WHERE
523        lookup_table.LOOKUP_TYPE = P_LOOKUP_TYPE AND
524        lookup_table.VIEW_APPLICATION_ID = P_APP_ID AND
525        lookup_table.ENABLED_FLAG = 'Y'
526      ORDER BY lookup_table.MEANING;
527  BEGIN
528    --parameter check
529    IF ( ( P_LOOKUP_TYPE IS NULL ) OR
530         ( P_USER_LANG   IS NULL ) OR
531         ( P_RESOURCE_ID IS NULL ) OR
532         ( P_APP_ID      IS NULL ) )
533    THEN
534      RAISE_APPLICATION_ERROR
535         (
536           -20000
537          ,'P_LOOKUP_TYPE, P_USER_LANG, P_RESOURCE_ID OR P_APP_ID ' ||
538                                                   'cannot be NULL' ||
539             '(P_LOOKUP_TYPE = '  || P_LOOKUP_TYPE ||
540             '(P_USER_LANG = '    || P_USER_LANG ||
541           ') (P_RESOURCE_ID = '  || P_RESOURCE_ID ||
542           ') (P_APP_ID = '  || P_APP_ID || ')'
543          ,TRUE
544         );
545    END IF;
546 
547    --set the language stuff
548    SET_LANG_INFO_X( P_USER_LANG, l_cur_lang );
549 
550    --initialize the nested table
551    X_FND_MESSAGES_NST := SYSTEM.IEU_FND_MESSAGES_NST();
552 
553    FOR msg_val IN msg_cursor
554       LOOP
555         X_FND_MESSAGES_NST.extend(1);
556         X_FND_MESSAGES_NST( X_FND_MESSAGES_NST.LAST )
557            := SYSTEM.IEU_FND_MESSAGE_OBJ( msg_val.LOOKUP_CODE ,
558                                           msg_val.MEANING,
559                                           null, null );
560    END LOOP;
561 
562    --set the language stuff
563    SET_LANG_INFO_X( l_cur_lang, l_temp );
564 
565    EXCEPTION
566      WHEN OTHERS THEN
567        RAISE;
568 
569  END GET_FND_LOOKUP_VALUES_SRT;
570 
571 ------------------------------------------------------------------------
572 ------------------------------------------------------------------------
573 --procedure for getting the  FND Lookup Codes and values based on
574 --lookup type and application id.
575 ------------------------------------------------------------------------
576 ------------------------------------------------------------------------
577 PROCEDURE GET_FND_LOOKUP_CODES
578  (
579    P_RESOURCE_ID   IN  NUMBER
580   ,P_APP_ID        IN  NUMBER
581   ,P_CTRL_STRING_NST IN  SYSTEM.IEU_CTRL_STRING_NST
582   ,P_USER_LANG     IN  VARCHAR2
583   ,X_FND_CODES_NST OUT NOCOPY SYSTEM.IEU_FND_CODES_NST
584  )
585  AS
586    l_cur_lang VARCHAR2(100);
587    l_temp VARCHAR2(100);
588 
589    CURSOR msg_cursor( p_lookup_type VARCHAR2 ) is
590      SELECT
591        lookup_table.LOOKUP_CODE,
592        lookup_table.MEANING
593      FROM
594        FND_LOOKUP_VALUES_VL lookup_table
595      WHERE
596        lookup_table.LOOKUP_TYPE = p_lookup_type AND
597        lookup_table.VIEW_APPLICATION_ID = P_APP_ID AND
598        lookup_table.ENABLED_FLAG = 'Y';
599 
600  BEGIN
601 
602    --parameter check
603    IF ( ( P_CTRL_STRING_NST IS NULL ) OR
604         ( P_USER_LANG   IS NULL ) OR
605         ( P_RESOURCE_ID IS NULL ) OR
606         ( P_APP_ID      IS NULL ) )
607    THEN
608      RAISE_APPLICATION_ERROR
609         (
610           -20000
611          ,'LOOKUP_TYPES, P_USER_LANG, P_RESOURCE_ID OR P_APP_ID ' ||
612                                                   'cannot be NULL' ||
613             '(P_USER_LANG = '    || P_USER_LANG ||
614           ') (P_RESOURCE_ID = '  || P_RESOURCE_ID ||
615           ') (P_APP_ID = '  || P_APP_ID || ')'
616          ,TRUE
617         );
618    END IF;
619 
620    --set the language stuff
621    SET_LANG_INFO_X( P_USER_LANG, l_cur_lang );
622 
623    --initialize the nested table
624    X_FND_CODES_NST := SYSTEM.IEU_FND_CODES_NST();
625 
626    FOR i IN P_CTRL_STRING_NST.FIRST..P_CTRL_STRING_NST.LAST
627    LOOP
628 
629      IF ( P_CTRL_STRING_NST( i ).NAME IS NOT NULL )
630      THEN
631 
632        FOR msg_val IN msg_cursor( P_CTRL_STRING_NST( i ).NAME )
633        LOOP
634          X_FND_CODES_NST.extend(1);
635          X_FND_CODES_NST( X_FND_CODES_NST.LAST )
636            := SYSTEM.IEU_FND_CODE_OBJ( P_CTRL_STRING_NST( i ).NAME,
637                                        msg_val.LOOKUP_CODE ,
638                                        msg_val.MEANING );
639        END LOOP;/*end of for loop*/
640 
641      ELSE
642        NULL;
643      END IF;
644 
645    END LOOP; /*end of for loop*/
646 
647    --reset the language stuff
648    SET_LANG_INFO_X( l_cur_lang, l_temp );
649 
650    EXCEPTION
651      WHEN OTHERS THEN
652        RAISE;
653 
654  END GET_FND_LOOKUP_CODES;
655 
656 
657 
658 END IEU_CTRL_PVT;
659 
660 ------------------------------------------------------------------------
661 ------------------------------------------------------------------------
662 --end of package
663 ------------------------------------------------------------------------
664 ------------------------------------------------------------------------
665