DBA Data[Home] [Help]

PACKAGE BODY: APPS.QPR_TRANSFORMATION

Source


1 PACKAGE BODY QPR_TRANSFORMATION AS
2 /* $Header: QPRUTRNB.pls 120.1 2008/01/10 10:00:03 kdhabali noship $ */
3 
4 FUNCTION get_null return varchar2 is
5 begin
6 	return '*';
7 end;
8 
9 FUNCTION get_y return varchar2 is
10 begin
11 	return 'Y';
12 end;
13 
14 FUNCTION get_n return varchar2 is
15 begin
16 	return 'N';
17 end;
18 
19 function get_num(p_char varchar2) return number is
20 begin
21 	return(to_number(p_char));
22 exception
23 	when others then
24 		return(null);
25 end;
26 
27 procedure transform_dimdim_process(
28                         errbuf              OUT nocopy VARCHAR2,
29                         retcode             OUT nocopy VARCHAR2,
30                         p_transf_group_id     IN  NUMBER,
31                         p_instance_id     IN  NUMBER
32                         );
33 
34 procedure transform_measdim_process(
35                         errbuf              OUT nocopy VARCHAR2,
36                         retcode             OUT nocopy VARCHAR2,
37                         p_transf_group_id     IN  NUMBER,
38                         p_instance_id     IN  NUMBER,
39                         p_from_date in date,
40                         p_to_date in date);
41 
42 procedure transform_process(
43                         errbuf              OUT  nocopy VARCHAR2,
44                         retcode             OUT nocopy VARCHAR2,
45                         p_transf_group_id     IN  NUMBER,
46                         p_instance_id     IN  NUMBER,
47                         p_from_date in varchar2 default null,
48                         p_to_date in varchar2 default null) is
49 l_transf_type_code varchar2(10);
50 date_from date;
51 date_to date;
52 
53 begin
54 	select transf_type_code into l_transf_type_code
55 	from qpr_transf_groups_b
56 	where transf_group_id = p_transf_group_id;
57 	fnd_file.put_line(fnd_file.log, 'Transf type code:' || l_transf_type_code);
58 	if nvl(l_transf_type_code, '*') = 'DIMDIM' then
59 
60 		transform_dimdim_process(errbuf, retcode, p_transf_group_id,p_instance_id);
61 
62 	elsif nvl(l_transf_type_code, '*') = 'MEASDIM' then
63 
64                 date_from := fnd_date.canonical_to_date(p_from_date);
65                 date_to := fnd_date.canonical_to_date(p_to_date);
66 		transform_measdim_process(errbuf, retcode, p_transf_group_id,
67                                           p_instance_id,date_from, date_to);
68 
69 	end if;
70 
71 EXCEPTION
72      when others then
73 		errbuf := substr(SQLERRM,1,150);
74 		retcode := -1;
75 	fnd_file.put_line(fnd_file.log, substr(SQLERRM, 1, 1000));
76 end;
77 
78 
79 procedure transform_measdim_process(
80                         errbuf              OUT nocopy VARCHAR2,
81                         retcode             OUT nocopy VARCHAR2,
82                         p_transf_group_id     IN  NUMBER,
83                         p_instance_id     IN  NUMBER,
84                         p_from_date in date,
85                         p_to_date in date) is
86 
87 CURSOR GET_TRANSF_HEADER (p_transf_group_id number) is
88 select TRANSF_HEADER_ID,
89 	FROM_DIM_MEAS_CODE,
90 	MEAS_CODE,
91 	LIMIT_DIM_FLAG,
92 	TO_DIM_CODE,
93 	TO_LEVEL_ID,
94 	TO_VALUE,
95 	TO_VALUE_DESC
96 from qpr_transf_headers_b
97 where TRANSF_GROUP_ID=p_transf_group_id
98 and from_dim_meas_code is not null
99 and meas_code is not null
100 and to_dim_code is not null
101 and to_level_id is not null
102 and to_value is not null ;
103 
104 CURSOR GET_MEASURE (p_transf_header_id number,
105 p_from_dim_meas_code varchar2,
106 p_meas_type_code varchar2,
107 p_instance_id number, p_from_date date, p_to_date date) is
108 select csd.MEASURE_VALUE_ID,
109 csd.INSTANCE_ID,
110 csd.PRD_LEVEL_VALUE,
111 csd.ORD_LEVEL_VALUE,
112 csd.MEASURE4_NUMBER,
113 qtr.LEVEL_VALUE_FROM,
114 qtr.LEVEL_VALUE_TO,
115 qtr.LIMIT_DIM_CODE,
116 qtr.LIMIT_DIM_LEVEL,
117 qtr.LIMIT_DIM_LEVEL_VALUE
118 from qpr_measure_data csd, qpr_transf_rules_b qtr
119 where csd.measure_type_code = p_from_dim_meas_code and
120 csd.instance_id=p_instance_id and
121 csd.time_level_value between p_from_date and p_to_date
122 and qtr.transf_header_id = p_transf_header_id and
123 ((p_meas_type_code = '1' and csd.measure1_number between
124   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure1_number)
125 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure1_number)) or
126 (p_meas_type_code = '2' and csd.measure2_number between
127   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure2_number)
128 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure2_number)) or
129 (p_meas_type_code = '3' and csd.measure3_number between
130   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure3_number)
131 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure3_number)) or
132 (p_meas_type_code = '4' and csd.measure4_number between
133   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure4_number)
134 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure4_number)) or
135 (p_meas_type_code = '5' and csd.measure5_number between
136   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure5_number)
137 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure5_number)) or
138 (p_meas_type_code = '6' and csd.measure6_number between
139   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure6_number)
140 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure6_number)) or
141 (p_meas_type_code = '7' and csd.measure7_number between
142   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure7_number)
143 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure7_number)) or
144 (p_meas_type_code = '8' and csd.measure8_number between
145   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure8_number)
146 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure8_number)) or
147 (p_meas_type_code = '9' and csd.measure9_number between
148   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure9_number)
149 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure9_number)) or
150 (p_meas_type_code = '10' and csd.measure10_number between
151   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure10_number)
152 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure10_number)) or
153 (p_meas_type_code = '11' and csd.measure11_number between
154   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure11_number)
155 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure11_number)) or
156 (p_meas_type_code = '12' and csd.measure12_number between
157   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure12_number)
158 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure12_number)) or
159 (p_meas_type_code = '13' and csd.measure13_number between
160   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure13_number)
161 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure13_number)) or
162 (p_meas_type_code = '14' and csd.measure14_number between
163   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure14_number)
164 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure14_number)) or
165 (p_meas_type_code = '15' and csd.measure14_number between
166   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure15_number)
167 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure15_number)) or
168 (p_meas_type_code = '16' and csd.measure16_number between
169   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure16_number)
170 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure16_number)) or
171 (p_meas_type_code = '17' and csd.measure17_number between
172   nvl(qpr_transformation.get_num(qtr.level_value_from), csd.measure17_number)
173 	and nvl(qpr_transformation.get_num(qtr.level_value_to),csd.measure17_number)));
174 
175 l_insert_measure number;
176 l_next_seq number;
177 l_dummy number;
178 l_all_desc varchar2(240);
179 l_all_value varchar2(240);
180 begin
181 fnd_file.put_line(fnd_file.log, 'Inside procedure transform_measdim_process');
182 
183 for transf_header_rec in get_transf_header(p_transf_group_id) loop
184 
185    fnd_file.put_line(fnd_file.log, 'Transf Header ID: '||
186 		transf_header_rec.TRANSF_HEADER_ID);
187 
188    for measure_rec in get_measure(transf_header_rec.transf_header_id,
189 					transf_header_rec.from_dim_meas_code,
190 					transf_header_rec.meas_code,
191                                       p_instance_id, p_from_date,p_to_date) loop
192    	fnd_file.put_line(fnd_file.log, 'Order Line: '||
193 		measure_rec.ord_level_value);
194 	l_insert_measure:=0;
195 	fnd_file.put_line(fnd_file.log, 'Limit Dim flag: '||
196 		transf_header_rec.limit_dim_flag);
197 	if nvl(transf_header_rec.limit_dim_flag,'N') = 'Y' then
198 	fnd_file.put_line(fnd_file.log, 'Limit Dim code: '||
199 		measure_rec.limit_dim_code);
200 		if measure_rec.limit_dim_code='PRD' then
201 	-- Only Product dimension supported now.
202 	fnd_file.put_line(fnd_file.log, 'Limit Dim level: '||
203 		measure_rec.limit_dim_level);
204 		if measure_rec.limit_dim_level = 'ITEM' then
205 	fnd_file.put_line(fnd_file.log, 'Limit Dim level value: '||
206 		measure_rec.limit_dim_level_value);
207 	fnd_file.put_line(fnd_file.log, 'Limit Dim measure value: '||
208 		measure_rec.prd_level_value);
209 			if measure_rec.prd_level_value = measure_rec.limit_dim_level_value then
210 				l_insert_measure:=1;
211 				fnd_file.put_line(fnd_file.log, 'Insert needed');
212 			end if;
213 		else
214 			l_insert_measure:=0;
215 			begin
216 			if measure_rec.limit_dim_level = 'PRODUCT_CATEGORY' then
217 				select 1 into l_insert_measure
218 				from qpr_dimension_values
219 				where  dim_code='PRD'
220 				and hierarchy_code='PRODUCTCATEGORY'
221 				and instance_id = p_instance_id and
222 				level2_value = measure_rec.limit_dim_level_value;
223 			elsif measure_rec.limit_dim_level = 'PRODUCT_FAMILY' then
224 				select 1 into l_insert_measure
225 				from qpr_dimension_values
226 				where  dim_code='PRD'
227 				and hierarchy_code='PRODUCTFAMILY'
228 				and instance_id = p_instance_id and
229 				level2_value = measure_rec.limit_dim_level_value;
230 			elsif measure_rec.limit_dim_level = 'ITEM' then
231 				select 1 into l_insert_measure
232 				from qpr_dimension_values
233 				where  dim_code='PRD'
234 				and hierarchy_code='PRODUCTCATEGORY'
235 				and instance_id = p_instance_id and
236 				level1_value = measure_rec.limit_dim_level_value;
237 			end if;
238 			exception
239 			when others then null;
240 			end;
241 		end if;
242 		end if;
243 	else
244 		l_insert_measure:=1;
245 	end if;
246 	if l_insert_measure = 1 then
247 		begin
248 			select 1 into l_dummy
249 			from qpr_dimension_values
250 			where dim_code = transf_header_rec.to_dim_code
251 			and hierarchy_code = nvl(decode(transf_header_rec.to_dim_code,
252 				'DSB', 'DISC_BAND',
253 				'VLB', 'VOL_BAND',
254 				'MGB', 'MRGBAND',  null), hierarchy_code)
255 			and level1_value = transf_header_rec.to_value
256 			and instance_id = p_instance_id
257 			and rownum<2;
258 			if l_dummy = 1 then
259 				fnd_file.put_line(fnd_file.log, 'Band exists in Band Dim with value:'||
260 					transf_header_rec.to_value);
261 			end if;
262 		exception
263 		     WHEN NO_DATA_FOUND THEN
264 			begin
265 			  select qpr_dimension_values_s.nextval
266 				into l_next_seq from dual ;
267 			 if transf_header_rec.to_dim_code = 'DSB' then
268 				l_all_desc := qpr_sr_util.get_all_dsb_desc;
269 				l_all_value := qpr_sr_util.get_all_dsb_pk;
270 			 elsif transf_header_rec.to_dim_code = 'VLB' then
271 				l_all_desc := qpr_sr_util.get_all_vlb_desc;
272 				l_all_value := qpr_sr_util.get_all_vlb_pk;
273 			 elsif transf_header_rec.to_dim_code = 'MGB' then
274 				l_all_desc := qpr_sr_util.get_all_mgb_desc;
275 				l_all_value := qpr_sr_util.get_all_mgb_pk;
276 			 end if;
277 			 fnd_file.put_line(fnd_file.log,
278 			'Inserting band dim with id :'||l_next_seq);
279 			 INSERT INTO qpr_dimension_values(instance_id,
280 					dim_value_id,
281 					dim_code,
282 					hierarchy_code,
283 					level1_value,
284 					level1_desc,
285 					level2_value,
286 					level2_desc,
287 					CREATION_DATE,
288 					CREATED_BY,
289 					LAST_UPDATE_DATE,
290 					LAST_UPDATED_BY,
291 					LAST_UPDATE_LOGIN,
292 					REQUEST_ID) values
293 					(measure_rec.instance_id,
294 					l_next_seq,
295 					transf_header_rec.to_dim_code,
296 					decode(transf_header_rec.to_dim_code,
297 						'DSB', 'DISC_BAND',
298 						'VLB', 'VOL_BAND',
299 						'MGB', 'MRGBAND',  null),
300 					transf_header_rec.TO_VALUE,
301 					transf_header_rec.TO_VALUE_DESC,
302 					l_all_value,
303 					l_all_desc,
304 					sysdate,
305 					FND_GLOBAL.USER_ID,
306 					sysdate,
307 					FND_GLOBAL.USER_ID,
308 					FND_GLOBAL.LOGIN_ID,
309 					null);
310 			exception
311 			     when others then
312 					errbuf := substr(SQLERRM,1,150);
313 					retcode := -1;
314 				fnd_file.put_line(fnd_file.log, substr(SQLERRM, 1, 1000));
315 			end;
316 		end;
317 		begin
318 			if transf_header_rec.to_dim_code = 'DSB' then
319 				update qpr_measure_data
320 				set dsb_level_value = transf_header_rec.to_value,
321 				measure7_number =
322 				qpr_transformation.get_num(measure_rec.level_value_to),
323 				measure8_number =
324 				qpr_transformation.get_num(measure_rec.level_value_from),
325 				last_update_date = sysdate,
326 				last_updated_by = fnd_global.user_id,
327 				last_update_login = fnd_global.login_id
328 				where measure_value_id = measure_rec.measure_value_id;
329 			elsif transf_header_rec.to_dim_code = 'VLB' then
330 				update qpr_measure_data
331 				set vlb_level_value = transf_header_rec.to_value,
332 				measure11_number =
333 				qpr_transformation.get_num(measure_rec.level_value_to),
334 				measure12_number =
335 				qpr_transformation.get_num(measure_rec.level_value_from),
336 				measure9_number = measure_rec.measure4_number,
337 				measure10_number = measure_rec.measure4_number,
338 				last_update_date = sysdate,
339 				last_updated_by = fnd_global.user_id,
340 				last_update_login = fnd_global.login_id
341 				where measure_value_id = measure_rec.measure_value_id;
342 			elsif transf_header_rec.to_dim_code = 'MGB' then
343 				update qpr_measure_data
344 				set mgb_level_value = transf_header_rec.to_value,
345 				measure18_number =
346 				qpr_transformation.get_num(measure_rec.level_value_to),
347 				measure19_number =
348 				qpr_transformation.get_num(measure_rec.level_value_from),
349 				last_update_date = sysdate,
350 				last_updated_by = fnd_global.user_id,
351 				last_update_login = fnd_global.login_id
352 				where measure_value_id =
353 					measure_rec.measure_value_id;
354 			end if;
355 			fnd_file.put_line(fnd_file.log, 'Updated '||
356 				sql%rowcount ||' records');
357 		exception
358 		WHEN NO_DATA_FOUND THEN
359 				errbuf := substr(SQLERRM,1,150);
360 				retcode := -1;
361 			fnd_file.put_line(fnd_file.log,
362 				substr(SQLERRM, 1, 1000));
363 		end;
364 	end if;
365    end loop;
366 end loop;
367 EXCEPTION
368      when others then
369 		errbuf := substr(SQLERRM,1,150);
370 		retcode := -1;
371 	fnd_file.put_line(fnd_file.log, substr(SQLERRM, 1, 1000));
372 end;
373 
374 function get_attribute_qstring(lvl_no number, attr_no number) return varchar2
375 is
376 sql1 varchar2(1000);
377 begin
378    sql1 :=
379 	'and '||
380 	'('||
381 	  '(b.attribute'||lvl_no||'_from is null and b.attribute'||lvl_no||'_to is null) '||
382 	 'or ('||
383 	   'nvl(b.attribute'||lvl_no||'_number_flag,qpr_transformation.get_n) '||
384 	   '= qpr_transformation.get_y  ' ||
385 	   'and nvl(qpr_transformation.get_num(a.level' ||
386 		attr_no || '_attribute'||lvl_no||'),0)'||
387 	   ' between ' ||
388 	     'nvl(qpr_transformation.get_num(b.attribute'||lvl_no||'_from), '||
389 		'nvl(qpr_transformation.get_num(a.level' ||
390 			attr_no || '_attribute'||lvl_no||'),0))  '||
391 	   'and'||
392 	     ' nvl(qpr_transformation.get_num(b.attribute'||lvl_no||'_to), '||
393 		'nvl(qpr_transformation.get_num(a.level' ||
394 			attr_no || '_attribute'||lvl_no||'),0)) '||
395 	'or '||
396 	   'nvl(b.attribute'||lvl_no||'_number_flag,qpr_transformation.get_n) '||
397 	   '= qpr_transformation.get_n  ' ||
398 	   'and nvl(a.level' || attr_no || '_attribute'||lvl_no||
399 		',qpr_transformation.get_null)'||
400 	   ' between  ' ||
401 	     'nvl(b.attribute'||lvl_no||'_from, nvl(a.level' || attr_no ||
402 		  '_attribute'||lvl_no||',qpr_transformation.get_null))  ' ||
403 	   'and '||
404 	     'nvl(b.attribute'||lvl_no||'_to, nvl(a.level' || attr_no ||
405 		  '_attribute'||lvl_no||',qpr_transformation.get_null))'||
406 	 ') ' ||
407 	') ' ;
408    return(sql1);
409 end;
410 
411 procedure transform_dimdim_process(
412                         errbuf              OUT nocopy VARCHAR2,
413                         retcode             OUT nocopy VARCHAR2,
414                         p_transf_group_id     IN  NUMBER,
415                         p_instance_id     IN  NUMBER) is
416 
417 l_level_pk number;
418 l_created_by_refresh_num number;
419 l_last_refresh_num number;
420 l_first number;
421 l_exist number;
422 sql1_text varchar2(5000);
423 
424 CURSOR GET_TRANSF_HEADER (p_transf_group_id number) is
425 select TRANSF_HEADER_ID,
426 	FROM_DIM_MEAS_CODE,
427 	FROM_DIM_HIER_CODE,
428 	LIMIT_DIM_FLAG,
429 	FROM_LEVEL_ID,
430 	TO_LEVEL_ID,
431 	TO_VALUE,
432 	TO_VALUE_DESC
433 from qpr_transf_headers_b
434 where TRANSF_GROUP_ID=p_transf_group_id;
435 
436 l_rows natural :=1000;
437 c_dim_data QPRTRANS;
438 c_dim_rec DIM_REC;
439 cl number;
440 
441 BEGIN
442 
443 for transf_header_rec in get_transf_header(p_transf_group_id) loop
444 
445 	fnd_file.put_line(fnd_file.log, 'Transf Header ID: '||
446 		transf_header_rec.TRANSF_HEADER_ID);
447 
448 	l_first:=0;
449 	sql1_text := ' select a.dim_value_id as dim_value_id ' ||
450 		    ' from qpr_dimension_values a, qpr_transf_rules_b b ';
451 	sql1_text := sql1_text|| ' where a.dim_code = '|| '''' ||
452 		replace(transf_header_rec.from_dim_meas_code, '''', '''''') || '''';
453 	sql1_text := sql1_text|| ' and a.hierarchy_code = '|| '''' ||
454 		replace(transf_header_rec.from_dim_hier_code, '''', '''''') || '''';
455 	sql1_text := sql1_text|| ' and b.transf_header_id = '||transf_header_rec.transf_header_id;
456 	sql1_text := sql1_text|| ' and a.instance_id = '||p_instance_id;
457 	cl := transf_header_rec.from_level_id;
458 	if cl>5 then
459 		fnd_file.put_line(fnd_file.log, 'Error in setup');
460 		exit;
461 	end if;
462         sql1_text := sql1_text ||
463 	' and '||
464 	'('||
465 	   'b.level_value_from is null '||
466 	   'or  ' ||
467 	   '('||
468 		'nvl(b.level_value_number_flag , qpr_transformation.get_n) '||
469 		'= qpr_transformation.get_n and ' ||
470 		'((b.level_value_like_flag =  qpr_transformation.get_y and '||
471 		'a.level' || cl || '_value like b.level_value_from) ' ||
472 		'or (b.level_value_like_flag = qpr_transformation.get_n '||
473 		'and a.level' || cl || '_value >= b.level_value_from ' ||
474 		'and (b.level_value_to is null or ' ||
475 		'a.level'||cl||'_value <=  b.level_value_to)))'||
476    	   ')'||
477 	   ' or ' ||
478 	   '('||
479 		'nvl(b.level_value_number_flag , qpr_transformation.get_n) '||
480 		'= qpr_transformation.get_y and '||
481 		'qpr_transformation.get_num(a.level' || cl || '_value) >= '||
482 		'qpr_transformation.get_num(b.level_value_from ) and ' ||
483 		'(qpr_transformation.get_num(b.level_value_to) is null or '||
484 		'qpr_transformation.get_num(a.level' || cl || '_value) <= '||
485 		'qpr_transformation.get_num(b.level_value_to))'||
486 	   ')'||
487 	')';
488         sql1_text := sql1_text ||
489 	'and '||
490 	'('||
491 	  'b.level_desc_from is null '||
492 	  'or ' ||
493 	  '('||
494 	   'b.level_value_like_flag = qpr_transformation.get_y '||
495 	   'and a.level' || cl || '_desc like b.level_desc_from'||
496 	  ') '||
497 	  ' or '||
498 	  '('||
499 	    'b.level_value_like_flag=qpr_transformation.get_n and '||
500 	    'a.level' || cl || '_desc >= b.level_desc_from and ' ||
501 		'(b.level_desc_to is null or '||
502 	    'a.level' || cl || '_desc <= b.level_desc_to)'||
503 	  ')'||
504 	')  ';
505         sql1_text := sql1_text || get_attribute_qstring(1,cl);
506         sql1_text := sql1_text || get_attribute_qstring(2,cl);
507         sql1_text := sql1_text || get_attribute_qstring(3, cl);
508         sql1_text := sql1_text || get_attribute_qstring(4,cl);
509         sql1_text := sql1_text || get_attribute_qstring(5,cl);
510 	fnd_file.put_line(fnd_file.log, 'SQL: '||sql1_text);
511 
512 	open c_dim_data for sql1_text;
513 	fnd_file.put_line(fnd_file.log, 'Cursor Opened');
514 
515 	loop
516 	c_dim_rec.dim_value_id.delete;
517 	fnd_file.put_line(fnd_file.log, 'Delete');
518 	fetch c_dim_data bulk collect into c_dim_rec.dim_value_id limit l_rows;
519 		fnd_file.put_line(fnd_file.log, 'Fetch');
520 		for I in 1..c_dim_rec.dim_value_id.count
521 		loop
522 		fnd_file.put_line(fnd_file.log, 'Dim_value_id: '||
523 					c_dim_rec.dim_value_id(I));
524 		begin
525 		update qpr_dimension_values
526 		set
527 		level2_value = nvl(decode(transf_header_rec.to_level_id, 2,
528 				transf_header_rec.to_value, null), level2_value),
529 		level2_desc = nvl(decode(transf_header_rec.to_level_id, 2,
530 				transf_header_rec.to_value_desc, null), level2_desc),
531 		level3_value = nvl(decode(transf_header_rec.to_level_id, 3,
532 				transf_header_rec.to_value, null), level3_value),
533 		level3_desc = nvl(decode(transf_header_rec.to_level_id, 3,
534 				transf_header_rec.to_value_desc, null), level3_desc),
535 		level4_value = nvl(decode(transf_header_rec.to_level_id, 4,
536 				transf_header_rec.to_value, null), level4_value),
537 		level4_desc = nvl(decode(transf_header_rec.to_level_id, 4,
538 				transf_header_rec.to_value_desc, null), level4_desc),
539 		level5_value = nvl(decode(transf_header_rec.to_level_id, 5,
540 				transf_header_rec.to_value, null), level5_value),
541 		level5_desc = nvl(decode(transf_header_rec.to_level_id, 5,
542 				transf_header_rec.to_value_desc, null), level5_desc),
543 		level6_value = nvl(decode(transf_header_rec.to_level_id, 6,
544 				transf_header_rec.to_value, null), level6_value),
545 		level6_desc = nvl(decode(transf_header_rec.to_level_id, 6,
546 				transf_header_rec.to_value_desc, null), level6_desc),
547 		level7_value = nvl(decode(transf_header_rec.to_level_id, 7,
548 				transf_header_rec.to_value, null), level7_value),
549 		level7_desc = nvl(decode(transf_header_rec.to_level_id, 7,
550 				transf_header_rec.to_value_desc, null), level7_desc),
551 		level8_value = nvl(decode(transf_header_rec.to_level_id, 8,
552 				transf_header_rec.to_value, null), level8_value),
553 		level8_desc = nvl(decode(transf_header_rec.to_level_id, 8,
554 				transf_header_rec.to_value_desc, null), level8_desc),
555 		last_update_date = sysdate,
556 		last_updated_by = fnd_global.user_id,
557 		last_update_login = fnd_global.login_id
558 		where dim_value_id = c_dim_rec.dim_value_id(I);
559 		fnd_file.put_line(fnd_file.log, 'Number of rows updated: '||sql%rowcount);
560 		exception
561 		     when others then
562 				errbuf := substr(SQLERRM,1,150);
563 				retcode := -1;
564 			fnd_file.put_line(fnd_file.log,
565 				substr(SQLERRM, 1, 1000));
566 		end;
567 /*
568 		if transf_header_rec.to_level_id = 2 then
569 			begin
570 			update qpr_dimension_values
571 			set level2_value = transf_header_rec.to_value,
572 			level2_desc = transf_header_rec.to_value_desc,
573 			last_update_date = sysdate,
574 			last_updated_by = fnd_global.user_id,
575 			last_update_login = fnd_global.login_id
576 			where dim_value_id = c_dim_rec.dim_value_id(I);
577 			exception
578 			     when others then
579 					errbuf := substr(SQLERRM,1,150);
580 					retcode := -1;
581 				fnd_file.put_line(fnd_file.log,
582 					substr(SQLERRM, 1, 1000));
583 			end;
584 		end if;
585 		if transf_header_rec.to_level_id = 3 then
586 			begin
587 			update qpr_dimension_values
588 			set level3_value = transf_header_rec.to_value,
589 			level3_desc = transf_header_rec.to_value_desc,
590 			last_update_date = sysdate,
591 			last_updated_by = fnd_global.user_id,
592 			last_update_login = fnd_global.login_id
593 			where dim_value_id = c_dim_rec.dim_value_id(I);
594 			exception
595 			     when others then
596 					errbuf := substr(SQLERRM,1,150);
597 					retcode := -1;
598 				fnd_file.put_line(fnd_file.log,
599 					substr(SQLERRM, 1, 1000));
600 			end;
601 		end if;*/
602 		end loop;
603 	exit when c_dim_data%NOTFOUND;
604 
605 	end loop;
606 
607 	close c_dim_data;
608 	commit;
609 end loop; --get_transf_header
610 
611 EXCEPTION
612      when others then
613 		errbuf := substr(SQLERRM,1,150);
614 		retcode := -1;
615 	fnd_file.put_line(fnd_file.log, substr(SQLERRM, 1, 1000));
616 
617 END; --transformation process
618 
619 END QPR_TRANSFORMATION ;