DBA Data[Home] [Help]

PACKAGE BODY: APPS.GL_WEB_PLSQL_CARTRIDGE

Source


1 PACKAGE BODY GL_WEB_PLSQL_CARTRIDGE as
2 /* $Header: glwplcrb.pls 120.5 2005/05/05 02:08:14 kvora ship $ */
3 
4 
5 --
6 -- PUBLIC PROCEDURES
7 --
8 
9 PROCEDURE GCS_CHVHTML(X_Consolidation_Set_Id  IN NUMBER,
10                       X_Display_Option IN VARCHAR2 ,
11                       X_Appl_Id IN NUMBER ,
12                       X_User_Id IN NUMBER ,
13                       X_Resp_Id IN NUMBER ,
14                       X_Mode IN VARCHAR2 DEFAULT 'R') IS
15   pc_delimit  VARCHAR2(2) := '^';  -- delimiter between parent and child nodes
16   ss_delimit  VARCHAR2(2) := '|';  -- delimiter between ledger and set/mapping
17   se_delimit  VARCHAR2(2) := '!';  -- closing of set/mapping
18   mapping_set_name     VARCHAR2(33);
19   cons_child_set       VARCHAR2(1500);  -- Buffer for the select statement
20   child_set_cursor     INTEGER;         -- Handles the child set cursor
21   to_ledger_id         NUMBER;
22   from_ledger_id       NUMBER;
23   to_ledger_name       VARCHAR2(800);
24   from_ledger_name     VARCHAR2(800);
25   child_set_id         NUMBER;
26   prior_child_set_id   VARCHAR2(10000) := NULL;
27   all_parent_ledger_id VARCHAR2(10000) := NULL;
28   temp_arg_list        VARCHAR2(1500) := NULL;
29   child_set_name       VARCHAR2(33);
30   mapping_name         VARCHAR2(33);
31   counter              NUMBER := 0;
32   node_count           NUMBER := 1;
33   argc                 NUMBER := 0;
34   row_count            NUMBER := 0;
35   instr_value          NUMBER := 0;
36   dummy                NUMBER;
37   from_ledger_list     VARCHAR2(500);
38   Pos                  NUMBER;
39   title                VARCHAR2(240);
40   gcs_title            VARCHAR2(240);
41   gcs_message          VARCHAR2(240);
42 
43   to_ledger_coa	       NUMBER;
44   from_ledger_coa      NUMBER;
45   segment	       VARCHAR2(80);
46   delim		       VARCHAR2(1) := '';
47   child_seg	       VARCHAR2(500);
48   temp_child_seg       VARCHAR2(500);
49   seg_cursor	       INTEGER;	-- handles the segment cursor
50 
51   CURSOR ledger_cons_set IS
52          SELECT distinct to_ledger.ledger_id,
53                 to_ledger.name ||
54 			'\nCurrency: ' || to_ledger.currency_code ||
55 			'\nCalendar: ' || to_ledger.period_set_name ||
56 			'\nChart of Accounts: ',
57 		to_ledger.chart_of_accounts_id,
58                 cs1.name,
59 		from_ledger.ledger_id,
60                 from_ledger.name ||
61 			'\nCurrency: ' || from_ledger.currency_code ||
62 			'\nCalendar: ' || from_ledger.period_set_name ||
63 			'\nChart of Accounts: ',
64 		from_ledger.chart_of_accounts_id,
65 		cs2.consolidation_set_id, cs2.name
66 	 FROM
67                 gl_ledgers to_ledger,
68 		gl_ledgers from_ledger,
69 		gl_cons_set_assignments csa,
70 		gl_consolidation_sets cs1,
71 		gl_consolidation_sets cs2,
72 		gl_consolidation c
73 	 WHERE  cs1.consolidation_set_id = csa.consolidation_set_id
74 	 AND	csa.consolidation_id =  c.consolidation_id
75 	 AND 	c.from_ledger_id = from_ledger.ledger_id
76 	 AND	c.to_ledger_id = to_ledger.ledger_id
77 	 AND	cs2.consolidation_set_id(+) = csa.child_consolidation_set_id
78 	 AND	cs1.consolidation_set_id = X_Consolidation_Set_Id ;
79 
80   CURSOR both_cons_set IS
81          SELECT to_ledger.ledger_id,
82                 to_ledger.name ||
83 			'\nCurrency: ' || to_ledger.currency_code ||
84 			'\nCalendar: ' || to_ledger.period_set_name ||
85 			'\nChart of Accounts: ',
86 		to_ledger.chart_of_accounts_id,
87                 cs1.name,
88 		from_ledger.ledger_id,
89                 from_ledger.name ||
90 			'\nCurrency: ' || from_ledger.currency_code ||
91 			'\nCalendar: ' || from_ledger.period_set_name ||
92 			'\nChart of Accounts: ',
93 		from_ledger.chart_of_accounts_id,
94 		cs2.consolidation_set_id, cs2.name, c.name
95 	 FROM
96                 gl_ledgers to_ledger,
97 		gl_ledgers from_ledger,
98 		gl_consolidation c,
99 		gl_cons_set_assignments csa,
100 		gl_consolidation_sets cs1,
101 		gl_consolidation_sets cs2
102 	 WHERE  cs1.consolidation_set_id = csa.consolidation_set_id
103 	 AND	csa.consolidation_id =  c.consolidation_id
104 	 AND 	c.from_ledger_id = from_ledger.ledger_id
105 	 AND	c.to_ledger_id = to_ledger.ledger_id
106 	 AND	cs2.consolidation_set_id(+) = csa.child_consolidation_set_id
107 	 AND	cs1.consolidation_set_id = X_Consolidation_Set_Id ;
108 
109   CURSOR seg (coa number) is
110 	SELECT  form_left_prompt
111 	FROM	fnd_id_flex_segments_tl
112 	WHERE	id_flex_num = coa
113 	AND	application_id = 101
114 	AND	id_flex_code = 'GL#'
115 	AND	language = userenv('LANG');
116 
117 BEGIN
118 
119   FND_GLOBAL.APPS_INITIALIZE(X_user_id, X_resp_id, X_appl_id);
120 
121     --Check function security for access
122   IF (NOT FND_FUNCTION.TEST('GLXCOMST')) THEN
123     htp.p('<HTML>');
124     htp.p('<HEAD>');
125     htp.p('<TITLE>no access </TITLE>');
126     htp.p('</HEAD>');
127     htp.p('</HTML>');
128 
129   ELSE
130 
131     SELECT name
132     INTO   mapping_set_name
133     FROM   GL_CONSOLIDATION_SETS
134     WHERE  consolidation_set_id = X_Consolidation_Set_Id;
135 
136 
137     IF (X_Mode = 'R') THEN
138 
139         -- Select the titles and messages from gl_lookups
140         SELECT description
141         INTO   title
142         FROM   GL_LOOKUPS
143         WHERE  lookup_type = 'CONSOLIDATION_VIEWER'
144         AND    lookup_code = 'CHV_TITLE';
145 
146         SELECT description
147         INTO   gcs_title
148         FROM   GL_LOOKUPS
149         WHERE  lookup_type = 'CONSOLIDATION_VIEWER'
150     AND    lookup_code = 'FEATURE_NAME';
151 
152     SELECT description
153     INTO   gcs_message
154     FROM   GL_LOOKUPS
155     WHERE  lookup_type = 'CONSOLIDATION_VIEWER'
156     AND    lookup_code = 'FEATURE_MESSAGE';
157 
158     -- Print html to the browser if the procedure is called in 'Run' mode.
159     htp.p('<HTML>');
160     htp.p('<HEAD>');
161     htp.p('<TITLE>Oracle Consolidation Hierarchy Viewer</TITLE>');
162     htp.p('</HEAD>');
163     htp.p('<BODY BACKGROUND="/OA_JAVA/oracle/apps/media/glBG.gif">');
164     htp.p('<table border=0 cellspacing=0 cellpadding=0>');
165     htp.p('<tr><td colspan=2>');
166     htp.p('<IMG SRC="/OA_JAVA/oracle/apps/media/glchv.gif" ');
167     htp.p('ALIGN=TOP  HEIGHT="22" WIDTH="700" BORDER="0"><br>');
168     htp.p('<IMG SRC="/OA_JAVA/oracle/apps/media/glspace.gif" ');
169     htp.p('ALIGN=TOP  WIDTH="1" HEIGHT="15" BORDER="0"><BR>');
170     htp.p('<IMG SRC="/OA_JAVA/oracle/apps/media/glspace.gif" ');
171     htp.p('ALIGN=TOP WIDTH="15" HEIGHT="1" BORDER="0">');
172     htp.p('<FONT face=Helvetica color=white size=+2>' || mapping_set_name || '</FONT><br>');
173     htp.p('<IMG SRC="/OA_JAVA/oracle/apps/media/glspace.gif" ');
174     htp.p('ALIGN=TOP  WIDTH="1" HEIGHT="7" BORDER="0"><BR>');
175     htp.p('</td></tr>');
176     htp.p('<tr>');
177     htp.p('	<td width = 390 >');
178     htp.p('		<center><img src="/OA_JAVA/oracle/apps/media/GCS.jpg"></center>');
179     htp.p('		<img src="/OA_JAVA/oracle/apps/media/GL.gif">');
180     htp.p('		</td>');
181     htp.p('	<td>');
182     htp.p('	<IMG SRC="/OA_JAVA/oracle/apps/media/glspace.gif" ');
183     htp.p('	ALIGN=TOP  WIDTH="1" HEIGHT="7" BORDER="0"><BR>');
184     htp.p('<applet codebase="/OA_JAVA/" code="oracle.apps.gl.gcs.glcoview.class" height=480 width=580');
185 --    htp.p('<applet codebase="/OA_JAVA/" code="oracle.apps.gl.gcs.glcoview.class" height=450 width=550');
186 --    htp.p('<applet codebase="/OA_JAVA/" code="oracle.apps.gl.gcs.glcoview.class"');
187     htp.p(' archive="oracle/apps/gl/jar/glgcs.jar">');
188 --    htp.p('>');
189     htp.p('<param name=title value="' || title || ' (' || mapping_set_name || ')">');
190     htp.p('<param name=display value="' || X_Display_Option || '">');
191     htp.p('<param name=pc_delimit value="' || pc_delimit || '">');
192     htp.p('<param name=ss_delimit value="' || ss_delimit || '">');
193     htp.p('<param name=se_delimit value="' || se_delimit || '">');
194     htp.p('<param name=background_color value="0xFFFFFF">');
195   END IF;
196 
197   IF (X_Display_Option = 'LEDGER') THEN
198   	OPEN ledger_cons_set;
199   ELSE
200   	OPEN both_cons_set;
201   END IF;
202 
203   LOOP
204     IF (X_Display_Option = 'LEDGER') THEN
205       FETCH ledger_cons_set INTO to_ledger_id, to_ledger_name, to_ledger_coa,
206 			mapping_set_name,
207                         from_ledger_id, from_ledger_name, from_ledger_coa,
208                         child_set_id, child_set_name ;
209       mapping_name := '';
210       EXIT WHEN ledger_cons_set%NOTFOUND;
211     ELSE
212       FETCH both_cons_set INTO to_ledger_id, to_ledger_name, to_ledger_coa,
213 			mapping_set_name,
214                         from_ledger_id, from_ledger_name, from_ledger_coa,
215                         child_set_id, child_set_name, mapping_name ;
216       EXIT WHEN both_cons_set%NOTFOUND;
217     END IF;
218 
219     counter := counter + 1;
220     node_count := node_count + 1;
221     argc := argc + 1;
222 
223     IF (child_set_name IS NULL) THEN
224       temp_arg_list := ss_delimit || mapping_name || se_delimit ;
225     ELSE
226       temp_arg_list := ss_delimit || child_set_name || se_delimit ;
227     END IF;
228 
229     IF (X_Mode = 'R') THEN
230       -- get the delimiter
231       delim := fnd_flex_apis.get_segment_delimiter(
232                  x_application_id       => 101,
233                  x_id_flex_code         => 'GL#',
234                  x_id_flex_num          => to_ledger_coa);
235 
236       -- build the parent chart of account structure
237       OPEN seg(to_ledger_coa);
238       FETCH seg INTO segment;
239       to_ledger_name := to_ledger_name || segment;
240       FETCH seg INTO segment;
241       WHILE (seg%FOUND) LOOP
242       	to_ledger_name := to_ledger_name || delim || segment;
243 	FETCH seg INTO segment;
244       END LOOP;
245 
246       CLOSE seg;
247 
248       -- get the delimiter
249       delim := fnd_flex_apis.get_segment_delimiter(
250                  x_application_id       => 101,
251                  x_id_flex_code         => 'GL#',
252                  x_id_flex_num          => from_ledger_coa);
253 
254       -- build the subsidary chart of account structure
255       OPEN seg(from_ledger_coa);
256       FETCH seg INTO segment;
257       from_ledger_name := from_ledger_name || segment;
258       FETCH seg INTO segment;
259       WHILE (seg%FOUND) LOOP
260       	from_ledger_name := from_ledger_name || delim || segment;
261 	FETCH seg INTO segment;
262       END LOOP;
263 
264       CLOSE seg;
265 
266       -- build the argument list
267       htp.p('<param name=args' || to_char(argc) || ' value="' || to_ledger_name || ' ' ||
268              ss_delimit || mapping_set_name || se_delimit || pc_delimit ||
269              from_ledger_name || ' ' || temp_arg_list || '">');
270     END IF;
271 
272     -- concatenate additional comma to the list
273     IF ((counter > 1) AND (prior_child_set_id IS NOT NULL) AND
274         (child_set_id IS NOT NULL)) THEN
275       prior_child_set_id := prior_child_set_id || ', ';
276     END IF;
277 
278     -- concatenate the child set id to the list
279     IF (to_char(child_set_id) IS NOT NULL) THEN
280       prior_child_set_id := prior_child_set_id || to_char(child_set_id);
281     END IF;
282 
283     IF (counter = 1) THEN
284       all_parent_ledger_id := ',' || to_char(from_ledger_id) || ',';
285     ELSE
286       all_parent_ledger_id := all_parent_ledger_id || to_char(from_ledger_id) || ',';
287     END IF;
288 
289   END LOOP;
290 
291   all_parent_ledger_id := all_parent_ledger_id || to_char(to_ledger_id) || ',';
292 
293   IF (X_Display_Option = 'LEDGER') THEN
294     CLOSE ledger_cons_set;
295   ELSE
296     CLOSE both_cons_set;
297   END IF;
298 
299   IF (counter = 0) THEN
300     fnd_message.set_name('SQLGL', 'GL_CONS_NO_CHILD');
301     app_exception.raise_exception;
302   END IF;
303 
304 
305   IF (prior_child_set_id IS NOT NULL) THEN
306 
307 
308     LOOP
309       -- Build the select statement for child sets.
310       IF (X_Display_Option = 'LEDGER') THEN
311           cons_child_set := 'SELECT distinct to_ledger.ledger_id,to_ledger.name || ' ||
312                                 '''\nCurrency: ''' || ' || to_ledger.currency_code || ' ||
313                                 '''\nCalendar: ''' || '|| to_ledger.period_set_name || ' ||
314                                 '''\nChart of Accounts: ''' || ', ' ||
315 				'to_ledger.chart_of_accounts_id, ' ||
316                                 'cs1.name, ' ||
317                                 'from_ledger.ledger_id, from_ledger.name || ' ||
318                                 '''\nCurrency: ''' || ' || from_ledger.currency_code || ' ||
319                                 '''\nCalendar: ''' || '|| from_ledger.period_set_name || ' ||
320                                 '''\nChart of Accounts: ''' || ', ' ||
321 				'from_ledger.chart_of_accounts_id, ' ||
322                                 'cs2.consolidation_set_id, cs2.name ' ||
323 	                'FROM   gl_ledgers to_ledger, ' ||
324 		               'gl_ledgers from_ledger, ' ||
325 		               'gl_consolidation c, ' ||
326 		               'gl_cons_set_assignments csa, ' ||
327 		               'gl_consolidation_sets cs1, ' ||
328 		               'gl_consolidation_sets cs2 ' ||
329 	                'WHERE  cs1.consolidation_set_id = ' ||
330 			        'csa.consolidation_set_id ' ||
331 	                'AND    csa.consolidation_id = ' ||
332 			        'c.consolidation_id ' ||
333 	                'AND    c.from_ledger_id = ' ||
334 			        'from_ledger.ledger_id ' ||
335 	                'AND    c.to_ledger_id = ' ||
336 			        'to_ledger.ledger_id ' ||
337 	                'AND    cs2.consolidation_set_id(+) = csa.child_consolidation_set_id ' ||
338 	                'AND    cs1.consolidation_set_id IN ( ' || prior_child_set_id || ')' ;
339      ELSE
340           cons_child_set := 'SELECT distinct to_ledger.ledger_id,to_ledger.name || ' ||
341                                 '''\nCurrency: ''' || ' || to_ledger.currency_code || ' ||
342                                 '''\nCalendar: ''' || '|| to_ledger.period_set_name || ' ||
343                                 '''\nChart of Accounts: ''' || ', ' ||
344 				'to_ledger.chart_of_accounts_id, ' ||
345                                 'cs1.name, ' ||
346                                 'from_ledger.ledger_id, from_ledger.name || ' ||
347                                 '''\nCurrency: ''' || ' || from_ledger.currency_code || ' ||
348                                 '''\nCalendar: ''' || '|| from_ledger.period_set_name || ' ||
349                                 '''\nChart of Accounts: ''' || ', ' ||
350 				'from_ledger.chart_of_accounts_id, ' ||
351                                 'cs2.consolidation_set_id, cs2.name, c.name ' ||
352 	                'FROM   gl_ledgers to_ledger, ' ||
353 		               'gl_ledgers from_ledger, ' ||
354 		               'gl_consolidation c, ' ||
355 		               'gl_cons_set_assignments csa, ' ||
356 		               'gl_consolidation_sets cs1, ' ||
357 		               'gl_consolidation_sets cs2 ' ||
358 	                'WHERE  cs1.consolidation_set_id = ' ||
359 			        'csa.consolidation_set_id ' ||
360 	                'AND    csa.consolidation_id = ' ||
361 			        'c.consolidation_id ' ||
362 	                'AND    c.from_ledger_id = ' ||
363 			        'from_ledger.ledger_id ' ||
364 	                'AND    c.to_ledger_id = ' ||
365 			        'to_ledger.ledger_id ' ||
366 	                'AND    cs2.consolidation_set_id(+) = csa.child_consolidation_set_id ' ||
367 	                'AND    cs1.consolidation_set_id IN ( ' || prior_child_set_id || ')' ;
368       END IF;
369 
370       -- declare the cursor and work with it
371       child_set_cursor := dbms_sql.open_cursor;
372       dbms_sql.parse(child_set_cursor, cons_child_set, dbms_sql.v7);
373       dbms_sql.define_column(child_set_cursor, 1, to_ledger_id);
374       dbms_sql.define_column(child_set_cursor, 2, to_ledger_name, 200);
375       dbms_sql.define_column(child_set_cursor, 3, to_ledger_coa);
376       dbms_sql.define_column(child_set_cursor, 4, mapping_set_name, 33);
377       dbms_sql.define_column(child_set_cursor, 5, from_ledger_id);
378       dbms_sql.define_column(child_set_cursor, 6, from_ledger_name, 200);
379       dbms_sql.define_column(child_set_cursor, 7, from_ledger_coa);
380       dbms_sql.define_column(child_set_cursor, 8, child_set_id);
381       dbms_sql.define_column(child_set_cursor, 9, child_set_name, 33);
382       IF (X_Display_Option = 'BOTH' or X_Display_Option = 'SET') THEN
383       	dbms_sql.define_column(child_set_cursor, 10, mapping_name, 33);
384       END IF;
385 
386       dummy := dbms_sql.execute(child_set_cursor);
387 
388       -- build the select statement for the chart of account cursor
389       temp_child_seg := 'SELECT  form_left_prompt ' ||
390 			'FROM	fnd_id_flex_segments_tl ' ||
391 			'WHERE	application_id = 101 '||
392 			'AND	id_flex_code = ''GL#'' ' ||
393 			'AND	language = userenv(''LANG'') ';
394 
395       prior_child_set_id := NULL;
396       counter := 0;
397 
398       LOOP
399         row_count := dbms_sql.fetch_rows(child_set_cursor);
400         IF (row_count = 0) THEN
401           EXIT;
402         END IF;
403 
404         dbms_sql.column_value(child_set_cursor, 1, to_ledger_id);
405         dbms_sql.column_value(child_set_cursor, 2, to_ledger_name);
406         dbms_sql.column_value(child_set_cursor, 3, to_ledger_coa);
407         dbms_sql.column_value(child_set_cursor, 4, mapping_set_name);
408         dbms_sql.column_value(child_set_cursor, 5, from_ledger_id);
409         dbms_sql.column_value(child_set_cursor, 6, from_ledger_name);
410         dbms_sql.column_value(child_set_cursor, 7, from_ledger_coa);
411         dbms_sql.column_value(child_set_cursor, 8, child_set_id);
412         dbms_sql.column_value(child_set_cursor, 9, child_set_name);
413         IF (X_Display_Option = 'BOTH' or X_Display_Option = 'SET') THEN
414           dbms_sql.column_value(child_set_cursor, 10, mapping_name);
415 	ELSE
416 	  mapping_name := '';
417         END IF;
418 
419         node_count := node_count + 1;
420         argc := argc + 1;
421         counter := counter + 1;
422 
423         IF (child_set_name IS NULL) THEN
424       	  temp_arg_list := ss_delimit || mapping_name || se_delimit ;
425         ELSE
426           temp_arg_list := ss_delimit || child_set_name || se_delimit ;
427         END IF;
428 
429         IF (X_Mode = 'R') THEN
430      	  -- get the delimiter
431       	  delim := fnd_flex_apis.get_segment_delimiter(
432                  	x_application_id       => 101,
433                  	x_id_flex_code         => 'GL#',
434                  	x_id_flex_num          => to_ledger_coa);
435 
436 	  -- get parent chart of accounts information
437 	  child_seg := temp_child_seg ||
438 				'AND	id_flex_num = ' || to_ledger_coa ;
439 
440 	  seg_cursor := dbms_sql.open_cursor;
441       	  dbms_sql.parse(seg_cursor, child_seg, dbms_sql.v7);
442       	  dbms_sql.define_column(seg_cursor, 1, segment,80);
443 	  dummy := dbms_sql.execute(seg_cursor);
444 
445           row_count := dbms_sql.fetch_rows(seg_cursor);
446           IF (row_count = 0) THEN
447             EXIT;
448           END IF;
449 
450           dbms_sql.column_value(seg_cursor, 1, segment);
451 	  to_ledger_name := to_ledger_name || segment;
452 
453           row_count := dbms_sql.fetch_rows(seg_cursor);
454 	  WHILE (row_count <> 0) LOOP
455             dbms_sql.column_value(seg_cursor, 1, segment);
456 	    to_ledger_name := to_ledger_name || delim || segment;
457             row_count := dbms_sql.fetch_rows(seg_cursor);
458 	  END LOOP;
459 
460 	  dbms_sql.close_cursor(seg_cursor);
461 
462      	  -- get the delimiter
463       	  delim := fnd_flex_apis.get_segment_delimiter(
464                  	x_application_id       => 101,
465                  	x_id_flex_code         => 'GL#',
466                  	x_id_flex_num          => from_ledger_coa);
467 
468 	  -- get subsidary chart of accounts information
469 	  child_seg := temp_child_seg ||
470 				'AND	id_flex_num = ' || from_ledger_coa ;
471 
472 	  seg_cursor := dbms_sql.open_cursor;
473       	  dbms_sql.parse(seg_cursor, child_seg, dbms_sql.v7);
474       	  dbms_sql.define_column(seg_cursor, 1, segment,80);
475 	  dummy := dbms_sql.execute(seg_cursor);
476 
477           row_count := dbms_sql.fetch_rows(seg_cursor);
478           IF (row_count = 0) THEN
479             EXIT;
480           END IF;
481 
482           dbms_sql.column_value(seg_cursor, 1, segment);
483 	  from_ledger_name := from_ledger_name || segment;
484 
485           row_count := dbms_sql.fetch_rows(seg_cursor);
486 	  WHILE (row_count <> 0) LOOP
487             dbms_sql.column_value(seg_cursor, 1, segment);
488 	    from_ledger_name := from_ledger_name || delim || segment;
489             row_count := dbms_sql.fetch_rows(seg_cursor);
490 	  END LOOP;
491 
492 	  dbms_sql.close_cursor(seg_cursor);
493 
494           -- build the argument list
495           htp.p('<param name=args' || to_char(argc) || ' value="' || to_ledger_name || ' ' ||
496                 ss_delimit || mapping_set_name || se_delimit || pc_delimit ||
497                 from_ledger_name || ' ' || temp_arg_list || '">');
498         END IF;
499 
500         from_ledger_list := ',' || from_ledger_id || ',' ;
501 
502         instr_value := INSTR(all_parent_ledger_id, from_ledger_list);
503         IF (instr_value <> 0) THEN
504           fnd_message.set_name('SQLGL', 'GL_CONS_LOOP_FOUND');
505           app_exception.raise_exception;
506         END IF;
507 
508         -- concatenate additional comma to the list
509         IF ((counter > 1) AND (prior_child_set_id IS NOT NULL) AND
510             (child_set_id IS NOT NULL)) THEN
511            prior_child_set_id := prior_child_set_id || ', ';
512         END IF;
513 
514         -- concatenate the child set id to the list
515         IF (to_char(child_set_id) IS NOT NULL) THEN
516           prior_child_set_id := prior_child_set_id || to_char(child_set_id);
517         END IF;
518 
519         all_parent_ledger_id := all_parent_ledger_id || to_char(to_ledger_id) || ',';
520 
521       END LOOP;
522 
523       IF (prior_child_set_id IS NULL) THEN
524         EXIT;
525       END IF;
526 
527       -- Close the cursor
528       dbms_sql.close_cursor(child_set_cursor);
529 
530     END LOOP;
531 
532   END IF;
533 
534     IF (X_Mode = 'R') THEN
535       htp.p('<param name=nodes value="' || to_char(node_count) || '">');
536       htp.p('<param name=argc  value="' || to_char(argc) || '">');
537       htp.p('</applet>');
538       htp.p('	</td>');
539       htp.p('</tr>');
540       htp.p('</TABLE>');
541       htp.p('</BODY>');
542       htp.p('</HTML>');
543     END IF;
544   END IF;
545   EXCEPTION
546     WHEN app_exceptions.application_exception THEN
547       RAISE;
548     WHEN OTHERS THEN
549       fnd_message.set_name('SQLGL', 'GL_UNHANDLED_EXCEPTION');
550       fnd_message.set_token('PROCEDURE',
551                             'GL_WEB_PLSQL_CARTRIDGE.gcs_chvhtml');
552       RAISE;
553 
554 END GCS_CHVHTML ;
555 
556 
557 END GL_WEB_PLSQL_CARTRIDGE ;