12: -- get value for a element node
13: -- based on mapping type
14: -- return value or null in case of error
15: FUNCTION get_node_value(
16: a_elmt_rec IN m4u_xml_extn_utils.elmnt_rec_typ,
17: x_ret_sts OUT NOCOPY VARCHAR2,
18: x_ret_msg OUT NOCOPY VARCHAR2)
19: RETURN VARCHAR2 AS
20: l_tmp_val VARCHAR2(32767);
30: l_tmp_val := NULL;
31:
32: -- mapping type is constant then elmt_rec.const contains the
33: -- node.value
34: IF a_elmt_rec.map_typ = m4u_xml_extn_utils.c_maptyp_const THEN
35:
36: l_tmp_val := a_elmt_rec.const;
37: -- if mapping type is variable, lookup global variables for value
38: ELSIF a_elmt_rec.map_typ = m4u_xml_extn_utils.c_maptyp_var THEN
34: IF a_elmt_rec.map_typ = m4u_xml_extn_utils.c_maptyp_const THEN
35:
36: l_tmp_val := a_elmt_rec.const;
37: -- if mapping type is variable, lookup global variables for value
38: ELSIF a_elmt_rec.map_typ = m4u_xml_extn_utils.c_maptyp_var THEN
39:
40: BEGIN
41: l_tmp_val := m4u_xml_extn_utils.g_glb_var_tab(a_elmt_rec.var);
42: EXCEPTION
37: -- if mapping type is variable, lookup global variables for value
38: ELSIF a_elmt_rec.map_typ = m4u_xml_extn_utils.c_maptyp_var THEN
39:
40: BEGIN
41: l_tmp_val := m4u_xml_extn_utils.g_glb_var_tab(a_elmt_rec.var);
42: EXCEPTION
43: WHEN NO_DATA_FOUND THEN
44: FND_MESSAGE.SET_NAME('CLN','M4U_XFWK_INV_PARAM');
45: FND_MESSAGE.SET_TOKEN('PARAM','Global variable');
51: END IF;
52: RAISE FND_API.G_EXC_ERROR;
53: END;
54: -- if mapping type view, call lookup view value
55: ELSIF a_elmt_rec.map_typ = m4u_xml_extn_utils.c_maptyp_view THEN
56:
57: l_tmp_val := m4u_xml_extn_utils.lookup_view_value
58: (a_elmt_rec.view_nam,a_elmt_rec.col,
59: a_elmt_rec.view_lvl,x_ret_sts, x_ret_msg);
53: END;
54: -- if mapping type view, call lookup view value
55: ELSIF a_elmt_rec.map_typ = m4u_xml_extn_utils.c_maptyp_view THEN
56:
57: l_tmp_val := m4u_xml_extn_utils.lookup_view_value
58: (a_elmt_rec.view_nam,a_elmt_rec.col,
59: a_elmt_rec.view_lvl,x_ret_sts, x_ret_msg);
60:
61: IF x_ret_sts <> g_success_code THEN
87: cln_debug_pub.add('Exiting m4u_xml_extn.get_node_value - Normal',2);
88: cln_debug_pub.add('ret_val - ' || substr(l_tmp_val,1,255), 2);
89: END IF;
90:
91: l_tmp_val := m4u_xml_extn_utils.escape_entities(l_tmp_val);
92:
93: RETURN l_tmp_val;
94: EXCEPTION
95: WHEN FND_API.G_EXC_ERROR THEN
100: x_ret_sts := g_err_code;
101: l_tmp_val := null;
102: RETURN l_tmp_val;
103: WHEN OTHERS THEN
104: m4u_xml_extn_utils.handle_exception(SQLCODE,SQLERRM,l_progress,
105: 'm4u_xml_extn.get_node_value',x_ret_sts,x_ret_msg);
106: l_tmp_val := null;
107: RETURN l_tmp_val;
108: END get_node_value;
108: END get_node_value;
109:
110: -- push index of end tag onto level_reg.end_tag_stk
111: PROCEDURE push_end_tag(a_el_idx IN NUMBER,
112: a_lvl_rec IN OUT NOCOPY m4u_xml_extn_utils.lvl_rec_typ,
113: x_ret_sts OUT NOCOPY VARCHAR2,
114: x_ret_msg OUT NOCOPY VARCHAR2)
115: IS
116: l_progress VARCHAR2(4000);
136: cln_debug_pub.add('Exiting push_end_tag - Success',2);
137: END IF;
138: EXCEPTION
139: WHEN OTHERS THEN
140: m4u_xml_extn_utils.handle_exception(SQLCODE,SQLERRM,l_progress,
141: 'm4u_xml_extn.push_end_tag',x_ret_sts,x_ret_msg);
142: END push_end_tag;
143:
144:
146: -- puts start tag on to level XML
147: -- gets value of element onto the level XML
148: -- process attributes of the elements
149: -- pushes element index into level end-tag-stk
150: FUNCTION process_element(a_elmt_rec IN m4u_xml_extn_utils.elmnt_rec_typ,
151: a_elmt_idx IN NUMBER,
152: a_lvl_rec IN OUT NOCOPY m4u_xml_extn_utils.lvl_rec_typ,
153: x_nxt_idx OUT NOCOPY NUMBER,
154: x_ret_sts OUT NOCOPY VARCHAR2,
148: -- process attributes of the elements
149: -- pushes element index into level end-tag-stk
150: FUNCTION process_element(a_elmt_rec IN m4u_xml_extn_utils.elmnt_rec_typ,
151: a_elmt_idx IN NUMBER,
152: a_lvl_rec IN OUT NOCOPY m4u_xml_extn_utils.lvl_rec_typ,
153: x_nxt_idx OUT NOCOPY NUMBER,
154: x_ret_sts OUT NOCOPY VARCHAR2,
155: x_ret_msg OUT NOCOPY VARCHAR2)
156: RETURN VARCHAR2
156: RETURN VARCHAR2
157: AS
158: l_xml VARCHAR2(32767);
159: l_attr_idx NUMBER;
160: l_elmt_rec m4u_xml_extn_utils.elmnt_rec_typ;
161: l_tmp_val VARCHAR2(4000);
162: l_progress VARCHAR2(4000);
163: l_el_val VARCHAR2(4000);
164: l_no_attrval BOOLEAN;
185: cln_debug_pub.add('Loop l_attr_idx - ' || l_attr_idx,2);
186: END IF;
187:
188: -- keep checking if we are tripping off the table
189: IF l_attr_idx > m4u_xml_extn_utils.g_elmnt_count THEN
190:
191: IF g_log_lvl <= 1 THEN
192: cln_debug_pub.add('Exit loop l_attr_idx >= m4u_xml_extn_utils.g_elmnt_count',1);
193: END IF;
188: -- keep checking if we are tripping off the table
189: IF l_attr_idx > m4u_xml_extn_utils.g_elmnt_count THEN
190:
191: IF g_log_lvl <= 1 THEN
192: cln_debug_pub.add('Exit loop l_attr_idx >= m4u_xml_extn_utils.g_elmnt_count',1);
193: END IF;
194: EXIT;
195: ELSE
196: l_elmt_rec := m4u_xml_extn_utils.g_elmnt_map(l_attr_idx);
192: cln_debug_pub.add('Exit loop l_attr_idx >= m4u_xml_extn_utils.g_elmnt_count',1);
193: END IF;
194: EXIT;
195: ELSE
196: l_elmt_rec := m4u_xml_extn_utils.g_elmnt_map(l_attr_idx);
197: IF g_log_lvl <= 1 THEN
198: cln_debug_pub.add('Next-rec l_elmt_rec.type - ' || l_elmt_rec.type, 1);
199: cln_debug_pub.add('Next-rec l_elmt_rec.id - ' || l_elmt_rec.id, 1);
200: cln_debug_pub.add('Next-rec l_elmt_rec.parent_id- ' || l_elmt_rec.parent_id, 1);
200: cln_debug_pub.add('Next-rec l_elmt_rec.parent_id- ' || l_elmt_rec.parent_id, 1);
201: END IF;
202:
203: -- if next record attribute and child or current element
204: IF l_elmt_rec.type = m4u_xml_extn_utils.c_nodetyp_attr
205: AND l_elmt_rec.parent_id = a_elmt_rec.id THEN
206:
207: l_tmp_val := get_node_value(l_elmt_rec,x_ret_sts,x_ret_msg);
208:
234: END LOOP;
235:
236: l_el_val := NULL;
237:
238: IF a_elmt_rec.type = m4u_xml_extn_utils.c_nodetyp_elmt THEN
239:
240: l_el_val := get_node_value(a_elmt_rec,x_ret_sts,x_ret_msg);
241: IF x_ret_sts <> g_success_code THEN
242: IF g_log_lvl <= 1 THEN
245: RAISE FND_API.G_EXC_ERROR;
246: END IF;
247: END IF;
248:
249: IF l_el_val IS NOT NULL OR a_elmt_rec.type = m4u_xml_extn_utils.c_nodetyp_cont THEN
250:
251: l_xml := l_xml || '>' || l_el_val;
252: -- push end-tag to the stack
253: push_end_tag(a_elmt_idx,a_lvl_rec,x_ret_sts,x_ret_msg);
290: IF g_log_lvl <= 6 THEN
291: cln_debug_pub.add('Exiting m4u_xml_extn.process_element - Error',6);
292: cln_debug_pub.add('x_ret_msg - ' || x_ret_msg,6);
293: END IF;
294: x_nxt_idx := m4u_xml_extn_utils.g_elmnt_count+1;
295: x_ret_sts := g_err_code;
296: l_xml := null;
297: RETURN l_xml;
298: WHEN OTHERS THEN
295: x_ret_sts := g_err_code;
296: l_xml := null;
297: RETURN l_xml;
298: WHEN OTHERS THEN
299: m4u_xml_extn_utils.handle_exception(SQLCODE,SQLERRM,l_progress,
300: 'm4u_xml_extn.process_element',x_ret_sts,x_ret_msg);
301: l_xml := null;
302: RETURN l_xml;
303: END process_element;
307: -- essentially this is called when a new element/level is to be processed.
308: -- the parent-id of new element is passed to the routine
309: -- so nested end tags are popped out
310: FUNCTION pop_end_tags(a_el_idx IN NUMBER,
311: a_lvl_rec IN OUT NOCOPY m4u_xml_extn_utils.lvl_rec_typ,
312: x_ret_sts OUT NOCOPY VARCHAR2,
313: x_ret_msg OUT NOCOPY VARCHAR2)
314: RETURN VARCHAR2 AS
315: l_ret_str VARCHAR2(32767);
313: x_ret_msg OUT NOCOPY VARCHAR2)
314: RETURN VARCHAR2 AS
315: l_ret_str VARCHAR2(32767);
316: l_idx NUMBER;
317: l_elmt_rec m4u_xml_extn_utils.elmnt_rec_typ;
318: l_el_idx NUMBER;
319: l_progress VARCHAR2(4000);
320: BEGIN
321: IF g_log_lvl <= 2 THEN
345: IF g_log_lvl <= 1 THEN
346: cln_debug_pub.add('Loop l_el_idx - ' || l_el_idx,1);
347: END IF;
348:
349: l_elmt_rec := m4u_xml_extn_utils.g_elmnt_map(l_el_idx);
350: IF g_log_lvl <= 1 THEN
351: cln_debug_pub.add('Loop l_elmt_rec.id - ' || l_elmt_rec.id,1);
352: END IF;
353: -- if node we are looking for is on tos
379: END IF;
380: RETURN l_ret_str;
381: EXCEPTION
382: WHEN OTHERS THEN
383: m4u_xml_extn_utils.handle_exception(SQLCODE,SQLERRM,l_progress,
384: 'm4u_xml_extn.pop_end_tags',x_ret_sts,x_ret_msg);
385: END pop_end_tags;
386:
387: --kludge to find next non-child level given
410:
411: x_ret_sts := g_success_code;
412: x_ret_msg := NULL;
413:
414: l_cnt := m4u_xml_extn_utils.g_elmnt_count;
415:
416: IF g_log_lvl <= 1 THEN
417: cln_debug_pub.add('l_cnt - ' || l_cnt,1);
418: END IF;
416: IF g_log_lvl <= 1 THEN
417: cln_debug_pub.add('l_cnt - ' || l_cnt,1);
418: END IF;
419:
420: l_tmp_str1 := '@' || to_char(m4u_xml_extn_utils.g_elmnt_map(a_strt_idx).id) || '@';
421:
422: FOR i in a_strt_idx+1..l_cnt LOOP
423: l_tmp_str2 := '@' || to_char(m4u_xml_extn_utils.g_elmnt_map(i).parent_id) || '@';
424:
419:
420: l_tmp_str1 := '@' || to_char(m4u_xml_extn_utils.g_elmnt_map(a_strt_idx).id) || '@';
421:
422: FOR i in a_strt_idx+1..l_cnt LOOP
423: l_tmp_str2 := '@' || to_char(m4u_xml_extn_utils.g_elmnt_map(i).parent_id) || '@';
424:
425: IF m4u_xml_extn_utils.g_elmnt_map(i).lvl_id <> a_lvl_id THEN
426: IF instr(l_tmp_str1,l_tmp_str2) <= 0 THEN
427: IF g_log_lvl <= 2 THEN
421:
422: FOR i in a_strt_idx+1..l_cnt LOOP
423: l_tmp_str2 := '@' || to_char(m4u_xml_extn_utils.g_elmnt_map(i).parent_id) || '@';
424:
425: IF m4u_xml_extn_utils.g_elmnt_map(i).lvl_id <> a_lvl_id THEN
426: IF instr(l_tmp_str1,l_tmp_str2) <= 0 THEN
427: IF g_log_lvl <= 2 THEN
428: cln_debug_pub.add('Exiting m4u_xml_extn.next_lvl_elmnt',2);
429: cln_debug_pub.add('i - ' || i,2);
431: return i;
432: END IF;
433: END IF;
434:
435: l_tmp_str1 := l_tmp_str1 || '@' || to_char(m4u_xml_extn_utils.g_elmnt_map(i).id) || '@';
436:
437: END LOOP;
438:
439: IF g_log_lvl <= 2 THEN
443:
444: return l_cnt + 1;
445: EXCEPTION
446: WHEN OTHERS THEN
447: m4u_xml_extn_utils.handle_exception(SQLCODE,SQLERRM,l_progress,
448: 'm4u_xml_extn.next_lvl_elmnt',x_ret_sts,x_ret_msg);
449: END next_lvl_elmnt;
450:
451: -- process_level starting at a_strt_idx
457: x_ret_sts OUT NOCOPY VARCHAR2,
458: x_ret_msg OUT NOCOPY VARCHAR2)
459: AS
460:
461: l_elmt_rec m4u_xml_extn_utils.elmnt_rec_typ;
462: l_lvl_rec m4u_xml_extn_utils.lvl_rec_typ;
463:
464: l_lvl_id NUMBER;
465: l_cur_idx NUMBER;
458: x_ret_msg OUT NOCOPY VARCHAR2)
459: AS
460:
461: l_elmt_rec m4u_xml_extn_utils.elmnt_rec_typ;
462: l_lvl_rec m4u_xml_extn_utils.lvl_rec_typ;
463:
464: l_lvl_id NUMBER;
465: l_cur_idx NUMBER;
466: l_nxt_idx NUMBER;
479: cln_debug_pub.add('a_start_idx - ' || a_strt_idx,1);
480: END IF;
481:
482:
483: IF a_strt_idx > m4u_xml_extn_utils.g_elmnt_count THEN
484: x_xml := NULL;
485: x_nxt_idx := a_strt_idx;
486: x_ret_sts := g_success_code;
487: x_ret_msg := NULL;
487: x_ret_msg := NULL;
488: RETURN;
489: END IF;
490:
491: l_elmt_rec := m4u_xml_extn_utils.g_elmnt_map(a_strt_idx);
492: l_lvl_id := l_elmt_rec.lvl_id;
493:
494:
495: IF g_log_lvl <= 1 THEN
497: cln_debug_pub.add('l_elmt_rec.id - ' || l_elmt_rec.id,1);
498: cln_debug_pub.add('l_lvl_id - ' || l_lvl_id,1);
499: END IF;
500:
501: m4u_xml_extn_utils.init_level(l_lvl_id,l_lvl_rec,x_ret_sts, x_ret_msg);
502: IF g_log_lvl <= 1 THEN
503: cln_debug_pub.add('m4u_xml_extn_utils.init_level returned',1);
504: cln_debug_pub.add('x_ret_msg - ' || x_ret_msg,1);
505: cln_debug_pub.add('x_ret_sts - ' || x_ret_sts,1);
499: END IF;
500:
501: m4u_xml_extn_utils.init_level(l_lvl_id,l_lvl_rec,x_ret_sts, x_ret_msg);
502: IF g_log_lvl <= 1 THEN
503: cln_debug_pub.add('m4u_xml_extn_utils.init_level returned',1);
504: cln_debug_pub.add('x_ret_msg - ' || x_ret_msg,1);
505: cln_debug_pub.add('x_ret_sts - ' || x_ret_sts,1);
506: END IF;
507: IF x_ret_sts <> g_success_code THEN
507: IF x_ret_sts <> g_success_code THEN
508: RAISE FND_API.G_EXC_ERROR;
509: END IF;
510:
511: m4u_xml_extn_utils.push_lvl_stack(l_lvl_id,x_ret_sts,x_ret_msg);
512: IF g_log_lvl <= 1 THEN
513: cln_debug_pub.add('m4u_xml_extn_utils.push_lvl_stack returned',1);
514: cln_debug_pub.add('x_ret_msg - ' || x_ret_msg,1);
515: cln_debug_pub.add('x_ret_sts - ' || x_ret_sts,1);
509: END IF;
510:
511: m4u_xml_extn_utils.push_lvl_stack(l_lvl_id,x_ret_sts,x_ret_msg);
512: IF g_log_lvl <= 1 THEN
513: cln_debug_pub.add('m4u_xml_extn_utils.push_lvl_stack returned',1);
514: cln_debug_pub.add('x_ret_msg - ' || x_ret_msg,1);
515: cln_debug_pub.add('x_ret_sts - ' || x_ret_sts,1);
516: END IF;
517: IF x_ret_sts <> g_success_code THEN
538: cln_debug_pub.add('l_prv_idx - ' || l_prv_idx,1);
539: cln_debug_pub.add('l_nxt_idx - ' || l_nxt_idx,1);
540: END IF;
541:
542: IF l_cur_idx > m4u_xml_extn_utils.g_elmnt_count THEN
543: IF g_log_lvl <= 1 THEN
544: cln_debug_pub.add('l_cur_idx > g_elmnt_count',1);
545: END IF;
546:
554: END IF;
555: l_prv_idx := l_cur_idx;
556: l_cur_idx := a_strt_idx;
557: -- store changes back into global list of levels
558: m4u_xml_extn_utils.g_lvl_rec_tab(l_lvl_id) := l_lvl_rec;
559: ELSE
560: IF g_log_lvl <= 1 THEN
561: cln_debug_pub.add('l_cur_idx <= g_elmnt_count',1);
562: END IF;
560: IF g_log_lvl <= 1 THEN
561: cln_debug_pub.add('l_cur_idx <= g_elmnt_count',1);
562: END IF;
563:
564: l_elmt_rec := m4u_xml_extn_utils.g_elmnt_map(l_cur_idx);
565:
566: IF g_log_lvl <= 1 THEN
567: cln_debug_pub.add('l_elmt_rec.id - ' || l_elmt_rec.id,1);
568: END IF;
595:
596: l_prv_idx := l_cur_idx;
597: l_cur_idx := l_nxt_idx;
598: -- store changes back into global list of levels
599: m4u_xml_extn_utils.g_lvl_rec_tab(l_lvl_id) := l_lvl_rec;
600:
601: ELSE
602: IF g_log_lvl <= 1 THEN
603: cln_debug_pub.add('l_elmt_rec.lvl_id <> l_lvl_id',1);
605:
606: l_child_lvl := false;
607:
608: FOR i IN 1..l_cur_idx-1 LOOP
609: IF m4u_xml_extn_utils.g_elmnt_map(i).id = l_elmt_rec.parent_id THEN
610: IF m4u_xml_extn_utils.g_elmnt_map(i).lvl_id = l_lvl_id THEN
611: l_child_lvl := true;
612: END IF;
613: END IF;
606: l_child_lvl := false;
607:
608: FOR i IN 1..l_cur_idx-1 LOOP
609: IF m4u_xml_extn_utils.g_elmnt_map(i).id = l_elmt_rec.parent_id THEN
610: IF m4u_xml_extn_utils.g_elmnt_map(i).lvl_id = l_lvl_id THEN
611: l_child_lvl := true;
612: END IF;
613: END IF;
614: END LOOP;
642: l_xml := l_xml || l_tmp_xml;
643: l_prv_idx := l_cur_idx;
644: l_cur_idx := l_nxt_idx;
645:
646: IF l_nxt_idx <= m4u_xml_extn_utils.g_elmnt_count THEN
647: IF m4u_xml_extn_utils.g_elmnt_map(l_nxt_idx).lvl_id <> l_lvl_id THEN
648: l_ret_idx := l_nxt_idx;
649: END IF;
650: ELSE
643: l_prv_idx := l_cur_idx;
644: l_cur_idx := l_nxt_idx;
645:
646: IF l_nxt_idx <= m4u_xml_extn_utils.g_elmnt_count THEN
647: IF m4u_xml_extn_utils.g_elmnt_map(l_nxt_idx).lvl_id <> l_lvl_id THEN
648: l_ret_idx := l_nxt_idx;
649: END IF;
650: ELSE
651: l_ret_idx := l_nxt_idx;
650: ELSE
651: l_ret_idx := l_nxt_idx;
652: END IF;
653: -- store changes back into global list of levels
654: m4u_xml_extn_utils.g_lvl_rec_tab(l_lvl_id) := l_lvl_rec;
655: ELSE
656: IF g_log_lvl <= 1 THEN
657: cln_debug_pub.add('non-child level found',1);
658: END IF;
669: l_prv_idx := -1;
670: l_nxt_idx := -1;
671: l_cur_idx := a_strt_idx;
672: -- store changes back into global list of levels
673: m4u_xml_extn_utils.g_lvl_rec_tab(l_lvl_id) := l_lvl_rec;
674: END IF;
675: END IF;
676: END IF;
677:
682: END IF;
683:
684: -- just to make sure
685: l_xml := l_xml || pop_end_tags(-1,l_lvl_rec,x_ret_sts,x_ret_msg);
686: m4u_xml_extn_utils.g_lvl_rec_tab(l_lvl_id) := l_lvl_rec;
687:
688: IF g_log_lvl <= 1 THEN
689: cln_debug_pub.add('pop_end_tags x_ret_sts - ' || x_ret_sts,1);
690: END IF;
692: RAISE FND_API.G_EXC_ERROR;
693: END IF;
694: -- above code can be deleted
695:
696: m4u_xml_extn_utils.un_init_level(l_lvl_id,x_ret_sts,x_ret_msg);
697: IF g_log_lvl <= 1 THEN
698: cln_debug_pub.add('m4u_xml_extn_utils.un_init_level - ' || x_ret_sts,1);
699: END IF;
700: IF x_ret_sts <> g_success_code THEN
694: -- above code can be deleted
695:
696: m4u_xml_extn_utils.un_init_level(l_lvl_id,x_ret_sts,x_ret_msg);
697: IF g_log_lvl <= 1 THEN
698: cln_debug_pub.add('m4u_xml_extn_utils.un_init_level - ' || x_ret_sts,1);
699: END IF;
700: IF x_ret_sts <> g_success_code THEN
701: RAISE FND_API.G_EXC_ERROR;
702: END IF;
714: RAISE FND_API.G_EXC_ERROR;
715: END IF;
716: END IF;
717: IF g_log_lvl <= 1 THEN
718: cln_debug_pub.add('m4u_xml_extn_utils.next_lvl_elmnt: l_ret_idx - ' || l_ret_idx,1);
719: END IF;
720:
721: l_lvl_id := m4u_xml_extn_utils.pop_lvl_stack(x_ret_sts,x_ret_msg);
722: IF g_log_lvl <= 1 THEN
717: IF g_log_lvl <= 1 THEN
718: cln_debug_pub.add('m4u_xml_extn_utils.next_lvl_elmnt: l_ret_idx - ' || l_ret_idx,1);
719: END IF;
720:
721: l_lvl_id := m4u_xml_extn_utils.pop_lvl_stack(x_ret_sts,x_ret_msg);
722: IF g_log_lvl <= 1 THEN
723: cln_debug_pub.add('m4u_xml_extn_utils.pop_lvl_stack x_ret_sts - ' || x_ret_sts,1);
724: END IF;
725: IF x_ret_sts <> g_success_code THEN
719: END IF;
720:
721: l_lvl_id := m4u_xml_extn_utils.pop_lvl_stack(x_ret_sts,x_ret_msg);
722: IF g_log_lvl <= 1 THEN
723: cln_debug_pub.add('m4u_xml_extn_utils.pop_lvl_stack x_ret_sts - ' || x_ret_sts,1);
724: END IF;
725: IF x_ret_sts <> g_success_code THEN
726: RAISE FND_API.G_EXC_ERROR;
727: END IF;
761: cln_debug_pub.add('x_ret_msg - ' || x_ret_msg ,6);
762: END IF;
763: x_ret_sts := g_err_code;
764: WHEN OTHERS THEN
765: m4u_xml_extn_utils.handle_exception(SQLCODE,SQLERRM,l_progress,
766: 'm4u_xml_extn.process_level',x_ret_sts,x_ret_msg);
767: END process_level;
768:
769:
811: END IF;
812:
813: -- load map data into memory structures
814: l_progress := 'XML fragment generation - Map initialization';
815: m4u_xml_extn_utils.init_map(
816: a_extn_name => a_extn_name,
817: a_tp_id => a_tp_id,
818: a_dflt_tp => a_tp_dflt,
819: a_param_list => a_param_lst,
822: x_ret_msg => x_ret_msg);
823:
824:
825: IF g_log_lvl <= 1 THEN
826: cln_debug_pub.add('Returned from API m4u_xml_extn_utils.init_map',1);
827: cln_debug_pub.add('x_ret_sts - ' || x_ret_sts,1);
828: cln_debug_pub.add('x_ret_msg - ' || x_ret_msg,1);
829: END IF;
830:
845: x_ret_msg => x_ret_msg);
846:
847: IF x_ret_sts <> g_success_code THEN
848: IF g_log_lvl <= 1 THEN
849: cln_debug_pub.add('Returned from API m4u_xml_extn_utils.process_level Error',1);
850: END IF;
851: FND_MESSAGE.SET_NAME('CLN','M4U_XFWK_XMLGEN_ERR');
852: FND_MESSAGE.SET_TOKEN('EXTN_NAME',a_extn_name);
853: FND_MESSAGE.SET_TOKEN('TP_ID',a_tp_id);
857:
858: l_progress := 'XML fragment generation - Logging';
859:
860: -- log generated XML
861: m4u_xml_extn_utils.log_xml(a_xml => l_xml_frgmt ,
862: x_ret_sts => l_api_ret_sts,
863: x_ret_msg => l_api_ret_msg);
864:
865: IF g_log_lvl <= 1 THEN
871: l_progress := 'XML fragment generation - Validation';
872:
873: -- validate generated XML
874: IF l_xml_frgmt IS NOT NULL AND length(l_xml_frgmt) > 0 THEN
875: m4u_xml_extn_utils.validate(a_xml => l_xml_frgmt,
876: x_valdtn_sts => l_valdtn_sts,
877: x_valdtn_msg => l_valdtn_msg,
878: x_api_ret_sts => l_api_ret_sts,
879: x_api_ret_msg => l_api_ret_msg);
899: x_xml := l_xml_frgmt;
900:
901: l_progress := 'XML fragment generation - free resources';
902: -- free-memory used by map
903: m4u_xml_extn_utils.un_init_map(
904: x_ret_sts => l_api_ret_sts ,
905: x_ret_msg => l_api_ret_msg);
906: IF g_log_lvl <= 1 THEN
907: cln_debug_pub.add('Returned from m4u_xml_extn_utils.un_init_map',1);
903: m4u_xml_extn_utils.un_init_map(
904: x_ret_sts => l_api_ret_sts ,
905: x_ret_msg => l_api_ret_msg);
906: IF g_log_lvl <= 1 THEN
907: cln_debug_pub.add('Returned from m4u_xml_extn_utils.un_init_map',1);
908: cln_debug_pub.add('x_api_ret_sts - ' || l_api_ret_sts,1);
909: cln_debug_pub.add('x_api_ret_msg - ' || l_api_ret_msg,1);
910: END IF;
911:
915: END IF;
916: RETURN;
917: EXCEPTION
918: WHEN OTHERS THEN
919: m4u_xml_extn_utils.handle_exception(SQLCODE,SQLERRM,l_progress,
920: 'm4u_xml_extn.generate_xml_fragment',x_ret_sts,x_ret_msg);
921: BEGIN
922: m4u_xml_extn_utils.un_init_map(
923: x_ret_sts => l_api_ret_sts ,
918: WHEN OTHERS THEN
919: m4u_xml_extn_utils.handle_exception(SQLCODE,SQLERRM,l_progress,
920: 'm4u_xml_extn.generate_xml_fragment',x_ret_sts,x_ret_msg);
921: BEGIN
922: m4u_xml_extn_utils.un_init_map(
923: x_ret_sts => l_api_ret_sts ,
924: x_ret_msg => l_api_ret_msg);
925: EXCEPTION
926: WHEN OTHERS THEN