DBA Data[Home] [Help]

PACKAGE BODY: APPS.GCS_DATA_TEMPLATE_UTIL_PKG

Source


1 PACKAGE BODY GCS_DATA_TEMPLATE_UTIL_PKG  AS
2 /* $Header: gcsdtmanipb.pls 120.17 2007/02/27 14:46:06 sangarg ship $ */
3 
4 g_api varchar2(50) := 'gcs.plsql.GCS_DATA_TEMPLATE_UTIL_PKG';
5 
6 -- PRIVATE PROCEDURE
7 -- Used by value set map template manipulation
8 PROCEDURE replace_clob ( p_src_clob        IN OUT NOCOPY CLOB,
9                          p_replace_with    IN VARCHAR2,
10                          p_first_Offset    IN INTEGER,
11                          p_second_variable IN VARCHAR2
12                        )
13 IS
14 
15  l_buffer     INTEGER := 30000;
16  l_vs_map_clob      CLOB := EMPTY_CLOB;
17  l_varchar    VARCHAR2(32767);
18  l_start      NUMBER;
19  l_read_length NUMBER;
20 
21 BEGIN
22 
23    IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
24        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'replace_clob', '<<begin>>');
25    END IF;
26 
27    DBMS_LOB.createtemporary(l_vs_map_clob,TRUE);
28    l_start:=1;
29    l_read_length := LENGTH( DBMS_LOB.SUBSTR(p_src_clob, l_buffer, l_start));
30    -- WRITE THE FIRST PART OF THE CLOB
31    FOR i IN 1..CEIL(p_first_Offset/l_read_length) LOOP
32 
33       IF(l_start+l_read_length > p_first_Offset) THEN
34          l_buffer := p_first_Offset-l_start;
35       END IF;
36 
37       l_varchar := DBMS_LOB.SUBSTR(p_src_clob, l_buffer, l_start);
38       DBMS_LOB.WRITEAPPEND(l_vs_map_clob, LENGTH(l_varchar), l_varchar);
39       l_start := l_start + LENGTH(l_varchar);
40 
41       IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
42           FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'replace_clob', 'l_start : '||l_start);
43           FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'replace_clob', 'l_read_length : '||l_read_length);
44           FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'replace_clob', 'p_first_Offset : '||p_first_Offset);
45           FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'replace_clob', 'l_buffer : '||l_buffer);
46           FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'replace_clob', 'l_varchar : '||l_varchar);
47       END IF;
48 
49    END LOOP;
50 
51    -- WRITE THE REPLACEMENT
52    DBMS_LOB.writeappend(l_vs_map_clob, length(p_replace_with), p_replace_with);
53    DBMS_LOB.writeappend(l_vs_map_clob, LENGTH(p_second_variable), p_second_variable);
54    p_src_clob:=l_vs_map_clob;
55    DBMS_LOB.freetemporary(l_vs_map_clob);
56 
57    IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
58        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'replace_clob', '<<end>>');
59    END IF;
60 
61    EXCEPTION
62         WHEN OTHERS THEN
63         BEGIN
64            IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_ERROR) THEN
65                   FND_LOG.STRING (FND_LOG.LEVEL_ERROR, g_api || '.' || 'replace_clob', substr(SQLERRM,1,255));
66            END IF;
67         END;
68 END replace_clob;
69 
70 --
71 -- Procedure
72 --   GCS_REPLACE_DT_PROC
73 -- Purpose
74 --   Data Template Replacement Procedure.
75 -- Arguments
76 --   * None *
77 -- Example
78 --   GCS_DATA_TEMPLATE_UTIL_PKG.GCS_REPLACE_DT_PROC;
79 -- Notes
80 --
81 PROCEDURE gcs_replace_dt_proc( x_errbuf  OUT NOCOPY VARCHAR2,
82                                x_retcode OUT NOCOPY VARCHAR2
83                               )
84 IS
85 
86   TYPE r_gcs_datatemplates IS RECORD
87                                 (
88                                   template_code          VARCHAR2(150),
89                                   template_data          BLOB
90                                  );
91 
92   TYPE t_gcs_datatemplates	IS TABLE OF r_gcs_datatemplates;
93 
94   l_gcs_base_datatemplates t_gcs_datatemplates;
95   l_gcs_datatemplates t_gcs_datatemplates;
96 
97   l_select_list_gcs     VARCHAR2(10000);
98   l_select_list_dstb    VARCHAR2(10000);
99   l_select_list_dsload  VARCHAR2(10000);
100   l_gl_posted_select_list VARCHAR2(10000);
101 
102   l_table_list_gcs      VARCHAR2(10000);
103   l_table_list_dstb     VARCHAR2(10000);
104   --fix 5351083
105   --l_table_list_dsload   VARCHAR2(10000);
106 
107   l_where_list_gcs      VARCHAR2(10000);
108   --fix 5351083
109   --l_where_list_dsload   VARCHAR2(10000);
110   l_where_list_dstb     VARCHAR2(10000);
111   --fix 5351083
112   --l_group_by_list       VARCHAR2(10000);
113   l_dstb_group_by_list  VARCHAR2(10000);
114   l_gl_posted_group_list VARCHAR2(10000);
115 
116   l_element_list_gcs    VARCHAR2(10000);
117   l_element_list_dsload VARCHAR2(10000);
118   --fix 5351083
119   --l_element_list_dstb   VARCHAR2(10000);
120 
121   l_orderby_list_gcs    VARCHAR2(10000);
122   l_orderby_list_dsload VARCHAR2(10000);
123   l_orderby_list_dstb   VARCHAR2(10000);
124 
125   l_vs_group_list       VARCHAR2(32767);
126   l_remaining_str       VARCHAR2(100);
127 
128   l_base_templatecode   VARCHAR2(50);
129 
130   l_varchar             VARCHAR2(32767);
131   l_start	              INTEGER := 1;
132   l_buffer              INTEGER :=32767;
133   l_off_write           INTEGER := 1;
134   l_amt_write           INTEGER := 32767;
135 
136   l_start_tag           NUMBER;
137   l_end_tag             NUMBER;
138   l_sub_string          VARCHAR2(32767);
139   l_start_tag_length    NUMBER;
140 
141   l_blob_in             BLOB;
142   l_blob_out            BLOB;
143   l_clob                CLOB;
144 
145   CURSOR c_base_data_templates
146   IS
147           SELECT lob_code,
148                  file_data
149             FROM xdo_lobs
150            WHERE application_short_name = 'GCS'
151              AND lob_type = 'DATA_TEMPLATE'
152              AND lob_code IN ('GCS_DS_LOAD_SOURCE_BASE',
153                               'GCS_DS_TB_SOURCE_BASE',
154                               'GCS_AD_TB_SOURCE_BASE',
155                               'GCS_ENTRY_SOURCE_BASE',
156                               'GCS_VS_MAP_SOURCE_BASE',
157                               'GCS_INTER_COMP_SOURCE_BASE',
158                               'GCS_DS_IMPACTED_BAL_SOURCE_BASE',
159                               --Bugfix: 5861665
160                               'GCS_CONS_INTER_COMP_SOURCE_BASE')
161              AND EXISTS (SELECT 1 FROM gcs_system_options);
162 
163 BEGIN
164 
165    IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
166        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', '<<begin>>');
167    END IF;
168 
169    -- JOB 1 : CONSTRUCT THE GCS/FEM ACTIVE DIMS SELECT/TABLE/WHERE/ORDER/GROUP LIST FOR MANIPULATION USE
170    -- select lists
171    l_select_list_gcs :=  gcs_xml_utility_pkg.g_gcs_dims_select_list;
172    l_select_list_dstb :=  gcs_xml_utility_pkg.g_fem_dims_select_list_dstb;
173    l_select_list_dsload :=  gcs_xml_utility_pkg.g_fem_dims_select_list_dsload;
174    l_gl_posted_select_list := gcs_xml_utility_pkg.g_fem_nonposted_select_stmnt;
175 
176    -- table lists
177    l_table_list_gcs  :=  gcs_xml_utility_pkg.g_gcs_dims_table_list;
178    l_table_list_dstb  :=  gcs_xml_utility_pkg.g_fem_dims_table_list_dstb;
179    --fix 5351083
180    --l_table_list_dsload  :=  gcs_xml_utility_pkg.g_fem_dims_table_list_dsload;
181    -- where lists
182    l_where_list_gcs  :=  gcs_xml_utility_pkg.g_gcs_dims_where_clause;
183    --fix 5351083
184    --l_where_list_dsload := gcs_xml_utility_pkg.g_fem_dims_dsload_where_clause;
185    l_where_list_dstb :=gcs_xml_utility_pkg.g_fem_dims_dstb_where_clause;
186    -- group by lists
187    --fix 5351083
188    --l_group_by_list := gcs_xml_utility_pkg.g_group_by_stmnt;
189    l_dstb_group_by_list := gcs_xml_utility_pkg.g_group_by_stmnt;
190    l_gl_posted_group_list := gcs_xml_utility_pkg.g_fem_nonposted_group_stmnt;
191    -- element list
192    l_element_list_gcs := gcs_xml_utility_pkg.g_gcs_dims_xml_elem;
193    l_element_list_dsload := gcs_xml_utility_pkg.g_fem_dims_xml_elem;
194    --fix 5351083
195    --l_element_list_dstb := gcs_xml_utility_pkg.p_element_list_dstb;
196    -- order by list
197    l_orderby_list_gcs := gcs_xml_utility_pkg.g_gcs_dims_select_list;
198    --Santosh -- bug 5234796
199    l_orderby_list_dsload := gcs_xml_utility_pkg.g_fem_dims_dsload_order_clause;
200    l_orderby_list_dstb := gcs_xml_utility_pkg.g_fem_dims_select_list_dstb;
201    -- special list for vs map
202    l_vs_group_list := gcs_xml_utility_pkg.g_gcs_vsmp_xml_elem;
203 
204    IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
205        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_select_list_gcs : '||l_select_list_gcs);
206        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_select_list_dstb : '||l_select_list_dstb);
207        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_select_list_dsload : '||l_select_list_dsload);
208        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_gl_posted_select_list : '||l_gl_posted_select_list);
209        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_table_list_gcs : '||l_table_list_gcs);
210        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_table_list_dstb : '||l_table_list_dstb);
211        --FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_table_list_dsload : '||l_table_list_dsload);
212        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_where_list_gcs : '||l_where_list_gcs);
213        --FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_where_list_dsload : '||l_where_list_dsload);
214        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_where_list_dstb : '||l_where_list_dstb);
215        --FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_group_by_list : '||l_group_by_list);
216        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_dstb_group_by_list : '||l_dstb_group_by_list);
217        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_gl_posted_group_list : '||l_gl_posted_group_list);
218        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_element_list_gcs : '||l_element_list_gcs);
219        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_element_list_dsload : '||l_element_list_dsload);
220        --FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_element_list_dstb : '||l_element_list_dstb);
221        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_orderby_list_gcs : '||l_orderby_list_gcs);
222        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_orderby_list_dsload : '||l_orderby_list_dsload);
223        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_orderby_list_dstb : '||l_orderby_list_dstb);
224        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_vs_group_list : '||l_vs_group_list);
225    END IF;
226 
227    -- JOB 2 : OPEN CURSORS AND LOOP THROUGH EACH OF THE TEMPLATES
228    -- AND CARRY OUT REPORT-SPECIFIC MANIPULATIONS TO THEM
229    OPEN c_base_data_templates;
230    FETCH c_base_data_templates BULK COLLECT INTO l_gcs_base_datatemplates;
231 
232    -- Check if there's atleast one record to process
233    IF (l_gcs_base_datatemplates.FIRST IS NOT NULL AND l_gcs_base_datatemplates.LAST IS NOT NULL) THEN
234 
235      -- Loop through each dt one by one and manipulate it as required
236      FOR l_index IN l_gcs_base_datatemplates.FIRST .. l_gcs_base_datatemplates.LAST LOOP
237 
238        l_base_templatecode := l_gcs_base_datatemplates(l_index).template_code ;
239        l_blob_in := l_gcs_base_datatemplates(l_index).template_data ;
240 
241        IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
242            FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'DT manipulation loop for : ');
243            FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_base_templatecode : '||l_base_templatecode);
244        END IF;
245 
246            -- Reset all the offsets
247            l_start := 1;
248            l_buffer := 32767;
249            l_off_write := 1;
250            l_amt_write := 32767;
251            IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
252                FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'Convert base DT blob to clob.');
253            END IF;
254            -- Create a temporary clob to hold manipulated contents
255            DBMS_LOB.CREATETEMPORARY(l_clob, TRUE);
256            FOR i IN 1..CEIL(DBMS_LOB.GETLENGTH(l_blob_in) / l_buffer) LOOP
257              l_varchar := UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(l_blob_in, l_buffer, l_start));
258              DBMS_LOB.WRITEAPPEND(l_clob, LENGTH(l_varchar), l_varchar);
259              l_start := l_start + l_buffer;
260              IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
261                  FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_varchar : '||l_varchar);
262              END IF;
263            END LOOP;
264 
265            IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
266                FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'Converted base DT blob to clob and now pointing to target DT blob for manipulation.');
267            END IF;
268 
269            -- Got the clob out of the base dt blob
270            -- manipulate this clob as needed
271            -- Bugfix: 5861665
272            IF(l_base_templatecode = 'GCS_ENTRY_SOURCE_BASE'
273               OR l_base_templatecode = 'GCS_AD_TB_SOURCE_BASE'
274               OR l_base_templatecode = 'GCS_INTER_COMP_SOURCE_BASE'
275               OR l_base_templatecode = 'GCS_CONS_INTER_COMP_SOURCE_BASE') THEN
276 
277                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
278                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'DT manipulation: '||l_base_templatecode);
279                END IF;
280 
281                l_start_tag := DBMS_LOB.instr(l_clob, '/*startSelectList*/', 1, 1);
282                l_end_tag := DBMS_LOB.instr(l_clob, '/*endSelectList*/', 1, 1);
283                l_start_tag_length := length('/*startSelectList*/');
287                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'SELECT literal replacement.');
284                l_sub_string:=  DBMS_LOB.substr(l_clob,(l_end_tag - (l_start_tag+l_start_tag_length) ), l_start_tag+l_start_tag_length);
285                l_clob := replace(l_clob,l_sub_string, l_select_list_gcs);
286                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
288                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
289                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
290                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
291                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
292                END IF;
293 
294                l_start_tag := DBMS_LOB.instr(l_clob, '/*startFromList*/', 1, 1);
295                l_end_tag := DBMS_LOB.instr(l_clob, '/*endFromList*/', 1, 1);
296                l_start_tag_length := length('/*startFromList*/');
297                l_sub_string:=  DBMS_LOB.substr(l_clob,(l_end_tag - (l_start_tag+l_start_tag_length) ), l_start_tag+l_start_tag_length);
298                l_clob := replace(l_clob,l_sub_string, l_table_list_gcs);
299                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
300                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'FROM literal replacement.');
301                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
302                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
303                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
304                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
305                END IF;
306 
307                l_start_tag := DBMS_LOB.instr(l_clob, '/*startWhereClause*/', 1, 1);
308                l_end_tag := DBMS_LOB.instr(l_clob, '/*endWhereClause*/', 1, 1);
309                l_start_tag_length := length('/*startWhereClause*/');
310                l_sub_string:=  DBMS_LOB.substr(l_clob,(l_end_tag - (l_start_tag+l_start_tag_length) ), l_start_tag+l_start_tag_length);
311                l_clob := replace(l_clob,l_sub_string, l_where_list_gcs);
312                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
313                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'WHERE literal replacement.');
314                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
315                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
316                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
317                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
318                END IF;
319 
320                l_start_tag := DBMS_LOB.instr(l_clob, '/*startOrderClause*/', 1, 1);
321                l_end_tag := DBMS_LOB.instr(l_clob, '/*endOrderClause*/', 1, 1);
322                l_start_tag_length := length('/*startOrderClause*/');
323                l_sub_string:=  DBMS_LOB.substr(l_clob,(l_end_tag - (l_start_tag+l_start_tag_length) ), l_start_tag+l_start_tag_length);
324                l_clob :=replace(l_clob,l_sub_string, l_orderby_list_gcs);
325                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
326                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'ORDER literal replacement.');
327                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
328                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
329                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
330                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
331                END IF;
332 
333                l_start_tag := DBMS_LOB.instr(l_clob, '<!--startElements-->', 1, 1);
334                l_end_tag := DBMS_LOB.instr(l_clob, '<!--endElements-->', 1, 1);
335                l_start_tag_length := length('<!--startElements-->');
336                l_sub_string :=  DBMS_LOB.substr(l_clob,(l_end_tag - (l_start_tag+l_start_tag_length) ), l_start_tag+l_start_tag_length);
337                l_clob := replace(l_clob,l_sub_string, l_element_list_gcs);
338                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
339                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'XML SCHEMA ELEMENT literal replacement.');
340                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
341                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
342                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
343                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
344                END IF;
345 
346            ELSIF(l_base_templatecode = 'GCS_DS_LOAD_SOURCE_BASE' OR l_base_templatecode = 'GCS_DS_TB_SOURCE_BASE'
350                END IF;
347                  OR l_base_templatecode = 'GCS_DS_IMPACTED_BAL_SOURCE_BASE') THEN
348                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
349                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'DT manipulation: '||l_base_templatecode);
351 
352                l_start_tag := DBMS_LOB.instr(l_clob, '/*startSelectList*/', 1, 1);
353                l_end_tag := DBMS_LOB.instr(l_clob, '/*endSelectList*/', 1, 1);
354                l_start_tag_length := length('/*startSelectList*/');
355                l_sub_string:=  DBMS_LOB.substr(l_clob,(l_end_tag - (l_start_tag+l_start_tag_length) ), l_start_tag+l_start_tag_length);
356                IF(l_base_templatecode = 'GCS_DS_LOAD_SOURCE_BASE') THEN
357                   l_clob := replace(l_clob,l_sub_string, l_select_list_dsload);
358                ELSIF(l_base_templatecode = 'GCS_DS_TB_SOURCE_BASE') THEN
359                   l_clob := replace(l_clob,l_sub_string, l_select_list_dstb);
360                ELSIF(l_base_templatecode = 'GCS_DS_IMPACTED_BAL_SOURCE_BASE') THEN
361                   l_clob := replace(l_clob,l_sub_string, l_select_list_dstb);
362                END IF;
363                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
364                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'SELECT (DIMENSION NAME COLUMNS) literal replacement.');
365                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
366                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
367                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
368                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
369                END IF;
370 
371                l_start_tag := DBMS_LOB.instr(l_clob, '/*startSelectIdList*/', 1, 1);
372                l_end_tag := DBMS_LOB.instr(l_clob, '/*endSelectIdList*/', 1, 1);
373                l_start_tag_length := length('/*startSelectIdList*/');
374                l_sub_string:=  DBMS_LOB.substr(l_clob,(l_end_tag - (l_start_tag+l_start_tag_length) ), l_start_tag+l_start_tag_length);
375 
376                IF(l_base_templatecode = 'GCS_DS_IMPACTED_BAL_SOURCE_BASE') THEN
377                   l_clob := replace(l_clob,l_sub_string, l_gl_posted_select_list);
378                --fix 5351083
379                --ELSE
380                --   l_clob := replace(l_clob,l_sub_string, l_group_by_list);
381                END IF;
382                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
383                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'SELECT (DIMENSION ID COLUMNS) literal replacement.');
384                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
385                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
386                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
387                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
388                END IF;
389 
390                l_start_tag := DBMS_LOB.instr(l_clob, '/*startFromList*/', 1, 1);
391                l_end_tag := DBMS_LOB.instr(l_clob, '/*endFromList*/', 1, 1);
392                l_start_tag_length := length('/*startFromList*/');
393                l_sub_string:=  DBMS_LOB.substr(l_clob,(l_end_tag - (l_start_tag+l_start_tag_length) ), l_start_tag+l_start_tag_length);
394                --fix 5351083
395                --IF(l_base_templatecode = 'GCS_DS_LOAD_SOURCE_BASE') THEN
396                  --l_clob := replace(l_clob,l_sub_string, l_table_list_dsload);
397                --ELSIF(l_base_templatecode = 'GCS_DS_TB_SOURCE_BASE') THEN
398                IF(l_base_templatecode = 'GCS_DS_TB_SOURCE_BASE') THEN
399                  l_clob := replace(l_clob,l_sub_string, l_table_list_dstb);
400                ELSIF(l_base_templatecode = 'GCS_DS_IMPACTED_BAL_SOURCE_BASE') THEN
401                  l_clob := replace(l_clob,l_sub_string, l_table_list_dstb);
402 		           END IF;
403                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
404                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'FROM literal replacement.');
405                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
406                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
407                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
408                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
409                END IF;
410 
411                l_start_tag := DBMS_LOB.instr(l_clob, '/*startWhereClause*/', 1, 1);
412                l_end_tag := DBMS_LOB.instr(l_clob, '/*endWhereClause*/', 1, 1);
413                l_start_tag_length := length('/*startWhereClause*/');
414                l_sub_string:=  DBMS_LOB.substr(l_clob,(l_end_tag - (l_start_tag+l_start_tag_length) ), l_start_tag+l_start_tag_length);
415                --fix 5351083
416                --IF(l_base_templatecode = 'GCS_DS_LOAD_SOURCE_BASE') THEN
417                --  l_clob := replace(l_clob,l_sub_string, l_where_list_dsload);
418                --ELSIF(l_base_templatecode = 'GCS_DS_TB_SOURCE_BASE') THEN
422                  l_clob := replace(l_clob,l_sub_string, l_where_list_dstb);
419                IF(l_base_templatecode = 'GCS_DS_TB_SOURCE_BASE') THEN
420                  l_clob := replace(l_clob,l_sub_string, l_where_list_dstb);
421                ELSIF(l_base_templatecode = 'GCS_DS_IMPACTED_BAL_SOURCE_BASE') THEN
423 	             END IF;
424                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
425                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'WHERE literal replacement.');
426                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
427                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
428                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
429                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
430                END IF;
431 
432                l_start_tag := DBMS_LOB.instr(l_clob, '/*startDSTBGroupbyName*/', 1, 1);
433                l_end_tag := DBMS_LOB.instr(l_clob, '/*endDSTBGroupbyName*/', 1, 1);
434                l_start_tag_length := length('/*startDSTBGroupbyName*/');
435                l_sub_string :=  DBMS_LOB.substr(l_clob,(l_end_tag - (l_start_tag+l_start_tag_length) ), l_start_tag+l_start_tag_length);
436                --fix 5351083
437                --IF(l_base_templatecode = 'GCS_DS_LOAD_SOURCE_BASE') THEN
438                  -- l_clob := replace(l_clob,l_sub_string, l_select_list_dsload);
439                --ELSIF(l_base_templatecode = 'GCS_DS_TB_SOURCE_BASE') THEN
440                  -- l_clob := replace(l_clob,l_sub_string, l_select_list_dstb);
441                --ELSIF(l_base_templatecode = 'GCS_DS_IMPACTED_BAL_SOURCE_BASE') THEN
442                IF(l_base_templatecode = 'GCS_DS_IMPACTED_BAL_SOURCE_BASE') THEN
443                   l_clob := replace(l_clob,l_sub_string, l_gl_posted_group_list);
444 	             END IF;
445                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
446                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'GROUP BY (DIMENSION NAME COLUMNS) literal replacement.');
447                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
448                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
449                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
450                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
451                END IF;
452 
453                l_start_tag := DBMS_LOB.instr(l_clob, '/*startDSTBGroupbyId*/', 1, 1);
454                l_end_tag := DBMS_LOB.instr(l_clob, '/*endDSTBGroupbyId*/', 1, 1);
455                l_start_tag_length := length('/*startDSTBGroupbyId*/');
456                l_sub_string :=  DBMS_LOB.substr(l_clob,(l_end_tag - (l_start_tag+l_start_tag_length) ), l_start_tag+l_start_tag_length);
457                IF(l_base_templatecode = 'GCS_DS_IMPACTED_BAL_SOURCE_BASE') THEN
458                   l_clob := replace(l_clob,l_sub_string, l_dstb_group_by_list);
459                END IF;
460                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
461                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'GROUP BY (DIMENSION ID COLUMNS) literal replacement.');
462                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
463                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
464                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
465                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
466                END IF;
467 
468                l_start_tag := DBMS_LOB.instr(l_clob, '/*startOrderClause*/', 1, 1);
469                l_end_tag := DBMS_LOB.instr(l_clob, '/*endOrderClause*/', 1, 1);
470                l_start_tag_length := length('/*startOrderClause*/');
471                l_sub_string:=  DBMS_LOB.substr(l_clob,(l_end_tag - (l_start_tag+l_start_tag_length) ), l_start_tag+l_start_tag_length);
472                IF(l_base_templatecode = 'GCS_DS_LOAD_SOURCE_BASE') THEN
473                   l_clob :=replace(l_clob,l_sub_string, l_orderby_list_dsload);
474                ELSIF(l_base_templatecode = 'GCS_DS_TB_SOURCE_BASE') THEN
475                l_clob :=replace(l_clob,l_sub_string, l_orderby_list_dstb);
476                END IF;
477                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
478                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'ORDER literal replacement.');
479                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
480                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
481                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
482                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
483                END IF;
484 
485                l_start_tag := DBMS_LOB.instr(l_clob, '<!--startElements-->', 1, 1);
486                l_end_tag := DBMS_LOB.instr(l_clob, '<!--endElements-->', 1, 1);
487                l_start_tag_length := length('<!--startElements-->');
488                l_sub_string :=  DBMS_LOB.substr(l_clob,(l_end_tag - (l_start_tag+l_start_tag_length) ), l_start_tag+l_start_tag_length);
489                l_clob := replace(l_clob,l_sub_string, l_element_list_dsload);
490                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
491                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'XML SCHEMA ELEMENT (DIMENSION NAME COLUMNS) literal replacement.');
492                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
493                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
494                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
495                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
496                END IF;
497                --fix 5351083
498                /*
499                l_start_tag := DBMS_LOB.instr(l_clob, '<!--startDSTBIDElements-->', 1, 1);
500                l_end_tag := DBMS_LOB.instr(l_clob, '<!--endDSTBIDElements-->', 1, 1);
501                l_start_tag_length := length('<!--startDSTBIDElements-->');
502                l_sub_string :=  DBMS_LOB.substr(l_clob, (l_end_tag - (l_start_tag+l_start_tag_length) ), l_start_tag+l_start_tag_length);
503                l_clob := replace(l_clob, l_sub_string, l_element_list_dstb);
504                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
505                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'XML SCHEMA ELEMENT (DIMENSION ID COLUMNS) literal replacement.');
506                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
507                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
508                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
509                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
510                END IF;
511                */
512 
513                ELSIF(l_base_templatecode = 'GCS_VS_MAP_SOURCE_BASE') THEN
514 
515                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
516                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'DT manipulation: '||l_base_templatecode);
517                END IF;
518 
519                l_start_tag := DBMS_LOB.instr(l_clob, '<!--startVSElements-->', 1, 1);
520                l_start_tag_length := length('<!--startVSElements-->');
521                l_remaining_str:='<!--endVSElements--></dataStructure></dataTemplate>';
522           	   replace_clob(l_clob, l_vs_group_list, l_start_tag+l_start_tag_length, l_remaining_str);
523                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
524                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'XML SCHEMA ELEMENT literal replacement.');
525                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag : '||l_start_tag);
526                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_end_tag : '||l_end_tag);
527                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start_tag_length : '||l_start_tag_length);
528                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_sub_string : '||l_sub_string);
529                END IF;
530 
531            END IF;
532 
533            -- Finally write back temporary clob to destination blob
534            l_start:=1;
535            l_off_write:=1;
536            DBMS_LOB.createtemporary(l_blob_out,TRUE);
537            IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
538                FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'Write back manipulated clob to target blob.');
539            END IF;
540 
541            FOR i IN 1..CEIL(DBMS_LOB.GETLENGTH(l_clob) / l_buffer) LOOP
542 
543                DBMS_LOB.read ( l_clob, l_buffer, l_start, l_varchar );
544                l_amt_write := utl_raw.length (utl_raw.cast_to_raw( l_varchar) );
545                DBMS_LOB.write( l_blob_out, l_amt_write, l_off_write, utl_raw.cast_to_raw( l_varchar ) );
546                l_off_write := l_off_write + l_amt_write;
547                l_start := l_start + l_buffer;
548                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
549                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_start : '||l_start);
550                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_buffer : '||l_buffer);
551                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_amt_write : '||l_amt_write);
552                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_off_write : '||l_off_write);
553                    FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'l_varchar : '||l_varchar);
554                END IF;
555            END LOOP;
556 
557            UPDATE xdo_lobs
558               SET file_data = l_blob_out
559             WHERE application_short_name = 'GCS'
560               AND lob_type = 'DATA_TEMPLATE'
561               AND lob_code = SUBSTR(l_base_templatecode, 1, INSTR(l_base_templatecode,'_BASE')-1);
562 
563            DBMS_LOB.freetemporary(l_blob_out);
564            DBMS_LOB.freetemporary(l_clob);
565            IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
566                FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', 'Manipulated clob written back to target blob.');
567            END IF;
568 
569      END LOOP; -- Loop for template cursor
570 
571    END IF;
572 
573    CLOSE c_base_data_templates;
574    COMMIT;
575    IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
576        FND_LOG.STRING (FND_LOG.LEVEL_STATEMENT, g_api || '.' || 'gcs_replace_dt_proc', '<<end>>');
577    END IF;
578 
579    EXCEPTION
580           WHEN OTHERS THEN
581           BEGIN
582                IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_ERROR) THEN
583                    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, g_api || '.' || 'gcs_replace_dt_proc', substr(SQLERRM,1,255));
584                END IF;
585           END;
586 
587 END gcs_replace_dt_proc;
588 
589 END GCS_DATA_TEMPLATE_UTIL_PKG;