DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_XML_GEN_PKG

Source


1 PACKAGE BODY PAY_XML_GEN_PKG AS
2 /* $Header: pyxmlgen.pkb 120.0.12000000.2 2007/05/23 12:38:19 pgongada noship $ */
3 
4 Procedure exec_report_map_function (
5 p_func_name in varchar2,
6 p_parameters in varchar2,
7 p_tempfile_name in varchar2,
8 p_xml_data out nocopy CLOB
9 ) is
10 
11 l_exec_stmt               VARCHAR2(32000);
12 l_xml_data CLOB;
13 l_final_xml_data CLOB;
14 l_start_pos INTEGER;
15 l_end_pos INTEGER;
16 l_charset fnd_lookup_values.tag%TYPE;
17 l_header varchar2(500);
18 l_len INTEGER;
19 
20 CURSOR c_dbnlscharset IS
21 SELECT tag charset
22 FROM fnd_lookup_values
23 WHERE lookup_type = 'FND_ISO_CHARACTER_SET_MAP'
24       AND lookup_code = SUBSTR(USERENV('LANGUAGE'), INSTR(USERENV('LANGUAGE'), '.') + 1)
25       AND language = 'US';
26 
27 Begin
28 
29     l_exec_stmt := 'BEGIN '
30                    || p_func_name || ' ( '
31                    ||  p_parameters
32 				   || ' p_template_name => '''
33                    ||  p_tempfile_name || ''', '
34                    || ' p_xml => :1'
35                    || ' ); END; ';
36 
37  EXECUTE IMMEDIATE l_exec_stmt USING out l_xml_data;
38 
39 dbms_lob.createtemporary(l_final_xml_data,false,dbms_lob.session);
40 dbms_lob.open(l_final_xml_data,dbms_lob.lob_readwrite);
41 
42 
43 l_start_pos := dbms_lob.instr( l_xml_data, '<?');
44 l_end_pos := dbms_lob.instr( l_xml_data, '?>');
45 
46 IF l_start_pos -1 > 0 THEN
47 dbms_lob.copy(l_final_xml_data,l_xml_data,l_start_pos -1, 1,1);
48 END IF;
49 l_charset := null;
50 
51 OPEN c_dbnlscharset;
52 FETCH c_dbnlscharset into l_charset;
53 CLOSE c_dbnlscharset;
54 
55 
56 l_header :='<?xml version="1.0"?>';
57 
58 dbms_lob.writeappend(l_final_xml_data,length(l_header),l_header);
59 l_len := dbms_lob.getlength(l_final_xml_data);
60 
61 -- Bug # 5967599
62 -- Added the below condition to handle the data if it doesn't contain
63 -- XML header.
64 if (l_end_pos <> 0) then
65 	dbms_lob.copy(l_final_xml_data,l_xml_data, dbms_lob.getlength(l_xml_data)-l_end_pos,l_len+1, l_end_pos+2);
66 else
67 	dbms_lob.copy(l_final_xml_data,l_xml_data, dbms_lob.getlength(l_xml_data)-l_end_pos,l_len+1, l_end_pos+1);
68 end if;
69 dbms_lob.close(l_xml_data);
70 p_xml_data := l_final_xml_data;
71 
72 
73 End exec_report_map_function;
74 
75 
76 /* BLOB version of exec_report_map_function */
77 
78 Procedure exec_report_map_function (
79 p_func_name in varchar2,
80 p_parameters in varchar2,
81 p_tempfile_name in varchar2,
82 p_xml_data out nocopy BLOB
83 ) is
84 
85 l_exec_stmt               VARCHAR2(32000);
86 l_xml_data BLOB;
87 l_final_xml_data BLOB;
88 l_start_pos INTEGER;
89 l_end_pos INTEGER;
90 l_charset fnd_lookup_values.tag%TYPE;
91 l_header varchar2(500);
92 l_len INTEGER;
93 
94 CURSOR c_dbnlscharset IS
95 SELECT tag charset
96 FROM fnd_lookup_values
97 WHERE lookup_type = 'FND_ISO_CHARACTER_SET_MAP'
98       AND lookup_code = SUBSTR(USERENV('LANGUAGE'), INSTR(USERENV('LANGUAGE'), '.') + 1)
99       AND language = 'US';
100 
101 Begin
102 
103     l_exec_stmt := 'BEGIN '
104                    || p_func_name || ' ( '
105                    ||  p_parameters
106 				   || ' p_template_name => '''
107                    ||  p_tempfile_name || ''', '
108                    || ' p_xml => :1'
109                    || ' ); END; ';
110 
111  EXECUTE IMMEDIATE l_exec_stmt USING out l_xml_data;
112 
113 /*dbms_lob.createtemporary(l_final_xml_data,false,dbms_lob.session);
114 dbms_lob.open(l_final_xml_data,dbms_lob.lob_readwrite);
115 
116 
117 l_start_pos := dbms_lob.instr( l_xml_data, '<?');
118 l_end_pos := dbms_lob.instr( l_xml_data, '?>');
119 
120 IF l_start_pos -1 > 0 THEN
121 dbms_lob.copy(l_final_xml_data,l_xml_data,l_start_pos -1, 1,1);
122 END IF;
123 l_charset := null;
124 
125 OPEN c_dbnlscharset;
126 FETCH c_dbnlscharset into l_charset;
127 CLOSE c_dbnlscharset;
128 
129 
130 l_header :='<?xml version="1.0"?>';
131 
132 dbms_lob.writeappend(l_final_xml_data,length(l_header),l_header);
133 l_len := dbms_lob.getlength(l_final_xml_data);
134 
135 dbms_lob.copy(l_final_xml_data,l_xml_data, dbms_lob.getlength(l_xml_data)-l_end_pos,l_len+1, l_end_pos+2);
136 dbms_lob.close(l_xml_data);*/
137 p_xml_data := l_xml_data;
138 
139 
140 End exec_report_map_function;
141 
142 
143 END PAY_XML_GEN_PKG;