DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_GENERIC_PVT

Source


1 PACKAGE BODY igs_ps_generic_pvt AS
2 /* $Header: IGSPS90B.pls 120.2 2005/09/27 01:35:27 appldev noship $ */
3 
4 
5 G_PKG_NAME     CONSTANT VARCHAR2(30) := 'igs_ps_generic_pvt';
6 
7 PROCEDURE psp_import (
8 p_api_version			IN           NUMBER,
9 p_init_msg_list			IN           VARCHAR2 DEFAULT FND_API.G_FALSE,
10 p_commit			IN           VARCHAR2 DEFAULT FND_API.G_FALSE,
11 p_validation_level		IN  NUMBER   DEFAULT FND_API.G_VALID_LEVEL_FULL,
12 x_return_status			OUT NOCOPY   VARCHAR2,
13 x_msg_count			OUT NOCOPY   NUMBER,
14 x_msg_data			OUT NOCOPY   VARCHAR2,
15 p_calling_context		IN VARCHAR2,
16 p_usec_tbl			IN OUT NOCOPY igs_ps_generic_pub.usec_tbl_type,
17 p_usec_gs_tbl			IN OUT NOCOPY igs_ps_generic_pub.usec_gs_tbl_type,
18 p_uso_tbl			IN OUT NOCOPY igs_ps_generic_pub.uso_tbl_type,
19 p_unit_ref_tbl			IN OUT NOCOPY igs_ps_generic_pub.unit_ref_tbl_type,
20 p_uso_ins_tbl			IN OUT NOCOPY igs_ps_generic_pub.uso_ins_tbl_type,
21 p_usec_occurs_facility_tbl	IN OUT NOCOPY igs_ps_generic_pub.usec_occurs_facility_tbl_type,
22 p_usec_teach_resp_ovrd_tbl	IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_ovrd_tbl_type,
23 p_usec_notes_tbl		IN OUT NOCOPY igs_ps_generic_pub.usec_notes_tbl_type,
24 p_usec_assmnt_tbl		IN OUT NOCOPY igs_ps_generic_pub.usec_assmnt_tbl_type,
25 p_usec_plus_hr_tbl		IN OUT NOCOPY igs_ps_generic_pub.usec_plus_hr_tbl_type,
26 p_usec_cat_tbl			IN OUT NOCOPY igs_ps_generic_pub.usec_cat_tbl_type,
27 p_usec_rule_tbl			IN OUT NOCOPY igs_ps_generic_pub.usec_rule_tbl_type,
28 p_usec_cross_group_tbl		IN OUT NOCOPY igs_ps_generic_pub.usec_cross_group_tbl_type,
29 p_usec_meet_with_tbl		IN OUT NOCOPY igs_ps_generic_pub.usec_meet_with_tbl_type,
30 p_usec_waitlist_tbl		IN OUT NOCOPY igs_ps_generic_pub.usec_waitlist_tbl_type,
31 p_usec_res_seat_tbl		IN OUT NOCOPY igs_ps_generic_pub.usec_res_seat_tbl_type,
32 p_usec_sp_fee_tbl		IN OUT NOCOPY igs_ps_generic_pub.usec_sp_fee_tbl_type,
33 p_usec_ret_tbl			IN OUT NOCOPY igs_ps_generic_pub.usec_ret_tbl_type,
34 p_usec_ret_dtl_tbl		IN OUT NOCOPY igs_ps_generic_pub.usec_ret_dtl_tbl_type,
35 p_usec_enr_dead_tbl		IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dead_tbl_type,
36 p_usec_enr_dis_tbl		IN OUT NOCOPY igs_ps_generic_pub.usec_enr_dis_tbl_type,
37 p_usec_teach_resp_tbl		IN OUT NOCOPY igs_ps_generic_pub.usec_teach_resp_tbl_type,
38 p_usec_ass_item_grp_tbl		IN OUT NOCOPY igs_ps_generic_pub.usec_ass_item_grp_tbl_type,
39 p_usec_status			OUT NOCOPY VARCHAR2,
40 p_usec_gs_status		OUT NOCOPY VARCHAR2,
41 p_uso_status			OUT NOCOPY VARCHAR2,
42 p_uso_ins_status		OUT NOCOPY VARCHAR2,
43 p_uso_facility_status		OUT NOCOPY VARCHAR2,
44 p_unit_ref_status		OUT NOCOPY VARCHAR2,
45 p_usec_teach_resp_ovrd_status	OUT NOCOPY VARCHAR2,
46 p_usec_notes_status		OUT NOCOPY VARCHAR2,
47 p_usec_assmnt_status		OUT NOCOPY VARCHAR2,
48 p_usec_plus_hr_status		OUT NOCOPY VARCHAR2,
49 p_usec_cat_status		OUT NOCOPY VARCHAR2,
50 p_usec_rule_status		OUT NOCOPY VARCHAR2,
51 p_usec_cross_group_status	OUT NOCOPY VARCHAR2,
52 p_usec_meet_with_status		OUT NOCOPY VARCHAR2,
53 p_usec_waitlist_status		OUT NOCOPY VARCHAR2,
54 p_usec_res_seat_status		OUT NOCOPY VARCHAR2,
55 p_usec_sp_fee_status		OUT NOCOPY VARCHAR2,
56 p_usec_ret_status		OUT NOCOPY VARCHAR2,
57 p_usec_ret_dtl_status		OUT NOCOPY VARCHAR2,
58 p_usec_enr_dead_status		OUT NOCOPY VARCHAR2,
59 p_usec_enr_dis_status		OUT NOCOPY VARCHAR2,
60 p_usec_teach_resp_status	OUT NOCOPY VARCHAR2,
61 p_usec_ass_item_grp_status	OUT NOCOPY VARCHAR2 ) AS
62 /***********************************************************************************************
63 Created By:         Sanjeeb Rakshit
64 Date Created By:    25-May-2005
65 Purpose:            This is a public API to import data from external system to OSS.
66 Known limitations,enhancements,remarks:
67 
68 Change History
69 
70 Who         When           What
71 sommukhe    27-SEP-2005     BUG #4632652.FND logging included.
72 ***********************************************************************************************/
73 
74 
75 l_api_name      CONSTANT VARCHAR2(30) := 'psp_import';
76 l_api_version   CONSTANT NUMBER := 1.0;
77 l_record_exists BOOLEAN := FALSE;
78 BEGIN
79 
80   IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
81     fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_generic_pvt.psp_import.start_logging_for',
82                     'Data import from external Sysytem to OSS ');
83   END IF;
84 
85   --Standard start of API savepoint
86   SAVEPOINT psp_import_PVT;
87 
88   --Standard call to check for call compatibility
89   IF NOT FND_API.Compatible_API_Call(l_api_version ,
90                                      p_api_version ,
91                                      l_api_name    ,
92                                      G_PKG_NAME) THEN
93     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
94   END IF;
95 
96   --Initialize message list if p_init_msg_list is set to TRUE
97   IF FND_API.to_Boolean(p_init_msg_list) THEN
98     FND_MSG_PUB.initialize;
99   END IF;
100 
101 
102   --API body
103   IF p_calling_context NOT IN ('S','G') THEN
104     FND_MESSAGE.SET_NAME('IGS','IGS_PS_INVALID_VALUE_CONTEXT');
105     FND_MSG_PUB.ADD;
106     RAISE FND_API.G_EXC_ERROR;
107   END IF;
108 
109   --Initialize API return status to success
110   x_return_status := FND_API.G_RET_STS_SUCCESS;
111 
112 
113   --API body
114   p_usec_status	                := 'S';
115   p_usec_gs_status              := 'S';
116   p_uso_status	                := 'S';
117   p_uso_ins_status              := 'S';
118   p_uso_facility_status	        := 'S';
119   p_unit_ref_status	        := 'S';
120   p_usec_teach_resp_ovrd_status := 'S';
121   p_usec_notes_status		:= 'S';
122   p_usec_assmnt_status		:= 'S';
123   p_usec_plus_hr_status		:= 'S';
124   p_usec_cat_status		:= 'S';
125   p_usec_rule_status		:= 'S';
126   p_usec_cross_group_status	:= 'S';
127   p_usec_meet_with_status	:= 'S';
128   p_usec_waitlist_status	:= 'S';
129   p_usec_res_seat_status	:= 'S';
130   p_usec_sp_fee_status		:= 'S';
131   p_usec_ret_status		:= 'S';
132   p_usec_ret_dtl_status		:= 'S';
133   p_usec_enr_dead_status	:= 'S';
134   p_usec_enr_dis_status		:= 'S';
135   p_usec_teach_resp_status	:= 'S';
136   p_usec_ass_item_grp_status	:= 'S';
137 
138 
139   --Similarly for all the other PL/SQL table status variable
140 
141 
142   --Call the Unit Section sub process
143   IF p_usec_tbl.COUNT > 0 THEN
144     SAVEPOINT create_unit_section;
145 
146     igs_ps_unit_lgcy_pkg.create_unit_section( p_usec_tbl,p_usec_status,p_calling_context);
147     l_record_exists := TRUE;
148 
149     IF p_usec_status = 'E' THEN
150       --Set the API status to 'E'
151       x_return_status := 'E';
152       --Set the record status to 'P' for the 'S' marked record
153       FOR I in 1..p_uso_tbl.LAST LOOP
154           IF p_usec_tbl.EXISTS(I) THEN
155               IF p_usec_tbl(I).status = 'S' THEN
156                  p_usec_tbl(I).status := 'P';
157 	      END IF;
158 	  END IF;
159       END LOOP;
160       ROLLBACK TO create_unit_section;
161      END IF;
162   END IF;
163 
164 
165   --Call the Unit Section Grading schema sub process
166   IF p_usec_gs_tbl.COUNT > 0 THEN
167     SAVEPOINT create_usec_grd_sch;
168 
169     igs_ps_unit_lgcy_pkg.create_usec_grd_sch( p_usec_gs_tbl,p_usec_gs_status,p_calling_context);
170     l_record_exists := TRUE;
171 
172     IF p_usec_gs_status = 'E' THEN
173       --Set the API status to 'E'
174       x_return_status := 'E';
175       --Set the record status to 'P' for the 'S' marked record
176       FOR I in 1..p_usec_gs_tbl.LAST LOOP
177           IF p_usec_gs_tbl.EXISTS(I) THEN
178               IF p_usec_gs_tbl(I).status = 'S' THEN
179                  p_usec_gs_tbl(I).status := 'P';
180 	      END IF;
181 	  END IF;
182       END LOOP;
183       ROLLBACK TO create_usec_grd_sch;
184     END IF;
185   END IF;
186 
187 
188   --Call the Unit Section Occurrence sub process
189 
190   IF p_uso_tbl.COUNT > 0 THEN
191     SAVEPOINT create_usec_occur;
192 
193     igs_ps_unit_lgcy_pkg.create_usec_occur( p_uso_tbl,p_uso_status,p_calling_context);
194     l_record_exists := TRUE;
195 
196     IF p_uso_status = 'E' THEN
197       --Set the API status to 'E'
198       x_return_status := 'E';
199       --Set the record status to 'P' for the 'S' marked record
200       FOR I in 1..p_uso_tbl.LAST LOOP
201           IF p_uso_tbl.EXISTS(I) THEN
202               IF p_uso_tbl(I).status = 'S' THEN
203                  p_uso_tbl(I).status := 'P';
204 	      END IF;
205 	  END IF;
206       END LOOP;
207       ROLLBACK TO create_usec_occur;
208     END IF;
209   END IF;
210 
211 
212   -- Call the Unit Section Occurrence Instructors sub process
213   IF p_uso_ins_tbl.COUNT > 0 THEN
214      SAVEPOINT create_uso_ins;
215 
216      igs_ps_create_generic_pkg.create_uso_ins_ovrd(p_uso_ins_tbl,p_uso_ins_status,p_calling_context);
217 
218      l_record_exists := TRUE;
219 
220      IF p_uso_ins_status = 'E' THEN
221           --Set the API status to 'E'
222 	  x_return_status := 'E';
223 	  FOR I in 1..p_uso_ins_tbl.LAST LOOP
224             IF p_uso_ins_tbl.EXISTS(I) THEN
225               IF p_uso_ins_tbl(I).status = 'S' THEN
226                  p_uso_ins_tbl(I).status := 'P';
227 	      END IF;
228 	    END IF;
229           END LOOP;
230 	  ROLLBACK TO create_uso_ins;
231      END IF;
232   END IF;
233 
234 
235   -- Call the Unit Section Occurrence Facilities sub process
236   IF p_usec_occurs_facility_tbl.COUNT > 0 THEN
237      SAVEPOINT create_uso_facility;
238 
239      igs_ps_create_generic_pkg.create_uso_facility(p_usec_occurs_facility_tbl,p_uso_facility_status,p_calling_context);
240      l_record_exists := TRUE;
241 
242      IF p_uso_facility_status = 'E' THEN
243           --Set the API status to 'E'
244 	  x_return_status := 'E';
245 	  FOR I in 1..p_usec_occurs_facility_tbl.LAST LOOP
246             IF p_usec_occurs_facility_tbl.EXISTS(I) THEN
247               IF p_usec_occurs_facility_tbl(I).status = 'S' THEN
248                  p_usec_occurs_facility_tbl(I).status := 'P';
249 	      END IF;
250 	    END IF;
251           END LOOP;
252 	  ROLLBACK TO create_uso_facility;
253      END IF;
254   END IF;
255 
256 
257   -- Call the Unit Section/ Occurrence reference codes sub process
258   IF p_unit_ref_tbl.COUNT > 0 THEN
259      SAVEPOINT create_unit_ref_code;
260 
261      igs_ps_unit_lgcy_pkg.create_unit_ref_code(p_unit_ref_tbl,p_unit_ref_status,p_calling_context);
262      l_record_exists := TRUE;
263 
264      IF p_unit_ref_status = 'E' THEN
265           --Set the API status to 'E'
266 	  x_return_status := 'E';
267 	  FOR I in 1..p_unit_ref_tbl.LAST LOOP
268             IF p_unit_ref_tbl.EXISTS(I) THEN
269               IF p_unit_ref_tbl(I).status = 'S' THEN
270                  p_unit_ref_tbl(I).status := 'P';
271 	      END IF;
272 	    END IF;
273           END LOOP;
274 	  ROLLBACK TO create_unit_ref_code;
275      END IF;
276   END IF;
277 
278 
279   -- Call the Unit Section teaching responsibility Override sub process
280   IF p_usec_teach_resp_ovrd_tbl.COUNT > 0 THEN
281      SAVEPOINT create_usec_teach_resp_ovrd;
282 
283      igs_ps_create_generic_pkg.create_usec_teach_resp_ovrd(p_usec_teach_resp_ovrd_tbl,p_usec_teach_resp_ovrd_status,p_calling_context);
284      l_record_exists := TRUE;
285 
286      IF p_usec_teach_resp_ovrd_status = 'E' THEN
287           --Set the API status to 'E'
288 	  x_return_status := 'E';
289 	  FOR I in 1..p_usec_teach_resp_ovrd_tbl.LAST LOOP
290             IF p_usec_teach_resp_ovrd_tbl.EXISTS(I) THEN
291               IF p_usec_teach_resp_ovrd_tbl(I).status = 'S' THEN
292                  p_usec_teach_resp_ovrd_tbl(I).status := 'P';
293 	      END IF;
294 	    END IF;
295           END LOOP;
296 	  ROLLBACK TO create_usec_teach_resp_ovrd;
297      END IF;
298   END IF;
299 
300 
301   -- Call the Unit Section Notes sub process
302   IF p_usec_notes_tbl.COUNT > 0 THEN
303      SAVEPOINT create_usec_notes;
304 
305      igs_ps_create_generic_pkg.create_usec_notes(p_usec_notes_tbl,p_usec_notes_status,p_calling_context);
306      l_record_exists := TRUE;
307 
308      IF p_usec_notes_status = 'E' THEN
309           --Set the API status to 'E'
310 	  x_return_status := 'E';
311 	  FOR I in 1..p_usec_notes_tbl.LAST LOOP
312             IF p_usec_notes_tbl.EXISTS(I) THEN
313               IF p_usec_notes_tbl(I).status = 'S' THEN
314                  p_usec_notes_tbl(I).status := 'P';
315 	      END IF;
316 	    END IF;
317           END LOOP;
318 	  ROLLBACK TO create_usec_notes;
319      END IF;
320   END IF;
321 
322 
323   -- Call the Unit Section Assessment sub process
324   IF p_usec_assmnt_tbl.COUNT > 0 THEN
325      SAVEPOINT create_usec_assmnt;
326 
327      igs_ps_create_generic_pkg.create_usec_assmnt(p_usec_assmnt_tbl,p_usec_assmnt_status,p_calling_context);
328      l_record_exists := TRUE;
329 
330      IF p_usec_assmnt_status = 'E' THEN
331           --Set the API status to 'E'
332 	  x_return_status := 'E';
336                  p_usec_assmnt_tbl(I).status := 'P';
333 	  FOR I in 1..p_usec_assmnt_tbl.LAST LOOP
334             IF p_usec_assmnt_tbl.EXISTS(I) THEN
335               IF p_usec_assmnt_tbl(I).status = 'S' THEN
337 	      END IF;
338 	    END IF;
339           END LOOP;
340 	  ROLLBACK TO create_usec_assmnt;
341      END IF;
342   END IF;
343 
344   -- Call the Unit Section Plus Hour sub process
345   IF p_usec_plus_hr_tbl.COUNT > 0 THEN
346      SAVEPOINT create_usec_plus_hr;
347 
348      igs_ps_create_generic_pkg.create_usec_plus_hr(p_usec_plus_hr_tbl,p_usec_plus_hr_status,p_calling_context);
349      l_record_exists := TRUE;
350 
351      IF p_usec_plus_hr_status = 'E' THEN
352           --Set the API status to 'E'
353 	  x_return_status := 'E';
354 	  FOR I in 1..p_usec_plus_hr_tbl.LAST LOOP
355             IF p_usec_plus_hr_tbl.EXISTS(I) THEN
356               IF p_usec_plus_hr_tbl(I).status = 'S' THEN
357                  p_usec_plus_hr_tbl(I).status := 'P';
358 	      END IF;
359 	    END IF;
360           END LOOP;
361 	  ROLLBACK TO create_usec_plus_hr;
362      END IF;
363   END IF;
364 
365   -- Call the Unit Section Categories sub process
366   IF p_usec_cat_tbl.COUNT > 0 THEN
367      SAVEPOINT create_usec_cat;
368 
369      igs_ps_create_generic_pkg.create_usec_cat(p_usec_cat_tbl,p_usec_cat_status,p_calling_context);
370      l_record_exists := TRUE;
371 
372      IF p_usec_cat_status = 'E' THEN
373           --Set the API status to 'E'
374 	  x_return_status := 'E';
375 	  FOR I in 1..p_usec_cat_tbl.LAST LOOP
376             IF p_usec_cat_tbl.EXISTS(I) THEN
377               IF p_usec_cat_tbl(I).status = 'S' THEN
378                  p_usec_cat_tbl(I).status := 'P';
379 	      END IF;
380 	    END IF;
381           END LOOP;
382 	  ROLLBACK TO create_usec_cat;
383      END IF;
384   END IF;
385 
386   -- Call the Unit Section Rule sub process
387   IF p_usec_rule_tbl.COUNT > 0 THEN
388      SAVEPOINT create_usec_rule;
389 
390      igs_ps_create_generic_pkg.create_usec_rule(p_usec_rule_tbl,p_usec_rule_status,p_calling_context);
391      l_record_exists := TRUE;
392 
393      IF p_usec_rule_status = 'E' THEN
394           --Set the API status to 'E'
395 	  x_return_status := 'E';
396 	  FOR I in 1..p_usec_rule_tbl.LAST LOOP
397             IF p_usec_rule_tbl.EXISTS(I) THEN
398               IF p_usec_rule_tbl(I).status = 'S' THEN
399                  p_usec_rule_tbl(I).status := 'P';
400 	      END IF;
401 	    END IF;
402           END LOOP;
403 	  ROLLBACK TO create_usec_rule;
404      END IF;
405   END IF;
406 
407   -- Call the Unit Section Cross Listed Group sub process
408   IF p_usec_cross_group_tbl.COUNT > 0 THEN
409      SAVEPOINT create_usec_cross_group;
410 
411      igs_ps_create_generic_pkg.create_usec_cross_group(p_usec_cross_group_tbl,p_usec_cross_group_status,p_calling_context);
412      l_record_exists := TRUE;
413 
414      IF p_usec_cross_group_status = 'E' THEN
415           --Set the API status to 'E'
416 	  x_return_status := 'E';
417 	  FOR I in 1..p_usec_cross_group_tbl.LAST LOOP
418             IF p_usec_cross_group_tbl.EXISTS(I) THEN
419               IF p_usec_cross_group_tbl(I).status = 'S' THEN
420                  p_usec_cross_group_tbl(I).status := 'P';
421 	      END IF;
422 	    END IF;
423           END LOOP;
424 	  ROLLBACK TO create_usec_cross_group;
425      END IF;
426   END IF;
427 
428 
429   -- Call the Unit Section Meet With Group sub process
430   IF p_usec_meet_with_tbl.COUNT > 0 THEN
431      SAVEPOINT create_usec_meet_with;
432 
433      igs_ps_create_generic_pkg.create_usec_meet_with(p_usec_meet_with_tbl,p_usec_meet_with_status,p_calling_context);
434      l_record_exists := TRUE;
435 
436      IF p_usec_meet_with_status = 'E' THEN
437           --Set the API status to 'E'
438 	  x_return_status := 'E';
439 	  FOR I in 1..p_usec_meet_with_tbl.LAST LOOP
440             IF p_usec_meet_with_tbl.EXISTS(I) THEN
441               IF p_usec_meet_with_tbl(I).status = 'S' THEN
442                  p_usec_meet_with_tbl(I).status := 'P';
443 	      END IF;
444 	    END IF;
445           END LOOP;
446 	  ROLLBACK TO create_usec_meet_with;
447      END IF;
448   END IF;
449 
450   -- Call the Unit Section Waitlist sub process
451   IF p_usec_waitlist_tbl.COUNT > 0 THEN
452      SAVEPOINT create_usec_waitlist;
453 
454      igs_ps_create_generic_pkg.create_usec_waitlist(p_usec_waitlist_tbl,p_usec_waitlist_status,p_calling_context);
455      l_record_exists := TRUE;
456 
457      IF p_usec_waitlist_status = 'E' THEN
458           --Set the API status to 'E'
459 	  x_return_status := 'E';
460 	  FOR I in 1..p_usec_waitlist_tbl.LAST LOOP
461             IF p_usec_waitlist_tbl.EXISTS(I) THEN
462               IF p_usec_waitlist_tbl(I).status = 'S' THEN
463                  p_usec_waitlist_tbl(I).status := 'P';
464 	      END IF;
465 	    END IF;
466           END LOOP;
467 	  ROLLBACK TO create_usec_waitlist;
468      END IF;
469   END IF;
470 
471   -- Call the Unit Section Reserve Seating sub process
472   IF p_usec_res_seat_tbl.COUNT > 0 THEN
473      SAVEPOINT create_usec_res_seat;
474 
475      igs_ps_create_generic_pkg.create_usec_res_seat(p_usec_res_seat_tbl,p_usec_res_seat_status,p_calling_context);
476      l_record_exists := TRUE;
477 
478      IF p_usec_res_seat_status = 'E' THEN
479           --Set the API status to 'E'
480 	  x_return_status := 'E';
481 	  FOR I in 1..p_usec_res_seat_tbl.LAST LOOP
485 	      END IF;
482             IF p_usec_res_seat_tbl.EXISTS(I) THEN
483               IF p_usec_res_seat_tbl(I).status = 'S' THEN
484                  p_usec_res_seat_tbl(I).status := 'P';
486 	    END IF;
487           END LOOP;
488 	  ROLLBACK TO create_usec_res_seat;
489      END IF;
490   END IF;
491 
492   -- Call the Unit Section Special Fees sub process
493   IF p_usec_sp_fee_tbl.COUNT > 0 THEN
494      SAVEPOINT create_usec_sp_fee;
495 
496      igs_ps_create_generic_pkg.create_usec_sp_fee(p_usec_sp_fee_tbl,p_usec_sp_fee_status,p_calling_context);
497      l_record_exists := TRUE;
498 
499      IF p_usec_sp_fee_status = 'E' THEN
500           --Set the API status to 'E'
501 	  x_return_status := 'E';
502 	  FOR I in 1..p_usec_sp_fee_tbl.LAST LOOP
503             IF p_usec_sp_fee_tbl.EXISTS(I) THEN
504               IF p_usec_sp_fee_tbl(I).status = 'S' THEN
505                  p_usec_sp_fee_tbl(I).status := 'P';
506 	      END IF;
507 	    END IF;
508           END LOOP;
509 	  ROLLBACK TO create_usec_sp_fee;
510      END IF;
511   END IF;
512 
513   -- Call the Unit Section Retention sub process
514   IF p_usec_ret_tbl.COUNT > 0 THEN
515      SAVEPOINT create_usec_ret;
516 
517      igs_ps_create_generic_pkg.create_usec_ret(p_usec_ret_tbl,p_usec_ret_status,p_calling_context);
518      l_record_exists := TRUE;
519 
520      IF p_usec_ret_status = 'E' THEN
521           --Set the API status to 'E'
522 	  x_return_status := 'E';
523 	  FOR I in 1..p_usec_ret_tbl.LAST LOOP
524             IF p_usec_ret_tbl.EXISTS(I) THEN
525               IF p_usec_ret_tbl(I).status = 'S' THEN
526                  p_usec_ret_tbl(I).status := 'P';
527 	      END IF;
528 	    END IF;
529           END LOOP;
530 	  ROLLBACK TO create_usec_ret;
531      END IF;
532   END IF;
533 
534   -- Call the Unit Section Retention Details sub process
535   IF p_usec_ret_dtl_tbl.COUNT > 0 THEN
536      SAVEPOINT create_usec_ret_dtl;
537 
538      igs_ps_create_generic_pkg.create_usec_ret_dtl(p_usec_ret_dtl_tbl,p_usec_ret_dtl_status,p_calling_context);
539      l_record_exists := TRUE;
540 
541      IF p_usec_ret_dtl_status = 'E' THEN
542           --Set the API status to 'E'
543 	  x_return_status := 'E';
544 	  FOR I in 1..p_usec_ret_dtl_tbl.LAST LOOP
545             IF p_usec_ret_dtl_tbl.EXISTS(I) THEN
546               IF p_usec_ret_dtl_tbl(I).status = 'S' THEN
547                  p_usec_ret_dtl_tbl(I).status := 'P';
548 	      END IF;
549 	    END IF;
550           END LOOP;
551 	  ROLLBACK TO create_usec_ret_dtl;
552      END IF;
553   END IF;
554 
555   -- Call the Unit Section Enrollment Deadline sub process
556   IF p_usec_enr_dead_tbl.COUNT > 0 THEN
557      SAVEPOINT create_usec_enr_dead;
558 
559      igs_ps_create_generic_pkg.create_usec_enr_dead(p_usec_enr_dead_tbl,p_usec_enr_dead_status,p_calling_context);
560      l_record_exists := TRUE;
561 
562      IF p_usec_enr_dead_status = 'E' THEN
563           --Set the API status to 'E'
564 	  x_return_status := 'E';
565 	  FOR I in 1..p_usec_enr_dead_tbl.LAST LOOP
566             IF p_usec_enr_dead_tbl.EXISTS(I) THEN
567               IF p_usec_enr_dead_tbl(I).status = 'S' THEN
568                  p_usec_enr_dead_tbl(I).status := 'P';
569 	      END IF;
570 	    END IF;
571           END LOOP;
572 	  ROLLBACK TO create_usec_enr_dead;
573      END IF;
574   END IF;
575 
576   -- Call the Unit Section Enrollment Discontinuation sub process
577   IF p_usec_enr_dis_tbl.COUNT > 0 THEN
578      SAVEPOINT create_usec_enr_dis;
579 
580      igs_ps_create_generic_pkg.create_usec_enr_dis(p_usec_enr_dis_tbl,p_usec_enr_dis_status,p_calling_context);
581      l_record_exists := TRUE;
582 
583      IF p_usec_enr_dis_status = 'E' THEN
584           --Set the API status to 'E'
585 	  x_return_status := 'E';
586 	  FOR I in 1..p_usec_enr_dis_tbl.LAST LOOP
587             IF p_usec_enr_dis_tbl.EXISTS(I) THEN
588               IF p_usec_enr_dis_tbl(I).status = 'S' THEN
589                  p_usec_enr_dis_tbl(I).status := 'P';
590 	      END IF;
591 	    END IF;
592           END LOOP;
593 	  ROLLBACK TO create_usec_enr_dis;
594      END IF;
595   END IF;
596 
597   -- Call the Unit Section Teaching Responsibility (for Update only) sub process
598   IF p_usec_teach_resp_tbl.COUNT > 0 THEN
599      SAVEPOINT create_usec_teach_resp;
600 
601      igs_ps_create_generic_pkg.create_usec_teach_resp(p_usec_teach_resp_tbl,p_usec_teach_resp_status,p_calling_context);
602      l_record_exists := TRUE;
603 
604      IF p_usec_teach_resp_status = 'E' THEN
605           --Set the API status to 'E'
606 	  x_return_status := 'E';
607 	  FOR I in 1..p_usec_teach_resp_tbl.LAST LOOP
608             IF p_usec_teach_resp_tbl.EXISTS(I) THEN
609               IF p_usec_teach_resp_tbl(I).status = 'S' THEN
610                  p_usec_teach_resp_tbl(I).status := 'P';
611 	      END IF;
612 	    END IF;
613           END LOOP;
614 	  ROLLBACK TO create_usec_teach_resp;
615      END IF;
616   END IF;
617 
618   -- Call the Unit Section Assessment Item Group sub process
619   IF p_usec_ass_item_grp_tbl.COUNT > 0 THEN
620      SAVEPOINT create_usec_ass_item_grp;
621 
622      igs_ps_create_generic_pkg.create_usec_ass_item_grp(p_usec_ass_item_grp_tbl,p_usec_ass_item_grp_status,p_calling_context);
623      l_record_exists := TRUE;
624 
625      IF p_usec_ass_item_grp_status = 'E' THEN
626           --Set the API status to 'E'
627 	  x_return_status := 'E';
628 	  FOR I in 1..p_usec_ass_item_grp_tbl.LAST LOOP
629             IF p_usec_ass_item_grp_tbl.EXISTS(I) THEN
630               IF p_usec_ass_item_grp_tbl(I).status = 'S' THEN
631                  p_usec_ass_item_grp_tbl(I).status := 'P';
632 	      END IF;
633 	    END IF;
634           END LOOP;
635 	  ROLLBACK TO create_usec_ass_item_grp;
636      END IF;
637   END IF;
638 
639   IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
640     fnd_log.string( fnd_log.level_procedure, 'igs.plsql.igs_ps_generic_pvt.psp_import.end_of_logging_for',
641                     'Data import from external Sysytem to OSS ');
642   END IF;
643 
644   --If none of the PL/SQL data has been passed then raise error
645   IF NOT l_record_exists THEN
646     FND_MESSAGE.SET_NAME ('IGS','IGS_PS_LGCY_DATA_NOT_PASSED');
647     FND_MSG_PUB.ADD;
648     RAISE FND_API.G_EXC_ERROR;
649   END IF;
650 
651   --End of API body
652 
653   --Standard check of p_commit
654   IF FND_API.TO_Boolean( p_commit) THEN
655     COMMIT WORK;
656   END IF;
657 
658   --Standard call to get message count and if count is 1, get message info.
659   FND_MSG_PUB.Count_And_Get( p_count  => x_msg_count,
660                              p_data   => x_msg_data);
661 
662 
663 EXCEPTION
664     WHEN FND_API.G_EXC_ERROR THEN
665         ROLLBACK TO psp_import_PVT;
666         x_return_status := FND_API.G_RET_STS_ERROR;
667         FND_MSG_PUB.Count_And_Get( p_count  => x_msg_count ,
668                                    p_data   => x_msg_data );
669 
670     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
671         ROLLBACK TO psp_import_PVT;
672         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
673         FND_MSG_PUB.Count_And_Get( p_count  => x_msg_count ,
674                                    p_data   => x_msg_data );
675 
676     WHEN OTHERS THEN
677         ROLLBACK TO psp_import_PVT;
678         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
679         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
680           FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,
681                                    l_api_name);
682         END IF;
683         FND_MSG_PUB.Count_And_Get( p_count  => x_msg_count ,
684                                    p_data   => x_msg_data );
685         IF (fnd_log.level_exception >= fnd_log.g_current_runtime_level) THEN
686 	  fnd_log.string( fnd_log.level_exception, 'igs.plsql.igs_ps_generic_pvt.psp_import.in_exception_section_OTHERS.err_msg',
687 			  SUBSTRB(SQLERRM,1,4000));
688 	END IF;
689 
690 END psp_import;
691 
692 END igs_ps_generic_pvt;