DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_FI_PAYLIST

Source


1 PACKAGE BODY PAY_FI_PAYLIST AS
2    /* $Header: pyfipaylr.pkb 120.2.12000000.2 2007/06/12 09:39:51 psingla noship $ */
3 
4    FUNCTION get_archive_payroll_action_id (p_payroll_action_id IN NUMBER)
5       RETURN NUMBER
6    IS
7       l_payroll_action_id   NUMBER;
8    BEGIN
9       IF p_payroll_action_id IS NULL
10       THEN
11          BEGIN
12             SELECT payroll_action_id
13               INTO l_payroll_action_id
14               FROM pay_payroll_actions ppa,
15                    fnd_conc_req_summary_v fcrs,
16                    fnd_conc_req_summary_v fcrs1
17              WHERE fcrs.request_id = fnd_global.conc_request_id
18                AND fcrs.priority_request_id = fcrs1.priority_request_id
19                AND ppa.request_id BETWEEN fcrs1.request_id
20                                       AND fcrs.request_id
21                AND ppa.request_id = fcrs1.request_id;
22          EXCEPTION
23             WHEN OTHERS
24             THEN
25                NULL;
26          END;
27       ELSE
28          l_payroll_action_id := p_payroll_action_id;
29       END IF;
30 
31       RETURN l_payroll_action_id;
32    END;
33 
34    PROCEDURE get_data (
35       p_business_group_id  in varchar2,
36       p_payroll_action_id   IN              VARCHAR2,
37       p_template_name       IN              VARCHAR2,
38       p_xml                 OUT NOCOPY      CLOB
39    )
40    IS
41       /*  Start of declaration*/
42 
43       -- Variables needed for the report
44       l_sum                 NUMBER;
45 
46       l_payroll_action_id   pay_action_information.action_information1%TYPE;
47 l_sr_no	 NUMBER ;
48 l_counter	number := 0;
49 CURSOR CSR_HEADER(csr_v_pa_id IN VARCHAR2)
50       IS
51       SELECT pai.action_information4 payroll_name,
52        pai.action_information5
53              payment_month,
54               pai.action_information6 pay_day,
55        pai.action_information7
56              end_date
57          FROM pay_action_information pai,
58       pay_payroll_actions ppa
59  WHERE pai.action_context_id = ppa.payroll_action_id
60    AND ppa.payroll_action_id = csr_v_pa_id;
61 CSR_HEADER_REC CSR_HEADER%ROWTYPE;
62 
63 
64 
65       CURSOR csr_payl_data (csr_v_pa_id IN VARCHAR2)
66       IS
67       SELECT
68        pai_ass.action_information3 person_name,
69        pai_ass.action_information4
70              salary,
71        pai_ass.action_information5 benefits,
72        pai_ass.action_information6
73              insurance_salary,
74        pai_ass.action_information7
75              deductions_withhold_tax,
76        pai_ass.action_information8 tax_income,
77        pai_ass.action_information9
78              withhold_tax,
79        pai_ass.action_information10 expenses,
80        pai_ass.action_information11
81              after_tax_deductions,
82        pai_ass.action_information12 net_pay,
83       pai_ass.action_information13 capital_income_base,
84       pai_ass.action_information14 assignment_number
85   FROM pay_payroll_actions ppa,
86        pay_assignment_actions paa,
87        pay_action_information pai_ass
88  WHERE ppa.payroll_action_id = csr_v_pa_id
89    AND paa.payroll_action_id = ppa.payroll_action_id
90    AND paa.assignment_action_id = pai_ass.action_context_id
91    AND pai_ass.action_context_type = 'AAP'
92    AND pai_ass.action_information1 = 'PYFIPAYL'
93    AND pai_ass.action_information_category = 'EMEA REPORT INFORMATION';
94 
95       CURSOR csr_total (csr_v_pa_id IN VARCHAR2)
96       IS
97       SELECT
98        SUM(FND_NUMBER.CANONICAL_TO_NUMBER(pai_ass.action_information4))
99              salary,
100        SUM(FND_NUMBER.CANONICAL_TO_NUMBER(pai_ass.action_information5)) benefits,
101        SUM(FND_NUMBER.CANONICAL_TO_NUMBER(pai_ass.action_information6))
102              insurance_salary,
103        SUM(FND_NUMBER.CANONICAL_TO_NUMBER(pai_ass.action_information7))
104              deductions_withhold_tax,
105        SUM(FND_NUMBER.CANONICAL_TO_NUMBER(pai_ass.action_information8)) tax_income,
106        SUM(FND_NUMBER.CANONICAL_TO_NUMBER(pai_ass.action_information9))
107              withhold_tax,
108        SUM(FND_NUMBER.CANONICAL_TO_NUMBER(pai_ass.action_information10) )expenses,
109        SUM(FND_NUMBER.CANONICAL_TO_NUMBER(pai_ass.action_information11))
110              after_tax_deductions,
111        SUM(FND_NUMBER.CANONICAL_TO_NUMBER(pai_ass.action_information12))net_pay,
112       SUM(FND_NUMBER.CANONICAL_TO_NUMBER(pai_ass.action_information13)) capital_income_base
113   FROM pay_payroll_actions ppa,
114        pay_assignment_actions paa,
115        pay_action_information pai_ass
116  WHERE ppa.payroll_action_id = csr_v_pa_id
117    AND paa.payroll_action_id = ppa.payroll_action_id
118    AND paa.assignment_action_id = pai_ass.action_context_id
119    AND pai_ass.action_context_type = 'AAP'
120    AND pai_ass.action_information1 = 'PYFIPAYL'
121    AND pai_ass.action_information_category = 'EMEA REPORT INFORMATION';
122 
123 csr_total_REC csr_total%ROWTYPE;
124 
125               payl_rep              csr_payl_data%ROWTYPE;
126    BEGIN
127       hr_utility.set_location ('Entered Procedure GETDATA', 10);
128       fnd_file.put_line (
129          fnd_file.LOG,
130             'payroll_action_id '
131          || l_payroll_action_id
132       );
133       l_payroll_action_id :=
134                           get_archive_payroll_action_id (p_payroll_action_id);
135       fnd_file.put_line (
136          fnd_file.LOG,
137             'payroll_action_id '
138          || l_payroll_action_id
139       );
140       				OPEN  CSR_HEADER( l_payroll_action_id);
141 					FETCH CSR_HEADER INTO CSR_HEADER_REC;
142 				CLOSE CSR_HEADER;
143 
144    			       hr_utility.set_location('Before populating pl/sql table',20);
145 
146 				gplsqltable(l_counter).TagName := 'HEADER_START';
147 				gplsqltable(l_counter).TagValue := 'HEADER_START';
148 					l_counter := l_counter + 1;
149 
150 				gplsqltable(l_counter).TagName := 'PAYROLL_NAME';
151 				gplsqltable(l_counter).TagValue :=CSR_HEADER_REC.payroll_name;
152 					l_counter := l_counter + 1;
153 
154 				gplsqltable(l_counter).TagName := 'PAYMENT_MONTH';
155 				gplsqltable(l_counter).TagValue :=  CSR_HEADER_REC.payment_month;
156 					l_counter := l_counter + 1;
157 
158 				gplsqltable(l_counter).TagName := 'PAY_DAY';
159 				gplsqltable(l_counter).TagValue :=    FND_DATE.CANONICAL_TO_DATE(CSR_HEADER_REC.pay_day);
160 					l_counter := l_counter + 1;
161 
162 				gplsqltable(l_counter).TagName := 'END_DATE ';
163 				gplsqltable(l_counter).TagValue := FND_DATE.CANONICAL_TO_DATE(CSR_HEADER_REC.end_date);
164 					l_counter := l_counter + 1;
165 
166 
167 				gplsqltable(l_counter).TagName := 'HEADER_START';
168 				gplsqltable(l_counter).TagValue := 'HEADER_END';
169 					l_counter := l_counter + 1;
170 
171 				gplsqltable(l_counter).TagName := 'BODY_START';
172 				gplsqltable(l_counter).TagValue := 'BODY_START';
173 				l_counter := l_counter + 1;
174 
175 				l_sr_no:= 1;
176      FOR payl_rep IN csr_payl_data (l_payroll_action_id)
177 --				FOR rg_ltfr_body_rpt IN csr_ltfr_body_rpt( l_payroll_action_id)
178 				LOOP
179 
180 					gplsqltable(l_counter).TagName := 'EMP_START';
181 					gplsqltable(l_counter).TagValue := 'EMP_START';
182 					l_counter := l_counter + 1;
183 
184 
185          gplsqltable (l_counter).tagname := 'PERSON_NAME';
186          gplsqltable (l_counter).tagvalue := TO_CHAR (payl_rep.person_name);
187          l_counter :=   l_counter
188                       + 1;
189          gplsqltable (l_counter).tagname := 'ASSIGNMENT_NUMBER';
190          gplsqltable (l_counter).tagvalue := payl_rep.assignment_number;
191          l_counter :=   l_counter
192                       + 1;
193 
194          gplsqltable (l_counter).tagname := 'SALARY';
195          gplsqltable (l_counter).tagvalue :=
196          payl_rep.salary;
197 --         fnd_number.canonical_to_number(payl_rep.salary);
198 
199          l_counter :=   l_counter
200                       + 1;
201          gplsqltable (l_counter).tagname := 'BENEFITS';
202          gplsqltable (l_counter).tagvalue :=
203          payl_rep.benefits;
204   --       fnd_number.canonical_to_number(payl_rep.benefits);
205 
206          l_counter :=   l_counter
207                       + 1;
208          gplsqltable (l_counter).tagname := 'INSURANCE_SALARY';
209          gplsqltable (l_counter).tagvalue :=
210           payl_rep.insurance_salary;
211 --         fnd_number.canonical_to_number(payl_rep.insurance_salary);
212 
213          l_counter :=   l_counter
214                       + 1;
215          gplsqltable (l_counter).tagname := 'DEDUCTIONS_WITHHOLD_TAX';
216          gplsqltable (l_counter).tagvalue :=
217           payl_rep.deductions_withhold_tax;
218 --         fnd_number.canonical_to_number(payl_rep.deductions_withhold_tax);
219 
220          l_counter :=   l_counter
221                       + 1;
222          gplsqltable (l_counter).tagname := 'TAX_INCOME';
223          gplsqltable (l_counter).tagvalue :=
224             payl_rep.tax_income;
225 --         fnd_number.canonical_to_number(payl_rep.tax_income);
226 
227          l_counter :=   l_counter
228                       + 1;
229          gplsqltable (l_counter).tagname := 'CAPITAL_INCOME_BASE';
230          gplsqltable (l_counter).tagvalue :=
231              payl_rep.capital_income_base;
232 --         fnd_number.canonical_to_number(payl_rep.capital_income_base);
233 
234          l_counter :=   l_counter
235                       + 1;
236          gplsqltable (l_counter).tagname := 'WITHHOLD_TAX';
237          gplsqltable (l_counter).tagvalue :=
238              payl_rep.withhold_Tax;
239 --fnd_number.canonical_to_number(payl_rep.withhold_Tax);
240 
241          l_counter :=   l_counter
242                       + 1;
243          gplsqltable (l_counter).tagname := 'EXPENSES';
244          gplsqltable (l_counter).tagvalue :=
245              payl_rep.expenses;
246 --fnd_number.canonical_to_number(payl_rep.expenses);
247 
248          l_counter :=   l_counter
249                       + 1;
250          gplsqltable (l_counter).tagname := 'AFTER_TAX_DEDUCTIONS';
251          gplsqltable (l_counter).tagvalue :=
252              payl_rep.after_tax_deductions;
253 --fnd_number.canonical_to_number(payl_rep.after_tax_deductions);
254 
255          l_counter :=   l_counter
256                       + 1;
257          gplsqltable (l_counter).tagname := 'NET_PAY';
258          gplsqltable (l_counter).tagvalue :=
259              payl_rep.net_pay;
260 --fnd_number.canonical_to_number(payl_rep.net_pay);
261 
262          l_counter :=   l_counter
263                       + 1;
264 
265 					l_sr_no:= l_sr_no + 1;
266 
267 					gplsqltable(l_counter).TagName := 'EMP_START';
268 					gplsqltable(l_counter).TagValue := 'EMP_END';
269 					l_counter := l_counter + 1;
270 fnd_file.put_line (
271          fnd_file.LOG,
272             'payl_rep.person_name '
273          || payl_rep.person_name
274       );
275 		END LOOP;
276 
277 				gplsqltable(l_counter).TagName := 'BODY_START';
278 				gplsqltable(l_counter).TagValue := 'BODY_END';
279 				l_counter := l_counter + 1;
280 
281 				gplsqltable(l_counter).TagName := 'FOOTER_START';
282 				gplsqltable(l_counter).TagValue := 'FOOTER_START';
283 				l_counter := l_counter + 1;
284 
285  fnd_file.put_line (
286          fnd_file.LOG,
287             'payroll_action_id ...TOTAL '
288          || l_payroll_action_id
289       );
290 
291 		OPEN  csr_total( l_payroll_action_id);
292 		FETCH csr_total INTO csr_total_REC;
293 		CLOSE csr_total;
294 
295          gplsqltable (l_counter).tagname := 'SALARY';
296          gplsqltable (l_counter).tagvalue :=
297              csr_total_REC.salary;
298 --         fnd_number.canonical_to_number(csr_total_REC.salary);
299 
300          l_counter :=   l_counter
301                       + 1;
302          gplsqltable (l_counter).tagname := 'BENEFITS';
303          gplsqltable (l_counter).tagvalue :=
304              csr_total_REC.benefits;
305 --         fnd_number.canonical_to_number(csr_total_REC.benefits);
306 
307          l_counter :=   l_counter
308                       + 1;
309          gplsqltable (l_counter).tagname := 'INSURANCE_SALARY';
310          gplsqltable (l_counter).tagvalue :=
311              csr_total_REC.insurance_salary;
312 --         fnd_number.canonical_to_number(csr_total_REC.insurance_salary);
313 
314          l_counter :=   l_counter
315                       + 1;
316          gplsqltable (l_counter).tagname := 'DEDUCTIONS_WITHHOLD_TAX';
317          gplsqltable (l_counter).tagvalue :=
318              csr_total_REC.deductions_withhold_tax;
319 --         fnd_number.canonical_to_number(csr_total_REC.deductions_withhold_tax);
320 
321          l_counter :=   l_counter
322                       + 1;
323          gplsqltable (l_counter).tagname := 'TAX_INCOME';
324          gplsqltable (l_counter).tagvalue :=
325              csr_total_REC.tax_income;
326 --         fnd_number.canonical_to_number(csr_total_REC.tax_income);
327 
328          l_counter :=   l_counter
329                       + 1;
330          gplsqltable (l_counter).tagname := 'CAPITAL_INCOME_BASE';
331          gplsqltable (l_counter).tagvalue :=
332              csr_total_REC.capital_income_base;
333 --         fnd_number.canonical_to_number(csr_total_REC.capital_income_base);
334 
335          l_counter :=   l_counter
336                       + 1;
337          gplsqltable (l_counter).tagname := 'WITHHOLD_TAX';
338          gplsqltable (l_counter).tagvalue :=
339              csr_total_REC.withhold_Tax;
340 --fnd_number.canonical_to_number(csr_total_REC.withhold_Tax);
341 
342          l_counter :=   l_counter
343                       + 1;
344          gplsqltable (l_counter).tagname := 'EXPENSES';
345          gplsqltable (l_counter).tagvalue :=
346              csr_total_REC.expenses;
347 --fnd_number.canonical_to_number(csr_total_REC.expenses);
348 
349          l_counter :=   l_counter
350                       + 1;
351          gplsqltable (l_counter).tagname := 'AFTER_TAX_DEDUCTIONS';
352          gplsqltable (l_counter).tagvalue :=
353              csr_total_REC.after_tax_deductions;
354 --fnd_number.canonical_to_number(csr_total_REC.after_tax_deductions);
355 
356          l_counter :=   l_counter
357                       + 1;
358          gplsqltable (l_counter).tagname := 'NET_PAY';
359          gplsqltable (l_counter).tagvalue :=
360               csr_total_REC.net_pay;
361 --fnd_number.canonical_to_number(csr_total_REC.net_pay);
362 
363          l_counter :=   l_counter
364                       + 1;
365 
366 				gplsqltable(l_counter).TagName := 'FOOTER_START';
367 				gplsqltable(l_counter).TagValue := 'FOOTER_END';
368 				l_counter := l_counter + 1;
369 
370 
371       writetoclob (p_xml);
372        --    fnd_file.put_line (      fnd_file.LOG,         'XML '       || p_xml   );
373 --      COMMIT;
374    END get_data;
375 
376 
377 -----------------------------------------------------------------------------------------------------------------
378 PROCEDURE WritetoCLOB(p_xfdf_clob out nocopy CLOB) is
379 l_xfdf_string clob;
380 l_str1 varchar2(1000);
381 l_str2 varchar2(20);
382 l_str3 varchar2(20);
383 l_str4 varchar2(20);
384 l_str5 varchar2(20);
385 l_str6 varchar2(30);
386 l_str7 varchar2(1000);
387 l_str8 varchar2(240);
388 l_str9 varchar2(240);
389 l_str10 varchar2(20);
390 l_str11 varchar2(20);
391 
392 current_index pls_integer;
393       l_IANA_charset VARCHAR2 (50);
394 BEGIN
395  l_IANA_charset :=hr_fi_utility.get_IANA_charset ;
396        hr_utility.set_location ('Entering WritetoCLOB ', 70);
397        l_str1 := '<?xml version="1.0" encoding="'||l_IANA_charset||'"?> <ROOT><LTFR>';
398        l_str2 := '<';
399        l_str3 := '>';
400        l_str4 := '</';
401        l_str5 := '>';
402         l_str6 := '</LTFR></ROOT>';
403        l_str7 := '<?xml version="1.0" encoding="'||l_IANA_charset||'"?> <ROOT></ROOT>';
404 	l_str10 := '<LTFR>';
405 	l_str11 := '</LTFR>';
406 
407 
408 /*
409 
410 hr_utility.set_location('Entering WritetoCLOB ',70);
411 	l_str1 := '<?xml version="1.0" encoding="UTF-8"?> <ROOT><LTFR>' ;
412 	l_str2 := '<';
413         l_str3 := '>';
414         l_str4 := '</';
415         l_str5 := '>';
416         l_str6 := '</LTFR></ROOT>';
417 	l_str7 := '<?xml version="1.0" encoding="UTF-8"?> <ROOT></ROOT>';
418 	l_str10 := '<LTFR>';
419 	l_str11 := '</LTFR>';
420 */
421 
422 	dbms_lob.createtemporary(l_xfdf_string,FALSE,DBMS_LOB.CALL);
423 	dbms_lob.open(l_xfdf_string,dbms_lob.lob_readwrite);
424 
425 	current_index := 0;
426 
427               IF gplsqltable.count > 0 THEN
428 
429 			dbms_lob.writeAppend( l_xfdf_string, length(l_str1), l_str1 );
430 
431 
432         		FOR table_counter IN gplsqltable.FIRST .. gplsqltable.LAST LOOP
433 
434         			l_str8 := gplsqltable(table_counter).TagName;
435 	        		l_str9 := gplsqltable(table_counter).TagValue;
436 
437                   		IF l_str9 IN ('HEADER_START' ,'HEADER_END','BODY_START',
438 				'BODY_END','EMP_START','EMP_END','FOOTER_START','FOOTER_END') THEN
439 
440 						IF l_str9 IN ('HEADER_START' ,'BODY_START','EMP_START','FOOTER_START') THEN
441 						   dbms_lob.writeAppend(l_xfdf_string, length(l_str2), l_str2);
442 						   dbms_lob.writeAppend(l_xfdf_string, length(l_str8), l_str8);
443 						   dbms_lob.writeAppend(l_xfdf_string, length(l_str3), l_str3);
444 						ELSE
445 						   dbms_lob.writeAppend(l_xfdf_string, length(l_str4), l_str4);
446 						   dbms_lob.writeAppend(l_xfdf_string, length(l_str8), l_str8);
447 						   dbms_lob.writeAppend(l_xfdf_string, length(l_str5), l_str5);
448 						END IF;
449 
450 				ELSE
451 
452 					 if l_str9 is not null then
453 
454 					   dbms_lob.writeAppend(l_xfdf_string, length(l_str2), l_str2);
455 					   dbms_lob.writeAppend(l_xfdf_string, length(l_str8), l_str8);
456 					   dbms_lob.writeAppend(l_xfdf_string, length(l_str3), l_str3);
457 					   dbms_lob.writeAppend(l_xfdf_string, length(l_str9), l_str9);
458 					   dbms_lob.writeAppend(l_xfdf_string, length(l_str4), l_str4);
459 					   dbms_lob.writeAppend(l_xfdf_string, length(l_str8), l_str8);
460 					   dbms_lob.writeAppend(l_xfdf_string, length(l_str5), l_str5);
461 					 else
462 
463 					   dbms_lob.writeAppend(l_xfdf_string, length(l_str2), l_str2);
464 					   dbms_lob.writeAppend(l_xfdf_string, length(l_str8), l_str8);
465 					   dbms_lob.writeAppend(l_xfdf_string, length(l_str3), l_str3);
466 					   dbms_lob.writeAppend(l_xfdf_string, length(l_str4), l_str4);
467 					   dbms_lob.writeAppend(l_xfdf_string, length(l_str8), l_str8);
468 					   dbms_lob.writeAppend(l_xfdf_string, length(l_str5), l_str5);
469 
470 					 end if;
471 
472 				END IF;
473 
474 			END LOOP;
475 
476 			dbms_lob.writeAppend(l_xfdf_string, length(l_str6), l_str6 );
477 
478 		ELSE
479 			dbms_lob.writeAppend(l_xfdf_string, length(l_str7), l_str7 );
480 		END IF;
481 
482 		p_xfdf_clob := l_xfdf_string;
483 
484 		hr_utility.set_location('Leaving WritetoCLOB ',40);
485 
486 	EXCEPTION
487 		WHEN OTHERS then
488 	        HR_UTILITY.TRACE('sqlerrm ' || SQLERRM);
489 	        HR_UTILITY.RAISE_ERROR;
490 END WritetoCLOB;
491 
492 
493 /*   PROCEDURE writetoclob (p_xfdf_clob OUT NOCOPY CLOB)
494    IS
495       l_xfdf_string   CLOB;
496       l_str1          VARCHAR2 (1000);
497       l_str2          VARCHAR2 (20);
498       l_str3          VARCHAR2 (20);
499       l_str4          VARCHAR2 (20);
500       l_str5          VARCHAR2 (20);
501       l_str6          VARCHAR2 (30);
502       l_str7          VARCHAR2 (1000);
503       l_str8          VARCHAR2 (240);
504       l_str9          VARCHAR2 (240);
505       l_str10         VARCHAR2 (20);
506       l_str11         VARCHAR2 (20);
507       current_index   PLS_INTEGER;
508       l_counter       PLS_INTEGER;
509    BEGIN
510       hr_utility.set_location ('Entering WritetoCLOB ', 70);
511       l_str1 := '<?xml version="1.0" encoding="UTF-8"?> <ROOT>';
512       l_str2 := '<';
513       l_str3 := '>';
514       l_str4 := '</';
515       l_str5 := '>';
516       l_str6 := '</ROOT>';
517       l_str7 := '<?xml version="1.0" encoding="UTF-8"?> <ROOT></ROOT>';
518       l_str10 := '<PAYL>';
519       l_str11 := '</PAYL>';
520       DBMS_LOB.createtemporary (l_xfdf_string, FALSE, DBMS_LOB.CALL);
521       DBMS_LOB.OPEN (l_xfdf_string, DBMS_LOB.lob_readwrite);
522       current_index := 0;
523 
524       IF gplsqltable.COUNT > 0
525       THEN
526          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str1), l_str1);
527          l_str8 := gplsqltable (1).tagname;
528          l_str9 := gplsqltable (1).tagvalue;
529          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str2), l_str2);
530          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str8), l_str8);
531          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str3), l_str3);
532          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str9), l_str9);
533          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str4), l_str4);
534          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str8), l_str8);
535          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str5), l_str5);
536          l_str8 := gplsqltable (2).tagname;
537          l_str9 := gplsqltable (2).tagvalue;
538          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str2), l_str2);
539          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str8), l_str8);
540          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str3), l_str3);
541          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str9), l_str9);
542          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str4), l_str4);
543          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str8), l_str8);
544          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str5), l_str5);
545 
546          FOR table_counter IN gplsqltable.FIRST .. gplsqltable.LAST
547          LOOP
548             l_str8 := gplsqltable (table_counter).tagname;
549             l_str9 := gplsqltable (table_counter).tagvalue;
550 
551             IF l_str9 = 'END'
552             THEN
553                DBMS_LOB.writeappend (
554                   l_xfdf_string,
555                   LENGTH (l_str11),
556                   l_str11
557                );
558             ELSIF l_str9 = 'START'
559             THEN
560                DBMS_LOB.writeappend (
561                   l_xfdf_string,
562                   LENGTH (l_str10),
563                   l_str10
564                );
565             ELSIF l_str9 IS NOT NULL
566             THEN
567                DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str2), l_str2);
568                DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str8), l_str8);
569                DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str3), l_str3);
570                DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str9), l_str9);
571                DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str4), l_str4);
572                DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str8), l_str8);
573                DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str5), l_str5);
574             ELSE
575                DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str2), l_str2);
576                DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str8), l_str8);
577                DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str3), l_str3);
578                DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str4), l_str4);
579                DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str8), l_str8);
580                DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str5), l_str5);
581             END IF;
582          END LOOP;
583 
584          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str6), l_str6);
585       ELSE
586          DBMS_LOB.writeappend (l_xfdf_string, LENGTH (l_str7), l_str7);
587       END IF;
588 
589       p_xfdf_clob := l_xfdf_string;
590       hr_utility.set_location ('Leaving WritetoCLOB ', 70);
591       hr_utility.set_location ('Leaving WritetoCLOB ', 70);
592 --INSERT INTO CLOBTABLE VALUES(p_xfdf_clob,'PAYL');
593 --COMMIT;
594    EXCEPTION
595       WHEN OTHERS
596       THEN
597          hr_utility.TRACE (   'sqlerrm '
598                            || SQLERRM);
599          hr_utility.raise_error;
600    END writetoclob;
601    */
602 -------------------------------------------------------------------------------------------------------------------------
603 END PAY_FI_PAYLIST;