[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;