1 PACKAGE BODY igs_pe_data_groups_pkg AS
2 /* $Header: IGSNI60B.pls 120.1 2006/01/25 09:14:22 skpandey noship $ */
3 /******************************************************
4 Created By : nigupta
5 Date Created By : 11-MAY-2000
6 Purpose : To create Table Handler
7 Know limitations, enhancements or remarks : None
8 Change History
9 Who When What
10
11
12 (reverse chronological order - newest change first)
13 ********************************************************/
14
15 l_rowid VARCHAR2(25);
16 old_references igs_pe_data_groups_all%RowType;
17 new_references igs_pe_data_groups_all%RowType;
18
19 PROCEDURE Set_Column_Values (
20 p_action IN VARCHAR2,
21 x_rowid IN VARCHAR2 DEFAULT NULL,
22 x_data_group_id IN NUMBER DEFAULT NULL,
23 x_data_group IN VARCHAR2 DEFAULT NULL,
24 x_description IN VARCHAR2 DEFAULT NULL,
25 x_lvl IN VARCHAR2 DEFAULT NULL,
26 x_lvl_description IN VARCHAR2 DEFAULT NULL,
27 x_closed_ind IN VARCHAR2 DEFAULT NULL,
28 x_creation_date IN DATE DEFAULT NULL,
29 x_created_by IN NUMBER DEFAULT NULL,
30 x_last_update_date IN DATE DEFAULT NULL,
31 x_last_updated_by IN NUMBER DEFAULT NULL,
32 x_last_update_login IN NUMBER DEFAULT NULL,
33 X_ORG_ID in NUMBER default NULL
34 ) AS
35
36 /******************************************************
37 Created By : nigupta
38 Date Created By : 11-MAY-2000
39 Purpose : To Set Column Values
40 Know limitations, enhancements or remarks : None
41 Change History
42 Who When What
43
44
45 (reverse chronological order - newest change first)
46 ********************************************************/
47
48 CURSOR cur_old_ref_values IS
49 SELECT *
50 FROM igs_pe_data_groups_all
51 WHERE rowid = x_rowid;
52
53 BEGIN
54
55 l_rowid := x_rowid;
56
57 -- Code for setting the Old and New Reference Values.
58 -- Populate Old Values.
59 Open cur_old_ref_values;
60 Fetch cur_old_ref_values INTO old_references;
61 IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT','VALIDATE_INSERT')) THEN
62 Close cur_old_ref_values;
63 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
64 IGS_GE_MSG_STACK.ADD;
65 App_Exception.Raise_Exception;
66 Return;
67 END IF;
68 Close cur_old_ref_values;
69
70 -- Populate New Values.
71 new_references.data_group_id := x_data_group_id;
72 new_references.data_group := x_data_group;
73 new_references.description := x_description;
74 new_references.lvl := x_lvl;
75 new_references.lvl_description := x_lvl_description;
76 new_references.closed_ind := x_closed_ind;
77 new_references.org_id := x_org_id;
78 IF (p_action = 'UPDATE') THEN
79 new_references.creation_date := old_references.creation_date;
80 new_references.created_by := old_references.created_by;
81 ELSE
82 new_references.creation_date := x_creation_date;
83 new_references.created_by := x_created_by;
84 END IF;
85 new_references.last_update_date := x_last_update_date;
86 new_references.last_updated_by := x_last_updated_by;
87 new_references.last_update_login := x_last_update_login;
88
89 END Set_Column_Values;
90
91 PROCEDURE Check_Constraints (
92 Column_Name IN VARCHAR2 DEFAULT NULL,
93 Column_Value IN VARCHAR2 DEFAULT NULL ) AS
94
95 /******************************************************
96 Created By : nigupta
97 Date Created By : 11-MAY-2000
98 Purpose : To Check Constraints
99 Know limitations, enhancements or remarks : None
100 Change History
101 Who When What
102
103
104 (reverse chronological order - newest chanfe first)
105 ********************************************************/
106
107 BEGIN
108
109 IF column_name IS NULL THEN
110 NULL;
111 ELSIF UPPER(column_name) = 'CLOSED_IND' THEN
112 new_references.closed_ind := column_value;
113 NULL;
114 END IF;
115
116
117
118 -- The following code checks for check constraints on the Columns.
119 IF Upper(Column_Name) = 'CLOSED_IND' OR
120 Column_Name IS NULL THEN
121 IF NOT (new_references.closed_ind IN ('Y', 'N')) THEN
122 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
123 IGS_GE_MSG_STACK.ADD;
124 App_Exception.Raise_Exception;
125 END IF;
126 END IF;
127
128 IF column_name IS NULL THEN
129 NULL;
130 ELSIF UPPER(column_name) = 'LVL' THEN
131 new_references.lvl := column_value;
132 NULL;
133 END IF;
134
135 -- The following code checks for check constraints on the Columns.
136 IF Upper(Column_Name) = 'LVL' OR
137 Column_Name IS NULL THEN
138 IF NOT (new_references.lvl IN (1,2,3,4,5)) THEN
139 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
140 IGS_GE_MSG_STACK.ADD;
141 App_Exception.Raise_Exception;
142 END IF;
143 END IF;
144
145
146 END Check_Constraints;
147
148 PROCEDURE Check_Uniqueness AS
149 /******************************************************
150 Created By : nigupta
151 Date Created By : 11-MAY-2000
152 Purpose : To Check Constraints
153 Know limitations, enhancements or remarks : None
154 Change History
155 Who When What
156
157
158 (reverse chronological order - newest chanfe first)
159 ********************************************************/
160 Begin
161 IF Get_Uk_For_Validation (
162 new_references.data_group
163 ) THEN
164 Fnd_Message.Set_Name ('IGS', 'IGS_GE_MULTI_ORG_DUP_REC');
165 IGS_GE_MSG_STACK.ADD;
166 app_exception.raise_exception;
167 END IF;
168 END Check_Uniqueness ;
169
170 FUNCTION Get_PK_For_Validation (
171 x_data_group_id IN NUMBER
172 ) RETURN BOOLEAN AS
173
174 /******************************************************
175 Created By : nigupta
176 Date Created By : 11-MAY-2000
177 Purpose : To enforce Primary Key validation
178 Know limitations, enhancements or remarks : None
179 Change History
180 Who When What
181 skpandey 24-JAN-2006 Bug#3686681: Full table scan Issue. Removed Upper to optimize query.
182 (reverse chronological order - newest change first)
183 ********************************************************/
184
185 CURSOR cur_rowid IS
186 SELECT rowid
187 FROM igs_pe_data_groups_all
188 WHERE data_group_id = UPPER(X_data_group_id);
189
190 lv_rowid cur_rowid%RowType;
191
192 BEGIN
193
194 Open cur_rowid;
195 Fetch cur_rowid INTO lv_rowid;
196 IF (cur_rowid%FOUND) THEN
197 Close cur_rowid;
198 Return(TRUE);
199 ELSE
200 Close cur_rowid;
201 Return(FALSE);
202 END IF;
203 END Get_PK_For_Validation;
204
205 FUNCTION Get_UK_For_Validation (
206 x_data_group IN VARCHAR2
207 ) RETURN BOOLEAN AS
208 /******************************************************
209 Created By : nigupta
210 Date Created By : 11-MAY-2000
211 Purpose : To enforce Primary Key validation
212 Know limitations, enhancements or remarks : None
213 Change History
214 Who When What
215
216
217 (reverse chronological order - newest chanfe first)
218 ********************************************************/
219 CURSOR cur_rowid IS
220 SELECT rowid
221 FROM igs_pe_data_groups_all
222 WHERE data_group = x_data_group
223 and ((l_rowid is null) or (rowid <> l_rowid));
224
225 lv_rowid cur_rowid%RowType;
226
227 BEGIN
228
229 Open cur_rowid;
230 Fetch cur_rowid INTO lv_rowid;
231 IF (cur_rowid%FOUND) THEN
232 Close cur_rowid;
233 Return (TRUE);
234 ELSE
235 close cur_rowid;
236 return(false);
237 END IF;
238 END Get_UK_For_Validation ;
239
240 FUNCTION val_data_group(p_data_group_id IN NUMBER ,
241 p_message_name OUT NOCOPY VARCHAR2 )
242 RETURN BOOLEAN IS
243 v_closed_ind igs_pe_data_groups_all.closed_ind%TYPE;
244 CURSOR c_get_closed_ind ( cp_data_group igs_pe_data_groups_all.data_group_id%TYPE) IS
245 SELECT closed_ind
246 FROM igs_pe_data_groups_all
247 WHERE data_group_id = cp_data_group;
248
249 BEGIN
250 p_message_name := NULL;
251 OPEN c_get_closed_ind(p_data_group_id);
252 FETCH c_get_closed_ind INTO v_closed_ind;
253 IF (c_get_closed_ind%NOTFOUND) THEN
254 CLOSE c_get_closed_ind;
255 RETURN TRUE;
256 END IF;
257 CLOSE c_get_closed_ind;
258 IF (v_closed_ind = 'Y') THEN
259 p_message_name := 'IGS_PE_DATA_CLOSED';
260 RETURN FALSE;
261 END IF;
262 RETURN TRUE;
263 END val_data_group;
264
265 PROCEDURE Before_DML (
266 p_action IN VARCHAR2,
267 x_rowid IN VARCHAR2 DEFAULT NULL,
268 x_data_group_id IN NUMBER DEFAULT NULL,
269 x_data_group IN VARCHAR2 DEFAULT NULL,
270 x_description IN VARCHAR2 DEFAULT NULL,
271 x_lvl IN VARCHAR2 DEFAULT NULL,
272 x_lvl_description IN VARCHAR2 DEFAULT NULL,
273 x_closed_ind IN VARCHAR2 DEFAULT NULL,
274 x_creation_date IN DATE DEFAULT NULL,
275 x_created_by IN NUMBER DEFAULT NULL,
276 x_last_update_date IN DATE DEFAULT NULL,
277 x_last_updated_by IN NUMBER DEFAULT NULL,
278 x_last_update_login IN NUMBER DEFAULT NULL,
279 X_ORG_ID in NUMBER default NULL
280 ) AS
281
282 /******************************************************
283 Created By : nigupta
284 Date Created By : 11-MAY-2000
285 Purpose : To check Before DML
286 Know limitations, enhancements or remarks : None
287 Change History
288 Who When What
289
290
291 (reverse chronological order - newest change first)
292 asbala 18-JUL-03 2885709, made l_rowid := null at the end of before_dml
293 ********************************************************/
294
295 BEGIN
296
297 Set_Column_Values (
298 p_action,
299 x_rowid,
300 x_data_group_id,
301 x_data_group,
302 x_description,
303 x_lvl,
304 x_lvl_description,
305 x_closed_ind,
306 x_creation_date,
307 x_created_by,
308 x_last_update_date,
309 x_last_updated_by,
310 x_last_update_login ,
311 x_org_id
312 );
313
314 IF (p_action = 'INSERT') THEN
315 -- Call all the procedures related to Before Insert.
316 Null;
317 IF Get_Pk_For_Validation(
318 new_references.data_group_id) THEN
319 Fnd_Message.Set_name('IGS','IGS_GE_MULTI_ORG_DUP_REC');
320 IGS_GE_MSG_STACK.ADD;
321 App_Exception.Raise_Exception;
322 END IF;
323 Check_Constraints;
324 Check_Uniqueness;
325 ELSIF (p_action = 'UPDATE') THEN
326 -- Call all the procedures related to Before Update.
327 Null;
328 Check_Constraints;
329 Check_Uniqueness;
330 ELSIF (p_action = 'VALIDATE_INSERT') THEN
331 -- Call all the procedures related to Before Insert.
332 IF Get_PK_For_Validation (
333 new_references.data_group_id) THEN
334 Fnd_Message.Set_name('IGS','IGS_GE_MULTI_ORG_DUP_REC');
335 IGS_GE_MSG_STACK.ADD;
336 App_Exception.Raise_Exception;
337 END IF;
338 Check_Constraints;
339
340 ELSIF (p_action = 'VALIDATE_UPDATE') THEN
341 Check_Constraints;
342
343 END IF;
344 l_rowid:=null;
345 END Before_DML;
346
347 PROCEDURE After_DML (
348 p_action IN VARCHAR2,
349 x_rowid IN VARCHAR2
350 ) IS
351
352 /******************************************************
353 Created By : nigupta
354 Date Created By : 11-MAY-2000
355 Purpose : To check After DML
356 Know limitations, enhancements or remarks : None
357 Change History
358 Who When What
359 asbala 21-JUL-03 2885709 Made l_rowid:=null in the end
360
361 (reverse chronological order - newest change first)
362 ********************************************************/
363
364 BEGIN
365
366 l_rowid := x_rowid;
367
368 IF (p_action = 'INSERT') THEN
369 -- Call all the procedures related to After Insert.
370 Null;
371 ELSIF (p_action = 'UPDATE') THEN
372 -- Call all the procedures related to After Update.
373 Null;
374 END IF;
375
376 l_rowid:=null;
377
378 END After_DML;
379
380 procedure INSERT_ROW (
381 X_ROWID in out NOCOPY VARCHAR2,
382 x_DATA_GROUP_ID IN OUT NOCOPY NUMBER,
383 x_DATA_GROUP IN VARCHAR2,
384 x_DESCRIPTION IN VARCHAR2,
385 x_LVL IN VARCHAR2,
386 x_LVL_DESCRIPTION IN VARCHAR2,
387 x_CLOSED_IND IN VARCHAR2,
388 X_MODE in VARCHAR2 default 'R' ,
389 X_ORG_ID in NUMBER
390 ) AS
391
392 /******************************************************
393 Created By : nigupta
394 Date Created By : 11-MAY-2000
395 Purpose : To insert row
396 Know limitations, enhancements or remarks : None
397 Change History
398 Who When What
399
400
401 (reverse chronological order - newest chanfe first)
402 ********************************************************/
403
404 cursor C is select ROWID from igs_pe_data_groups_all
405 where DATA_GROUP_ID= X_DATA_GROUP_ID
406 ;
407 X_LAST_UPDATE_DATE DATE ;
408 X_LAST_UPDATED_BY NUMBER ;
409 X_LAST_UPDATE_LOGIN NUMBER ;
410 begin
411 X_LAST_UPDATE_DATE := SYSDATE;
412 if(X_MODE = 'I') then
413 X_LAST_UPDATED_BY := 1;
414 X_LAST_UPDATE_LOGIN := 0;
415 elsif (X_MODE = 'R') then
416 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
417 if X_LAST_UPDATED_BY is NULL then
418 X_LAST_UPDATED_BY := -1;
419 end if;
420 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
421 if X_LAST_UPDATE_LOGIN is NULL then
422 X_LAST_UPDATE_LOGIN := -1;
423 end if;
424 else
425 FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
426 IGS_GE_MSG_STACK.ADD;
427 app_exception.raise_exception;
428 end if;
429
430 Select IGS_PE_DATA_GROUPS_S.NEXTVAL into X_DATA_GROUP_ID From Dual;
431
432 Before_DML(
433 p_action=>'INSERT',
434 x_rowid=>X_ROWID,
435 x_data_group_id=>X_DATA_GROUP_ID,
436 x_data_group=>X_DATA_GROUP,
437 x_description=>X_DESCRIPTION,
438 x_lvl=>X_LVL,
439 x_lvl_description=>X_LVL_DESCRIPTION,
440 x_closed_ind=>X_CLOSED_IND,
441 x_creation_date=>X_LAST_UPDATE_DATE,
442 x_created_by=>X_LAST_UPDATED_BY,
446 x_org_id=>igs_ge_gen_003.get_org_id
443 x_last_update_date=>X_LAST_UPDATE_DATE,
444 x_last_updated_by=>X_LAST_UPDATED_BY,
445 x_last_update_login=>X_LAST_UPDATE_LOGIN,
447 );
448 insert into igs_pe_data_groups_all (
449 DATA_GROUP_ID
450 ,DATA_GROUP
451 ,DESCRIPTION
452 ,LVL
453 ,LVL_DESCRIPTION
454 ,CLOSED_IND
455 ,CREATION_DATE
456 ,CREATED_BY
457 ,LAST_UPDATE_DATE
458 ,LAST_UPDATED_BY
459 ,LAST_UPDATE_LOGIN,
460 ORG_ID
461 ) values (
462 NEW_REFERENCES.DATA_GROUP_ID
463 ,NEW_REFERENCES.DATA_GROUP
464 ,NEW_REFERENCES.DESCRIPTION
465 ,NEW_REFERENCES.LVL
466 ,NEW_REFERENCES.LVL_DESCRIPTION
467 ,NEW_REFERENCES.CLOSED_IND
468 ,X_LAST_UPDATE_DATE
469 ,X_LAST_UPDATED_BY
470 ,X_LAST_UPDATE_DATE
471 ,X_LAST_UPDATED_BY
472 ,X_LAST_UPDATE_LOGIN,
473 NEW_REFERENCES.ORG_ID
474 );
475 open c;
476 fetch c into X_ROWID;
477 if (c%notfound) then
478 close c;
479 raise no_data_found;
480 end if;
481 close c;
482 After_DML (
483 p_action => 'INSERT' ,
484 x_rowid => X_ROWID );
485 end INSERT_ROW;
486
487 procedure LOCK_ROW (
488 X_ROWID in VARCHAR2,
489 x_DATA_GROUP_ID IN NUMBER,
490 x_DATA_GROUP IN VARCHAR2,
491 x_DESCRIPTION IN VARCHAR2,
492 x_LVL IN VARCHAR2,
493 x_LVL_DESCRIPTION IN VARCHAR2,
494 x_CLOSED_IND IN VARCHAR2
495 )
496 AS
497
498 /******************************************************
499 Created By : nigupta
500 Date Created By : 11-MAY-2000
501 Purpose : To Lock Row
502 Know limitations, enhancements or remarks : None
503 Change History
504 Who When What
505
506
507 (reverse chronological order - newest change first)
508 ********************************************************/
509
510 cursor c1 is select
511 DATA_GROUP
512 , DESCRIPTION
513 , LVL
514 , LVL_DESCRIPTION
515 , CLOSED_IND
516 from igs_pe_data_groups_all
517 where ROWID = X_ROWID
518 for update nowait;
519 tlinfo c1%rowtype;
520 begin
521 open c1;
522 fetch c1 into tlinfo;
523 if (c1%notfound) then
524 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
525 IGS_GE_MSG_STACK.ADD;
526 close c1;
527 app_exception.raise_exception;
528 return;
529 end if;
530 close c1;
531 if ( ( tlinfo.DATA_GROUP = X_DATA_GROUP)
532 AND (tlinfo.DESCRIPTION = X_DESCRIPTION)
533 AND (tlinfo.LVL = X_LVL)
534 AND (tlinfo.LVL_DESCRIPTION = X_LVL_DESCRIPTION)
535 AND (tlinfo.CLOSED_IND = X_CLOSED_IND)
536 ) then
537 null;
538 else
539 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
540 IGS_GE_MSG_STACK.ADD;
541 app_exception.raise_exception;
542 end if;
543 return;
544 end LOCK_ROW;
545
546 Procedure UPDATE_ROW (
547 X_ROWID in VARCHAR2,
548 x_DATA_GROUP_ID IN NUMBER,
549 x_DATA_GROUP IN VARCHAR2,
550 x_DESCRIPTION IN VARCHAR2,
551 x_LVL IN VARCHAR2,
552 x_LVL_DESCRIPTION IN VARCHAR2,
553 x_CLOSED_IND IN VARCHAR2,
554 X_MODE in VARCHAR2 default 'R'
555 ) AS
556
557 /******************************************************
558 Created By : nigupta
559 Date Created By : 11-MAY-2000
560 Purpose : To Update Row
561 Know limitations, enhancements or remarks : None
562 Change History
563 Who When What
564
565
566 (reverse chronological order - newest change first)
567 ********************************************************/
568
569 X_LAST_UPDATE_DATE DATE ;
570 X_LAST_UPDATED_BY NUMBER ;
571 X_LAST_UPDATE_LOGIN NUMBER ;
572 begin
573 X_LAST_UPDATE_DATE := SYSDATE;
574 if(X_MODE = 'I') then
575 X_LAST_UPDATED_BY := 1;
576 X_LAST_UPDATE_LOGIN := 0;
577 elsif (X_MODE = 'R') then
578 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
579 if X_LAST_UPDATED_BY is NULL then
580 X_LAST_UPDATED_BY := -1;
581 end if;
582 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
583 if X_LAST_UPDATE_LOGIN is NULL then
584 X_LAST_UPDATE_LOGIN := -1;
585 end if;
586 else
587 FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
588 IGS_GE_MSG_STACK.ADD;
589 app_exception.raise_exception;
590 end if;
591 Before_DML(
592 p_action=>'UPDATE',
593 x_rowid=>X_ROWID,
594 x_data_group_id=>X_DATA_GROUP_ID,
595 x_data_group=>X_DATA_GROUP,
596 x_description=>X_DESCRIPTION,
597 x_lvl=>X_LVL,
598 x_lvl_description=>X_LVL_DESCRIPTION,
599 x_closed_ind=>X_CLOSED_IND,
600 x_creation_date=>X_LAST_UPDATE_DATE,
601 x_created_by=>X_LAST_UPDATED_BY,
602 x_last_update_date=>X_LAST_UPDATE_DATE,
603 x_last_updated_by=>X_LAST_UPDATED_BY,
604 x_last_update_login=>X_LAST_UPDATE_LOGIN
605 );
606 update igs_pe_data_groups_all set
607 DATA_GROUP = NEW_REFERENCES.DATA_GROUP,
608 DESCRIPTION = NEW_REFERENCES.DESCRIPTION,
609 LVL = NEW_REFERENCES.LVL,
610 LVL_DESCRIPTION = NEW_REFERENCES.LVL_DESCRIPTION,
611 CLOSED_IND = NEW_REFERENCES.CLOSED_IND,
612 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
613 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
614 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
615 where ROWID = X_ROWID;
616 if (sql%notfound) then
617 raise no_data_found;
618 end if;
619
620 After_DML (
621 p_action => 'UPDATE' ,
622 x_rowid => X_ROWID
623 );
624 end UPDATE_ROW;
625
626 procedure ADD_ROW (
627 X_ROWID in out NOCOPY VARCHAR2,
628 x_DATA_GROUP_ID IN OUT NOCOPY NUMBER,
629 x_DATA_GROUP IN VARCHAR2,
630 x_DESCRIPTION IN VARCHAR2,
631 x_LVL IN VARCHAR2,
632 x_LVL_DESCRIPTION IN VARCHAR2,
633 x_CLOSED_IND IN VARCHAR2,
634 X_MODE in VARCHAR2 default 'R' ,
635 X_ORG_ID in NUMBER
636 ) AS
637
638 /******************************************************
639 Created By : nigupta
640 Date Created By : 11-MAY-2000
641 Purpose : To Add Row
642 Know limitations, enhancements or remarks : None
643 Change History
644 Who When What
645
646
647 (reverse chronological order - newest change first)
648 ********************************************************/
649
650 cursor c1 is select ROWID from igs_pe_data_groups_all
651 where DATA_GROUP_ID= X_DATA_GROUP_ID
652 ;
653 begin
654 open c1;
655 fetch c1 into X_ROWID;
656 if (c1%notfound) then
657 close c1;
658 INSERT_ROW (
659 X_ROWID,
660 X_DATA_GROUP_ID,
661 X_DATA_GROUP,
662 X_DESCRIPTION,
663 X_LVL,
664 X_LVL_DESCRIPTION,
665 X_CLOSED_IND,
666 X_MODE,
667 x_org_id
668 );
669 return;
670 end if;
671 close c1;
672 UPDATE_ROW (
673 X_ROWID,
674 X_DATA_GROUP_ID,
675 X_DATA_GROUP,
676 X_DESCRIPTION,
677 X_LVL,
678 X_LVL_DESCRIPTION,
679 X_CLOSED_IND,
680 X_MODE
681 );
682 end ADD_ROW;
683
684 END igs_pe_data_groups_pkg;