DBA Data[Home] [Help]

PACKAGE BODY: APPS.EGO_AG_BULKLOAD_PVT

Source


1 PACKAGE BODY ego_ag_bulkload_pvt AS
2   /* $Header: EGOVAGBB.pls 120.16 2011/06/16 01:06:26 trudave noship $ */
3 
4   /*This Procedure is used to initialize certain column values in the interface table.
5     Used in the interface flow.
6   	x_return_status OUT NOCOPY parameter that returns the status*/
7   PROCEDURE Initialize
8        (x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
9   IS
10     lv_smt  NUMBER; --Statement counter
11 
12     lv_proc VARCHAR2(30) := 'Initialize';
13   BEGIN
14     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entered Initialize procedure');
15 
16     x_return_status := G_RET_STS_SUCCESS;
17 
18     lv_smt := 1;
19 
20     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
21 
22     /*Sets the EGO application ID*/
23     SELECT application_id
24     INTO   g_ego_application_id
25     FROM   fnd_application
26     WHERE  application_short_name = 'EGO';
27 
28     lv_smt := 2;
29 
30     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
31 
32     /*Sets the Transaction_id and upper case the transaction_type*/
33     UPDATE ego_attr_groups_interface
34     SET    transaction_id = mtl_system_items_interface_s.nextval,
35            transaction_type = Upper(transaction_type),
36            application_id = g_ego_application_id,
37            created_by = G_USER_ID,
38            creation_date = SYSDATE,
39            last_updated_by = G_USER_ID,
40            last_update_date = SYSDATE,
41            last_update_login = G_LOGIN_ID,
42            request_id = G_REQUEST_ID,
43            program_application_id = G_PROG_APPL_ID,
44            program_id = G_PROGRAM_ID,
45            program_update_date = SYSDATE
46     WHERE  transaction_id IS NULL
47     	   AND process_status = G_PROCESS_RECORD
48            AND ((G_SET_PROCESS_ID IS NULL)
49                  OR (set_process_id = G_SET_PROCESS_ID));
50 
51     SELECT COUNT(1) INTO G_AG_COUNT
52     FROM  ego_attr_groups_interface
53     WHERE process_status = G_PROCESS_RECORD
54            AND ((G_SET_PROCESS_ID IS NULL)
55                  OR (set_process_id = G_SET_PROCESS_ID));
56 
57     lv_smt := 3;
58 
59     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 3');
60 
61     UPDATE ego_attr_groups_dl_interface
62     SET    transaction_id = mtl_system_items_interface_s.nextval,
63            transaction_type = Upper(transaction_type),
64            application_id = g_ego_application_id,
65            created_by = G_USER_ID,
66            creation_date = SYSDATE,
67            last_updated_by = G_USER_ID,
68            last_update_date = SYSDATE,
69            last_update_login = G_LOGIN_ID,
70            request_id = G_REQUEST_ID,
71            program_application_id = G_PROG_APPL_ID,
72            program_id = G_PROGRAM_ID,
73            program_update_date = SYSDATE
74     WHERE  transaction_id IS NULL
75     	   AND process_status = G_PROCESS_RECORD
76            AND ((G_SET_PROCESS_ID IS NULL)
77                  OR (set_process_id = G_SET_PROCESS_ID));
78 
79 	SELECT COUNT(1) INTO G_DL_COUNT
80     FROM  ego_attr_groups_dl_interface
81     WHERE process_status = G_PROCESS_RECORD
82            AND ((G_SET_PROCESS_ID IS NULL)
83                  OR (set_process_id = G_SET_PROCESS_ID));
84 
85     lv_smt := 4;
86 
87     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 4');
88 
89     UPDATE ego_attr_group_cols_intf
90     SET    transaction_id = mtl_system_items_interface_s.nextval,
91            transaction_type = Upper(transaction_type),
92            application_id = g_ego_application_id,
93            created_by = G_USER_ID,
94            creation_date = SYSDATE,
95            last_updated_by = G_USER_ID,
96            last_update_date = SYSDATE,
97            last_update_login = G_LOGIN_ID,
98            request_id = G_REQUEST_ID,
99            program_application_id = G_PROG_APPL_ID,
100            program_id = G_PROGRAM_ID,
101            program_update_date = SYSDATE
102     WHERE  transaction_id IS NULL
103     	   AND process_status = G_PROCESS_RECORD
104            AND ((G_SET_PROCESS_ID IS NULL)
105                  OR (set_process_id = G_SET_PROCESS_ID));
106 
107 	SELECT COUNT(1) INTO G_ATTR_COUNT
108     FROM  ego_attr_group_cols_intf
109     WHERE process_status = G_PROCESS_RECORD
110            AND ((G_SET_PROCESS_ID IS NULL)
111                  OR (set_process_id = G_SET_PROCESS_ID));
112 
113     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit Initialize procedure');
114   EXCEPTION
115     WHEN OTHERS THEN
116       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Initialize - Exception when others'||SQLERRM);
117 
118       x_return_status := G_RET_STS_UNEXP_ERROR;
119 
120       x_return_msg := 'ego_ag_bulkload_pvt.initialize - '||SQLERRM;
121 
122       RETURN;
123   END initialize;
124 
125   /*This procedure is used to validate the transaction type for all the interface tables.
126   	Used in the interface flow.
127   	x_return_status OUT NOCOPY parameter that returns the status*/
128   PROCEDURE Validate_transaction_type
129        (x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
130   IS
131     lv_smt  NUMBER; --Statement counter
132 
133     lv_proc VARCHAR2(30) := 'Validate_transaction_type';
134   BEGIN
135     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entered Validate_transaction_type');
136 
137     x_return_status := G_RET_STS_SUCCESS;
138 
139     /* Update the interface records with process_status 3 and insert into
140 MTL_INTERFACE_ERRORS if TRANSACTION_TYPE passed is incorrect*/
141     G_MESSAGE_NAME := 'EGO_TRANS_TYPE_INVALID';
142 
143     fnd_message.Set_name('EGO','EGO_TRANS_TYPE_INVALID');
144 
145     G_MESSAGE_TEXT := fnd_message.get;
146 
147     lv_smt := 1;
148 
149     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
150 
151     INSERT INTO mtl_interface_errors
152                (transaction_id,
153                 unique_id,
154                 organization_id,
155                 column_name,
156                 table_name,
157                 bo_identifier,
158                 entity_identifier,
159                 message_name,
160                 error_message,
161                 last_update_date,
162                 last_updated_by,
163                 creation_date,
164                 created_by,
165                 last_update_login,
166                 request_id,
167                 program_application_id,
168                 program_id,
169                 program_update_date)
170     SELECT transaction_id,
171            mtl_system_items_interface_s.nextval,
172            NULL,
173            NULL,
174            G_ENTITY_AG_TAB,
175            G_BO_IDENTIFIER_AG,
176            G_ENTITY_AG,
177            G_MESSAGE_NAME,
178            G_MESSAGE_TEXT,
179            Nvl(last_update_date,SYSDATE),
180            Nvl(last_updated_by,G_USER_ID),
181            Nvl(creation_date,SYSDATE),
182            Nvl(created_by,G_USER_ID),
183            Nvl(last_update_login,G_USER_ID),
184            G_REQUEST_ID,
185            Nvl(program_application_id,G_PROG_APPL_ID),
186            Nvl(program_id,G_PROGRAM_ID),
187            Nvl(program_update_date,SYSDATE)
188     FROM   ego_attr_groups_interface
189     WHERE  (transaction_type IS NULL
190     	   OR transaction_type NOT IN (G_OPR_CREATE,G_OPR_UPDATE,G_OPR_DELETE,G_OPR_SYNC))
191            AND transaction_id IS NOT NULL
192            AND process_status = G_PROCESS_RECORD
193            AND ((G_SET_PROCESS_ID IS NULL)
194                  OR (set_process_id = G_SET_PROCESS_ID));
195 
196     UPDATE ego_attr_groups_interface
197     SET    process_status = G_ERROR_RECORD,
198            last_updated_by = G_USER_ID,
199            last_update_date = SYSDATE,
200            last_update_login = G_LOGIN_ID
201     WHERE  (transaction_type IS NULL
202     	   OR transaction_type NOT IN (G_OPR_CREATE,G_OPR_UPDATE,G_OPR_DELETE,G_OPR_SYNC))
203            AND transaction_id IS NOT NULL
204            AND process_status = G_PROCESS_RECORD
205            AND ((G_SET_PROCESS_ID IS NULL)
206                  OR (set_process_id = G_SET_PROCESS_ID));
207 
208     lv_smt := 2;
209 
210     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
211 
212     INSERT INTO mtl_interface_errors
213                (transaction_id,
214                 unique_id,
215                 organization_id,
216                 column_name,
217                 table_name,
218                 bo_identifier,
219                 entity_identifier,
220                 message_name,
221                 error_message,
222                 last_update_date,
223                 last_updated_by,
224                 creation_date,
225                 created_by,
226                 last_update_login,
227                 request_id,
228                 program_application_id,
229                 program_id,
230                 program_update_date)
231     SELECT transaction_id,
232            mtl_system_items_interface_s.nextval,
233            NULL,
234            NULL,
235            G_ENTITY_DL_TAB,
236            G_BO_IDENTIFIER_AG,
237            G_ENTITY_DL,
238            G_MESSAGE_NAME,
239            G_MESSAGE_TEXT,
240            Nvl(last_update_date,SYSDATE),
241            Nvl(last_updated_by,G_USER_ID),
242            Nvl(creation_date,SYSDATE),
243            Nvl(created_by,G_USER_ID),
244            Nvl(last_update_login,G_USER_ID),
245            G_REQUEST_ID,
246            Nvl(program_application_id,G_PROG_APPL_ID),
247            Nvl(program_id,G_PROGRAM_ID),
248            Nvl(program_update_date,SYSDATE)
249     FROM   ego_attr_groups_dl_interface
250     WHERE  (transaction_type IS NULL
251     	   OR transaction_type NOT IN (G_OPR_CREATE,G_OPR_UPDATE,G_OPR_DELETE,G_OPR_SYNC))
252            AND transaction_id IS NOT NULL
253            AND process_status = G_PROCESS_RECORD
254            AND ((G_SET_PROCESS_ID IS NULL)
255                  OR (set_process_id = G_SET_PROCESS_ID));
256 
257     UPDATE ego_attr_groups_dl_interface
258     SET    process_status = G_ERROR_RECORD,
259            last_updated_by = G_USER_ID,
260            last_update_date = SYSDATE,
261            last_update_login = G_LOGIN_ID
262     WHERE  (transaction_type IS NULL
263     	   OR transaction_type NOT IN (G_OPR_CREATE,G_OPR_UPDATE,G_OPR_DELETE,G_OPR_SYNC))
264            AND transaction_id IS NOT NULL
265            AND process_status = G_PROCESS_RECORD
266            AND ((G_SET_PROCESS_ID IS NULL)
267                  OR (set_process_id = G_SET_PROCESS_ID));
268 
269     lv_smt := 3;
270 
271     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 3');
272 
273     INSERT INTO mtl_interface_errors
274                (transaction_id,
275                 unique_id,
276                 organization_id,
277                 column_name,
278                 table_name,
279                 bo_identifier,
280                 entity_identifier,
281                 message_name,
282                 error_message,
283                 last_update_date,
284                 last_updated_by,
285                 creation_date,
286                 created_by,
287                 last_update_login,
288                 request_id,
289                 program_application_id,
290                 program_id,
291                 program_update_date)
292     SELECT transaction_id,
293            mtl_system_items_interface_s.nextval,
294            NULL,
295            NULL,
296            G_ENTITY_ATTR_TAB,
297            G_BO_IDENTIFIER_AG,
298            G_ENTITY_ATTR,
299            G_MESSAGE_NAME,
300            G_MESSAGE_TEXT,
301            Nvl(last_update_date,SYSDATE),
302            Nvl(last_updated_by,G_USER_ID),
303            Nvl(creation_date,SYSDATE),
304            Nvl(created_by,G_USER_ID),
305            Nvl(last_update_login,G_USER_ID),
306            G_REQUEST_ID,
307            Nvl(program_application_id,G_PROG_APPL_ID),
308            Nvl(program_id,G_PROGRAM_ID),
309            Nvl(program_update_date,SYSDATE)
310     FROM   ego_attr_group_cols_intf
311     WHERE  (transaction_type IS NULL
312     	   OR transaction_type NOT IN (G_OPR_CREATE,G_OPR_UPDATE,G_OPR_DELETE,G_OPR_SYNC))
313            AND transaction_id IS NOT NULL
314            AND process_status = G_PROCESS_RECORD
315            AND ((G_SET_PROCESS_ID IS NULL)
316                  OR (set_process_id = G_SET_PROCESS_ID));
317 
318     UPDATE ego_attr_group_cols_intf
319     SET    process_status = G_ERROR_RECORD,
320            last_updated_by = G_USER_ID,
321            last_update_date = SYSDATE,
322            last_update_login = G_LOGIN_ID
323     WHERE  (transaction_type IS NULL
324     	   OR transaction_type NOT IN (G_OPR_CREATE,G_OPR_UPDATE,G_OPR_DELETE,G_OPR_SYNC))
325            AND transaction_id IS NOT NULL
326            AND process_status = G_PROCESS_RECORD
327            AND ((G_SET_PROCESS_ID IS NULL)
328                  OR (set_process_id = G_SET_PROCESS_ID));
329 
330     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit Validatetransactiontype');
331   EXCEPTION
332     WHEN OTHERS THEN
333       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Validate_transaction_type Exception when others'||SQLERRM);
334 
335       x_return_status := G_RET_STS_UNEXP_ERROR;
336 
337       x_return_msg := 'ego_ag_bulkload_pvt.Validate_transaction_type - '||SQLERRM;
338 
339       RETURN;
340   END Validate_transaction_type;
341 
342   /*This procedure is used to bulk validate attribute groups.
343   	Used in the interface flow.
344   	x_return_status OUT NOCOPY parameter that returns the status*/
345   PROCEDURE bulk_validate_attr_groups
346        (x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
347   IS
348     lv_smt  NUMBER; --Statement counter
349 
350     lv_proc VARCHAR2(30) := 'bulk_validate_attr_groups';
351   BEGIN
352     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entered bulk_validate_attr_groups');
353 
354     x_return_status := G_RET_STS_SUCCESS;
355 
356     Value_to_id_ag(x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
357 
358     Value_to_id_dl(x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
359 
360     construct_attr_groups(x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
361 
362     construct_ag_data_level(x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
363 
364     lv_smt := 1;
365 
366     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
367 
368     /* Update the interface records with process_status 3 and insert into
369 MTL_INTERFACE_ERRORS if internal name or the display name for AG is not
370 provided in the CREATE flow*/
371     G_MESSAGE_NAME := 'EGO_AG_MANDATORY';
372 
373     fnd_message.Set_name('EGO','EGO_AG_MANDATORY');
374 
375     G_MESSAGE_TEXT := fnd_message.get;
376 
377     INSERT INTO mtl_interface_errors
378                (transaction_id,
379                 unique_id,
380                 organization_id,
381                 column_name,
382                 table_name,
383                 bo_identifier,
384                 entity_identifier,
385                 message_name,
386                 error_message,
387                 last_update_date,
388                 last_updated_by,
389                 creation_date,
390                 created_by,
391                 last_update_login,
392                 request_id,
393                 program_application_id,
394                 program_id,
395                 program_update_date)
396     SELECT eagi.transaction_id,
397            mtl_system_items_interface_s.nextval,
398            NULL,
399            NULL,
400            G_ENTITY_AG_TAB,
401            G_BO_IDENTIFIER_AG,
402            G_ENTITY_AG,
403            G_MESSAGE_NAME,
404            G_MESSAGE_TEXT,
405            Nvl(last_update_date,SYSDATE),
406            Nvl(last_updated_by,G_USER_ID),
407            Nvl(creation_date,SYSDATE),
408            Nvl(created_by,G_USER_ID),
409            Nvl(last_update_login,G_USER_ID),
410            G_REQUEST_ID,
411            Nvl(program_application_id,G_PROG_APPL_ID),
412            Nvl(program_id,G_PROGRAM_ID),
413            Nvl(program_update_date,SYSDATE)
414     FROM   ego_attr_groups_interface eagi
415     WHERE  (attr_group_name IS NULL
416              OR attr_group_disp_name IS NULL)
417            AND transaction_id IS NOT NULL
418            AND transaction_type = G_OPR_CREATE
419            AND process_status = G_PROCESS_RECORD
420            AND ((G_SET_PROCESS_ID IS NULL)
421                  OR (set_process_id = G_SET_PROCESS_ID));
422 
423     UPDATE ego_attr_groups_interface
424     SET    process_status = G_ERROR_RECORD,
425            last_updated_by = G_USER_ID,
426            last_update_date = SYSDATE,
427            last_update_login = G_LOGIN_ID
428     WHERE  (attr_group_name IS NULL
429              OR attr_group_disp_name IS NULL)
430            AND transaction_id IS NOT NULL
431            AND transaction_type = G_OPR_CREATE
432            AND process_status = G_PROCESS_RECORD
433            AND ((G_SET_PROCESS_ID IS NULL)
434                  OR (set_process_id = G_SET_PROCESS_ID));
435 
436     lv_smt := 9;
437 
438     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 9');
439 
440     /* Update the interface records with process_status 3 and insert into
441 MTL_INTERFACE_ERRORS if Attribute Group Type in the AG interface table is other than EGO_ITEMMGMT_GROUP*/
442     G_MESSAGE_NAME := 'EGO_AG_TYPE_INVALID';
443 
444     fnd_message.Set_name('EGO','EGO_AG_TYPE_INVALID');
445 
446     G_MESSAGE_TEXT := fnd_message.get;
447 
448     INSERT INTO mtl_interface_errors
449                (transaction_id,
450                 unique_id,
451                 organization_id,
452                 column_name,
453                 table_name,
454                 bo_identifier,
455                 entity_identifier,
456                 message_name,
457                 error_message,
458                 last_update_date,
459                 last_updated_by,
460                 creation_date,
461                 created_by,
462                 last_update_login,
463                 request_id,
464                 program_application_id,
465                 program_id,
466                 program_update_date)
467     SELECT eagi.transaction_id,
468            mtl_system_items_interface_s.nextval,
469            NULL,
470            NULL,
471            G_ENTITY_AG_TAB,
472            G_BO_IDENTIFIER_AG,
473            G_ENTITY_ATTR,
474            G_MESSAGE_NAME,
475            G_MESSAGE_TEXT,
476            Nvl(last_update_date,SYSDATE),
477            Nvl(last_updated_by,G_USER_ID),
478            Nvl(creation_date,SYSDATE),
479            Nvl(created_by,G_USER_ID),
480            Nvl(last_update_login,G_USER_ID),
481            G_REQUEST_ID,
482            Nvl(program_application_id,G_PROG_APPL_ID),
483            Nvl(program_id,G_PROGRAM_ID),
484            Nvl(program_update_date,SYSDATE)
485     FROM   ego_attr_groups_interface eagi
486     WHERE  attr_group_type <> G_EGO_ITEMMGMT_GROUP
487            AND transaction_id IS NOT NULL
488            AND process_status = G_PROCESS_RECORD
489            AND ((G_SET_PROCESS_ID IS NULL)
490                  OR (set_process_id = G_SET_PROCESS_ID));
491 
492     UPDATE ego_attr_groups_interface
493     SET    process_status = G_ERROR_RECORD,
494            last_updated_by = G_USER_ID,
495            last_update_date = SYSDATE,
496            last_update_login = G_LOGIN_ID
497     WHERE  attr_group_type <> G_EGO_ITEMMGMT_GROUP
498            AND transaction_id IS NOT NULL
499            AND process_status = G_PROCESS_RECORD
500            AND ((G_SET_PROCESS_ID IS NULL)
501                  OR (set_process_id = G_SET_PROCESS_ID));
502 
503     lv_smt := 10;
504 
505     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 10');
506 
507     /* Update the interface records with process_status 3 and insert into
508 MTL_INTERFACE_ERRORS if Attribute Group Type in the DL interface is other than EGO_ITEMMGMT_GROUP*/
509     G_MESSAGE_NAME := 'EGO_AG_TYPE_INVALID';
510 
511     fnd_message.Set_name('EGO','EGO_AG_TYPE_INVALID');
512 
513     G_MESSAGE_TEXT := fnd_message.get;
514 
515     INSERT INTO mtl_interface_errors
516                (transaction_id,
517                 unique_id,
518                 organization_id,
519                 column_name,
520                 table_name,
521                 bo_identifier,
522                 entity_identifier,
523                 message_name,
524                 error_message,
525                 last_update_date,
526                 last_updated_by,
527                 creation_date,
528                 created_by,
529                 last_update_login,
530                 request_id,
531                 program_application_id,
532                 program_id,
533                 program_update_date)
534     SELECT eagi.transaction_id,
535            mtl_system_items_interface_s.nextval,
536            NULL,
537            NULL,
538            G_ENTITY_DL_TAB,
539            G_BO_IDENTIFIER_AG,
540            G_ENTITY_DL,
541            G_MESSAGE_NAME,
542            G_MESSAGE_TEXT,
543            Nvl(last_update_date,SYSDATE),
544            Nvl(last_updated_by,G_USER_ID),
545            Nvl(creation_date,SYSDATE),
546            Nvl(created_by,G_USER_ID),
547            Nvl(last_update_login,G_USER_ID),
548            G_REQUEST_ID,
549            Nvl(program_application_id,G_PROG_APPL_ID),
550            Nvl(program_id,G_PROGRAM_ID),
551            Nvl(program_update_date,SYSDATE)
552     FROM   ego_attr_groups_dl_interface eagi
553     WHERE  attr_group_type <> G_EGO_ITEMMGMT_GROUP
554            AND transaction_id IS NOT NULL
555            AND process_status = G_PROCESS_RECORD
556            AND ((G_SET_PROCESS_ID IS NULL)
557                  OR (set_process_id = G_SET_PROCESS_ID));
558 
559     UPDATE ego_attr_groups_dl_interface
560     SET    process_status = G_ERROR_RECORD,
561            last_updated_by = G_USER_ID,
562            last_update_date = SYSDATE,
563            last_update_login = G_LOGIN_ID
564     WHERE  attr_group_type <> G_EGO_ITEMMGMT_GROUP
565            AND transaction_id IS NOT NULL
566            AND process_status = G_PROCESS_RECORD
567            AND ((G_SET_PROCESS_ID IS NULL)
568                  OR (set_process_id = G_SET_PROCESS_ID));
569 
570     lv_smt := 2; --Added for 9625957
571 
572     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
573 
574     /* Update the interface records with process_status 3 and insert into
575 MTL_INTERFACE_ERRORS if Attribute Group Type in the DL interface is other than EGO_ITEMMGMT_GROUP*/
576     G_MESSAGE_NAME := 'EGO_DL_MANDATORY';
577 
578     fnd_message.Set_name('EGO','EGO_DL_MANDATORY');
579 
580     G_MESSAGE_TEXT := fnd_message.get;
581 
582     INSERT INTO mtl_interface_errors
583                (transaction_id,
584                 unique_id,
585                 organization_id,
586                 column_name,
587                 table_name,
588                 bo_identifier,
589                 entity_identifier,
590                 message_name,
591                 error_message,
592                 last_update_date,
593                 last_updated_by,
594                 creation_date,
595                 created_by,
596                 last_update_login,
597                 request_id,
598                 program_application_id,
599                 program_id,
600                 program_update_date)
601     SELECT eagi.transaction_id,
602            mtl_system_items_interface_s.nextval,
603            NULL,
604            NULL,
605            G_ENTITY_DL_TAB,
606            G_BO_IDENTIFIER_AG,
607            G_ENTITY_DL,
608            G_MESSAGE_NAME,
609            G_MESSAGE_TEXT,
610            Nvl(last_update_date,SYSDATE),
611            Nvl(last_updated_by,G_USER_ID),
612            Nvl(creation_date,SYSDATE),
613            Nvl(created_by,G_USER_ID),
614            Nvl(last_update_login,G_USER_ID),
615            G_REQUEST_ID,
616            Nvl(program_application_id,G_PROG_APPL_ID),
617            Nvl(program_id,G_PROGRAM_ID),
618            Nvl(program_update_date,SYSDATE)
619     FROM   ego_attr_groups_dl_interface eagi
620     WHERE  (attr_group_type IS NULL
621     		OR attr_group_name IS NULL
622     		OR data_level_name IS NULL)
623     	   AND transaction_id IS NOT NULL
624            AND process_status = G_PROCESS_RECORD
625            AND ((G_SET_PROCESS_ID IS NULL)
626                  OR (set_process_id = G_SET_PROCESS_ID));
627 
628     UPDATE ego_attr_groups_dl_interface
629     SET    process_status = G_ERROR_RECORD,
630            last_updated_by = G_USER_ID,
631            last_update_date = SYSDATE,
632            last_update_login = G_LOGIN_ID
633     WHERE  (attr_group_type IS NULL
634     		OR attr_group_name IS NULL
635     		OR data_level_name IS NULL)
636     	   AND transaction_id IS NOT NULL
637            AND process_status = G_PROCESS_RECORD
638            AND ((G_SET_PROCESS_ID IS NULL)
639                  OR (set_process_id = G_SET_PROCESS_ID));
640 
641 
642     lv_smt := 2.1;
643 
644     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2.1');
645 
646     /* Update the interface records with process_status 3 and insert into
647 MTL_INTERFACE_ERRORS if internal name is not existing in the UPDATE flow.
648 Updates the AG interface table*/
649     G_MESSAGE_NAME := 'EGO_AG_NOT_EXIST';
650 
651     fnd_message.Set_name('EGO','EGO_AG_NOT_EXIST');
652 
653     G_MESSAGE_TEXT := fnd_message.get;
654 
655     INSERT INTO mtl_interface_errors
656                (transaction_id,
657                 unique_id,
658                 organization_id,
659                 column_name,
660                 table_name,
661                 bo_identifier,
662                 entity_identifier,
663                 message_name,
664                 error_message,
665                 last_update_date,
666                 last_updated_by,
667                 creation_date,
668                 created_by,
669                 last_update_login,
670                 request_id,
671                 program_application_id,
672                 program_id,
673                 program_update_date)
674     SELECT eagi.transaction_id,
675            mtl_system_items_interface_s.nextval,
676            NULL,
677            NULL,
678            G_ENTITY_AG_TAB,
679            G_BO_IDENTIFIER_AG,
680            G_ENTITY_AG,
681            G_MESSAGE_NAME,
682            G_MESSAGE_TEXT,
683            Nvl(last_update_date,SYSDATE),
684            Nvl(last_updated_by,G_USER_ID),
685            Nvl(creation_date,SYSDATE),
686            Nvl(created_by,G_USER_ID),
687            Nvl(last_update_login,G_USER_ID),
688            G_REQUEST_ID,
689            Nvl(program_application_id,G_PROG_APPL_ID),
690            Nvl(program_id,G_PROGRAM_ID),
691            Nvl(program_update_date,SYSDATE)
692     FROM   ego_attr_groups_interface eagi
693     WHERE  (attr_group_id IS NULL
694              OR attr_group_name IS NULL)
695            AND transaction_id IS NOT NULL
696            AND transaction_type IN (G_OPR_UPDATE,G_OPR_DELETE)
697            AND process_status = G_PROCESS_RECORD
698            AND ((G_SET_PROCESS_ID IS NULL)
699                  OR (set_process_id = G_SET_PROCESS_ID));
700 
701     UPDATE ego_attr_groups_interface
702     SET    process_status = G_ERROR_RECORD,
703            last_updated_by = G_USER_ID,
704            last_update_date = SYSDATE,
705            last_update_login = G_LOGIN_ID
706     WHERE  (attr_group_id IS NULL
707              OR attr_group_name IS NULL)
708            AND transaction_id IS NOT NULL
709            AND transaction_type IN (G_OPR_UPDATE,G_OPR_DELETE)
710            AND process_status = G_PROCESS_RECORD
711            AND ((G_SET_PROCESS_ID IS NULL)
712                  OR (set_process_id = G_SET_PROCESS_ID));
713 
714     lv_smt := 3;
715 
716     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 3');
717 
718     /* Update the interface records with process_status 3 and insert into
719 MTL_INTERFACE_ERRORS if internal name is not existing. Updates the DL
720 interface table*/
721     G_MESSAGE_NAME := 'EGO_AG_NOT_EXIST';
722 
723     fnd_message.Set_name('EGO','EGO_AG_NOT_EXIST');
724 
725     G_MESSAGE_TEXT := fnd_message.get;
726 
727     INSERT INTO mtl_interface_errors
728                (transaction_id,
729                 unique_id,
730                 organization_id,
731                 column_name,
732                 table_name,
733                 bo_identifier,
734                 entity_identifier,
735                 message_name,
736                 error_message,
737                 last_update_date,
738                 last_updated_by,
739                 creation_date,
740                 created_by,
741                 last_update_login,
742                 request_id,
743                 program_application_id,
744                 program_id,
745                 program_update_date)
746     SELECT eagdi.transaction_id,
747            mtl_system_items_interface_s.nextval,
748            NULL,
749            NULL,
750            G_ENTITY_DL_TAB,
751            G_BO_IDENTIFIER_AG,
752            G_ENTITY_DL,
753            G_MESSAGE_NAME,
754            G_MESSAGE_TEXT,
755            Nvl(last_update_date,SYSDATE),
756            Nvl(last_updated_by,G_USER_ID),
757            Nvl(creation_date,SYSDATE),
758            Nvl(created_by,G_USER_ID),
759            Nvl(last_update_login,G_USER_ID),
760            G_REQUEST_ID,
761            Nvl(program_application_id,G_PROG_APPL_ID),
762            Nvl(program_id,G_PROGRAM_ID),
763            Nvl(program_update_date,SYSDATE)
764     FROM   ego_attr_groups_dl_interface eagdi
765     WHERE  (eagdi.attr_group_id IS NULL
766              OR eagdi.attr_group_name IS NULL)
767            AND eagdi.transaction_id IS NOT NULL
768            AND NOT EXISTS (SELECT 1
769                            FROM   ego_attr_groups_interface eagi
770                            WHERE  eagi.attr_group_name = eagdi.attr_group_name
771                                   AND eagi.transaction_type = G_OPR_CREATE
772                                   AND eagi.process_status = G_PROCESS_RECORD)
773            AND eagdi.process_status = G_PROCESS_RECORD
774            AND ((G_SET_PROCESS_ID IS NULL)
775                  OR (set_process_id = G_SET_PROCESS_ID));
776 
777     UPDATE ego_attr_groups_dl_interface eagdi
778     SET    eagdi.process_status = G_ERROR_RECORD,
779            last_updated_by = G_USER_ID,
780            last_update_date = SYSDATE,
781            last_update_login = G_LOGIN_ID
782     WHERE  (eagdi.attr_group_id IS NULL
783              OR eagdi.attr_group_name IS NULL)
784            AND eagdi.transaction_id IS NOT NULL
785            AND NOT EXISTS (SELECT 1
786                            FROM   ego_attr_groups_interface eagi
787                            WHERE  eagi.attr_group_name = eagdi.attr_group_name
788                                   AND eagi.transaction_type = G_OPR_CREATE
789                                   AND eagi.process_status = G_PROCESS_RECORD)
790            AND eagdi.process_status = G_PROCESS_RECORD
791            AND ((G_SET_PROCESS_ID IS NULL)
792                  OR (set_process_id = G_SET_PROCESS_ID));
793 
794     lv_smt := 4;
795 
796     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 4');
797 
798     /* Update the interface records with process_status 3 and insert into
799 MTL_INTERFACE_ERRORS if for the CREATE flow if there already exists an AG with
800 the same internal attribute group name*/
801 
802     G_MESSAGE_NAME := 'EGO_EF_ATTR_GRP_EXIST';
803 
804     fnd_message.Set_name('EGO','EGO_EF_ATTR_GRP_EXIST');
805 
806     G_MESSAGE_TEXT := fnd_message.get;
807 
808     INSERT INTO mtl_interface_errors
809                (transaction_id,
810                 unique_id,
811                 organization_id,
812                 column_name,
813                 table_name,
814                 bo_identifier,
815                 entity_identifier,
816                 message_name,
817                 error_message,
818                 last_update_date,
819                 last_updated_by,
820                 creation_date,
821                 created_by,
822                 last_update_login,
823                 request_id,
824                 program_application_id,
825                 program_id,
826                 program_update_date)
827     SELECT eagi.transaction_id,
828            mtl_system_items_interface_s.nextval,
829            NULL,
830            NULL,
831            G_ENTITY_AG_TAB,
832            G_BO_IDENTIFIER_AG,
833            G_ENTITY_AG,
834            G_MESSAGE_NAME,
835            G_MESSAGE_TEXT,
836            Nvl(last_update_date,SYSDATE),
837            Nvl(last_updated_by,G_USER_ID),
838            Nvl(creation_date,SYSDATE),
839            Nvl(created_by,G_USER_ID),
840            Nvl(last_update_login,G_USER_ID),
841            G_REQUEST_ID,
842            Nvl(program_application_id,G_PROG_APPL_ID),
843            Nvl(program_id,G_PROGRAM_ID),
844            Nvl(program_update_date,SYSDATE)
845     FROM   ego_attr_groups_interface eagi
846     WHERE  EXISTS (SELECT 1
847                    FROM   EGO_FND_DSC_FLX_CTX_EXT efdfce
848                    WHERE  efdfce.DESCRIPTIVE_FLEX_CONTEXT_CODE = eagi.attr_group_name
849                    AND efdfce.DESCRIPTIVE_FLEXFIELD_NAME = G_EGO_ITEMMGMT_GROUP
850                    AND efdfce.APPLICATION_ID = G_EGO_APPLICATION_ID)
851            AND eagi.transaction_id IS NOT NULL
852            AND eagi.transaction_type = G_OPR_CREATE
853            AND eagi.process_status = G_PROCESS_RECORD
854            AND ((G_SET_PROCESS_ID IS NULL)
855                  OR (set_process_id = G_SET_PROCESS_ID));
856 
857     UPDATE ego_attr_groups_interface eagi
858     SET    eagi.process_status = G_ERROR_RECORD,
859            last_updated_by = G_USER_ID,
860            last_update_date = SYSDATE,
861            last_update_login = G_LOGIN_ID
862     WHERE  EXISTS (SELECT 1
863                    FROM   EGO_FND_DSC_FLX_CTX_EXT efdfce
864                    WHERE  efdfce.DESCRIPTIVE_FLEX_CONTEXT_CODE = eagi.attr_group_name
865                    AND efdfce.DESCRIPTIVE_FLEXFIELD_NAME = G_EGO_ITEMMGMT_GROUP
866                    AND efdfce.APPLICATION_ID = G_EGO_APPLICATION_ID)
867            AND eagi.transaction_id IS NOT NULL
868            AND eagi.transaction_type = G_OPR_CREATE
869            AND eagi.process_status = G_PROCESS_RECORD
870            AND ((G_SET_PROCESS_ID IS NULL)
871                  OR (set_process_id = G_SET_PROCESS_ID));
872 
873 
874     lv_smt := 4.1;
875 
876     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 4.1');
877 
878     /* Update the interface records with process_status 3 and insert into
879 MTL_INTERFACE_ERRORS if for the CREATE flow if there doesn't exist any DL
880 in the interface table*/
881     G_MESSAGE_NAME := 'EGO_EF_DL_REQD_AG';
882 
883     fnd_message.Set_name('EGO','EGO_EF_DL_REQD_AG');
884 
885     G_MESSAGE_TEXT := fnd_message.get;
886 
887     INSERT INTO mtl_interface_errors
888                (transaction_id,
889                 unique_id,
890                 organization_id,
891                 column_name,
892                 table_name,
893                 bo_identifier,
894                 entity_identifier,
895                 message_name,
896                 error_message,
897                 last_update_date,
898                 last_updated_by,
899                 creation_date,
900                 created_by,
901                 last_update_login,
902                 request_id,
903                 program_application_id,
904                 program_id,
905                 program_update_date)
906     SELECT eagi.transaction_id,
907            mtl_system_items_interface_s.nextval,
908            NULL,
909            NULL,
910            G_ENTITY_AG_TAB,
911            G_BO_IDENTIFIER_AG,
912            G_ENTITY_AG,
913            G_MESSAGE_NAME,
914            G_MESSAGE_TEXT,
915            Nvl(last_update_date,SYSDATE),
916            Nvl(last_updated_by,G_USER_ID),
917            Nvl(creation_date,SYSDATE),
918            Nvl(created_by,G_USER_ID),
919            Nvl(last_update_login,G_USER_ID),
920            G_REQUEST_ID,
921            Nvl(program_application_id,G_PROG_APPL_ID),
922            Nvl(program_id,G_PROGRAM_ID),
923            Nvl(program_update_date,SYSDATE)
924     FROM   ego_attr_groups_interface eagi
925     WHERE  NOT EXISTS (SELECT 1
926                        FROM   ego_attr_groups_dl_interface eagdi
927                        WHERE  eagdi.attr_group_name = eagi.attr_group_name
928                               AND eagdi.transaction_type = eagi.transaction_type
929                               AND eagdi.process_status = G_PROCESS_RECORD
930                               AND ((G_SET_PROCESS_ID IS NULL)
931                                     OR (set_process_id = G_SET_PROCESS_ID)))
932            AND eagi.transaction_id IS NOT NULL
933            AND eagi.transaction_type = G_OPR_CREATE
934            AND eagi.process_status = G_PROCESS_RECORD
935            AND ((G_SET_PROCESS_ID IS NULL)
936                  OR (set_process_id = G_SET_PROCESS_ID));
937 
938     UPDATE ego_attr_groups_interface eagi
939     SET    eagi.process_status = G_ERROR_RECORD,
940            last_updated_by = G_USER_ID,
941            last_update_date = SYSDATE,
942            last_update_login = G_LOGIN_ID
943     WHERE  NOT EXISTS (SELECT 1
944                        FROM   ego_attr_groups_dl_interface eagdi
945                        WHERE  eagdi.attr_group_name = eagi.attr_group_name
946                               AND eagdi.transaction_type = eagi.transaction_type
947                               AND eagdi.process_status = G_PROCESS_RECORD
948                               AND ((G_SET_PROCESS_ID IS NULL)
949                                     OR (set_process_id = G_SET_PROCESS_ID)))
950            AND eagi.transaction_id IS NOT NULL
951            AND eagi.transaction_type = G_OPR_CREATE
952            AND eagi.process_status = G_PROCESS_RECORD
953            AND ((G_SET_PROCESS_ID IS NULL)
954                  OR (set_process_id = G_SET_PROCESS_ID));
955 
956     lv_smt := 4.2;
957 
958     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 4.2');
959 
960     /* Update the interface records with process_status 3 and insert into
961 MTL_INTERFACE_ERRORS if Data Level passed is already enabled in the system*/
962     G_MESSAGE_NAME := 'EGO_EF_DL_AG_EXISTS';
963 
964     fnd_message.Set_name('EGO','EGO_EF_DL_AG_EXISTS');
965 
966     G_MESSAGE_TEXT := fnd_message.get;
967 
968     INSERT INTO mtl_interface_errors
969                (transaction_id,
970                 unique_id,
971                 organization_id,
972                 column_name,
973                 table_name,
974                 bo_identifier,
975                 entity_identifier,
976                 message_name,
977                 error_message,
978                 last_update_date,
979                 last_updated_by,
980                 creation_date,
981                 created_by,
982                 last_update_login,
983                 request_id,
984                 program_application_id,
985                 program_id,
986                 program_update_date)
987     SELECT eagi.transaction_id,
988            mtl_system_items_interface_s.nextval,
989            NULL,
990            NULL,
991            G_ENTITY_DL_TAB,
992            G_BO_IDENTIFIER_AG,
993            G_ENTITY_DL,
994            G_MESSAGE_NAME,
995            G_MESSAGE_TEXT,
996            Nvl(last_update_date,SYSDATE),
997            Nvl(last_updated_by,G_USER_ID),
998            Nvl(creation_date,SYSDATE),
999            Nvl(created_by,G_USER_ID),
1000            Nvl(last_update_login,G_USER_ID),
1001            G_REQUEST_ID,
1002            Nvl(program_application_id,G_PROG_APPL_ID),
1003            Nvl(program_id,G_PROGRAM_ID),
1004            Nvl(program_update_date,SYSDATE)
1005     FROM   ego_attr_groups_dl_interface eagi
1006     WHERE  EXISTS 	  (SELECT 1
1007                        FROM   EGO_ATTR_GROUP_DL eagdl
1008                        WHERE  eagdl.attr_group_id = eagi.attr_group_id
1009                        AND eagdl.data_level_id = (SELECT data_level_id FROM ego_data_level_b
1010 												  WHERE data_level_name=eagi.data_level_name
1011 												  AND attr_group_type = G_EGO_ITEMMGMT_GROUP
1012 												  AND application_id = G_EGO_APPLICATION_ID
1013 												  ))
1014            AND eagi.transaction_id IS NOT NULL
1015            AND eagi.transaction_type = G_OPR_CREATE
1016            AND eagi.process_status = G_PROCESS_RECORD
1017            AND ((G_SET_PROCESS_ID IS NULL)
1018                  OR (set_process_id = G_SET_PROCESS_ID));
1019 
1020     UPDATE ego_attr_groups_dl_interface eagi
1021     SET    eagi.process_status = G_ERROR_RECORD,
1022            last_updated_by = G_USER_ID,
1023            last_update_date = SYSDATE,
1024            last_update_login = G_LOGIN_ID
1025     WHERE  EXISTS 	  (SELECT 1
1026                        FROM   EGO_ATTR_GROUP_DL eagdl
1027                        WHERE  eagdl.attr_group_id = eagi.attr_group_id
1028                        AND eagdl.data_level_id = (SELECT data_level_id FROM ego_data_level_b
1029 												  WHERE data_level_name=eagi.data_level_name
1030 												  AND attr_group_type = G_EGO_ITEMMGMT_GROUP
1031 												  AND application_id = G_EGO_APPLICATION_ID
1032 												  ))
1033            AND eagi.transaction_id IS NOT NULL
1034            AND eagi.transaction_type = G_OPR_CREATE
1035            AND eagi.process_status = G_PROCESS_RECORD
1036            AND ((G_SET_PROCESS_ID IS NULL)
1037                  OR (set_process_id = G_SET_PROCESS_ID));
1038 
1039     lv_smt := 5;
1040 
1041     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 5');
1042 
1043     /* Update the interface records with process_status 3 and insert into
1044 MTL_INTERFACE_ERRORS if Data Level passed is incorrect*/
1045     G_MESSAGE_NAME := 'EGO_DL_NOT_EXIST';
1046 
1047     fnd_message.Set_name('EGO','EGO_DL_NOT_EXIST');
1048 
1049     G_MESSAGE_TEXT := fnd_message.get;
1050 
1051     INSERT INTO mtl_interface_errors
1052                (transaction_id,
1053                 unique_id,
1054                 organization_id,
1055                 column_name,
1056                 table_name,
1057                 bo_identifier,
1058                 entity_identifier,
1059                 message_name,
1060                 error_message,
1061                 last_update_date,
1062                 last_updated_by,
1063                 creation_date,
1064                 created_by,
1065                 last_update_login,
1066                 request_id,
1067                 program_application_id,
1068                 program_id,
1069                 program_update_date)
1070     SELECT transaction_id,
1071            mtl_system_items_interface_s.nextval,
1072            NULL,
1073            NULL,
1074            G_ENTITY_DL_TAB,
1075            G_BO_IDENTIFIER_AG,
1076            G_ENTITY_DL,
1077            G_MESSAGE_NAME,
1078            G_MESSAGE_TEXT,
1079            Nvl(last_update_date,SYSDATE),
1080            Nvl(last_updated_by,G_USER_ID),
1081            Nvl(creation_date,SYSDATE),
1082            Nvl(created_by,G_USER_ID),
1083            Nvl(last_update_login,G_USER_ID),
1084            G_REQUEST_ID,
1085            Nvl(program_application_id,G_PROG_APPL_ID),
1086            Nvl(program_id,G_PROGRAM_ID),
1087            Nvl(program_update_date,SYSDATE)
1088     FROM   ego_attr_groups_dl_interface
1089     WHERE  (data_level_id IS NULL
1090              OR data_level_name IS NULL)
1091            AND transaction_id IS NOT NULL
1092            AND process_status = G_PROCESS_RECORD
1093            AND ((G_SET_PROCESS_ID IS NULL)
1094                  OR (set_process_id = G_SET_PROCESS_ID));
1095 
1096     UPDATE ego_attr_groups_dl_interface
1097     SET    process_status = G_ERROR_RECORD,
1098            last_updated_by = G_USER_ID,
1099            last_update_date = SYSDATE,
1100            last_update_login = G_LOGIN_ID
1101     WHERE  (data_level_id IS NULL
1102              OR data_level_name IS NULL)
1103            AND transaction_id IS NOT NULL
1104            AND process_status = G_PROCESS_RECORD
1105            AND ((G_SET_PROCESS_ID IS NULL)
1106                  OR (set_process_id = G_SET_PROCESS_ID));
1107 
1108     lv_smt := 6;
1109 
1110     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 6');
1111 
1112     /* Update the interface records with process_status 3 and insert into
1113 MTL_INTERFACE_ERRORS if the AG is of type Variant and Business entity is not ITEM or the Style to SKU is not NULL*/
1114     G_MESSAGE_NAME := 'EGO_VAR_DL_SKU';
1115 
1116     fnd_message.Set_name('EGO','EGO_VAR_DL_SKU');
1117 
1118     G_MESSAGE_TEXT := fnd_message.get;
1119 
1120     INSERT INTO mtl_interface_errors
1121                (transaction_id,
1122                 unique_id,
1123                 organization_id,
1124                 column_name,
1125                 table_name,
1126                 bo_identifier,
1127                 entity_identifier,
1128                 message_name,
1129                 error_message,
1130                 last_update_date,
1131                 last_updated_by,
1132                 creation_date,
1133                 created_by,
1134                 last_update_login,
1135                 request_id,
1136                 program_application_id,
1137                 program_id,
1138                 program_update_date)
1139     SELECT eagdi.transaction_id,
1140            mtl_system_items_interface_s.nextval,
1141            NULL,
1142            NULL,
1143            G_ENTITY_DL_TAB,
1144            G_BO_IDENTIFIER_AG,
1145            G_ENTITY_DL,
1146            G_MESSAGE_NAME,
1147            G_MESSAGE_TEXT,
1148            Nvl(last_update_date,SYSDATE),
1149            Nvl(last_updated_by,G_USER_ID),
1150            Nvl(creation_date,SYSDATE),
1151            Nvl(created_by,G_USER_ID),
1152            Nvl(last_update_login,G_USER_ID),
1153            G_REQUEST_ID,
1154            Nvl(program_application_id,G_PROG_APPL_ID),
1155            Nvl(program_id,G_PROGRAM_ID),
1156            Nvl(program_update_date,SYSDATE)
1157     FROM   ego_attr_groups_dl_interface eagdi
1158     WHERE  EXISTS (SELECT 1
1159                    FROM   ego_fnd_dsc_flx_ctx_ext eagd
1160                    WHERE  eagd.attr_group_id = eagdi.attr_group_id
1161                           AND eagd.variant = 'Y'
1162                    /*Added for bug 9719196*/
1163                    UNION ALL
1164                    SELECT 1
1165                    FROM ego_attr_groups_interface
1166                    WHERE attr_group_name = eagdi.attr_group_name
1167                    AND transaction_type = G_OPR_CREATE
1168                    AND variant = 'Y'
1169                    AND process_status = G_PROCESS_RECORD
1170                    AND ((G_SET_PROCESS_ID IS NULL)
1171                  		 OR (set_process_id = G_SET_PROCESS_ID))
1172                    /*End of bug 9719196*/	 )
1173            AND (eagdi.data_level_name <> G_DL_ITEM_LEVEL
1174                  OR eagdi.defaulting IS NOT NULL)
1175            AND eagdi.transaction_id IS NOT NULL
1176            AND eagdi.process_status = G_PROCESS_RECORD
1177            AND ((G_SET_PROCESS_ID IS NULL)
1178                  OR (set_process_id = G_SET_PROCESS_ID));
1179 
1180     UPDATE ego_attr_groups_dl_interface eagdi
1181     SET    eagdi.process_status = G_ERROR_RECORD,
1182            last_updated_by = G_USER_ID,
1183            last_update_date = SYSDATE,
1184            last_update_login = G_LOGIN_ID
1185     WHERE  EXISTS (SELECT 1
1186                    FROM   ego_fnd_dsc_flx_ctx_ext eagd
1187                    WHERE  eagd.attr_group_id = eagdi.attr_group_id
1188                           AND eagd.variant = 'Y'
1189                    /*Added for bug 9719196*/
1190                    UNION ALL
1191                    SELECT 1
1192                    FROM ego_attr_groups_interface
1193                    WHERE attr_group_name = eagdi.attr_group_name
1194                    AND transaction_type = G_OPR_CREATE
1195                    AND variant = 'Y'
1196                    AND process_status = G_PROCESS_RECORD
1197                    AND ((G_SET_PROCESS_ID IS NULL)
1198                  		 OR (set_process_id = G_SET_PROCESS_ID))
1199                    /*End of bug 9719196*/	 )
1200            AND (eagdi.data_level_name <> G_DL_ITEM_LEVEL
1201                  OR eagdi.defaulting IS NOT NULL)
1202            AND eagdi.transaction_id IS NOT NULL
1203            AND eagdi.process_status = G_PROCESS_RECORD
1204            AND ((G_SET_PROCESS_ID IS NULL)
1205                  OR (set_process_id = G_SET_PROCESS_ID));
1206 
1207     lv_smt := 7;
1208 
1209     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 7');
1210 
1211     /* Update the interface records with process_status 3 and insert into
1212 MTL_INTERFACE_ERRORS if AG is of Single Row or MultiRow Business and the business entity is not any of the below
1213 ITEM_LEVEL, ITEM_REVISION_LEVEL, ITEM_ORG, ITEM_SUP, ITEM_SUP_SITE, ITEM_SUP_SITE_ORG*/
1214     G_MESSAGE_NAME := 'EGO_DL_NOT_EXIST';
1215 
1216     fnd_message.Set_name('EGO','EGO_DL_NOT_EXIST');
1217 
1218     G_MESSAGE_TEXT := fnd_message.get;
1219 
1220     INSERT INTO mtl_interface_errors
1221                (transaction_id,
1222                 unique_id,
1223                 organization_id,
1224                 column_name,
1225                 table_name,
1226                 bo_identifier,
1227                 entity_identifier,
1228                 message_name,
1229                 error_message,
1230                 last_update_date,
1231                 last_updated_by,
1232                 creation_date,
1233                 created_by,
1234                 last_update_login,
1235                 request_id,
1236                 program_application_id,
1237                 program_id,
1238                 program_update_date)
1239     SELECT eagdi.transaction_id,
1240            mtl_system_items_interface_s.nextval,
1241            NULL,
1242            NULL,
1243            G_ENTITY_AG_TAB,
1244            G_BO_IDENTIFIER_AG,
1245            G_ENTITY_AG,
1246            G_MESSAGE_NAME,
1247            G_MESSAGE_TEXT,
1248            Nvl(last_update_date,SYSDATE),
1249            Nvl(last_updated_by,G_USER_ID),
1250            Nvl(creation_date,SYSDATE),
1251            Nvl(created_by,G_USER_ID),
1252            Nvl(last_update_login,G_USER_ID),
1253            G_REQUEST_ID,
1254            Nvl(program_application_id,G_PROG_APPL_ID),
1255            Nvl(program_id,G_PROGRAM_ID),
1256            Nvl(program_update_date,SYSDATE)
1257     FROM   ego_attr_groups_dl_interface eagdi
1258     WHERE  EXISTS (SELECT 1
1259                    FROM   ego_fnd_dsc_flx_ctx_ext eagd
1260                    WHERE  eagd.attr_group_id = eagdi.attr_group_id
1261                           AND Nvl(eagd.variant,'N') = 'N')
1262            AND eagdi.data_level_name NOT IN (G_DL_ITEM_LEVEL,G_DL_ITEM_REV_LEVEL,G_DL_ITEM_ORG,G_DL_ITEM_SUP,
1263                                              G_DL_ITEM_SUP_SITE,G_DL_ITEM_SUP_SITE_ORG)
1264            AND eagdi.transaction_id IS NOT NULL
1265            AND eagdi.process_status = G_PROCESS_RECORD
1266            AND ((G_SET_PROCESS_ID IS NULL)
1267                  OR (set_process_id = G_SET_PROCESS_ID));
1268 
1269     UPDATE ego_attr_groups_dl_interface eagdi
1270     SET    eagdi.process_status = G_ERROR_RECORD,
1271            last_updated_by = G_USER_ID,
1272            last_update_date = SYSDATE,
1273            last_update_login = G_LOGIN_ID
1274     WHERE  EXISTS (SELECT 1
1275                    FROM   ego_fnd_dsc_flx_ctx_ext eagd
1276                    WHERE  eagd.attr_group_id = eagdi.attr_group_id
1277                           AND Nvl(eagd.variant,'N') = 'N')
1278            AND eagdi.data_level_name NOT IN (G_DL_ITEM_LEVEL,G_DL_ITEM_REV_LEVEL,G_DL_ITEM_ORG,G_DL_ITEM_SUP,
1279                                              G_DL_ITEM_SUP_SITE,G_DL_ITEM_SUP_SITE_ORG)
1280            AND eagdi.transaction_id IS NOT NULL
1281            AND eagdi.process_status = G_PROCESS_RECORD
1282            AND ((G_SET_PROCESS_ID IS NULL)
1283                  OR (set_process_id = G_SET_PROCESS_ID));
1284 
1285     lv_smt := 8;
1286 
1287     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 8');
1288 
1289     /* Update the interface records with process_status 3 and insert into
1290 MTL_INTERFACE_ERRORS if AG is of Single Row or MultiRow Business flag an error if the business entity and the
1291 Style to SKU combination is invalid*/
1292     G_MESSAGE_NAME := 'EGO_MULROW_SKU';
1293 
1294     fnd_message.Set_name('EGO','EGO_MULROW_SKU');
1295 
1296     G_MESSAGE_TEXT := fnd_message.get;
1297 
1298     INSERT INTO mtl_interface_errors
1299                (transaction_id,
1300                 unique_id,
1301                 organization_id,
1302                 column_name,
1303                 table_name,
1304                 bo_identifier,
1305                 entity_identifier,
1306                 message_name,
1307                 error_message,
1308                 last_update_date,
1309                 last_updated_by,
1310                 creation_date,
1311                 created_by,
1312                 last_update_login,
1313                 request_id,
1314                 program_application_id,
1315                 program_id,
1316                 program_update_date)
1317     SELECT eagdi.transaction_id,
1318            mtl_system_items_interface_s.nextval,
1319            NULL,
1320            NULL,
1321            G_ENTITY_DL_TAB,
1322            G_BO_IDENTIFIER_AG,
1323            G_ENTITY_DL,
1324            G_MESSAGE_NAME,
1325            G_MESSAGE_TEXT,
1326            Nvl(last_update_date,SYSDATE),
1327            Nvl(last_updated_by,G_USER_ID),
1328            Nvl(creation_date,SYSDATE),
1329            Nvl(created_by,G_USER_ID),
1330            Nvl(last_update_login,G_USER_ID),
1331            G_REQUEST_ID,
1332            Nvl(program_application_id,G_PROG_APPL_ID),
1333            Nvl(program_id,G_PROGRAM_ID),
1334            Nvl(program_update_date,SYSDATE)
1335     FROM   ego_attr_groups_dl_interface eagdi
1336     WHERE  EXISTS (SELECT 1
1337                    FROM   ego_fnd_dsc_flx_ctx_ext eagd
1338                    WHERE  eagd.attr_group_id = eagdi.attr_group_id
1339                           AND Nvl(eagd.variant,'N') = 'N')
1340            AND ((eagdi.data_level_name IN (G_DL_ITEM_LEVEL,G_DL_ITEM_REV_LEVEL,G_DL_ITEM_ORG,G_DL_ITEM_SUP,
1341                                            G_DL_ITEM_SUP_SITE,G_DL_ITEM_SUP_SITE_ORG)
1342                  AND eagdi.defaulting NOT    IN ('D','I'))
1343                  OR eagdi.data_level_name = G_DL_ITEM_REV_LEVEL
1344                     AND eagdi.defaulting IS NOT NULL)
1345            AND eagdi.transaction_id IS NOT NULL
1346            AND eagdi.process_status = G_PROCESS_RECORD
1347            AND ((G_SET_PROCESS_ID IS NULL)
1348                  OR (set_process_id = G_SET_PROCESS_ID));
1349 
1350     UPDATE ego_attr_groups_dl_interface eagdi
1351     SET    eagdi.process_status = G_ERROR_RECORD,
1352            last_updated_by = G_USER_ID,
1353            last_update_date = SYSDATE,
1354            last_update_login = G_LOGIN_ID
1355     WHERE  EXISTS (SELECT 1
1356                    FROM   ego_fnd_dsc_flx_ctx_ext eagd
1357                    WHERE  eagd.attr_group_id = eagdi.attr_group_id
1358                           AND Nvl(eagd.variant,'N') = 'N')
1359            AND ((eagdi.data_level_name IN (G_DL_ITEM_LEVEL,G_DL_ITEM_REV_LEVEL,G_DL_ITEM_ORG,G_DL_ITEM_SUP,
1360                                            G_DL_ITEM_SUP_SITE,G_DL_ITEM_SUP_SITE_ORG)
1361                  AND eagdi.defaulting NOT    IN ('D','I'))
1362                  OR eagdi.data_level_name = G_DL_ITEM_REV_LEVEL
1363                     AND eagdi.defaulting IS NOT NULL)
1364            AND eagdi.transaction_id IS NOT NULL
1365            AND eagdi.process_status = G_PROCESS_RECORD
1366            AND ((G_SET_PROCESS_ID IS NULL)
1367                  OR (set_process_id = G_SET_PROCESS_ID));
1368 
1369     lv_smt := 11;
1370 
1371     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 11');
1372 
1373     /* Update the interface records with process_status 3 and insert into
1374 MTL_INTERFACE_ERRORS if View Privilege is incorrect*/
1375     G_MESSAGE_NAME := 'EGO_VIEW_PRIV_NOT_EXIST';
1376 
1377     fnd_message.Set_name('EGO','EGO_VIEW_PRIV_NOT_EXIST');
1378 
1379     G_MESSAGE_TEXT := fnd_message.get;
1380 
1381     INSERT INTO mtl_interface_errors
1382                (transaction_id,
1383                 unique_id,
1384                 organization_id,
1385                 column_name,
1386                 table_name,
1387                 bo_identifier,
1388                 entity_identifier,
1389                 message_name,
1390                 error_message,
1391                 last_update_date,
1392                 last_updated_by,
1393                 creation_date,
1394                 created_by,
1395                 last_update_login,
1396                 request_id,
1397                 program_application_id,
1398                 program_id,
1399                 program_update_date)
1400     SELECT transaction_id,
1401            mtl_system_items_interface_s.nextval,
1402            NULL,
1403            NULL,
1404            G_ENTITY_DL_TAB,
1405            G_BO_IDENTIFIER_AG,
1406            G_ENTITY_DL,
1407            G_MESSAGE_NAME,
1408            G_MESSAGE_TEXT,
1409            Nvl(last_update_date,SYSDATE),
1410            Nvl(last_updated_by,G_USER_ID),
1411            Nvl(creation_date,SYSDATE),
1412            Nvl(created_by,G_USER_ID),
1413            Nvl(last_update_login,G_USER_ID),
1414            G_REQUEST_ID,
1415            Nvl(program_application_id,G_PROG_APPL_ID),
1416            Nvl(program_id,G_PROGRAM_ID),
1417            Nvl(program_update_date,SYSDATE)
1418     FROM   ego_attr_groups_dl_interface
1419     WHERE  ((view_privilege_id IS NULL
1420              AND view_privilege_name IS NOT NULL
1421              and view_privilege_name <> G_NULL_CHAR)
1422              OR (view_privilege_name IS NULL
1423                  AND view_privilege_id IS NOT NULL
1424                  AND view_privilege_id <> G_NULL_NUM))
1425            AND transaction_id IS NOT NULL
1426            AND process_status = G_PROCESS_RECORD
1427            AND ((G_SET_PROCESS_ID IS NULL)
1428                  OR (set_process_id = G_SET_PROCESS_ID));
1429 
1430     UPDATE ego_attr_groups_dl_interface
1431     SET    process_status = G_ERROR_RECORD,
1432            last_updated_by = G_USER_ID,
1433            last_update_date = SYSDATE,
1434            last_update_login = G_LOGIN_ID
1435     WHERE  ((view_privilege_id IS NULL
1436              AND view_privilege_name IS NOT NULL
1437              and view_privilege_name <> G_NULL_CHAR)
1438              OR (view_privilege_name IS NULL
1439                  AND view_privilege_id IS NOT NULL
1440                  AND view_privilege_id <> G_NULL_NUM))
1441            AND transaction_id IS NOT NULL
1442            AND process_status = G_PROCESS_RECORD
1443            AND ((G_SET_PROCESS_ID IS NULL)
1444                  OR (set_process_id = G_SET_PROCESS_ID));
1445 
1446     lv_smt := 12;
1447 
1448     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 12');
1449 
1450  --
1451  -- Bug 12394675. Issue #1.
1452  -- Attribute group import was erroing our with invalid number exception.
1453  -- Changed the NVL condition from G_MISS_CHAR to G_MISS_NUM
1454  -- sreharih. Tue Apr 26 11:09:17 PDT 2011
1455  --
1456     /* Update the interface records with process_status 3 and insert into
1457 MTL_INTERFACE_ERRORS if Edit Privilege is incorrect*/
1458     G_MESSAGE_NAME := 'EGO_EDIT_PRIV_NOT_EXIST';
1459 
1460     fnd_message.Set_name('EGO','EGO_EDIT_PRIV_NOT_EXIST');
1461 
1462     G_MESSAGE_TEXT := fnd_message.get;
1463 
1464     INSERT INTO mtl_interface_errors
1465                (transaction_id,
1466                 unique_id,
1467                 organization_id,
1468                 column_name,
1469                 table_name,
1470                 bo_identifier,
1471                 entity_identifier,
1472                 message_name,
1473                 error_message,
1474                 last_update_date,
1475                 last_updated_by,
1476                 creation_date,
1477                 created_by,
1478                 last_update_login,
1479                 request_id,
1480                 program_application_id,
1481                 program_id,
1482                 program_update_date)
1483     SELECT transaction_id,
1484            mtl_system_items_interface_s.nextval,
1485            NULL,
1486            NULL,
1487            G_ENTITY_DL_TAB,
1488            G_BO_IDENTIFIER_AG,
1489            G_ENTITY_DL,
1490            G_MESSAGE_NAME,
1491            G_MESSAGE_TEXT,
1492            Nvl(last_update_date,SYSDATE),
1493            Nvl(last_updated_by,G_USER_ID),
1494            Nvl(creation_date,SYSDATE),
1495            Nvl(created_by,G_USER_ID),
1496            Nvl(last_update_login,G_USER_ID),
1497            G_REQUEST_ID,
1498            Nvl(program_application_id,G_PROG_APPL_ID),
1499            Nvl(program_id,G_PROGRAM_ID),
1500            Nvl(program_update_date,SYSDATE)
1501     FROM   ego_attr_groups_dl_interface
1502     WHERE  ((edit_privilege_id IS NULL
1503              AND edit_privilege_name IS NOT NULL
1504              AND edit_privilege_name <> G_NULL_CHAR)
1505              OR (edit_privilege_name IS NULL
1506                  AND edit_privilege_id IS NOT NULL
1507                  AND edit_privilege_id <> G_NULL_NUM)) -- Bug 12394675
1508            AND transaction_id IS NOT NULL
1509            AND process_status = G_PROCESS_RECORD
1510            AND ((G_SET_PROCESS_ID IS NULL)
1511                  OR (set_process_id = G_SET_PROCESS_ID));
1512 
1513     UPDATE ego_attr_groups_dl_interface
1514     SET    process_status = G_ERROR_RECORD,
1515            last_updated_by = G_USER_ID,
1516            last_update_date = SYSDATE,
1517            last_update_login = G_LOGIN_ID
1518     WHERE  ((edit_privilege_id IS NULL
1519              AND edit_privilege_name IS NOT NULL)
1520              OR (edit_privilege_name IS NULL
1521                  AND edit_privilege_id IS NOT NULL))
1522            AND transaction_id IS NOT NULL
1523            AND process_status = G_PROCESS_RECORD
1524            AND ((G_SET_PROCESS_ID IS NULL)
1525                  OR (set_process_id = G_SET_PROCESS_ID));
1526 
1527     lv_smt := 13;
1528 
1529     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 13');
1530 
1531     /* Update the interface records with process_status 3 and insert into
1532 MTL_INTERFACE_ERRORS if Defaulting passed is incorrect*/
1533     G_MESSAGE_NAME := 'EGO_DEFAULTING_INVALID';
1534 
1535     fnd_message.Set_name('EGO','EGO_DEFAULTING_INVALID');
1536 
1537     G_MESSAGE_TEXT := fnd_message.get;
1538 
1539     INSERT INTO mtl_interface_errors
1540                (transaction_id,
1541                 unique_id,
1542                 organization_id,
1543                 column_name,
1544                 table_name,
1545                 bo_identifier,
1546                 entity_identifier,
1547                 message_name,
1548                 error_message,
1549                 last_update_date,
1550                 last_updated_by,
1551                 creation_date,
1552                 created_by,
1553                 last_update_login,
1554                 request_id,
1555                 program_application_id,
1556                 program_id,
1557                 program_update_date)
1558     SELECT transaction_id,
1559            mtl_system_items_interface_s.nextval,
1560            NULL,
1561            NULL,
1562            G_ENTITY_DL_TAB,
1563            G_BO_IDENTIFIER_AG,
1564            G_ENTITY_DL,
1565            G_MESSAGE_NAME,
1566            G_MESSAGE_TEXT,
1567            Nvl(last_update_date,SYSDATE),
1568            Nvl(last_updated_by,G_USER_ID),
1569            Nvl(creation_date,SYSDATE),
1570            Nvl(created_by,G_USER_ID),
1571            Nvl(last_update_login,G_USER_ID),
1572            G_REQUEST_ID,
1573            Nvl(program_application_id,G_PROG_APPL_ID),
1574            Nvl(program_id,G_PROGRAM_ID),
1575            Nvl(program_update_date,SYSDATE)
1576     FROM   ego_attr_groups_dl_interface eagdl
1577     WHERE  data_level_name <> 'ITEM_REVISION_LEVEL'
1578     	   AND transaction_type <> G_OPR_DELETE
1579     	   AND (defaulting IS NULL
1580              OR defaulting_name IS NULL)
1581            AND transaction_id IS NOT NULL
1582            AND process_status = G_PROCESS_RECORD
1583            AND ((G_SET_PROCESS_ID IS NULL)
1584                  OR (set_process_id = G_SET_PROCESS_ID))
1585            AND NOT EXISTS /*Modified the where clause for bug 9886739*/
1586            (SELECT 1
1587 			FROM   EGO_FND_DSC_FLX_CTX_EXT efdfce
1588 			WHERE  efdfce.DESCRIPTIVE_FLEX_CONTEXT_CODE = eagdl.attr_group_name
1589 			AND efdfce.DESCRIPTIVE_FLEXFIELD_NAME = G_EGO_ITEMMGMT_GROUP
1590 			AND efdfce.APPLICATION_ID = G_EGO_APPLICATION_ID
1591 			AND efdfce.VARIANT = 'Y')
1592 			AND NOT EXISTS
1593 			(SELECT 1
1594 			FROM ego_attr_groups_interface
1595 			WHERE ATTR_GROUP_NAME = eagdl.attr_group_name
1596 			AND ATTR_GROUP_TYPE = G_EGO_ITEMMGMT_GROUP
1597 			AND variant = 'Y');
1598 
1599     UPDATE ego_attr_groups_dl_interface eagdl
1600     SET    process_status = G_ERROR_RECORD,
1601            last_updated_by = G_USER_ID,
1602            last_update_date = SYSDATE,
1603            last_update_login = G_LOGIN_ID
1604     WHERE  data_level_name <> 'ITEM_REVISION_LEVEL'
1605     	   AND transaction_type <> G_OPR_DELETE
1606     	   AND (defaulting IS NULL
1607              OR defaulting_name IS NULL)
1608            AND transaction_id IS NOT NULL
1609            AND process_status = G_PROCESS_RECORD
1610            AND ((G_SET_PROCESS_ID IS NULL)
1611                  OR (set_process_id = G_SET_PROCESS_ID))
1612            AND NOT EXISTS   /*Modified the where clause for bug 9886739*/
1613            (SELECT 1
1614 			FROM   EGO_FND_DSC_FLX_CTX_EXT efdfce
1615 			WHERE  efdfce.DESCRIPTIVE_FLEX_CONTEXT_CODE = eagdl.attr_group_name
1616 			AND efdfce.DESCRIPTIVE_FLEXFIELD_NAME = G_EGO_ITEMMGMT_GROUP
1617 			AND efdfce.APPLICATION_ID = G_EGO_APPLICATION_ID
1618 			AND efdfce.VARIANT = 'Y')
1619 			AND NOT EXISTS
1620 			(SELECT 1
1621 			FROM ego_attr_groups_interface
1622 			WHERE ATTR_GROUP_NAME = eagdl.attr_group_name
1623 			AND ATTR_GROUP_TYPE = G_EGO_ITEMMGMT_GROUP
1624 			AND variant = 'Y');
1625 
1626 	lv_smt := 14;
1627 
1628     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 14');
1629 
1630     /* Update the interface records with process_status 3 and insert into
1631 MTL_INTERFACE_ERRORS if AG has associations and user is trying to delete a DL*/
1632     G_MESSAGE_NAME := 'EGO_EF_ASSOCS_EXIST3';
1633 
1634     fnd_message.Set_name('EGO','EGO_EF_ASSOCS_EXIST3');
1635 
1636     G_MESSAGE_TEXT := fnd_message.get;
1637 
1638     INSERT INTO mtl_interface_errors
1639                (transaction_id,
1640                 unique_id,
1641                 organization_id,
1642                 column_name,
1643                 table_name,
1644                 bo_identifier,
1645                 entity_identifier,
1646                 message_name,
1647                 error_message,
1648                 last_update_date,
1649                 last_updated_by,
1650                 creation_date,
1651                 created_by,
1652                 last_update_login,
1653                 request_id,
1654                 program_application_id,
1655                 program_id,
1656                 program_update_date)
1657     SELECT transaction_id,
1658            mtl_system_items_interface_s.nextval,
1659            NULL,
1660            NULL,
1661            G_ENTITY_DL_TAB,
1662            G_BO_IDENTIFIER_AG,
1663            G_ENTITY_DL,
1664            G_MESSAGE_NAME,
1665            G_MESSAGE_TEXT,
1666            Nvl(last_update_date,SYSDATE),
1667            Nvl(last_updated_by,G_USER_ID),
1668            Nvl(creation_date,SYSDATE),
1669            Nvl(created_by,G_USER_ID),
1670            Nvl(last_update_login,G_USER_ID),
1671            G_REQUEST_ID,
1672            Nvl(program_application_id,G_PROG_APPL_ID),
1673            Nvl(program_id,G_PROGRAM_ID),
1674            Nvl(program_update_date,SYSDATE)
1675     FROM   ego_attr_groups_dl_interface eagdl
1676     WHERE  transaction_type = G_OPR_DELETE
1677     	   AND EXISTS (SELECT 1
1678       				   FROM EGO_OBJ_AG_ASSOCS_B
1679      				   WHERE ATTR_GROUP_ID = eagdl.attr_group_id
1680        				   AND ENABLED_FLAG = 'Y')
1681            AND transaction_id IS NOT NULL
1682            AND process_status = G_PROCESS_RECORD
1683            AND ((G_SET_PROCESS_ID IS NULL)
1684                  OR (set_process_id = G_SET_PROCESS_ID));
1685 
1686     UPDATE ego_attr_groups_dl_interface eagdl
1687     SET    process_status = G_ERROR_RECORD,
1688            last_updated_by = G_USER_ID,
1689            last_update_date = SYSDATE,
1690            last_update_login = G_LOGIN_ID
1691     WHERE  transaction_type = G_OPR_DELETE
1692     	   AND EXISTS (SELECT 1
1693       				   FROM EGO_OBJ_AG_ASSOCS_B
1694      				   WHERE ATTR_GROUP_ID = eagdl.attr_group_id
1695        				   AND ENABLED_FLAG = 'Y')
1696            AND transaction_id IS NOT NULL
1697            AND process_status = G_PROCESS_RECORD
1698            AND ((G_SET_PROCESS_ID IS NULL)
1699                  OR (set_process_id = G_SET_PROCESS_ID));
1700 
1701     lv_smt := 15;
1702 
1703     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 15');
1704 
1705     /* Update the interface records with process_status 3 and insert into
1706 MTL_INTERFACE_ERRORS if AG has associations and user is trying to delete the AG*/
1707     G_MESSAGE_NAME := 'EGO_EF_ASSOCS_EXIST1';
1708 
1709     fnd_message.Set_name('EGO','EGO_EF_ASSOCS_EXIST1');
1710 
1711     G_MESSAGE_TEXT := fnd_message.get;
1712 
1713     INSERT INTO mtl_interface_errors
1714                (transaction_id,
1715                 unique_id,
1716                 organization_id,
1717                 column_name,
1718                 table_name,
1719                 bo_identifier,
1720                 entity_identifier,
1721                 message_name,
1722                 error_message,
1723                 last_update_date,
1724                 last_updated_by,
1725                 creation_date,
1726                 created_by,
1727                 last_update_login,
1728                 request_id,
1729                 program_application_id,
1730                 program_id,
1731                 program_update_date)
1732     SELECT transaction_id,
1733            mtl_system_items_interface_s.nextval,
1734            NULL,
1735            NULL,
1736            G_ENTITY_AG_TAB,
1737            G_BO_IDENTIFIER_AG,
1738            G_ENTITY_AG,
1739            G_MESSAGE_NAME,
1740            G_MESSAGE_TEXT,
1741            Nvl(last_update_date,SYSDATE),
1742            Nvl(last_updated_by,G_USER_ID),
1743            Nvl(creation_date,SYSDATE),
1744            Nvl(created_by,G_USER_ID),
1745            Nvl(last_update_login,G_USER_ID),
1746            G_REQUEST_ID,
1747            Nvl(program_application_id,G_PROG_APPL_ID),
1748            Nvl(program_id,G_PROGRAM_ID),
1749            Nvl(program_update_date,SYSDATE)
1750     FROM   ego_attr_groups_interface eagdl
1751     WHERE  transaction_type = G_OPR_DELETE
1752     	   AND EXISTS (SELECT 1
1753       				   FROM EGO_OBJ_AG_ASSOCS_B
1754      				   WHERE ATTR_GROUP_ID = eagdl.attr_group_id
1755        				   AND ENABLED_FLAG = 'Y')
1756            AND transaction_id IS NOT NULL
1757            AND process_status = G_PROCESS_RECORD
1758            AND ((G_SET_PROCESS_ID IS NULL)
1759                  OR (set_process_id = G_SET_PROCESS_ID));
1760 
1761     UPDATE ego_attr_groups_interface eagdl
1762     SET    process_status = G_ERROR_RECORD,
1763            last_updated_by = G_USER_ID,
1764            last_update_date = SYSDATE,
1765            last_update_login = G_LOGIN_ID
1766     WHERE  transaction_type = G_OPR_DELETE
1767     	   AND EXISTS (SELECT 1
1768       				   FROM EGO_OBJ_AG_ASSOCS_B
1769      				   WHERE ATTR_GROUP_ID = eagdl.attr_group_id
1770        				   AND ENABLED_FLAG = 'Y')
1771            AND transaction_id IS NOT NULL
1772            AND process_status = G_PROCESS_RECORD
1773            AND ((G_SET_PROCESS_ID IS NULL)
1774                  OR (set_process_id = G_SET_PROCESS_ID));
1775 
1776     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit bulk_validate_attr_groups');
1777   EXCEPTION
1778     WHEN OTHERS THEN
1779       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'bulk_validate_attr_groups Exception when others'||SQLERRM);
1780 
1781       x_return_status := G_RET_STS_UNEXP_ERROR;
1782 
1783       x_return_msg := 'ego_ag_bulkload_pvt.bulk_validate_attr_groups - '||SQLERRM;
1784 
1785       RETURN;
1786   END bulk_validate_attr_groups;
1787 
1788   /*This procedure is used to bulk validate attributes.
1789   	Used in the interface flow.
1790   	x_return_status OUT NOCOPY parameter that returns the status*/
1791   PROCEDURE bulk_validate_attribute
1792        (x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
1793   IS
1794     lv_smt  NUMBER; --Statement counter
1795 
1796     lv_proc VARCHAR2(30) := 'bulk_validate_attribute';
1797   BEGIN
1798     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entered bulk_validate_attribute');
1799 
1800     x_return_status := G_RET_STS_SUCCESS;
1801 
1802     lv_smt := 1;
1803 
1804     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
1805 
1806     /* Update the interface records with process_status 3 and insert into
1807 MTL_INTERFACE_ERRORS if Attribute Group Type in the Attribute interface table is other than EGO_ITEMMGMT_GROUP*/
1808     G_MESSAGE_NAME := 'EGO_AG_TYPE_INVALID';
1809 
1810     fnd_message.Set_name('EGO','EGO_AG_TYPE_INVALID');
1811 
1812     G_MESSAGE_TEXT := fnd_message.get;
1813 
1814     INSERT INTO mtl_interface_errors
1815                (transaction_id,
1816                 unique_id,
1817                 organization_id,
1818                 column_name,
1819                 table_name,
1820                 bo_identifier,
1821                 entity_identifier,
1822                 message_name,
1823                 error_message,
1824                 last_update_date,
1825                 last_updated_by,
1826                 creation_date,
1827                 created_by,
1828                 last_update_login,
1829                 request_id,
1830                 program_application_id,
1831                 program_id,
1832                 program_update_date)
1833     SELECT eagi.transaction_id,
1834            mtl_system_items_interface_s.nextval,
1835            NULL,
1836            NULL,
1837            G_ENTITY_ATTR_TAB,
1838            G_BO_IDENTIFIER_AG,
1839            G_ENTITY_ATTR,
1840            G_MESSAGE_NAME,
1841            G_MESSAGE_TEXT,
1842            Nvl(last_update_date,SYSDATE),
1843            Nvl(last_updated_by,G_USER_ID),
1844            Nvl(creation_date,SYSDATE),
1845            Nvl(created_by,G_USER_ID),
1846            Nvl(last_update_login,G_USER_ID),
1847            G_REQUEST_ID,
1848            Nvl(program_application_id,G_PROG_APPL_ID),
1849            Nvl(program_id,G_PROGRAM_ID),
1850            Nvl(program_update_date,SYSDATE)
1851     FROM   ego_attr_group_cols_intf eagi
1852     WHERE  attr_group_type <> G_EGO_ITEMMGMT_GROUP
1853            AND transaction_id IS NOT NULL
1854            AND process_status = G_PROCESS_RECORD
1855            AND ((G_SET_PROCESS_ID IS NULL)
1856                  OR (set_process_id = G_SET_PROCESS_ID));
1857 
1858     UPDATE ego_attr_group_cols_intf
1859     SET    process_status = G_ERROR_RECORD,
1860            last_updated_by = G_USER_ID,
1861            last_update_date = SYSDATE,
1862            last_update_login = G_LOGIN_ID
1863     WHERE  attr_group_type <> G_EGO_ITEMMGMT_GROUP
1864            AND transaction_id IS NOT NULL
1865            AND process_status = G_PROCESS_RECORD
1866            AND ((G_SET_PROCESS_ID IS NULL)
1867                  OR (set_process_id = G_SET_PROCESS_ID));
1868 
1869    lv_smt := 2;
1870 
1871     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
1872 
1873     /* Update the interface records with process_status 3 and insert into
1874 MTL_INTERFACE_ERRORS if the attribute with the internal name is already present in the system*/
1875     G_MESSAGE_NAME := 'EGO_EF_INTERNAL_NAME_UNIQUE';
1876 
1877     fnd_message.Set_name('EGO','EGO_EF_INTERNAL_NAME_UNIQUE');
1878 
1879     G_MESSAGE_TEXT := fnd_message.get;
1880 
1881     INSERT INTO mtl_interface_errors
1882                (transaction_id,
1883                 unique_id,
1884                 organization_id,
1885                 column_name,
1886                 table_name,
1887                 bo_identifier,
1888                 entity_identifier,
1889                 message_name,
1890                 error_message,
1891                 last_update_date,
1892                 last_updated_by,
1893                 creation_date,
1894                 created_by,
1895                 last_update_login,
1896                 request_id,
1897                 program_application_id,
1898                 program_id,
1899                 program_update_date)
1900     SELECT eagi.transaction_id,
1901            mtl_system_items_interface_s.nextval,
1902            NULL,
1903            NULL,
1904            G_ENTITY_ATTR_TAB,
1905            G_BO_IDENTIFIER_AG,
1906            G_ENTITY_ATTR,
1907            G_MESSAGE_NAME,
1908            G_MESSAGE_TEXT,
1909            Nvl(last_update_date,SYSDATE),
1910            Nvl(last_updated_by,G_USER_ID),
1911            Nvl(creation_date,SYSDATE),
1912            Nvl(created_by,G_USER_ID),
1913            Nvl(last_update_login,G_USER_ID),
1914            G_REQUEST_ID,
1915            Nvl(program_application_id,G_PROG_APPL_ID),
1916            Nvl(program_id,G_PROGRAM_ID),
1917            Nvl(program_update_date,SYSDATE)
1918     FROM   ego_attr_group_cols_intf eagi
1919     WHERE  EXISTS (SELECT 1
1920 	      			  FROM FND_DESCR_FLEX_COLUMN_USAGES
1921 				      WHERE APPLICATION_ID = G_EGO_APPLICATION_ID
1922 				      AND DESCRIPTIVE_FLEXFIELD_NAME = G_EGO_ITEMMGMT_GROUP
1923 				      AND DESCRIPTIVE_FLEX_CONTEXT_Code = eagi.attr_group_name
1924 				      AND END_USER_COLUMN_NAME = eagi.internal_name
1925 				   )
1926     	   AND transaction_type = G_OPR_CREATE
1927            AND transaction_id IS NOT NULL
1928            AND process_status = G_PROCESS_RECORD
1929            AND ((G_SET_PROCESS_ID IS NULL)
1930                  OR (set_process_id = G_SET_PROCESS_ID));
1931 
1932     UPDATE ego_attr_group_cols_intf eagi
1933     SET    process_status = G_ERROR_RECORD,
1934            last_updated_by = G_USER_ID,
1935            last_update_date = SYSDATE,
1936            last_update_login = G_LOGIN_ID
1937     WHERE  EXISTS (SELECT 1
1938 	      			  FROM FND_DESCR_FLEX_COLUMN_USAGES
1939 				      WHERE APPLICATION_ID = G_EGO_APPLICATION_ID
1940 				      AND DESCRIPTIVE_FLEXFIELD_NAME = G_EGO_ITEMMGMT_GROUP
1941 				      AND DESCRIPTIVE_FLEX_CONTEXT_Code = eagi.attr_group_name
1942 				      AND END_USER_COLUMN_NAME = eagi.internal_name
1943 				   )
1944     	   AND transaction_type = G_OPR_CREATE
1945            AND transaction_id IS NOT NULL
1946            AND process_status = G_PROCESS_RECORD
1947            AND ((G_SET_PROCESS_ID IS NULL)
1948                  OR (set_process_id = G_SET_PROCESS_ID));
1949 
1950     Value_to_id_attr(x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
1951 
1952     construct_attribute(x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
1953 
1954     lv_smt := 2;
1955 
1956     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
1957 
1958     /* Update the interface records with process_status 3 and insert into
1959 MTL_INTERFACE_ERRORS if Attribute group does exist in the system or
1960 as a create flow in the AG interface table. Updates the DL interface table*/
1961     G_MESSAGE_NAME := 'EGO_AG_NOT_EXIST';
1962 
1963     fnd_message.Set_name('EGO','EGO_AG_NOT_EXIST');
1964 
1965     G_MESSAGE_TEXT := fnd_message.get;
1966 
1967     INSERT INTO mtl_interface_errors
1968                (transaction_id,
1969                 unique_id,
1970                 organization_id,
1971                 column_name,
1972                 table_name,
1973                 bo_identifier,
1974                 entity_identifier,
1975                 message_name,
1976                 error_message,
1977                 last_update_date,
1978                 last_updated_by,
1979                 creation_date,
1980                 created_by,
1981                 last_update_login,
1982                 request_id,
1983                 program_application_id,
1984                 program_id,
1985                 program_update_date)
1986     SELECT transaction_id,
1987            mtl_system_items_interface_s.nextval,
1988            NULL,
1989            NULL,
1990            G_ENTITY_ATTR_TAB,
1991            G_BO_IDENTIFIER_AG,
1992            G_ENTITY_ATTR,
1993            G_MESSAGE_NAME,
1994            G_MESSAGE_TEXT,
1995            Nvl(last_update_date,SYSDATE),
1996            Nvl(last_updated_by,G_USER_ID),
1997            Nvl(creation_date,SYSDATE),
1998            Nvl(created_by,G_USER_ID),
1999            Nvl(last_update_login,G_USER_ID),
2000            G_REQUEST_ID,
2001            Nvl(program_application_id,G_PROG_APPL_ID),
2002            Nvl(program_id,G_PROGRAM_ID),
2003            Nvl(program_update_date,SYSDATE)
2004     FROM   ego_attr_group_cols_intf eagci
2005     WHERE  (eagci.attr_group_id IS NULL
2006              OR eagci.attr_group_name IS NULL)
2007            AND eagci.transaction_id IS NOT NULL
2008            AND NOT EXISTS (SELECT 1
2009                            FROM   ego_attr_groups_interface eagi
2010                            WHERE  eagi.attr_group_name = eagci.attr_group_name
2011                                   AND eagi.transaction_type = G_OPR_CREATE
2012                                   AND eagi.process_status = G_PROCESS_RECORD)
2013            AND eagci.process_status = G_PROCESS_RECORD
2014            AND ((G_SET_PROCESS_ID IS NULL)
2015                  OR (set_process_id = G_SET_PROCESS_ID));
2016 
2017     UPDATE ego_attr_group_cols_intf eagci
2018     SET    eagci.process_status = G_ERROR_RECORD,
2019            eagci.last_updated_by = G_USER_ID,
2020            eagci.last_update_date = SYSDATE,
2021            eagci.last_update_login = G_LOGIN_ID
2022     WHERE  (eagci.attr_group_id IS NULL
2023              OR eagci.attr_group_name IS NULL)
2024            AND eagci.transaction_id IS NOT NULL
2025            AND NOT EXISTS (SELECT 1
2026                            FROM   ego_attr_groups_interface eagi
2027                            WHERE  eagi.attr_group_name = eagci.attr_group_name
2028                                   AND eagi.transaction_type = G_OPR_CREATE
2029                                   AND eagi.process_status = G_PROCESS_RECORD)
2030            AND eagci.process_status = G_PROCESS_RECORD
2031            AND ((G_SET_PROCESS_ID IS NULL)
2032                  OR (set_process_id = G_SET_PROCESS_ID));
2033 
2034     lv_smt := 3;
2035 
2036     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 3');
2037 
2038     /*Sets the error EGO_ATTR_NOT_EXISTS if the attr_id or internal_name is null in the update flow*/
2039     G_MESSAGE_NAME := 'EGO_ATTR_NOT_EXISTS';
2040 
2041     fnd_message.Set_name('EGO','EGO_ATTR_NOT_EXISTS');
2042 
2043     G_MESSAGE_TEXT := fnd_message.get;
2044 
2045     INSERT INTO mtl_interface_errors
2046                (transaction_id,
2047                 unique_id,
2048                 organization_id,
2049                 column_name,
2050                 table_name,
2051                 bo_identifier,
2052                 entity_identifier,
2053                 message_name,
2054                 error_message,
2055                 last_update_date,
2056                 last_updated_by,
2057                 creation_date,
2058                 created_by,
2059                 last_update_login,
2060                 request_id,
2061                 program_application_id,
2062                 program_id,
2063                 program_update_date)
2064     SELECT transaction_id,
2065            mtl_system_items_interface_s.nextval,
2066            NULL,
2067            NULL,
2068            G_ENTITY_ATTR_TAB,
2069            G_BO_IDENTIFIER_AG,
2070            G_ENTITY_ATTR,
2071            G_MESSAGE_NAME,
2072            G_MESSAGE_TEXT,
2073            Nvl(last_update_date,SYSDATE),
2074            Nvl(last_updated_by,G_USER_ID),
2075            Nvl(creation_date,SYSDATE),
2076            Nvl(created_by,G_USER_ID),
2077            Nvl(last_update_login,G_USER_ID),
2078            G_REQUEST_ID,
2079            Nvl(program_application_id,G_PROG_APPL_ID),
2080            Nvl(program_id,G_PROGRAM_ID),
2081            Nvl(program_update_date,SYSDATE)
2082     FROM   ego_attr_group_cols_intf eagci
2083     WHERE  ((eagci.attr_id IS NULL
2084              AND eagci.internal_name IS NOT NULL)
2085              OR (eagci.internal_name IS NULL
2086                  AND eagci.attr_id IS NOT NULL))
2087            AND eagci.transaction_type <> G_OPR_CREATE
2088            AND eagci.transaction_id IS NOT NULL
2089            AND eagci.process_status = G_PROCESS_RECORD
2090            AND ((G_SET_PROCESS_ID IS NULL)
2091                  OR (set_process_id = G_SET_PROCESS_ID));
2092 
2093     UPDATE ego_attr_group_cols_intf eagci
2094     SET    eagci.process_status = G_ERROR_RECORD,
2095            eagci.last_updated_by = G_USER_ID,
2096            eagci.last_update_date = SYSDATE,
2097            eagci.last_update_login = G_LOGIN_ID
2098     WHERE  ((eagci.attr_id IS NULL
2099              AND eagci.internal_name IS NOT NULL)
2100              OR (eagci.internal_name IS NULL
2101                  AND eagci.attr_id IS NOT NULL))
2102            AND eagci.transaction_type <> G_OPR_CREATE
2103            AND eagci.transaction_id IS NOT NULL
2104            AND eagci.process_status = G_PROCESS_RECORD
2105            AND ((G_SET_PROCESS_ID IS NULL)
2106                  OR (set_process_id = G_SET_PROCESS_ID));
2107 
2108     lv_smt := 4;
2109 
2110     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 4');
2111 
2112     /*Sets the error EGO_EF_BC_SEL_EXI_VALUE if the value set is defined in the system*/
2113     G_MESSAGE_NAME := 'EGO_EF_BC_SEL_EXI_VALUE';
2114 
2115     fnd_message.Set_name('EGO','EGO_EF_BC_SEL_EXI_VALUE');
2116 
2117     G_MESSAGE_TEXT := fnd_message.get;
2118 
2119     INSERT INTO mtl_interface_errors
2120                (transaction_id,
2121                 unique_id,
2122                 organization_id,
2123                 column_name,
2124                 table_name,
2125                 bo_identifier,
2126                 entity_identifier,
2127                 message_name,
2128                 error_message,
2129                 last_update_date,
2130                 last_updated_by,
2131                 creation_date,
2132                 created_by,
2133                 last_update_login,
2134                 request_id,
2135                 program_application_id,
2136                 program_id,
2137                 program_update_date)
2138     SELECT transaction_id,
2139            mtl_system_items_interface_s.nextval,
2140            NULL,
2141            NULL,
2142            G_ENTITY_ATTR_TAB,
2143            G_BO_IDENTIFIER_AG,
2144            G_ENTITY_ATTR,
2145            G_MESSAGE_NAME,
2146            G_MESSAGE_TEXT,
2147            Nvl(last_update_date,SYSDATE),
2148            Nvl(last_updated_by,G_USER_ID),
2149            Nvl(creation_date,SYSDATE),
2150            Nvl(created_by,G_USER_ID),
2151            Nvl(last_update_login,G_USER_ID),
2152            G_REQUEST_ID,
2153            Nvl(program_application_id,G_PROG_APPL_ID),
2154            Nvl(program_id,G_PROGRAM_ID),
2155            Nvl(program_update_date,SYSDATE)
2156     FROM   ego_attr_group_cols_intf eagci
2157     WHERE  ((eagci.flex_value_set_id IS NULL
2158              AND eagci.flex_value_set_name IS NOT NULL
2159              AND eagci.flex_value_set_name <> G_NULL_CHAR)
2160              OR (eagci.flex_value_set_name IS NULL
2161                  AND eagci.flex_value_set_id IS NOT NULL
2162                  AND eagci.flex_value_set_id <> G_NULL_NUM))
2163            AND eagci.transaction_id IS NOT NULL
2164            AND eagci.process_status = G_PROCESS_RECORD
2165            AND ((G_SET_PROCESS_ID IS NULL)
2166                  OR (set_process_id = G_SET_PROCESS_ID));
2167 
2168     UPDATE ego_attr_group_cols_intf eagci
2169     SET    eagci.process_status = G_ERROR_RECORD,
2170            eagci.last_updated_by = G_USER_ID,
2171            eagci.last_update_date = SYSDATE,
2172            eagci.last_update_login = G_LOGIN_ID
2173     WHERE  ((eagci.flex_value_set_id IS NULL
2174              AND eagci.flex_value_set_name IS NOT NULL
2175              AND eagci.flex_value_set_name <> G_NULL_CHAR)
2176              OR (eagci.flex_value_set_name IS NULL
2177                  AND eagci.flex_value_set_id IS NOT NULL
2178                  AND eagci.flex_value_set_id <> G_NULL_NUM))
2179            AND eagci.transaction_id IS NOT NULL
2180            AND eagci.process_status = G_PROCESS_RECORD
2181            AND ((G_SET_PROCESS_ID IS NULL)
2182                  OR (set_process_id = G_SET_PROCESS_ID));
2183 
2184         lv_smt := 5;
2185 
2186     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 5');
2187 
2188     /* Update the interface records with process_status 3 and insert into
2189 MTL_INTERFACE_ERRORS if AG has associations and user is trying to delete the attributes*/
2190     G_MESSAGE_NAME := 'EGO_EF_ASSOCS_EXIST2';
2191 
2192     fnd_message.Set_name('EGO','EGO_EF_ASSOCS_EXIST2');
2193 
2194     G_MESSAGE_TEXT := fnd_message.get;
2195 
2196     INSERT INTO mtl_interface_errors
2197                (transaction_id,
2198                 unique_id,
2199                 organization_id,
2200                 column_name,
2201                 table_name,
2202                 bo_identifier,
2203                 entity_identifier,
2204                 message_name,
2205                 error_message,
2206                 last_update_date,
2207                 last_updated_by,
2208                 creation_date,
2209                 created_by,
2210                 last_update_login,
2211                 request_id,
2212                 program_application_id,
2213                 program_id,
2214                 program_update_date)
2215     SELECT transaction_id,
2216            mtl_system_items_interface_s.nextval,
2217            NULL,
2218            NULL,
2219            G_ENTITY_ATTR_TAB,
2220            G_BO_IDENTIFIER_AG,
2221            G_ENTITY_ATTR,
2222            G_MESSAGE_NAME,
2223            G_MESSAGE_TEXT,
2224            Nvl(last_update_date,SYSDATE),
2225            Nvl(last_updated_by,G_USER_ID),
2226            Nvl(creation_date,SYSDATE),
2227            Nvl(created_by,G_USER_ID),
2228            Nvl(last_update_login,G_USER_ID),
2229            G_REQUEST_ID,
2230            Nvl(program_application_id,G_PROG_APPL_ID),
2231            Nvl(program_id,G_PROGRAM_ID),
2232            Nvl(program_update_date,SYSDATE)
2233     FROM   ego_attr_group_cols_intf eagdl
2234     WHERE  transaction_type = G_OPR_DELETE
2235     	   AND EXISTS (SELECT 1
2236       				   FROM EGO_OBJ_AG_ASSOCS_B
2237      				   WHERE ATTR_GROUP_ID = eagdl.attr_group_id
2238        				   AND ENABLED_FLAG = 'Y')
2239            AND transaction_id IS NOT NULL
2240            AND process_status = G_PROCESS_RECORD
2241            AND ((G_SET_PROCESS_ID IS NULL)
2242                  OR (set_process_id = G_SET_PROCESS_ID));
2243 
2244     UPDATE ego_attr_group_cols_intf eagdl
2245     SET    process_status = G_ERROR_RECORD,
2246            last_updated_by = G_USER_ID,
2247            last_update_date = SYSDATE,
2248            last_update_login = G_LOGIN_ID
2249     WHERE  transaction_type = G_OPR_DELETE
2250     	   AND EXISTS (SELECT 1
2251       				   FROM EGO_OBJ_AG_ASSOCS_B
2252      				   WHERE ATTR_GROUP_ID = eagdl.attr_group_id
2253        				   AND ENABLED_FLAG = 'Y')
2254            AND transaction_id IS NOT NULL
2255            AND process_status = G_PROCESS_RECORD
2256            AND ((G_SET_PROCESS_ID IS NULL)
2257                  OR (set_process_id = G_SET_PROCESS_ID));
2258 
2259 
2260     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit bulk_validate_attribute');
2261   EXCEPTION
2262     WHEN OTHERS THEN
2263       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'bulk_validate_attribute Exception when others'||SQLERRM);
2264 
2265       x_return_status := G_RET_STS_UNEXP_ERROR;
2266 
2267       x_return_msg := 'ego_ag_bulkload_pvt.bulk_validate_attribute - '||SQLERRM;
2268 
2269       RETURN;
2270   END bulk_validate_attribute;
2271 
2272   /*This procedure is used for value to ID conversion for Attribute Groups.
2273   	Used in the interface flow.
2274   	x_return_status OUT NOCOPY parameter that returns the status*/
2275   PROCEDURE Value_to_id_ag
2276        (x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
2277   IS
2278     lv_smt  NUMBER; --Statement counter
2279 
2280     lv_proc VARCHAR2(30) := 'Value_to_id_ag';
2281   BEGIN
2282     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entered Value_to_id_ag');
2283 
2284     x_return_status := G_RET_STS_SUCCESS;
2285 
2286     lv_smt := 1;
2287 
2288     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
2289 
2290     /*Sets the Attribute group id when the Internal Attribute group name is given*/
2291     UPDATE ego_attr_groups_interface eagi
2292     SET    eagi.attr_group_id = (SELECT attr_group_id
2293                                  FROM   ego_fnd_dsc_flx_ctx_ext
2294                                  WHERE  application_id = g_ego_application_id
2295                                         AND descriptive_flexfield_name = eagi.attr_group_type
2296                                         AND descriptive_flex_context_code = eagi.attr_group_name),
2297            eagi.transaction_type = decode(transaction_type,G_OPR_SYNC,G_OPR_UPDATE,transaction_type),
2298            last_updated_by = G_USER_ID,
2299            last_update_date = SYSDATE,
2300            last_update_login = G_LOGIN_ID
2301     WHERE  eagi.transaction_type <> G_OPR_CREATE
2302            AND eagi.attr_group_id IS NULL
2303            AND eagi.attr_group_name IS NOT NULL
2304            AND eagi.process_status = G_PROCESS_RECORD
2305            AND ((G_SET_PROCESS_ID IS NULL)
2306                  OR (set_process_id = G_SET_PROCESS_ID));
2307 
2308     lv_smt := 2;
2309 
2310     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
2311 
2312     /*Sets the SYNC transaction type to CREATE*/
2313     UPDATE ego_attr_groups_interface eagi
2314     SET    eagi.transaction_type = decode(attr_group_id,null,G_OPR_CREATE,G_OPR_UPDATE),
2315            last_updated_by = G_USER_ID,
2316            last_update_date = SYSDATE,
2317            last_update_login = G_LOGIN_ID
2318     WHERE  eagi.transaction_type NOT IN (G_OPR_CREATE,G_OPR_DELETE)
2319            AND eagi.attr_group_id IS NULL
2320            AND eagi.attr_group_name IS NOT NULL
2321            AND eagi.process_status = G_PROCESS_RECORD
2322            AND ((G_SET_PROCESS_ID IS NULL)
2323                  OR (set_process_id = G_SET_PROCESS_ID));
2324 
2325 
2326     /*As of now we dont support Owning party. When we support do value to id
2327 converstion for that here*/
2328     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit Value_to_id_ag');
2329   EXCEPTION
2330     WHEN OTHERS THEN
2331       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Value_to_id_ag Exception when others'||SQLERRM);
2332 
2333       x_return_status := G_RET_STS_UNEXP_ERROR;
2334 
2335       x_return_msg := 'ego_ag_bulkload_pvt.Value_to_id_ag - '||SQLERRM;
2336 
2337       RETURN;
2338   END Value_to_id_ag;
2339 
2340   /*This procedure is used for value to ID conversion for Attribute Groups
2341     Data level.	Used in the interface flow.
2342   	x_return_status OUT NOCOPY parameter that returns the status*/
2343   PROCEDURE Value_to_id_dl
2344        (x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
2345   IS
2346     lv_smt  NUMBER;
2347 
2348     lv_proc VARCHAR2(30) := 'Value_to_id_dl';
2349   BEGIN
2350     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entered Value_to_id_dl');
2351 
2352     x_return_status := G_RET_STS_SUCCESS;
2353 
2354     lv_smt := 1;
2355 
2356     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
2357 
2358     /*Sets the Attribute group id when the Internal Attribute group name is given*/
2359     UPDATE ego_attr_groups_dl_interface eagdi
2360     SET    eagdi.attr_group_id = (SELECT attr_group_id
2361                                   FROM   ego_fnd_dsc_flx_ctx_ext
2362                                   WHERE  application_id = g_ego_application_id
2363                                          AND descriptive_flexfield_name = eagdi.attr_group_type
2364                                          AND descriptive_flex_context_code = eagdi.attr_group_name),
2365            last_updated_by = G_USER_ID,
2366            last_update_date = SYSDATE,
2367            last_update_login = G_LOGIN_ID
2368     WHERE  eagdi.attr_group_id IS NULL
2369            AND eagdi.attr_group_name IS NOT NULL
2370            AND eagdi.process_status = G_PROCESS_RECORD
2371            AND ((G_SET_PROCESS_ID IS NULL)
2372                  OR (set_process_id = G_SET_PROCESS_ID));
2373 
2374 
2375     lv_smt := 3;
2376 
2377     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 3');
2378 
2379     /*Set the View Privilege ID when the View Privilege Name or User View privilege name is given*/
2380     UPDATE ego_attr_groups_dl_interface eagdl
2381     SET    eagdl.view_privilege_id = (SELECT function_id
2382                                       FROM   fnd_form_functions
2383                                       WHERE  function_name = eagdl.view_privilege_name),
2384            last_updated_by = G_USER_ID,
2385            last_update_date = SYSDATE,
2386            last_update_login = G_LOGIN_ID
2387     WHERE  eagdl.view_privilege_id IS NULL
2388            AND eagdl.view_privilege_name IS NOT NULL
2389            AND eagdl.process_status = G_PROCESS_RECORD
2390            AND ((G_SET_PROCESS_ID IS NULL)
2391                  OR (set_process_id = G_SET_PROCESS_ID));
2392 
2393 	UPDATE ego_attr_groups_dl_interface eagdl
2394     SET    view_privilege_id = (SELECT function_id
2395                                 FROM   fnd_form_functions_vl
2396                                 WHERE  user_function_name = eagdl.user_view_priv_name),
2397            last_updated_by = G_USER_ID,
2398            last_update_date = SYSDATE,
2399            last_update_login = G_LOGIN_ID
2400     WHERE  eagdl.view_privilege_id IS NULL
2401            AND eagdl.user_view_priv_name IS NOT NULL
2402            AND eagdl.process_status = G_PROCESS_RECORD
2403            AND ((G_SET_PROCESS_ID IS NULL)
2404                  OR (set_process_id = G_SET_PROCESS_ID));
2405 
2406     lv_smt := 4;
2407 
2408     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 4');
2409 
2410     /*Set the Edit Privilege ID when the Edit Privilege Name or user edit priviledge name is given*/
2411     UPDATE ego_attr_groups_dl_interface eagdl
2412     SET    edit_privilege_id = (SELECT function_id
2413                                 FROM   fnd_form_functions
2414                                 WHERE  function_name = eagdl.edit_privilege_name),
2415            last_updated_by = G_USER_ID,
2416            last_update_date = SYSDATE,
2417            last_update_login = G_LOGIN_ID
2418     WHERE  eagdl.edit_privilege_id IS NULL
2419            AND eagdl.edit_privilege_name IS NOT NULL
2420            AND eagdl.process_status = G_PROCESS_RECORD
2421            AND ((G_SET_PROCESS_ID IS NULL)
2422                  OR (set_process_id = G_SET_PROCESS_ID));
2423 
2424     UPDATE ego_attr_groups_dl_interface eagdl
2425     SET    edit_privilege_id = (SELECT function_id
2426                                 FROM   fnd_form_functions_vl
2427                                 WHERE  user_function_name = eagdl.user_edit_priv_name),
2428            last_updated_by = G_USER_ID,
2429            last_update_date = SYSDATE,
2430            last_update_login = G_LOGIN_ID
2431     WHERE  eagdl.edit_privilege_id IS NULL
2432            AND eagdl.user_edit_priv_name IS NOT NULL
2433            AND eagdl.process_status = G_PROCESS_RECORD
2434            AND ((G_SET_PROCESS_ID IS NULL)
2435                  OR (set_process_id = G_SET_PROCESS_ID));
2436 
2437     lv_smt := 5;
2438 
2439     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 5');
2440 
2441     /*Set the Data Level ID when the data level is given*/
2442     UPDATE ego_attr_groups_dl_interface eagdi
2443     SET    eagdi.data_level_id = (SELECT data_level_id
2444                                   FROM   ego_data_level_b
2445                                   WHERE  attr_group_type = eagdi.attr_group_type
2446                                          AND application_id = g_ego_application_id
2447                                          AND data_level_name = eagdi.data_level_name),
2448            last_updated_by = G_USER_ID,
2449            last_update_date = SYSDATE,
2450            last_update_login = G_LOGIN_ID
2451     WHERE  eagdi.data_level_id IS NULL
2452            AND eagdi.data_level_name IS NOT NULL
2453            AND eagdi.process_status = G_PROCESS_RECORD
2454            AND ((G_SET_PROCESS_ID IS NULL)
2455                  OR (set_process_id = G_SET_PROCESS_ID));
2456 
2457     lv_smt := 6;
2458 
2459     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 6');
2460 
2461     /*Sets the SYNC transaction type to UPDATE*/
2462     UPDATE ego_attr_groups_dl_interface eagdi
2463     SET    eagdi.transaction_type = G_OPR_UPDATE,
2464            last_updated_by = G_USER_ID,
2465            last_update_date = SYSDATE,
2466            last_update_login = G_LOGIN_ID
2467     WHERE  eagdi.data_level_id IS NOT NULL
2468            AND eagdi.attr_group_id IS NOT NULL
2469            AND transaction_type = G_OPR_SYNC
2470            AND EXISTS (SELECT 1
2471                        FROM   ego_attr_group_dl eagdl
2472                        WHERE  eagdl.attr_group_id = eagdi.attr_group_id
2473                               AND eagdl.data_level_id = eagdi.data_level_id)
2474            AND eagdi.process_status = G_PROCESS_RECORD
2475            AND ((G_SET_PROCESS_ID IS NULL)
2476                  OR (set_process_id = G_SET_PROCESS_ID));
2477 
2478     lv_smt := 7;
2479 
2480     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 7');
2481 
2482     /*Sets the SYNC transaction type to CREATE*/
2483     UPDATE ego_attr_groups_dl_interface eagdi
2484     SET    eagdi.transaction_type = G_OPR_CREATE,
2485            last_updated_by = G_USER_ID,
2486            last_update_date = SYSDATE,
2487            last_update_login = G_LOGIN_ID
2488     WHERE  eagdi.data_level_id IS NOT NULL
2489            AND eagdi.attr_group_id IS NOT NULL
2490            AND transaction_type = G_OPR_SYNC
2491            AND NOT EXISTS (SELECT 1
2492                            FROM   ego_attr_group_dl eagdl
2493                            WHERE  eagdl.attr_group_id = eagdi.attr_group_id
2494                                   AND eagdl.data_level_id = eagdi.data_level_id)
2495            AND eagdi.process_status = G_PROCESS_RECORD
2496            AND ((G_SET_PROCESS_ID IS NULL)
2497                  OR (set_process_id = G_SET_PROCESS_ID));
2498 
2499 	lv_smt := 7.1;
2500 
2501     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 7.1');
2502 
2503     /*Sets the SYNC transaction type to CREATE*/
2504     UPDATE ego_attr_groups_dl_interface eagdi
2505     SET    eagdi.transaction_type = G_OPR_CREATE,
2506            last_updated_by = G_USER_ID,
2507            last_update_date = SYSDATE,
2508            last_update_login = G_LOGIN_ID
2509     WHERE  eagdi.attr_group_id IS NULL
2510            AND transaction_type = G_OPR_SYNC
2511            AND eagdi.process_status = G_PROCESS_RECORD
2512            AND ((G_SET_PROCESS_ID IS NULL)
2513                  OR (set_process_id = G_SET_PROCESS_ID));
2514 
2515     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit Value_to_id_dl');
2516   EXCEPTION
2517     WHEN OTHERS THEN
2518       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Value_to_id_dl Exception when others'||SQLERRM);
2519 
2520       x_return_status := G_RET_STS_UNEXP_ERROR;
2521 
2522       x_return_msg := 'ego_ag_bulkload_pvt.Value_to_id_dl - '||SQLERRM;
2523 
2524       RETURN;
2525   END Value_to_id_dl;
2526 
2527   /*This procedure is used for value to ID conversion for Attributes.
2528   	Used in the interface flow.
2529   	x_return_status OUT NOCOPY parameter that returns the status*/
2530   PROCEDURE Value_to_id_attr
2531        (x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
2532   IS
2533     lv_smt  NUMBER; --Statement counter;
2534 
2535     lv_proc VARCHAR2(30) := 'Value_to_id_attr';
2536   BEGIN
2537     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering Value_to_id_attr');
2538 
2539     x_return_status := G_RET_STS_SUCCESS;
2540 
2541     lv_smt := 1;
2542 
2543     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
2544 
2545     /*Sets the Attribute group id when the Internal Attribute group name is given*/
2546     UPDATE ego_attr_group_cols_intf eagci
2547     SET    eagci.attr_group_id = (SELECT attr_group_id
2548                                   FROM   ego_fnd_dsc_flx_ctx_ext
2549                                   WHERE  application_id = g_ego_application_id
2550                                          AND descriptive_flexfield_name = eagci.attr_group_type
2551                                          AND descriptive_flex_context_code = eagci.attr_group_name),
2552            eagci.last_updated_by = G_USER_ID,
2553            eagci.last_update_date = SYSDATE,
2554            eagci.last_update_login = G_LOGIN_ID
2555     WHERE  eagci.attr_group_id IS NULL
2556            AND eagci.attr_group_name IS NOT NULL
2557            AND eagci.process_status = G_PROCESS_RECORD
2558            AND ((G_SET_PROCESS_ID IS NULL)
2559                  OR (set_process_id = G_SET_PROCESS_ID));
2560 
2561     lv_smt := 2;
2562 
2563     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
2564 
2565     /*Set the application id*/
2566     UPDATE ego_attr_group_cols_intf
2567     SET    application_id = g_ego_application_id,
2568            last_updated_by = G_USER_ID,
2569            last_update_date = SYSDATE,
2570            last_update_login = G_LOGIN_ID
2571     WHERE  application_id IS NULL
2572            AND process_status = G_PROCESS_RECORD
2573            AND ((G_SET_PROCESS_ID IS NULL)
2574                  OR (set_process_id = G_SET_PROCESS_ID));
2575 
2576     lv_smt := 3;
2577 
2578     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 3');
2579 
2580     /*Sets the Attr_id for the update and sync flow*/
2581     UPDATE ego_attr_group_cols_intf eagci
2582     SET    eagci.attr_id = (SELECT efdcue.attr_id
2583                             FROM   fnd_descr_flex_column_usages fdfcu,
2584                                    ego_fnd_df_col_usgs_ext efdcue
2585                             WHERE  fdfcu.application_id = efdcue.application_id
2586                                    AND fdfcu.descriptive_flexfield_name = efdcue.descriptive_flexfield_name
2587                                    AND fdfcu.descriptive_flex_context_code = efdcue.descriptive_flex_context_code
2588                                    AND fdfcu.application_column_name = efdcue.application_column_name
2589                                    AND fdfcu.application_id = g_ego_application_id
2590                                    AND fdfcu.descriptive_flexfield_name = eagci.attr_group_type
2591                                    AND fdfcu.descriptive_flex_context_code = eagci.attr_group_name
2592                                    AND fdfcu.end_user_column_name = eagci.internal_name)
2593     WHERE  eagci.attr_id IS NULL
2594            AND eagci.internal_name IS NOT NULL
2595            AND eagci.transaction_type IN (G_OPR_UPDATE,G_OPR_SYNC,G_OPR_DELETE)
2596            AND eagci.process_status = G_PROCESS_RECORD
2597            AND ((G_SET_PROCESS_ID IS NULL)
2598                  OR (set_process_id = G_SET_PROCESS_ID));
2599 
2600     lv_smt := 4;
2601 
2602     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 4');
2603 
2604     /*Sets the value set id when the value set name is given*/
2605     UPDATE ego_attr_group_cols_intf eagci
2606     SET    eagci.flex_value_set_id = (SELECT ffvs.flex_value_set_id
2607                                       FROM   fnd_flex_value_sets ffvs
2608                                       WHERE  ffvs.flex_value_set_name = eagci.flex_value_set_name)
2609     WHERE  eagci.flex_value_set_id IS NULL
2610            AND eagci.flex_value_set_name IS NOT NULL
2611            AND eagci.process_status = G_PROCESS_RECORD
2612            AND ((G_SET_PROCESS_ID IS NULL)
2613                  OR (set_process_id = G_SET_PROCESS_ID));
2614 
2615     lv_smt := 5;
2616 
2617     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 5');
2618 
2619     /*Sets the Sync type to UPDATE*/
2620     UPDATE ego_attr_group_cols_intf
2621     SET    transaction_type = G_OPR_UPDATE
2622     WHERE  transaction_type = G_OPR_SYNC
2623            AND attr_id IS NOT NULL
2624            AND process_status = G_PROCESS_RECORD
2625            AND ((G_SET_PROCESS_ID IS NULL)
2626                  OR (set_process_id = G_SET_PROCESS_ID));
2627 
2628     lv_smt := 6;
2629 
2630     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 6');
2631 
2632     /*Sets the Sync type to CREATE*/
2633     UPDATE ego_attr_group_cols_intf
2634     SET    transaction_type = G_OPR_CREATE
2635     WHERE  transaction_type = G_OPR_SYNC
2636            AND attr_id IS NULL
2637            AND process_status = G_PROCESS_RECORD
2638            AND ((G_SET_PROCESS_ID IS NULL)
2639                  OR (set_process_id = G_SET_PROCESS_ID));
2640 
2641     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit Value_to_id_attr');
2642   EXCEPTION
2643     WHEN OTHERS THEN
2644       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Value_to_id_attr Exception when others'||SQLERRM);
2645 
2646       x_return_status := G_RET_STS_UNEXP_ERROR;
2647 
2648       x_return_msg := 'ego_ag_bulkload_pvt.Value_to_id_attr - '||SQLERRM;
2649 
2650       RETURN;
2651   END value_to_id_attr;
2652 
2653   /*This procedure is used construct attribute group records.
2654   	Used in the interface flow.
2655   	x_return_status OUT NOCOPY parameter that returns the status*/
2656   PROCEDURE construct_attr_groups
2657        (x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
2658   IS
2659     lv_smt  NUMBER; --Statement counter
2660 
2661     lv_proc VARCHAR2(30) := 'construct_attr_groups';
2662   BEGIN
2663     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering construct_attr_groups');
2664 
2665     x_return_status := G_RET_STS_SUCCESS;
2666 
2667     lv_smt := 1;
2668 
2669     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
2670 
2671     /*Sets the Internal Attribute group name when the attribute group id is given*/
2672     UPDATE ego_attr_groups_interface eagi
2673     SET    eagi.attr_group_name = (SELECT attr_group_name
2674                                    FROM   ego_fnd_dsc_flx_ctx_ext
2675                                    WHERE  application_id = g_ego_application_id
2676                                           AND descriptive_flexfield_name = eagi.attr_group_type
2677                                           AND attr_group_id = eagi.attr_group_id),
2678            last_updated_by = G_USER_ID,
2679            last_update_date = SYSDATE,
2680            last_update_login = G_LOGIN_ID
2681     WHERE  eagi.transaction_type = G_OPR_UPDATE
2682            AND eagi.attr_group_id IS NOT NULL
2683            AND eagi.process_status = G_PROCESS_RECORD
2684            AND ((G_SET_PROCESS_ID IS NULL)
2685                  OR (set_process_id = G_SET_PROCESS_ID));
2686 
2687     lv_smt := 2;
2688 
2689     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
2690 
2691     /*Set default for MULTIROW as N*/
2692     UPDATE ego_attr_groups_interface
2693     SET    multi_row = 'N',
2694            last_updated_by = G_USER_ID,
2695            last_update_date = SYSDATE,
2696            last_update_login = G_LOGIN_ID
2697     WHERE  multi_row IS NULL
2698            AND transaction_type = G_OPR_CREATE
2699            AND process_status = G_PROCESS_RECORD
2700            AND ((G_SET_PROCESS_ID IS NULL)
2701                  OR (set_process_id = G_SET_PROCESS_ID));
2702 
2703     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit construct_attr_groups');
2704   EXCEPTION
2705     WHEN OTHERS THEN
2706       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'construct_attr_groups Exception when others'||SQLERRM);
2707 
2708       x_return_status := G_RET_STS_UNEXP_ERROR;
2709 
2710       x_return_msg := 'ego_ag_bulkload_pvt.construct_attr_groups - '||SQLERRM;
2711 
2712       RETURN;
2713   END construct_attr_groups;
2714 
2715   /*This procedure is used construct attribute group data level records.
2716   	Used in the interface flow.
2717   	x_return_status OUT NOCOPY parameter that returns the status*/
2718   PROCEDURE construct_ag_data_level
2719        (x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
2720   IS
2721     lv_smt  NUMBER;
2722 
2723     lv_proc VARCHAR2(30) := 'construct_ag_data_level';
2724   BEGIN
2725     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering construct_ag_data_level');
2726 
2727     x_return_status := G_RET_STS_SUCCESS;
2728 
2729     lv_smt := 1;
2730 
2731     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
2732 
2733     /*Sets the Internal Attribute group name when the attribute group id is given*/
2734     UPDATE ego_attr_groups_dl_interface eagdi
2735     SET    eagdi.attr_group_name = (SELECT attr_group_name
2736                                     FROM   ego_fnd_dsc_flx_ctx_ext
2737                                     WHERE  application_id = g_ego_application_id
2738                                            AND descriptive_flexfield_name = eagdi.attr_group_type
2739                                            AND attr_group_id = eagdi.attr_group_id),
2740            last_updated_by = G_USER_ID,
2741            last_update_date = SYSDATE,
2742            last_update_login = G_LOGIN_ID
2743     WHERE  eagdi.attr_group_id IS NOT NULL
2744            AND eagdi.process_status = G_PROCESS_RECORD
2745            AND ((G_SET_PROCESS_ID IS NULL)
2746                  OR (set_process_id = G_SET_PROCESS_ID));
2747 
2748     lv_smt := 2;
2749 
2750     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
2751 
2752     /*Set the View Privilege when the id is given*/
2753     UPDATE ego_attr_groups_dl_interface eagdl
2754     SET    (view_privilege_name,user_view_priv_name) = (SELECT function_name, user_function_name
2755                                         				FROM   fnd_form_functions_vl
2756                                         				WHERE  function_id = eagdl.view_privilege_id),
2757            last_updated_by = G_USER_ID,
2758            last_update_date = SYSDATE,
2759            last_update_login = G_LOGIN_ID
2760     WHERE  eagdl.view_privilege_id IS NOT NULL
2761            AND eagdl.process_status = G_PROCESS_RECORD
2762            AND ((G_SET_PROCESS_ID IS NULL)
2763                  OR (set_process_id = G_SET_PROCESS_ID));
2764 
2765     lv_smt := 3;
2766 
2767     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 3');
2768 
2769     /*Set the Edit Privilege when the id is given*/
2770     UPDATE ego_attr_groups_dl_interface eagdl
2771     SET    (edit_privilege_name,user_edit_priv_name) = (SELECT function_name, user_function_name
2772                                         				FROM   fnd_form_functions_vl
2773                                         				WHERE  function_id = eagdl.edit_privilege_id),
2774            last_updated_by = G_USER_ID,
2775            last_update_date = SYSDATE,
2776            last_update_login = G_LOGIN_ID
2777     WHERE  eagdl.edit_privilege_id IS NOT NULL
2778            AND eagdl.process_status = G_PROCESS_RECORD
2779            AND ((G_SET_PROCESS_ID IS NULL)
2780                  OR (set_process_id = G_SET_PROCESS_ID));
2781 
2782     lv_smt := 4;
2783 
2784     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 4');
2785 
2786     /*Set the defaulting when defaulting name is given*/
2787 
2788     UPDATE ego_attr_groups_dl_interface eagdl
2789     SET    eagdl.defaulting = (SELECT lookup_code
2790                                FROM   fnd_lookup_values
2791                                WHERE  lookup_type = 'EGO_EF_AG_DL_BEHAVIOR'
2792                                       AND meaning = eagdl.defaulting_name
2793                                       AND language = Userenv('LANG')),
2794            last_updated_by = G_USER_ID,
2795            last_update_date = SYSDATE,
2796            last_update_login = G_LOGIN_ID
2797     WHERE  eagdl.defaulting IS NULL
2798            AND eagdl.defaulting_name IS NOT NULL
2799            AND eagdl.process_status = G_PROCESS_RECORD
2800            AND ((G_SET_PROCESS_ID IS NULL)
2801                  OR (set_process_id = G_SET_PROCESS_ID));
2802 
2803 
2804     lv_smt := 5;
2805 
2806     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 5');
2807 
2808     /*Set the defaulting name when defaulting is given*/
2809     UPDATE ego_attr_groups_dl_interface eagdl
2810     SET    eagdl.defaulting_name = (SELECT meaning
2811                                     FROM   fnd_lookup_values
2812                                     WHERE  lookup_type = 'EGO_EF_AG_DL_BEHAVIOR'
2813                                            AND lookup_code = eagdl.defaulting
2814                                            AND language = Userenv('LANG')),
2815            last_updated_by = G_USER_ID,
2816            last_update_date = SYSDATE,
2817            last_update_login = G_LOGIN_ID
2818     WHERE  eagdl.defaulting IS NOT NULL
2819            AND eagdl.process_status = G_PROCESS_RECORD
2820            AND ((G_SET_PROCESS_ID IS NULL)
2821                  OR (set_process_id = G_SET_PROCESS_ID));
2822 
2823     lv_smt := 6;
2824 
2825     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 6');
2826 
2827     /*Set the Data Level  when the data level id is given*/
2828     UPDATE ego_attr_groups_dl_interface eagdi
2829     SET    eagdi.data_level_name = (SELECT data_level_name
2830                                     FROM   ego_data_level_b
2831                                     WHERE  attr_group_type = eagdi.attr_group_type
2832                                            AND application_id = g_ego_application_id
2833                                            AND data_level_id = eagdi.data_level_id),
2834            last_updated_by = G_USER_ID,
2835            last_update_date = SYSDATE,
2836            last_update_login = G_LOGIN_ID
2837     WHERE  eagdi.data_level_id IS NOT NULL
2838            AND eagdi.process_status = G_PROCESS_RECORD
2839            AND ((G_SET_PROCESS_ID IS NULL)
2840                  OR (set_process_id = G_SET_PROCESS_ID));
2841 
2842     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit construct_ag_data_level');
2843   EXCEPTION
2844     WHEN OTHERS THEN
2845       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'construct_ag_data_level Exception when others'||SQLERRM);
2846 
2847       x_return_status := G_RET_STS_UNEXP_ERROR;
2848 
2849       x_return_msg := 'ego_ag_bulkload_pvt.construct_ag_data_level - '||SQLERRM;
2850 
2851       RETURN;
2852   END construct_ag_data_level;
2853 
2854   /*This procedure is used construct attributes records.
2855   	Used in the interface flow.
2856   	x_return_status OUT NOCOPY parameter that returns the status*/
2857   PROCEDURE construct_attribute
2858        (x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
2859   IS
2860     lv_smt  NUMBER; --Statement counter
2861 
2862     lv_proc VARCHAR2(30) := 'construct_attribute';
2863   BEGIN
2864     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering construct_attribute');
2865 
2866     x_return_status := G_RET_STS_SUCCESS;
2867 
2868     lv_smt := 1;
2869 
2870     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
2871 
2872     /*Sets the Internal Attribute group name when the Attribute group id is given*/
2873     UPDATE ego_attr_group_cols_intf eagci
2874     SET    eagci.attr_group_name = (SELECT descriptive_flex_context_code
2875                                   FROM   ego_fnd_dsc_flx_ctx_ext
2876                                   WHERE  application_id = g_ego_application_id
2877                                          AND descriptive_flexfield_name = eagci.attr_group_type
2878                                          AND attr_group_id = eagci.attr_group_id),
2879            eagci.last_updated_by = G_USER_ID,
2880            eagci.last_update_date = SYSDATE,
2881            eagci.last_update_login = G_LOGIN_ID
2882     WHERE  eagci.attr_group_id IS NOT NULL
2883            AND eagci.process_status = G_PROCESS_RECORD
2884            AND ((G_SET_PROCESS_ID IS NULL)
2885                  OR (set_process_id = G_SET_PROCESS_ID));
2886 
2887     lv_smt := 2;
2888 
2889     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
2890 
2891     /*Sets the Internal Attribute name when then Attr id is given*/
2892     UPDATE ego_attr_group_cols_intf eagci
2893     SET    eagci.internal_name = (SELECT fdfcu.end_user_column_name
2894                                   FROM   fnd_descr_flex_column_usages fdfcu,
2895                                          ego_fnd_df_col_usgs_ext efdcue
2896                                   WHERE  fdfcu.application_id = efdcue.application_id
2897                                          AND fdfcu.descriptive_flexfield_name = efdcue.descriptive_flexfield_name
2898                                          AND fdfcu.descriptive_flex_context_code = efdcue.descriptive_flex_context_code
2899                                          AND fdfcu.application_column_name = efdcue.application_column_name
2900                                          AND fdfcu.application_id = g_ego_application_id
2901                                          AND fdfcu.descriptive_flexfield_name = eagci.attr_group_type
2902                                          AND fdfcu.descriptive_flex_context_code = eagci.attr_group_name
2903                                          AND efdcue.attr_id = eagci.attr_id)
2904     WHERE  eagci.attr_id IS NOT NULL
2905            AND eagci.transaction_type IN (G_OPR_UPDATE,G_OPR_SYNC)
2906            AND eagci.process_status = G_PROCESS_RECORD
2907            AND ((G_SET_PROCESS_ID IS NULL)
2908                  OR (set_process_id = G_SET_PROCESS_ID));
2909 
2910     lv_smt := 3;
2911 
2912     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 3');
2913 
2914     /*Sets the value set name when the value set id is given*/
2915     UPDATE ego_attr_group_cols_intf eagci
2916     SET    eagci.flex_value_set_name = (SELECT ffvs.flex_value_set_name
2917                                         FROM   fnd_flex_value_sets ffvs
2918                                         WHERE  ffvs.flex_value_set_id = eagci.flex_value_set_id)
2919     WHERE  eagci.flex_value_set_id IS NOT NULL
2920            AND eagci.process_status = G_PROCESS_RECORD
2921            AND ((G_SET_PROCESS_ID IS NULL)
2922                  OR (set_process_id = G_SET_PROCESS_ID));
2923 
2924     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit construct_attribute');
2925   EXCEPTION
2926     WHEN OTHERS THEN
2927       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'construct_attribute Exception when others'||SQLERRM);
2928 
2929       x_return_status := G_RET_STS_UNEXP_ERROR;
2930 
2931       x_return_msg := 'ego_ag_bulkload_pvt.construct_attribute - '||SQLERRM;
2932 
2933       RETURN;
2934   END construct_attribute;
2935 
2936   /*This is the main procedure called to import attribute groups and data levels.
2937   	Used in the API flow.
2938   	p_ag_tbl        IN OUT NOCOPY Attribute groups plsql table
2939   	p_agdl_tbl      IN OUT NOCOPY Data level plsql table
2940   	p_commit        IN Pass true to commit within the API
2941   	x_return_status OUT NOCOPY parameter that returns the status*/
2942   PROCEDURE process_attr_groups
2943        (p_ag_tbl         IN OUT NOCOPY ego_metadata_pub.ego_attr_groups_tbl,
2944         p_agdl_tbl       IN OUT NOCOPY ego_metadata_pub.ego_attr_groups_dl_tbl,
2945         p_commit         IN BOOLEAN DEFAULT true,
2946         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
2947   IS
2948 
2949     lv_proc VARCHAR2(30) := 'process_attr_groups';
2950   BEGIN
2951     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering process_attr_groups');
2952 
2953     x_return_status := G_RET_STS_SUCCESS;
2954 
2955     error_handler.Set_bo_identifier(G_BO_IDENTIFIER_AG);
2956 
2957 
2958 
2959     G_COMMIT := p_commit;
2960 
2961     G_FLOW_TYPE := g_ego_md_api;
2962 
2963     /*Sets the EGO application ID*/
2964     SELECT application_id
2965     INTO   g_ego_application_id
2966     FROM   fnd_application
2967     WHERE  application_short_name = 'EGO';
2968 
2969     /*Calls Additional Validations for AG and DL*/
2970     Additional_agdl_validations(p_ag_tbl,p_agdl_tbl,x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
2971 
2972     IF (p_ag_tbl.COUNT <> 0) THEN
2973 	    /*Send the AG table for processing*/
2974 	    Process_ag(p_ag_tbl,x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
2975 	END IF;
2976 
2977 	IF (p_agdl_tbl.COUNT <> 0) THEN
2978 	    /*Send the DL table for processing*/
2979 	    Process_dl(p_agdl_tbl,x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
2980 	END IF;
2981 
2982 	delete_ag_none_dl(x_return_status => x_return_status, x_return_msg => x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
2983 
2984     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit process_attr_groups');
2985   EXCEPTION
2986     WHEN OTHERS THEN
2987       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'process_attr_groups Exception when others'||SQLERRM);
2988 
2989       x_return_status := G_RET_STS_UNEXP_ERROR;
2990 
2991       x_return_msg := 'ego_ag_bulkload_pvt.process_attr_groups - '||SQLERRM;
2992 
2993       RETURN;
2994   END process_attr_groups;
2995 
2996   /*This procedure is used to do final processing of the attribute groups.
2997   	Used in the interface and API flow.
2998   	p_ag_tbl        IN OUT NOCOPY Attribute groups plsql table
2999   	x_return_status OUT NOCOPY parameter that returns the status*/
3000   PROCEDURE Process_ag
3001        (p_ag_tbl         IN OUT NOCOPY ego_metadata_pub.ego_attr_groups_tbl,
3002         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
3003   IS
3004     x_ag_id      NUMBER;
3005     x_errorcode  NUMBER;
3006     x_msg_count  NUMBER;
3007     x_msg_data   VARCHAR2(2000);
3008 
3009     lv_proc VARCHAR2(30) := 'Process_ag';
3010   BEGIN
3011     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering Process_ag');
3012 
3013     x_return_status := G_RET_STS_SUCCESS;
3014 
3015     Common_ag_validations(p_ag_tbl => p_ag_tbl,x_return_status => x_return_status, x_return_msg => x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3016 
3017     handle_null_ag(p_ag_tbl => p_ag_tbl,x_return_status => x_return_status, x_return_msg => x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3018 
3019     FOR i IN p_ag_tbl.FIRST.. p_ag_tbl.LAST LOOP
3020       IF (P_ag_tbl(i).process_status = G_PROCESS_RECORD
3021           AND P_ag_tbl(i).transaction_type = 'CREATE') THEN
3022         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Create AG');
3023 
3024         ego_ext_fwk_pub.Create_attribute_group(p_api_version => 1.0
3025         									   ,p_application_id => g_ego_application_id
3026         									   ,p_attr_group_type => P_ag_tbl(i).attr_group_type
3027         									   ,p_internal_name => P_ag_tbl(i).attr_group_name
3028         									   ,p_display_name => P_ag_tbl(i).attr_group_disp_name
3029         									   ,p_attr_group_desc => P_ag_tbl(i).description
3030         									   ,p_security_type => 'P' -- we always use PUBLIC for now
3031                                                ,p_multi_row_attrib_group => P_ag_tbl(i).multi_row
3032                                                ,p_variant_attrib_group => P_ag_tbl(i).variant
3033                                                ,p_num_of_cols => P_ag_tbl(i).num_of_cols
3034                                                ,p_num_of_rows => P_ag_tbl(i).num_of_rows
3035                                                ,p_owning_company_id => -100
3036                                                ,p_region_code => NULL
3037                                                ,p_view_privilege_id => NULL
3038                                                ,p_edit_privilege_id => NULL
3039                                                ,p_business_event_flag => NULL
3040                                                ,p_pre_business_event_flag => NULL
3041                                                ,p_owner => G_USER_ID
3042                                                ,p_lud => SYSDATE
3043                                                ,p_init_msg_list => fnd_api.g_false
3044                                                ,p_commit => fnd_api.g_false
3045                                                ,x_attr_group_id => x_ag_id
3046                                                ,x_return_status => x_return_status
3047                                                ,x_errorcode => x_errorcode
3048                                                ,x_msg_count => x_msg_count
3049                                                ,x_msg_data => x_msg_data);
3050 
3051         IF (x_return_status = G_RET_STS_SUCCESS) THEN
3052           P_ag_tbl(i).attr_group_id := x_ag_id;
3053 
3054           P_ag_tbl(i).process_status := G_SUCCESS_RECORD;
3055         ELSIF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
3056           x_return_msg := x_msg_data;
3057           RETURN;
3058         ELSE
3059           write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_ag_tbl(i).transaction_id||' (AG) = ('||P_ag_tbl(i).attr_group_name||'). ' ||'Error in creating AG');
3060 
3061           P_ag_tbl(i).process_status := G_ERROR_RECORD;
3062 
3063           G_TOKEN_TABLE(1).Token_Name   :=  'Entity_Name';
3064           G_TOKEN_TABLE(1).Token_Value  :=  G_ENTITY_AG;
3065           G_TOKEN_TABLE(2).Token_Name   :=  'Transaction_Type';
3066           G_TOKEN_TABLE(2).Token_Value  :=  P_ag_tbl(i).transaction_type;
3067           G_TOKEN_TABLE(3).Token_Name   :=  'Package_Name';
3068           G_TOKEN_TABLE(3).Token_Value  :=  'ego_ext_fwk_pub';
3069           G_TOKEN_TABLE(4).Token_Name   :=  'Proc_Name';
3070           G_TOKEN_TABLE(4).Token_Value  :=  'Create_attribute_group';
3071 
3072           error_handler.Add_error_message(p_message_name => 'EGO_ENTITY_API_FAILED',p_application_id => 'EGO',
3073                                           p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3074                                           p_row_identifier => P_ag_tbl(i).transaction_id,
3075                                           p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
3076 
3077           error_handler.Add_error_message(p_message_text => x_msg_data,p_application_id => 'EGO',
3078                                           p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3079                                           p_row_identifier => P_ag_tbl(i).transaction_id,
3080                                           p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
3081 
3082 
3083           G_TOKEN_TABLE.DELETE;
3084         END IF;
3085       ELSIF (P_ag_tbl(i).process_status = G_PROCESS_RECORD
3086              AND P_ag_tbl(i).transaction_type = 'UPDATE') THEN
3087         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Update AG');
3088 
3089         ego_ext_fwk_pub.Update_attribute_group(p_api_version => 1.0
3090         									   ,p_application_id => g_ego_application_id
3091         									   ,p_attr_group_type => P_ag_tbl(i).attr_group_type
3092         									   ,p_internal_name => P_ag_tbl(i).attr_group_name
3093         									   ,p_display_name => P_ag_tbl(i).attr_group_disp_name
3094         									   ,p_attr_group_desc => P_ag_tbl(i).description
3095         									   ,p_security_type => 'P' -- we always use PUBLIC for now
3096                                                /*Changes made for bug 9719202*/
3097         									   ,p_multi_row_attrib_group => null--P_ag_tbl(i).multi_row
3098                                                ,p_variant_attrib_group => null--P_ag_tbl(i).variant
3099                                                ,p_num_of_cols => P_ag_tbl(i).num_of_cols
3100                                                ,p_num_of_rows => P_ag_tbl(i).num_of_rows
3101                                                /*End of comment for bug 9719202*/
3102                                                ,p_owning_company_id => -100
3103                                                ,p_owner => G_USER_ID
3104                                                ,p_commit => fnd_api.g_false
3105                                                ,x_return_status => x_return_status
3106                                                ,x_errorcode => x_errorcode
3107                                                ,x_msg_count => x_msg_count
3108                                                ,x_msg_data => x_msg_data);
3109 
3110         IF (x_return_status = G_RET_STS_SUCCESS) THEN
3111           P_ag_tbl(i).process_status := g_success_record;
3112         ELSIF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
3113           x_return_msg := x_msg_data;
3114           RETURN;
3115         ELSE
3116           write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_ag_tbl(i).transaction_id||' (AG) = ('||P_ag_tbl(i).attr_group_name||'). ' ||'Error in updating AG');
3117 
3118           P_ag_tbl(i).process_status := G_ERROR_RECORD;
3119 
3120           G_TOKEN_TABLE(1).Token_Name   :=  'Entity_Name';
3121           G_TOKEN_TABLE(1).Token_Value  :=  G_ENTITY_AG;
3122           G_TOKEN_TABLE(2).Token_Name   :=  'Transaction_Type';
3123           G_TOKEN_TABLE(2).Token_Value  :=  P_ag_tbl(i).transaction_type;
3124           G_TOKEN_TABLE(3).Token_Name   :=  'Package_Name';
3125           G_TOKEN_TABLE(3).Token_Value  :=  'ego_ext_fwk_pub';
3126           G_TOKEN_TABLE(4).Token_Name   :=  'Proc_Name';
3127           G_TOKEN_TABLE(4).Token_Value  :=  'Update_attribute_group';
3128 
3129           error_handler.Add_error_message(p_message_name => 'EGO_ENTITY_API_FAILED',p_application_id => 'EGO',
3130                                           p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3131                                           p_row_identifier => P_ag_tbl(i).transaction_id,
3132                                           p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
3133 
3134           error_handler.Add_error_message(p_message_text => x_msg_data,p_application_id => 'EGO',
3135                                           p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3136                                           p_row_identifier => P_ag_tbl(i).transaction_id,
3137                                           p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
3138 
3139           G_TOKEN_TABLE.DELETE;
3140         END IF;
3141       ELSIF (P_ag_tbl(i).process_status = G_PROCESS_RECORD
3142              AND P_ag_tbl(i).transaction_type = 'DELETE') THEN
3143         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Delete AG');
3144 
3145         ego_ext_fwk_pub.Delete_attribute_group(p_api_version => 1.0
3146         									   ,p_application_id => g_ego_application_id
3147         									   ,p_attr_group_type => P_ag_tbl(i).attr_group_type
3148         									   ,p_attr_group_name => P_ag_tbl(i).attr_group_name
3149         									   ,p_commit => fnd_api.g_false
3150         									   ,x_return_status => x_return_status
3151         									   ,x_errorcode => x_errorcode
3152         									   ,x_msg_count => x_msg_count
3153         									   ,x_msg_data => x_msg_data);
3154 
3155         IF (x_return_status = G_RET_STS_SUCCESS) THEN
3156           P_ag_tbl(i).process_status := g_success_record;
3157         ELSIF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
3158           x_return_msg := x_msg_data;
3159           RETURN;
3160         ELSE
3161           write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_ag_tbl(i).transaction_id||' (AG) = ('||P_ag_tbl(i).attr_group_name||'). ' ||'Error in deleting AG');
3162 
3163           P_ag_tbl(i).process_status := G_ERROR_RECORD;
3164 
3165           G_TOKEN_TABLE(1).Token_Name   :=  'Entity_Name';
3166           G_TOKEN_TABLE(1).Token_Value  :=  G_ENTITY_AG;
3167           G_TOKEN_TABLE(2).Token_Name   :=  'Transaction_Type';
3168           G_TOKEN_TABLE(2).Token_Value  :=  P_ag_tbl(i).transaction_type;
3169           G_TOKEN_TABLE(3).Token_Name   :=  'Package_Name';
3170           G_TOKEN_TABLE(3).Token_Value  :=  'ego_ext_fwk_pub';
3171           G_TOKEN_TABLE(4).Token_Name   :=  'Proc_Name';
3172           G_TOKEN_TABLE(4).Token_Value  :=  'Delete_attribute_group';
3173 
3174           error_handler.Add_error_message(p_message_name => 'EGO_ENTITY_API_FAILED',p_application_id => 'EGO',
3175                                           p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3176                                           p_row_identifier => P_ag_tbl(i).transaction_id,
3177                                           p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
3178 
3179           error_handler.Add_error_message(p_message_text => x_msg_data,p_application_id => 'EGO',
3180                                           p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3181                                           p_row_identifier => P_ag_tbl(i).transaction_id,
3182                                           p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
3183 
3184           G_TOKEN_TABLE.DELETE;
3185         END IF;
3186       END IF;
3187     END LOOP;
3188 
3189     IF (G_COMMIT = true AND G_FLOW_TYPE = G_EGO_MD_API) THEN
3190       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'COMMIT issed after AG Processing');
3191 
3192       COMMIT;
3193     END IF;
3194 
3195     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit Process_ag');
3196   EXCEPTION
3197     WHEN OTHERS THEN
3198       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Process_ag Exception when others'||SQLERRM);
3199 
3200       x_return_status := G_RET_STS_UNEXP_ERROR;
3201 
3202       x_return_msg := 'ego_ag_bulkload_pvt.Process_ag - '||SQLERRM;
3203 
3204       RETURN;
3205   END Process_ag;
3206 
3207   /*This procedure is used to do final processing of the attribute group data level.
3208   	Used in the interface and API flow.
3209   	p_agdl_tbl        IN OUT NOCOPY Attribute group data level plsql table
3210   	x_return_status OUT NOCOPY parameter that returns the status*/
3211   PROCEDURE Process_dl
3212        (p_agdl_tbl       IN OUT NOCOPY ego_metadata_pub.ego_attr_groups_dl_tbl,
3213         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
3214   IS
3215     x_msg_count  NUMBER;
3216     x_msg_data   VARCHAR2(2000);
3217     lv_count 	 NUMBER := 0;
3218     lv_proc VARCHAR2(30) := 'Process_dl';
3219   BEGIN
3220     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering Process_dl');
3221 
3222     x_return_status := G_RET_STS_SUCCESS;
3223 
3224     common_dl_validations(p_agdl_tbl => p_agdl_tbl,x_return_status => x_return_status, x_return_msg => x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3225 
3226     handle_null_dl(p_agdl_tbl => p_agdl_tbl,x_return_status => x_return_status, x_return_msg => x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3227 
3228     FOR i IN p_agdl_tbl.FIRST.. p_agdl_tbl.LAST LOOP
3229       IF (P_agdl_tbl(i).process_status = G_PROCESS_RECORD AND P_agdl_tbl(i).transaction_type IN (G_OPR_CREATE,G_OPR_UPDATE)) THEN
3230 
3231       /*Check for invalid combination of business entity*/
3232     		IF (p_agdl_tbl(i).data_level_name = G_DL_ITEM_LEVEL) THEN
3233 	    		DECLARE
3234 	    		lv_count NUMBER := 0;
3235 	    		BEGIN
3236 	    			SELECT count(1) INTO lv_count
3237                     FROM   EGO_ATTR_GROUP_DL eagdl
3238                     WHERE  eagdl.attr_group_id = p_agdl_tbl(i).attr_group_id
3239                     AND eagdl.data_level_id IN (SELECT data_level_id FROM ego_data_level_b
3240 							  				   WHERE data_level_name IN (G_DL_ITEM_REV_LEVEL,G_DL_ITEM_ORG)
3241 											   AND attr_group_type = G_EGO_ITEMMGMT_GROUP
3242 											   AND application_id = G_EGO_APPLICATION_ID
3243 											  );
3244 
3245 					IF (lv_count > 0) THEN
3246 						p_agdl_tbl(i).process_status := G_ERROR_RECORD;
3247 
3248 				        x_return_status := G_RET_STS_ERROR;
3249 
3250 				      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_agdl_tbl(i).transaction_id
3251 				      	||' (AG,DL) = ('||p_agdl_tbl(i).attr_group_name||','||p_agdl_tbl(i).data_level_name||'). '
3252 				      	||'The combination of Business Entities choosen is Invalid for Item Level.');
3253 
3254 				        error_handler.Add_error_message(p_message_name => 'EGO_EF_DL_INVALID_COMB',p_application_id => 'EGO',
3255 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3256 				                                                  p_row_identifier => p_agdl_tbl(i).transaction_id,
3257 				                                                  p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_TAB);
3258 					END IF;
3259 			  END;
3260     		ELSIF (p_agdl_tbl(i).data_level_name = G_DL_ITEM_REV_LEVEL) THEN
3261 	    		DECLARE
3262 	    		lv_count NUMBER := 0;
3263 	    		BEGIN
3264 	    			SELECT count(1) INTO lv_count
3265                     FROM   EGO_ATTR_GROUP_DL eagdl
3266                     WHERE  eagdl.attr_group_id = p_agdl_tbl(i).attr_group_id
3267                     AND eagdl.data_level_id IN (SELECT data_level_id FROM ego_data_level_b
3268 							  				   WHERE data_level_name IN (G_DL_ITEM_LEVEL,G_DL_ITEM_ORG)
3269 											   AND attr_group_type = G_EGO_ITEMMGMT_GROUP
3270 											   AND application_id = G_EGO_APPLICATION_ID
3271 											  );
3272 
3273 					IF (lv_count > 0) THEN
3274 						p_agdl_tbl(i).process_status := G_ERROR_RECORD;
3275 
3276 				        x_return_status := G_RET_STS_ERROR;
3277 
3278 				      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_agdl_tbl(i).transaction_id
3279 				      	||' (AG,DL) = ('||p_agdl_tbl(i).attr_group_name||','||p_agdl_tbl(i).data_level_name||'). '
3280 				      	||'The combination of Business Entities choosen is Invalid');
3281 
3282 				        error_handler.Add_error_message(p_message_name => 'EGO_EF_DL_INVALID_COMB',p_application_id => 'EGO',
3283 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3284 				                                                  p_row_identifier => p_agdl_tbl(i).transaction_id,
3285 				                                                  p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_TAB);
3286 					END IF;
3287 			  END;
3288     		ELSIF (p_agdl_tbl(i).data_level_name = G_DL_ITEM_ORG) THEN
3289 	    		DECLARE
3290 	    		lv_count NUMBER := 0;
3291 	    		BEGIN
3292 	    			SELECT count(1) INTO lv_count
3293                     FROM   EGO_ATTR_GROUP_DL eagdl
3294                     WHERE  eagdl.attr_group_id = p_agdl_tbl(i).attr_group_id
3295                     AND eagdl.data_level_id IN (SELECT data_level_id FROM ego_data_level_b
3296 							  				   WHERE data_level_name IN (G_DL_ITEM_LEVEL,G_DL_ITEM_REV_LEVEL)
3297 											   AND attr_group_type = G_EGO_ITEMMGMT_GROUP
3298 											   AND application_id = G_EGO_APPLICATION_ID
3299 											  );
3300 
3301 					IF (lv_count > 0) THEN
3302 						p_agdl_tbl(i).process_status := G_ERROR_RECORD;
3303 
3304 				        x_return_status := G_RET_STS_ERROR;
3305 
3306 				      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_agdl_tbl(i).transaction_id
3307 				      	||' (AG,DL) = ('||p_agdl_tbl(i).attr_group_name||','||p_agdl_tbl(i).data_level_name||'). '
3308 				      	||'The combination of Business Entities choosen is Invalid.');
3309 
3310 				        error_handler.Add_error_message(p_message_name => 'EGO_EF_DL_INVALID_COMB',p_application_id => 'EGO',
3311 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3312 				                                                  p_row_identifier => p_agdl_tbl(i).transaction_id,
3313 				                                                  p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_TAB);
3314 					END IF;
3315 			  END;
3316     		END IF;
3317 
3318 
3319        /*Check to see if the Business entity is already enabled*/
3320         SELECT count(1) INTO lv_count
3321         FROM   EGO_ATTR_GROUP_DL
3322         WHERE  attr_group_id = P_agdl_tbl(i).attr_group_id
3323         AND data_level_id = P_agdl_tbl(i).data_level_id;
3324 
3325         IF (lv_count > 0 AND P_agdl_tbl(i).transaction_type = G_OPR_CREATE) THEN
3326         	P_agdl_tbl(i).process_status := G_ERROR_RECORD;
3327 
3328         	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_agdl_tbl(i).transaction_id||' (AG,DL) = ('
3329         	||p_agdl_tbl(i).attr_group_name||','||p_agdl_tbl(i).data_level_name||'). '
3330         	||'Business entity is already enabled for the attribute group.');
3331 
3332         	error_handler.Add_error_message(p_message_name => 'EGO_EF_DL_AG_EXISTS',p_application_id => 'EGO',
3333 	                                          p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3334 	                                          p_row_identifier => P_agdl_tbl(i).transaction_id,
3335 	                                          p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
3336         ELSIF (P_agdl_tbl(i).process_status = G_PROCESS_RECORD) THEN
3337 	        ego_ext_fwk_pub.Sync_dl_assoc(p_api_version => 1.0,
3338 	        							  p_init_msg_list => fnd_api.g_false,
3339 	                                      p_commit => fnd_api.g_false,
3340 	                                      p_transaction_type => P_agdl_tbl(i).transaction_type,
3341 	                                      p_attr_group_id => P_agdl_tbl(i).attr_group_id,
3342 	                                      p_application_id => g_ego_application_id,
3343 	                                      p_attr_group_type => P_agdl_tbl(i).attr_group_type,
3344 	                                      p_attr_group_name => P_agdl_tbl(i).attr_group_name,
3345 	                                      p_data_level_id => P_agdl_tbl(i).data_level_id,
3346 	                                      p_data_level_name => P_agdl_tbl(i).data_level_name,
3347 	                                      p_defaulting => P_agdl_tbl(i).defaulting,
3348 	                                      p_defaulting_name => P_agdl_tbl(i).defaulting_name,
3349 	                                      p_view_priv_id => P_agdl_tbl(i).view_privilege_id,
3350 	                                      p_view_priv_name => P_agdl_tbl(i).view_privilege_name,
3351 	                                      p_user_view_priv_name => P_agdl_tbl(i).user_view_priv_name,
3352 	                                      p_edit_priv_id => P_agdl_tbl(i).edit_privilege_id,
3353 	                                      p_edit_priv_name => P_agdl_tbl(i).edit_privilege_name,
3354 	                                      p_user_edit_priv_name => P_agdl_tbl(i).user_edit_priv_name,
3355 	                                      p_raise_pre_event => P_agdl_tbl(i).pre_business_event_flag,
3356 	                                      p_raise_post_event => P_agdl_tbl(i).business_event_flag,
3357 	                                      p_last_updated_by => G_USER_ID,
3358 	                                      p_last_update_date => SYSDATE,
3359 	                                      x_return_status => x_return_status,
3360 	                                      x_msg_count => x_msg_count,
3361 	                                      x_msg_data => x_msg_data);
3362 
3363 	        IF (x_return_status = G_RET_STS_SUCCESS) THEN
3364 	          P_agdl_tbl(i).process_status := g_success_record;
3365 	        ELSIF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
3366 	          x_return_msg := x_msg_data;
3367 	          RETURN;
3368 	        ELSE
3369 
3370 	          write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_agdl_tbl(i).transaction_id||' (AG,DL) = ('||p_agdl_tbl(i).attr_group_name||','||p_agdl_tbl(i).data_level_name||'). ' ||'Error in sync of DL - ' ||x_msg_data);
3371 
3372 	          P_agdl_tbl(i).process_status := G_ERROR_RECORD;
3373 
3374 	          G_TOKEN_TABLE(1).Token_Name   :=  'Entity_Name';
3375 	          G_TOKEN_TABLE(1).Token_Value  :=  G_ENTITY_DL;
3376 	          G_TOKEN_TABLE(2).Token_Name   :=  'Transaction_Type';
3377 	          G_TOKEN_TABLE(2).Token_Value  :=  P_agdl_tbl(i).transaction_type;
3378 	          G_TOKEN_TABLE(3).Token_Name   :=  'Package_Name';
3379 	          G_TOKEN_TABLE(3).Token_Value  :=  'ego_ext_fwk_pub';
3380 	          G_TOKEN_TABLE(4).Token_Name   :=  'Proc_Name';
3381 	          G_TOKEN_TABLE(4).Token_Value  :=  'Sync_dl_assoc';
3382 
3383 	          error_handler.Add_error_message(p_message_name => 'EGO_ENTITY_API_FAILED',p_application_id => 'EGO',
3384 	                                          p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3385 	                                          p_row_identifier => P_agdl_tbl(i).transaction_id,
3386 	                                          p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
3387 
3388 	          error_handler.Add_error_message(p_message_text => x_msg_data,p_application_id => 'EGO',
3389 	                                          p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3390 	                                          p_row_identifier => P_agdl_tbl(i).transaction_id,
3391 	                                          p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
3392 
3393 	          G_TOKEN_TABLE.DELETE;
3394 	        END IF;
3395 	  	END IF;
3396       ELSIF (P_agdl_tbl(i).process_status = G_PROCESS_RECORD AND P_agdl_tbl(i).transaction_type = G_OPR_DELETE) THEN
3397       	BEGIN
3398       		DELETE FROM EGO_ATTR_GROUP_DL
3399 			WHERE attr_group_id = P_agdl_tbl(i).attr_group_id
3400 			AND data_level_id = P_agdl_tbl(i).data_level_id;
3401 
3402       	EXCEPTION
3403       		WHEN OTHERS THEN
3404       			write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exception when others');
3405 
3406               	x_return_status := G_RET_STS_UNEXP_ERROR;
3407 
3408             	x_return_msg := 'ego_ag_bulkload_pvt.Process_dl - '||SQLERRM;
3409       	END;
3410       END IF;
3411 
3412       lv_count := 0;
3413     END LOOP;
3414 
3415     IF (G_COMMIT = true AND G_FLOW_TYPE = G_EGO_MD_API) THEN
3416       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'COMMIT issued for DL');
3417 
3418       COMMIT;
3419     END IF;
3420 
3421     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit Process_dl');
3422   EXCEPTION
3423     WHEN OTHERS THEN
3424       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Process_dl Exception when others'||SQLERRM);
3425 
3426       x_return_status := G_RET_STS_UNEXP_ERROR;
3427 
3428       x_return_msg := 'ego_ag_bulkload_pvt.Process_dl - '||SQLERRM;
3429 
3430       RETURN;
3431   END process_dl;
3432 
3433   /*This is the main procedure called to import attributes.
3434   	Used in the API flow.
3435   	p_attr_tbl        IN OUT NOCOPY Attributes plsql table
3436   	p_commit        IN Pass true to commit within the API
3437   	x_return_status OUT NOCOPY parameter that returns the status*/
3438   PROCEDURE process_attribute
3439        (p_attr_tbl       IN OUT NOCOPY ego_metadata_pub.ego_attr_group_cols_tbl,
3440         p_commit         IN BOOLEAN DEFAULT true,
3441         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
3442   IS
3443 
3444     lv_proc VARCHAR2(30) := 'process_attribute';
3445   BEGIN
3446     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering process_attribute');
3447 
3448     x_return_status := G_RET_STS_SUCCESS;
3449 
3450     error_handler.Set_bo_identifier(G_BO_IDENTIFIER_AG);
3451 
3452     IF(p_attr_tbl.COUNT <> 0) THEN
3453 
3454 	    G_COMMIT := p_commit;
3455 
3456 	    G_FLOW_TYPE := g_ego_md_api;
3457 
3458 	    /*Sets the EGO application ID*/
3459 	    SELECT application_id
3460 	    INTO   g_ego_application_id
3461 	    FROM   fnd_application
3462 	    WHERE  application_short_name = 'EGO';
3463 
3464 	    /*Calls Additional Validations*/
3465 	    Additional_attr_validations(p_attr_tbl,x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3466 
3467 	    /*Send the AG table for processing*/
3468 	    Process_attr(p_attr_tbl,x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3469     END IF;
3470     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit process_attribute');
3471   EXCEPTION
3472     WHEN OTHERS THEN
3473       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'process_attribute Exception when others'||SQLERRM);
3474 
3475       x_return_status := G_RET_STS_UNEXP_ERROR;
3476 
3477       x_return_msg := 'ego_ag_bulkload_pvt.process_attribute - '||SQLERRM;
3478 
3479       RETURN;
3480   END process_attribute;
3481 
3482   /*This procedure is used to do final processing of the attributes.
3483   	Used in the interface and API flow.
3484   	p_attr_tbl        IN OUT NOCOPY Attributes plsql table
3485   	x_return_status OUT NOCOPY parameter that returns the status*/
3486   PROCEDURE Process_attr
3487        (p_attr_tbl       IN OUT NOCOPY ego_metadata_pub.ego_attr_group_cols_tbl,
3488         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
3489   IS
3490     x_errorcode  NUMBER;
3491     x_msg_count  NUMBER;
3492     x_msg_data   VARCHAR2(2000);
3493 
3494     lv_proc VARCHAR2(30) := 'Process_attr';
3495   BEGIN
3496     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering Process_attr');
3497 
3498     x_return_status := G_RET_STS_SUCCESS;
3499 
3500     common_attr_validations(p_attr_tbl => p_attr_tbl,x_return_status => x_return_status, x_return_msg => x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3501     handle_null_attr(p_attr_tbl => p_attr_tbl,x_return_status => x_return_status, x_return_msg => x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3502 
3503     FOR i IN p_attr_tbl.FIRST.. p_attr_tbl.LAST LOOP
3504       IF (P_attr_tbl(i).process_status = G_PROCESS_RECORD
3505           AND P_attr_tbl(i).transaction_type = 'CREATE') THEN
3506         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Create Attribute');
3507 
3508         ego_ext_fwk_pub.Create_attribute(p_api_version => 1.0
3509         								 ,p_application_id => P_attr_tbl(i).application_id
3510         								 ,p_attr_group_type => P_attr_tbl(i).attr_group_type
3511         								 ,p_attr_group_name => P_attr_tbl(i).attr_group_name
3512         								 ,p_internal_name => P_attr_tbl(i).internal_name
3513         								 ,p_display_name => P_attr_tbl(i).display_name
3514         								 ,p_description => P_attr_tbl(i).description
3515         								 ,p_sequence => P_attr_tbl(i).SEQUENCE
3516         								 ,p_data_type => P_attr_tbl(i).data_type
3517         								 ,p_required => P_attr_tbl(i).required_flag
3518         								 ,p_searchable => P_attr_tbl(i).search_flag
3519         								 ,p_column => P_attr_tbl(i).application_column_name
3520         								 ,p_is_column_indexed => NULL
3521         								 ,p_value_set_id => P_attr_tbl(i).flex_value_set_id
3522         								 ,p_info_1 => P_attr_tbl(i).info_1
3523         								 ,p_default_value => P_attr_tbl(i).default_value
3524         								 ,p_unique_key_flag => P_attr_tbl(i).unique_key_flag
3525         								 ,p_enabled => P_attr_tbl(i).enabled_flag
3526         								 ,p_display => P_attr_tbl(i).display_code
3527         								 ,p_uom_class => P_attr_tbl(i).uom_class
3528         								 ,p_owner => G_USER_ID
3529         								 ,p_lud => SYSDATE
3530         								 ,p_init_msg_list => NULL
3531         								 ,p_commit => fnd_api.g_false
3532         								 ,x_return_status => x_return_status
3533         								 ,x_errorcode => x_errorcode
3534         								 ,x_msg_count => x_msg_count
3535         								 ,x_msg_data => x_msg_data);
3536 
3537         IF (x_return_status = G_RET_STS_SUCCESS) THEN
3538           P_attr_tbl(i).process_status := g_success_record;
3539         ELSIF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
3540           x_return_msg := x_msg_data;
3541           RETURN;
3542         ELSE
3543           write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_attr_tbl(i).transaction_id||' (AG,ATTR) = ('||P_attr_tbl(i).attr_group_name||','||P_attr_tbl(i).internal_name||'). ' ||'Error in creating attribute');
3544 
3545           P_attr_tbl(i).process_status := G_ERROR_RECORD;
3546 
3547           G_TOKEN_TABLE(1).Token_Name   :=  'Entity_Name';
3548           G_TOKEN_TABLE(1).Token_Value  :=  G_ENTITY_ATTR;
3549           G_TOKEN_TABLE(2).Token_Name   :=  'Transaction_Type';
3550           G_TOKEN_TABLE(2).Token_Value  :=  P_attr_tbl(i).transaction_type;
3551           G_TOKEN_TABLE(3).Token_Name   :=  'Package_Name';
3552           G_TOKEN_TABLE(3).Token_Value  :=  'ego_ext_fwk_pub';
3553           G_TOKEN_TABLE(4).Token_Name   :=  'Proc_Name';
3554           G_TOKEN_TABLE(4).Token_Value  :=  'Create_attribute';
3555 
3556           error_handler.Add_error_message(p_message_name => 'EGO_ENTITY_API_FAILED',p_application_id => 'EGO',
3557                                           p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3558                                           p_row_identifier => P_attr_tbl(i).transaction_id,
3559                                           p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
3560 
3561           error_handler.Add_error_message(p_message_text => x_msg_data,p_application_id => 'EGO',
3562                                           p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3563                                           p_row_identifier => P_attr_tbl(i).transaction_id,
3564                                           p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
3565 
3566           G_TOKEN_TABLE.DELETE;
3567         END IF;
3568       ELSIF (P_attr_tbl(i).process_status = G_PROCESS_RECORD
3569              AND P_attr_tbl(i).transaction_type = 'UPDATE') THEN
3570         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Update Attribute');
3571 
3572         ego_ext_fwk_pub.Update_attribute(p_api_version => 1.0
3573         								 ,p_application_id => P_attr_tbl(i).application_id
3574         								 ,p_attr_group_type => P_attr_tbl(i).attr_group_type
3575         								 ,p_attr_group_name => P_attr_tbl(i).attr_group_name
3576         								 ,p_internal_name => P_attr_tbl(i).internal_name
3577         								 ,p_display_name => P_attr_tbl(i).display_name
3578         								 ,p_description => P_attr_tbl(i).description
3579         								 ,p_sequence => P_attr_tbl(i).SEQUENCE
3580         								 ,p_required => P_attr_tbl(i).required_flag
3581         								 ,p_searchable => P_attr_tbl(i).search_flag
3582         								 ,p_column => P_attr_tbl(i).application_column_name
3583         								 ,p_value_set_id => P_attr_tbl(i).flex_value_set_id
3584         								 ,p_info_1 => P_attr_tbl(i).info_1
3585         								 ,p_default_value => P_attr_tbl(i).default_value
3586         								 ,p_unique_key_flag => P_attr_tbl(i).unique_key_flag
3587         								 ,p_enabled => P_attr_tbl(i).enabled_flag
3588         								 ,p_display => P_attr_tbl(i).display_code
3589         								 ,p_owner => G_USER_ID
3590         								 ,p_lud => SYSDATE
3591         								 ,p_init_msg_list => NULL
3592         								 ,p_commit => fnd_api.g_false
3593         								 ,p_is_nls_mode => NULL
3594         								 ,p_uom_class => P_attr_tbl(i).uom_class
3595         								 ,x_return_status => x_return_status
3596         								 ,x_errorcode => x_errorcode
3597         								 ,x_msg_count => x_msg_count
3598         								 ,x_msg_data => x_msg_data);
3599 
3600         IF (x_return_status = G_RET_STS_SUCCESS) THEN
3601           P_attr_tbl(i).process_status := g_success_record;
3602         ELSIF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
3603           x_return_msg := x_msg_data;
3604           RETURN;
3605         ELSE
3606           write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_attr_tbl(i).transaction_id||' (AG,ATTR) = ('||P_attr_tbl(i).attr_group_name||','||P_attr_tbl(i).internal_name||'). ' ||'Error in updating attribute');
3607 
3608           P_attr_tbl(i).process_status := G_ERROR_RECORD;
3609 
3610           G_TOKEN_TABLE(1).Token_Name   :=  'Entity_Name';
3611           G_TOKEN_TABLE(1).Token_Value  :=  G_ENTITY_ATTR;
3612           G_TOKEN_TABLE(2).Token_Name   :=  'Transaction_Type';
3613           G_TOKEN_TABLE(2).Token_Value  :=  P_attr_tbl(i).transaction_type;
3614           G_TOKEN_TABLE(3).Token_Name   :=  'Package_Name';
3615           G_TOKEN_TABLE(3).Token_Value  :=  'ego_ext_fwk_pub';
3616           G_TOKEN_TABLE(4).Token_Name   :=  'Proc_Name';
3617           G_TOKEN_TABLE(4).Token_Value  :=  'Update_attribute';
3618 
3619           error_handler.Add_error_message(p_message_name => 'EGO_ENTITY_API_FAILED',p_application_id => 'EGO',
3620                                           p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3621                                           p_row_identifier => P_attr_tbl(i).transaction_id,
3622                                           p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
3623 
3624           error_handler.Add_error_message(p_message_text => x_msg_data,p_application_id => 'EGO',
3625                                           p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3626                                           p_row_identifier => P_attr_tbl(i).transaction_id,
3627                                           p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
3628 
3629           G_TOKEN_TABLE.DELETE;
3630 
3631         END IF;
3632       ELSIF (P_attr_tbl(i).process_status = G_PROCESS_RECORD
3633              AND P_attr_tbl(i).transaction_type = 'DELETE') THEN
3634         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Delete Attribute');
3635 
3636         ego_ext_fwk_pub.Delete_attribute(p_api_version => 1.0
3637         								 ,p_application_id => P_attr_tbl(i).application_id
3638         								 ,p_attr_group_type => P_attr_tbl(i).attr_group_type
3639         								 ,p_attr_group_name => P_attr_tbl(i).attr_group_name
3640         								 ,p_attr_name => P_attr_tbl(i).internal_name
3641         								 ,p_init_msg_list => NULL
3642         								 ,p_commit => fnd_api.g_false
3643         								 ,x_return_status => x_return_status
3644         								 ,x_errorcode => x_errorcode
3645         								 ,x_msg_count => x_msg_count
3646         								 ,x_msg_data => x_msg_data);
3647 
3648         IF (x_return_status = G_RET_STS_SUCCESS) THEN
3649           P_attr_tbl(i).process_status := g_success_record;
3650         ELSIF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
3651           x_return_msg := x_msg_data;
3652           RETURN;
3653         ELSE
3654           write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_attr_tbl(i).transaction_id||' (AG,ATTR) = ('||P_attr_tbl(i).attr_group_name||','||P_attr_tbl(i).internal_name||'). ' ||'Error is deleting attribute');
3655 
3656           P_attr_tbl(i).process_status := G_ERROR_RECORD;
3657 
3658           G_TOKEN_TABLE(1).Token_Name   :=  'Entity_Name';
3659           G_TOKEN_TABLE(1).Token_Value  :=  G_ENTITY_ATTR;
3660           G_TOKEN_TABLE(2).Token_Name   :=  'Transaction_Type';
3661           G_TOKEN_TABLE(2).Token_Value  :=  P_attr_tbl(i).transaction_type;
3662           G_TOKEN_TABLE(3).Token_Name   :=  'Package_Name';
3663           G_TOKEN_TABLE(3).Token_Value  :=  'ego_ext_fwk_pub';
3664           G_TOKEN_TABLE(4).Token_Name   :=  'Proc_Name';
3665           G_TOKEN_TABLE(4).Token_Value  :=  'Delete_attribute';
3666 
3667           error_handler.Add_error_message(p_message_name => 'EGO_ENTITY_API_FAILED',p_application_id => 'EGO',
3668                                           p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3669                                           p_row_identifier => P_attr_tbl(i).transaction_id,
3670                                           p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
3671 
3672           error_handler.Add_error_message(p_message_text => x_msg_data,p_application_id => 'EGO',
3673                                           p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3674                                           p_row_identifier => P_attr_tbl(i).transaction_id,
3675                                           p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
3676 
3677           G_TOKEN_TABLE.DELETE;
3678         END IF;
3679       END IF;
3680     END LOOP;
3681 
3682     IF (G_COMMIT = true AND G_FLOW_TYPE = G_EGO_MD_API) THEN
3683       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'COMMIT issed after Attribute Processing');
3684 
3685       COMMIT;
3686     END IF;
3687 
3688     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit Process_attr');
3689   EXCEPTION
3690     WHEN OTHERS THEN
3691       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Process_attr Exception when others'||SQLERRM);
3692 
3693       x_return_status := G_RET_STS_UNEXP_ERROR;
3694 
3695       x_return_msg := 'ego_ag_bulkload_pvt.Process_attr - '||SQLERRM;
3696 
3697       RETURN;
3698   END Process_attr;
3699 
3700   /*This is the main procedure called to import attribute groups, data level and attributes
3701   	Used in the Interface flow.
3702   	p_set_process_id   IN   Set_Process_ID
3703   	x_return_status OUT NOCOPY parameter that returns the status*/
3704   PROCEDURE import_ag_intf
3705        (p_set_process_id    IN VARCHAR2,
3706         x_return_status     OUT NOCOPY VARCHAR2,
3707         x_return_msg        OUT NOCOPY VARCHAR2)
3708   IS
3709     /*Cursor to load plsql table from ego_attr_groups_interface table*/
3710     CURSOR c_ag IS
3711       SELECT *
3712       FROM   ego_attr_groups_interface
3713       WHERE  process_status = G_PROCESS_RECORD
3714       AND (p_set_process_id IS NULL OR set_process_id = p_set_process_id);
3715     /*Cursor to load plsql table from ego_attr_groups_dl_interface table*/
3716     CURSOR c_agdl IS
3717       SELECT *
3718       FROM   ego_attr_groups_dl_interface
3719       WHERE  process_status = G_PROCESS_RECORD
3720       AND (p_set_process_id IS NULL OR set_process_id = p_set_process_id);
3721     /*Cursor to load plsql table from ego_attr_group_cols_intf table*/
3722     CURSOR c_attr IS
3723       SELECT *
3724       FROM   ego_attr_group_cols_intf
3725       WHERE  process_status = G_PROCESS_RECORD
3726       AND (p_set_process_id IS NULL OR set_process_id = p_set_process_id);
3727 
3728     l_ego_ag_tbl    ego_metadata_pub.ego_attr_groups_tbl;
3729     l_ego_agdl_tbl  ego_metadata_pub.ego_attr_groups_dl_tbl;
3730     l_ego_attr_tbl  ego_metadata_pub.ego_attr_group_cols_tbl;
3731 
3732     lv_proc VARCHAR2(30) := 'import_ag_intf';
3733   BEGIN
3734     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entered import_ag_intf.');
3735 
3736     x_return_status := G_RET_STS_SUCCESS;
3737 
3738     error_handler.Set_bo_identifier(G_BO_IDENTIFIER_AG);
3739 
3740     G_FLOW_TYPE := G_EGO_MD_INTF;
3741 
3742     G_SET_PROCESS_ID := p_set_process_id;
3743 
3744     Initialize(x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3745 
3746     IF (G_AG_COUNT <> 0 OR G_DL_COUNT <> 0 OR G_ATTR_COUNT <> 0) THEN
3747 	    Validate_transaction_type(x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3748 	    IF (G_AG_COUNT <> 0 OR G_DL_COUNT <> 0) THEN
3749 		    bulk_validate_attr_groups(x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3750 
3751 		    write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Load and process AG');
3752 
3753 		    /*Load PL/SQL tables for AG and then call processing method*/
3754 		    OPEN c_ag;
3755 
3756 		    LOOP
3757 		      FETCH c_ag BULK COLLECT INTO l_ego_ag_tbl LIMIT 2000;
3758 
3759 		      IF (l_ego_ag_tbl.COUNT <> 0) THEN
3760 
3761 			      Process_ag(p_ag_tbl => l_ego_ag_tbl,x_return_status => x_return_status, x_return_msg => x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3762 
3763 			      update_intf_attr_groups(p_ag_tbl => l_ego_ag_tbl,x_return_status => x_return_status, x_return_msg => x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3764 
3765 			      COMMIT;
3766 			  END IF;
3767 		      EXIT WHEN l_ego_ag_tbl.COUNT < 2000;
3768 		    END LOOP;
3769 
3770 		    CLOSE c_ag;
3771 
3772 		    write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'AG processed');
3773 
3774 		    write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Load and process DL');
3775 
3776 		    /*Load PL/SQL tables for DL and then call processing method*/
3777 		    OPEN c_agdl;
3778 
3779 		    LOOP
3780 		      FETCH c_agdl BULK COLLECT INTO l_ego_agdl_tbl LIMIT 2000;
3781 
3782 		      IF(l_ego_agdl_tbl.COUNT <> 0) THEN
3783 			      Process_dl(p_agdl_tbl => l_ego_agdl_tbl,x_return_status => x_return_status, x_return_msg => x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3784 
3785 			      update_intf_data_level(p_agdl_tbl => l_ego_agdl_tbl,x_return_status => x_return_status, x_return_msg => x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3786 
3787 			      COMMIT;
3788 		      END IF;
3789 		      EXIT WHEN l_ego_agdl_tbl.COUNT < 2000;
3790 		    END LOOP;
3791 
3792 		    CLOSE c_agdl;
3793 
3794 		    write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'DL Processed');
3795 
3796 		    delete_ag_none_dl(x_return_status => x_return_status, x_return_msg => x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3797 		END IF;
3798 
3799 	    IF (G_ATTR_COUNT <> 0) THEN
3800 		    bulk_validate_attribute(x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3801 
3802 		    write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Load and process Attributes');
3803 
3804 		    /*Load PL/SQL tables for Attributes and then call processing method*/
3805 		    OPEN c_attr;
3806 
3807 		    LOOP
3808 		      FETCH c_attr BULK COLLECT INTO l_ego_attr_tbl LIMIT 2000;
3809 
3810 		      IF (l_ego_attr_tbl.COUNT <> 0) THEN
3811 			      Process_attr(p_attr_tbl => l_ego_attr_tbl,x_return_status => x_return_status, x_return_msg => x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3812 
3813 			      update_intf_attribute(p_attr_tbl => l_ego_attr_tbl,x_return_status => x_return_status, x_return_msg => x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
3814 
3815 			      COMMIT;
3816 			  END IF;
3817 		      EXIT WHEN l_ego_attr_tbl.COUNT < 2000;
3818 		    END LOOP;
3819 
3820 		    CLOSE c_attr;
3821 
3822 		    write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Processed Attributes');
3823 		END IF;
3824   	END IF;
3825   	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit import_ag_intf');
3826   EXCEPTION
3827     WHEN OTHERS THEN
3828       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'import_ag_intf Exception when others'||SQLERRM);
3829 
3830       x_return_status := G_RET_STS_UNEXP_ERROR;
3831 
3832       x_return_msg := 'ego_ag_bulkload_pvt.import_ag_intf - '||SQLERRM;
3833 
3834       RETURN;
3835   END import_ag_intf;
3836 
3837   /*This procedure is used for value to ID conversion for Attribute group plsql tables.
3838   	Used in the API flow.
3839   	p_ag_tbl        IN OUT NOCOPY Attribute group plsql table
3840   	x_return_status OUT NOCOPY parameter that returns the status*/
3841   PROCEDURE Value_to_id_ag_tbl
3842        (p_ag_tbl         IN OUT NOCOPY ego_metadata_pub.ego_attr_groups_tbl,
3843         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
3844   IS
3845     lv_smt  NUMBER;
3846 
3847     lv_proc VARCHAR2(30) := 'Value_to_id_ag_tbl';
3848   BEGIN
3849     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering Value_to_id_ag_tbl');
3850 
3851     x_return_status := G_RET_STS_SUCCESS;
3852 
3853     FOR i IN p_ag_tbl.FIRST.. p_ag_tbl.LAST LOOP
3854       IF (P_ag_tbl(i).process_status = G_PROCESS_RECORD) THEN
3855         lv_smt := 1;
3856 
3857         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
3858 
3859         /*Sets the transaction_id*/
3860         SELECT mtl_system_items_interface_s.nextval
3861         INTO   P_ag_tbl(i).transaction_id
3862         FROM   dual;
3863 
3864         lv_smt := 2;
3865 
3866         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
3867 
3868         /*Sets the Attribute ID if present for Update and Sync flow. If not present then flags an error EGO_AG_INVALID for UPDATE flow
3869 and for sync flow updates the transaction type to CREATE*/
3870         IF ((P_ag_tbl(i).transaction_type = G_OPR_UPDATE
3871               OR P_ag_tbl(i).transaction_type = G_OPR_SYNC)
3872             AND P_ag_tbl(i).attr_group_id  IS NULL
3873             AND P_ag_tbl(i).attr_group_name  IS NOT NULL) THEN
3874           BEGIN
3875             SELECT attr_group_id,
3876                    'UPDATE'
3877             INTO   P_ag_tbl(i).attr_group_id,P_ag_tbl(i).transaction_type
3878             FROM   ego_fnd_dsc_flx_ctx_ext
3879             WHERE  application_id = g_ego_application_id
3880                    AND descriptive_flexfield_name = P_ag_tbl(i).attr_group_type
3881                    AND descriptive_flex_context_code = P_ag_tbl(i).attr_group_name;
3882           EXCEPTION
3883             WHEN no_data_found THEN
3884               IF (P_ag_tbl(i).transaction_type = G_OPR_SYNC) THEN
3885                 P_ag_tbl(i).transaction_type := G_OPR_CREATE;
3886               ELSE
3887                 write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_ag_tbl(i).transaction_id||' (AG) = ('||P_ag_tbl(i).attr_group_name||'). ' ||'Attribute Group does not exist in the system');
3888 
3889                 P_ag_tbl(i).process_status := G_ERROR_RECORD;
3890 
3891                 x_return_status := G_RET_STS_ERROR;
3892 
3893                 error_handler.Add_error_message(p_message_name => 'EGO_AG_INVALID',p_application_id => 'EGO',
3894                                                 p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
3895                                                 p_row_identifier => P_ag_tbl(i).transaction_id,
3896                                                 p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
3897               END IF;
3898             WHEN OTHERS THEN
3899               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Value_to_id_ag_tbl Exception when others smt 2');
3900 
3901               x_return_status := G_RET_STS_UNEXP_ERROR;
3902 
3903               x_return_msg := 'ego_ag_bulkload_pvt.Value_to_id_ag_tbl smt 2- '||SQLERRM;
3904 
3905       		  RETURN;
3906           END;
3907         END IF;
3908       END IF;
3909     END LOOP;
3910 
3911     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit Value_to_id_ag_tbl');
3912   EXCEPTION
3913     WHEN OTHERS THEN
3914       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Value_to_id_ag_tbl Exception when others'||SQLERRM);
3915 
3916       x_return_status := G_RET_STS_UNEXP_ERROR;
3917 
3918       x_return_msg := 'ego_ag_bulkload_pvt.Value_to_id_ag_tbl - '||SQLERRM;
3919 
3920       RETURN;
3921   END Value_to_id_ag_tbl;
3922 
3923   /*This procedure is used for value to ID conversion for Attribute group
3924     data level plsql tables. Used in the API flow.
3925     p_agdl_tbl      IN OUT NOCOPY Attribute group data level plsql table
3926   	x_return_status OUT NOCOPY parameter that returns the status*/
3927   PROCEDURE Value_to_id_dl_tbl
3928        (p_agdl_tbl       IN OUT NOCOPY ego_metadata_pub.ego_attr_groups_dl_tbl,
3929         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
3930   IS
3931     lv_smt   NUMBER;
3932     lv_flag  VARCHAR2(1);
3933     lv_proc VARCHAR2(30) := 'Value_to_id_dl_tbl';
3934   BEGIN
3935     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering Value_to_id_dl_tbl');
3936 
3937     x_return_status := G_RET_STS_SUCCESS;
3938 
3939     FOR i IN p_agdl_tbl.FIRST.. p_agdl_tbl.LAST LOOP
3940       IF (P_agdl_tbl(i).process_status = G_PROCESS_RECORD) THEN
3941         lv_smt := 1;
3942 
3943         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
3944 
3945         /*Sets the transaction_id*/
3946         SELECT mtl_system_items_interface_s.nextval
3947         INTO   P_agdl_tbl(i).transaction_id
3948         FROM   dual;
3949 
3950         lv_smt := 2;
3951 
3952         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
3953 
3954         /*Sets the View Privilege ID and returns an error is it doesnt existing in the system*/
3955         IF (P_agdl_tbl(i).view_privilege_id  IS NULL
3956             AND P_agdl_tbl(i).view_privilege_name IS NOT NULL
3957             AND P_agdl_tbl(i).view_privilege_name <> G_NULL_CHAR) THEN
3958           BEGIN
3959             SELECT function_id
3960             INTO   P_agdl_tbl(i).view_privilege_id
3961             FROM   fnd_form_functions
3962             WHERE  function_name = P_agdl_tbl(i).view_privilege_name;
3963           EXCEPTION
3964             WHEN no_data_found THEN
3965               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_agdl_tbl(i).transaction_id||' (AG,DL,VS) = ('
3966               ||P_agdl_tbl(i).attr_group_name||','||P_agdl_tbl(i).data_level_name||','||P_agdl_tbl(i).view_privilege_name
3967               ||'). ' ||'View privilege does not exist in the system');
3968 
3969               P_agdl_tbl(i).process_status := G_ERROR_RECORD;
3970 
3971               x_return_status := G_RET_STS_ERROR;
3972 
3973               error_handler.Add_error_message(p_message_name => 'EGO_VIEW_PRIV_NOT_EXIST',
3974                                               p_application_id => 'EGO',p_token_tbl => g_token_table,
3975                                               p_message_type => G_RET_STS_ERROR,p_row_identifier => P_agdl_tbl(i).transaction_id,
3976                                               p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
3977             WHEN OTHERS THEN
3978               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_agdl_tbl(i).transaction_id||' (AG,DL,VS) = ('
3979               ||P_agdl_tbl(i).attr_group_name||','||P_agdl_tbl(i).data_level_name||','||P_agdl_tbl(i).view_privilege_name||'). '
3980               ||'Value_to_id_dl_tbl Exception when others smt 2');
3981 
3982               x_return_status := G_RET_STS_UNEXP_ERROR;
3983 
3984               error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
3985                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
3986                                               p_row_identifier => P_agdl_tbl(i).transaction_id,
3987                                               p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
3988 
3989               x_return_msg := 'ego_ag_bulkload_pvt.Value_to_id_dl_tbl smt 2- '||SQLERRM;
3990 
3991       		  RETURN;
3992           END;
3993         END IF;
3994 
3995         lv_smt := 3;
3996 
3997         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 3');
3998 
3999         /*Sets the Edit Privilege ID and returns an error is it doesnt existing in the system*/
4000         IF (P_agdl_tbl(i).edit_privilege_id  IS NULL
4001             AND P_agdl_tbl(i).edit_privilege_name IS NOT NULL
4002             AND P_agdl_tbl(i).edit_privilege_name <> G_NULL_CHAR) THEN
4003           BEGIN
4004             SELECT function_id
4005             INTO   P_agdl_tbl(i).edit_privilege_id
4006             FROM   fnd_form_functions
4007             WHERE  function_name = P_agdl_tbl(i).edit_privilege_name;
4008           EXCEPTION
4009             WHEN no_data_found THEN
4010               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_agdl_tbl(i).transaction_id||' (AG,DL,VS) = ('
4011               ||P_agdl_tbl(i).attr_group_name||','||P_agdl_tbl(i).data_level_name||','||P_agdl_tbl(i).edit_privilege_name||'). '
4012               ||'Edit privilege does not exist in the system');
4013 
4014               P_agdl_tbl(i).process_status := G_ERROR_RECORD;
4015 
4016               x_return_status := G_RET_STS_ERROR;
4017 
4018               error_handler.Add_error_message(p_message_name => 'EGO_EDIT_PRIV_NOT_EXIST',
4019                                               p_application_id => 'EGO',p_token_tbl => g_token_table,
4020                                               p_message_type => G_RET_STS_ERROR,p_row_identifier => P_agdl_tbl(i).transaction_id,
4021                                               p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
4022             WHEN OTHERS THEN
4023               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_agdl_tbl(i).transaction_id||' (AG,DL,VS) = ('
4024               ||P_agdl_tbl(i).attr_group_name||','||P_agdl_tbl(i).data_level_name||','||P_agdl_tbl(i).edit_privilege_name||'). '
4025               ||'Exception: '||SQLERRM);
4026 
4027               x_return_status := G_RET_STS_UNEXP_ERROR;
4028 
4029               error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
4030                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
4031                                               p_row_identifier => P_agdl_tbl(i).transaction_id,
4032                                               p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
4033 
4034 			  x_return_msg := 'ego_ag_bulkload_pvt.Value_to_id_dl_tbl smt 3- '||SQLERRM;
4035 
4036       		  RETURN;
4037           END;
4038         END IF;
4039 
4040         lv_smt := 4;
4041 
4042         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 4');
4043 
4044         /*Sets the DATA LEVEL ID and returns an error is it doesnt existing in the system*/
4045         IF (P_agdl_tbl(i).data_level_id  IS NULL
4046             AND P_agdl_tbl(i).data_level_name  IS NOT NULL) THEN
4047           BEGIN
4048             SELECT data_level_id
4049             INTO   P_agdl_tbl(i).data_level_id
4050             FROM   ego_data_level_b
4051             WHERE  attr_group_type = P_agdl_tbl(i).attr_group_type
4052                    AND application_id = g_ego_application_id
4053                    AND data_level_name = P_agdl_tbl(i).data_level_name;
4054           EXCEPTION
4055             WHEN no_data_found THEN
4056               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_agdl_tbl(i).transaction_id||' (AG,DL) = ('||P_agdl_tbl(i).attr_group_name||','||P_agdl_tbl(i).data_level_name||'). ' ||'Data Level does not exist in the system');
4057 
4058               P_agdl_tbl(i).process_status := G_ERROR_RECORD;
4059 
4060               x_return_status := G_RET_STS_ERROR;
4061 
4062               error_handler.Add_error_message(p_message_name => 'EGO_DL_NOT_EXIST',p_application_id => 'EGO',
4063                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4064                                               p_row_identifier => P_agdl_tbl(i).transaction_id,
4065                                               p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
4066             WHEN OTHERS THEN
4067               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_agdl_tbl(i).transaction_id||' (AG,DL) = ('||P_agdl_tbl(i).attr_group_name||','||P_agdl_tbl(i).data_level_name||'). ' ||'Exception: '||SQLERRM);
4068 
4069               x_return_status := G_RET_STS_UNEXP_ERROR;
4070 
4071               error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
4072                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
4073                                               p_row_identifier => P_agdl_tbl(i).transaction_id,
4074                                               p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
4075 
4076               x_return_msg := 'ego_ag_bulkload_pvt.Value_to_id_dl_tbl smt 4 - '||SQLERRM;
4077 
4078       		  RETURN;
4079           END;
4080         END IF;
4081 
4082         lv_smt := 5;
4083 
4084         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 5');
4085 
4086         /*Sets the SYNC Transaction Type to CREATE or UPDATE*/
4087         IF (P_agdl_tbl(i).data_level_id  IS NOT NULL
4088             AND P_agdl_tbl(i).attr_group_id  IS NOT NULL
4089             AND P_agdl_tbl(i).transaction_type = G_OPR_SYNC) THEN
4090           BEGIN
4091             SELECT 'Y'
4092             INTO   lv_flag
4093             FROM   ego_attr_group_dl
4094             WHERE  data_level_id = P_agdl_tbl(i).data_level_id
4095                    AND attr_group_id = P_agdl_tbl(i).attr_group_id;
4096 
4097             IF lv_flag = 'Y' THEN
4098               P_agdl_tbl(i).transaction_type := G_OPR_UPDATE;
4099             END IF;
4100           EXCEPTION
4101             WHEN no_data_found THEN
4102               P_agdl_tbl(i).transaction_type := G_OPR_CREATE;
4103             WHEN OTHERS THEN
4104               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Value_to_id_dl_tbl Exception when others smt 5');
4105 
4106               x_return_status := G_RET_STS_UNEXP_ERROR;
4107 
4108               error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
4109                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
4110                                               p_row_identifier => P_agdl_tbl(i).transaction_id,
4111                                               p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
4112 
4113               x_return_msg := 'ego_ag_bulkload_pvt.Value_to_id_dl_tbl smt 5 - '||SQLERRM;
4114 
4115       		  RETURN;
4116           END;
4117         END IF;
4118       END IF;
4119     END LOOP;
4120   EXCEPTION
4121     WHEN OTHERS THEN
4122       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Value_to_id_dl_tbl Exception when others'||SQLERRM);
4123 
4124       x_return_status := G_RET_STS_UNEXP_ERROR;
4125 
4126       x_return_msg := 'ego_ag_bulkload_pvt.Value_to_id_dl_tbl - '||SQLERRM;
4127 
4128       RETURN;
4129   END Value_to_id_dl_tbl;
4130 
4131   /*This procedure is used for value to ID conversion for Attributes plsql tables.
4132   	Used in the API flow.
4133   	p_attr_tbl      IN OUT NOCOPY Attributes plsql table
4134   	x_return_status OUT NOCOPY parameter that returns the status*/
4135   PROCEDURE Value_to_id_attr_tbl
4136        (p_attr_tbl       IN OUT NOCOPY ego_metadata_pub.ego_attr_group_cols_tbl,
4137         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
4138   IS
4139     lv_smt  NUMBER; --Statement counter
4140   	lv_proc VARCHAR2(30) := 'Value_to_id_attr_tbl';
4141   BEGIN
4142     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering Value_to_id_attr_tbl');
4143 
4144     x_return_status := G_RET_STS_SUCCESS;
4145 
4146     FOR i IN p_attr_tbl.FIRST.. p_attr_tbl.LAST LOOP
4147       IF (P_attr_tbl(i).process_status = G_PROCESS_RECORD) THEN
4148         lv_smt := 1;
4149 
4150         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
4151 
4152         /*Sets the Attribute group id when the Internal Attribute group name is given*/
4153         IF (P_attr_tbl(i).attr_group_id IS NULL
4154             AND P_attr_tbl(i).attr_group_name IS NOT NULL) THEN
4155           BEGIN
4156             SELECT attr_group_id
4157             INTO   P_attr_tbl(i).attr_group_id
4158             FROM   ego_fnd_dsc_flx_ctx_ext
4159             WHERE  application_id = g_ego_application_id
4160                    AND descriptive_flexfield_name = P_attr_tbl(i).attr_group_type
4161                    AND descriptive_flex_context_code = P_attr_tbl(i).attr_group_name;
4162           EXCEPTION
4163             WHEN no_data_found THEN
4164               x_return_status := G_RET_STS_ERROR;
4165 
4166               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_attr_tbl(i).transaction_id||' (AG,ATTR) = ('||P_attr_tbl(i).attr_group_name||','||P_attr_tbl(i).internal_name||'). ' ||'Attribute Group does not exist in the system');
4167 
4168               error_handler.Add_error_message(p_message_name => 'EGO_AG_INVALID',p_application_id => 'EGO',
4169                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4170                                               p_row_identifier => P_attr_tbl(i).transaction_id,
4171                                               p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4172             WHEN OTHERS THEN
4173               x_return_status := G_RET_STS_UNEXP_ERROR;
4174 
4175               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_attr_tbl(i).transaction_id||' (AG,ATTR) = ('||P_attr_tbl(i).attr_group_name||','||P_attr_tbl(i).internal_name||'). ' ||'Exception: '||SQLERRM);
4176 
4177               error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
4178                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
4179                                               p_row_identifier => P_attr_tbl(i).transaction_id,
4180                                               p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4181 
4182               x_return_msg := 'ego_ag_bulkload_pvt.Value_to_id_attr_tbl smt 1 - '||SQLERRM;
4183 
4184       		  RETURN;
4185           END;
4186         END IF;
4187 
4188         lv_smt := 2;
4189 
4190         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
4191 
4192         /*Sets the application ID*/
4193         P_attr_tbl(i).application_id := g_ego_application_id;
4194 
4195         lv_smt := 3;
4196 
4197         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 3');
4198 
4199         /*Sets the Attr_id for the update and sync flow. Also handles convert SYNC to CREATE/UPDATE flow*/
4200         IF (P_attr_tbl(i).attr_id IS NULL
4201             AND P_attr_tbl(i).internal_name IS NOT NULL
4202             AND (P_attr_tbl(i).transaction_type = G_OPR_UPDATE
4203                   OR P_attr_tbl(i).transaction_type = G_OPR_SYNC)) THEN
4204           BEGIN
4205             SELECT efdcue.attr_id
4206             INTO   P_attr_tbl(i).attr_id
4207             FROM   fnd_descr_flex_column_usages fdfcu,
4208                    ego_fnd_df_col_usgs_ext efdcue
4209             WHERE  fdfcu.application_id = efdcue.application_id
4210                    AND fdfcu.descriptive_flexfield_name = efdcue.descriptive_flexfield_name
4211                    AND fdfcu.descriptive_flex_context_code = efdcue.descriptive_flex_context_code
4212                    AND fdfcu.application_column_name = efdcue.application_column_name
4213                    AND fdfcu.application_id = g_ego_application_id
4214                    AND fdfcu.descriptive_flexfield_name = P_attr_tbl(i).attr_group_type
4215                    AND fdfcu.descriptive_flex_context_code = P_attr_tbl(i).attr_group_name
4216                    AND fdfcu.end_user_column_name = P_attr_tbl(i).internal_name;
4217 
4218             IF (P_attr_tbl(i).transaction_type = G_OPR_SYNC) THEN
4219               P_attr_tbl(i).transaction_type := G_OPR_UPDATE;
4220             END IF;
4221           EXCEPTION
4222             WHEN no_data_found THEN
4223               IF (P_attr_tbl(i).transaction_type = G_OPR_SYNC) THEN
4224                 P_attr_tbl(i).transaction_type := G_OPR_CREATE;
4225               ELSE
4226                 x_return_status := G_RET_STS_ERROR;
4227 
4228                 write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_attr_tbl(i).transaction_id||' (AG,ATTR) = ('||P_attr_tbl(i).attr_group_name||','||P_attr_tbl(i).internal_name||'). ' ||'Attribute does not exist in the system');
4229 
4230                 error_handler.Add_error_message(p_message_name => 'EGO_ATTR_NOT_EXISTS',p_application_id => 'EGO',
4231                                                 p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4232                                                 p_row_identifier => P_attr_tbl(i).transaction_id,
4233                                                 p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4234               END IF;
4235             WHEN OTHERS THEN
4236               x_return_status := G_RET_STS_UNEXP_ERROR;
4237 
4238               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
4239               ||P_attr_tbl(i).attr_group_name||','||P_attr_tbl(i).internal_name||'). ' ||'Exception: '||SQLERRM);
4240 
4241               error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
4242                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4243                                               p_row_identifier => P_attr_tbl(i).transaction_id,
4244                                               p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4245 
4246               x_return_msg := 'ego_ag_bulkload_pvt.Value_to_id_attr_tbl smt 3 - '||SQLERRM;
4247 
4248       		  RETURN;
4249           END;
4250         END IF;
4251 
4252         lv_smt := 4;
4253 
4254         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 4');
4255 
4256         /*Sets value set id when the value set name is given*/
4257         IF (P_attr_tbl(i).flex_value_set_id IS NULL
4258             AND P_attr_tbl(i).flex_value_set_name IS NOT NULL
4259             AND P_attr_tbl(i).flex_value_set_name <> G_NULL_CHAR) THEN
4260           BEGIN
4261             SELECT ffvs.flex_value_set_id
4262             INTO   P_attr_tbl(i).flex_value_set_id
4263             FROM   fnd_flex_value_sets ffvs
4264             WHERE  ffvs.flex_value_set_name = P_attr_tbl(i).flex_value_set_name;
4265           EXCEPTION
4266             WHEN no_data_found THEN
4267               x_return_status := G_RET_STS_ERROR;
4268 
4269               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_attr_tbl(i).transaction_id||' (AG,ATTR,VS) = ('
4270               ||P_attr_tbl(i).attr_group_name||','||P_attr_tbl(i).internal_name||','||P_attr_tbl(i).flex_value_set_name||'). '
4271               ||'Value Set does not exist');
4272 
4273               error_handler.Add_error_message(p_message_name => 'EGO_EF_BC_SEL_EXI_VALUE',p_application_id => 'EGO',
4274                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4275                                               p_row_identifier => P_attr_tbl(i).transaction_id,
4276                                               p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4277             WHEN OTHERS THEN
4278               x_return_status := G_RET_STS_UNEXP_ERROR;
4279 
4280               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_attr_tbl(i).transaction_id||' (AG,ATTR,VS) = ('
4281               ||P_attr_tbl(i).attr_group_name||','||P_attr_tbl(i).internal_name||','||P_attr_tbl(i).flex_value_set_name||'). '
4282               ||'Exception : '||SQLERRM);
4283 
4284               error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
4285                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
4286                                               p_row_identifier => P_attr_tbl(i).transaction_id,
4287                                               p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4288 
4289               x_return_msg := 'ego_ag_bulkload_pvt.Value_to_id_attr_tbl smt 4 - '||SQLERRM;
4290 
4291       		  RETURN;
4292           END;
4293         END IF;
4294       END IF;
4295     END LOOP;
4296 
4297     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit Value_to_id_attr_tbl');
4298   EXCEPTION
4299     WHEN OTHERS THEN
4300       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||' Value_to_id_attr_tbl Exception when others'||SQLERRM);
4301 
4302       x_return_status := G_RET_STS_UNEXP_ERROR;
4303 
4304       x_return_msg := 'ego_ag_bulkload_pvt.Value_to_id_attr_tbl - '||SQLERRM;
4305 
4306    	  RETURN;
4307 
4308   END Value_to_id_attr_tbl;
4309 
4310   --
4311   -- Bug 12412639. Issue#1 Added new method
4312   -- to get old attr group record.
4313   -- sreharih. Fri Apr 29 10:22:42 PDT 2011
4314   --
4315 
4316   FUNCTION get_old_ag_record (p_attr_group_id   IN NUMBER)
4317                           RETURN ego_fnd_dsc_flx_ctx_ext%ROWTYPE IS
4318 
4319    l_ret ego_fnd_dsc_flx_ctx_ext%ROWTYPE;
4320 
4321     CURSOR c IS
4322      SELECT *
4323        FROM ego_fnd_dsc_flx_ctx_ext ed
4324       WHERE ed.attr_group_id = p_attr_group_id;
4325 
4326   BEGIN
4327 
4328     OPEN c;
4329     FETCH c INTO l_ret;
4330     CLOSE c;
4331 
4332     RETURN l_ret;
4333 
4334   END get_old_ag_record;
4335 
4336   /*This procedure is used to do Common validations on attribute groups.
4337   	Used in the Interface and API flow.
4338   	p_ag_tbl        IN OUT NOCOPY  Attribute group plsql table
4339   	x_return_status OUT NOCOPY parameter that returns the status*/
4340   PROCEDURE Common_ag_validations
4341        (p_ag_tbl         IN OUT NOCOPY ego_metadata_pub.ego_attr_groups_tbl,
4342         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
4343   IS
4344     lv_smt  NUMBER; --Statement counter
4345     lv_proc VARCHAR2(30) := 'Common_ag_validations';
4346     l_old_ag_record  ego_fnd_dsc_flx_ctx_ext%ROWTYPE; -- Bug 12394675.
4347   BEGIN
4348     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering Common_ag_validations');
4349 
4350     x_return_status := G_RET_STS_SUCCESS;
4351 
4352     FOR i IN p_ag_tbl.FIRST.. p_ag_tbl.LAST LOOP
4353     	IF (p_ag_tbl(i).process_status = G_PROCESS_RECORD) THEN
4354 		      /*Start of common validations*/
4355 		      lv_smt := 1;
4356 
4357 		      write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
4358 
4359 		      IF P_ag_tbl(i).multi_row = 'N'
4360 		         AND Nvl(P_ag_tbl(i).variant,'N') = 'N'
4361 		         AND P_ag_tbl(i).num_of_cols = 0 THEN
4362 		        P_ag_tbl(i).process_status := G_ERROR_RECORD;
4363 
4364 		        x_return_status := G_RET_STS_ERROR;
4365 
4366 		     	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_ag_tbl(i).transaction_id||' (AG) = ('||P_ag_tbl(i).attr_group_name||'). ' ||'Number of columns is not within acceptable range for Single Row Attribute group');
4367 
4368 		      	error_handler.Add_error_message(p_message_name => 'EGO_EF_SIN_COL_VAL',p_application_id => 'EGO',
4369 		                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4370 		                                                  p_row_identifier => P_ag_tbl(i).transaction_id,
4371 		                                                  p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
4372 
4373 
4374 		      END IF;
4375 
4376 		      lv_smt := 2;
4377 
4378 		      write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
4379 
4380 		      IF P_ag_tbl(i).multi_row = 'Y'
4381 		         AND P_ag_tbl(i).num_of_cols = 0 THEN
4382 		        P_ag_tbl(i).process_status := G_ERROR_RECORD;
4383 
4384 		        x_return_status := G_RET_STS_ERROR;
4385 
4386 		        write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_ag_tbl(i).transaction_id||' (AG) = ('||P_ag_tbl(i).attr_group_name||'). ' ||'Number of columns is not within acceptable range for Multi Row Attribute group');
4387 
4388 		        error_handler.Add_error_message(p_message_name => 'EGO_EF_MUL_COL_VAL',p_application_id => 'EGO',
4389 		                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4390 		                                                  p_row_identifier => P_ag_tbl(i).transaction_id,
4391 		                                                  p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
4392 		      END IF;
4393 
4394 		      lv_smt := 3;
4395 
4396 		      write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 3');
4397 
4398 		      IF P_ag_tbl(i).multi_row = 'Y'
4399 		         AND P_ag_tbl(i).num_of_rows = 0 THEN
4400 		        P_ag_tbl(i).process_status := G_ERROR_RECORD;
4401 
4402 		        x_return_status := G_RET_STS_ERROR;
4403 
4404 		        write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_ag_tbl(i).transaction_id||' (AG) = ('||P_ag_tbl(i).attr_group_name||'). ' ||'Number of columns is not within acceptable range for Multi Row Attribute group');
4405 
4406 		        error_handler.Add_error_message(p_message_name => 'EGO_EF_ROW_VAL',p_application_id => 'EGO',
4407 		                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4408 		                                                  p_row_identifier => P_ag_tbl(i).transaction_id,
4409 		                                                  p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
4410 		      END IF;
4411 
4412 		      lv_smt := 4;
4413 
4414 		      write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 4');
4415 
4416 		      IF P_ag_tbl(i).multi_row = 'Y'
4417 		         AND P_ag_tbl(i).variant = 'Y' THEN
4418 		        P_ag_tbl(i).process_status := G_ERROR_RECORD;
4419 
4420 		        x_return_status := G_RET_STS_ERROR;
4421 
4422 		        write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||P_ag_tbl(i).transaction_id||' (AG) = ('||P_ag_tbl(i).attr_group_name||'). ' ||'Invalid MultiRow Variant combination');
4423 
4424 		        error_handler.Add_error_message(p_message_name => 'EGO_MULROW_VAR_COMB',p_application_id => 'EGO',
4425 		                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4426 		                                                  p_row_identifier => P_ag_tbl(i).transaction_id,
4427 		                                                  p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
4428 		      END IF;
4429 
4430 		      lv_smt := 5;
4431 
4432 		      write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 5');
4433 		        --
4434                         -- Bug 12412639. Issue#1 Update of AG is in sync
4435                         -- was erroring out. We must check whether multirow or variant
4436                         -- value changed before we throw the error.
4437                         -- sreharih. Fri Apr 29 10:22:42 PDT 2011
4438                         --
4439                       l_old_ag_record := get_old_ag_record(p_attr_group_id => P_ag_tbl(i).attr_group_id);
4440 
4441                       IF (P_ag_tbl(i).transaction_type = G_OPR_UPDATE
4442                           AND (   ( nvl(P_ag_tbl(i).multi_row,'N') <> nvl(l_old_ag_record.multi_row,'N') ) OR
4443                                   ( nvl(P_ag_tbl(i).variant,'N')   <> nvl(l_old_ag_record.variant,'N')   )
4444                                )
4445                           ) THEN
4446                		        P_ag_tbl(i).process_status := G_ERROR_RECORD;
4447 
4448 	           	        x_return_status := G_RET_STS_ERROR;
4449 
4450 		              	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '|| P_ag_tbl(i).transaction_id ||
4451                                                                              ' (AG) = ('||P_ag_tbl(i).attr_group_name||'). ' ||
4452                                                                              ' Updating the behaviour of attribute group is not allowed');
4453 
4454          		        error_handler.Add_error_message(p_message_name => 'EGO_UPD_BEHAVIOUR',p_application_id => 'EGO',
4455 		                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4456 		                                                  p_row_identifier => P_ag_tbl(i).transaction_id,
4457 		                                                  p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
4458 
4459 	      	      END IF;
4460 
4461 	END IF;
4462     END LOOP;
4463 
4464     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit Common_ag_validations');
4465   EXCEPTION
4466     WHEN OTHERS THEN
4467       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Common_ag_validations Exception when others'||SQLERRM);
4468 
4469       x_return_status := G_RET_STS_UNEXP_ERROR;
4470 
4471       x_return_msg := 'ego_ag_bulkload_pvt.Common_ag_validations - '||SQLERRM;
4472 
4473    	  RETURN;
4474   END Common_ag_validations;
4475 
4476   /*This procedure is used to do Common validations on attribute group data level.
4477   	Used in the Interface and API flow.
4478   	p_agdl_tbl        IN OUT NOCOPY  Attribute group plsql table
4479   	x_return_status OUT NOCOPY parameter that returns the status*/
4480   PROCEDURE Common_dl_validations
4481        (p_agdl_tbl       IN OUT NOCOPY ego_metadata_pub.ego_attr_groups_dl_tbl,
4482         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
4483   IS
4484     lv_smt  NUMBER; --Statement counter
4485   	lv_proc VARCHAR2(30) := 'Common_dl_validations';
4486   BEGIN
4487     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering Common_dl_validations');
4488 
4489     x_return_status := G_RET_STS_SUCCESS;
4490 
4491     FOR i IN p_agdl_tbl.FIRST.. p_agdl_tbl.LAST LOOP
4492     	IF (p_agdl_tbl(i).process_status = G_PROCESS_RECORD) THEN
4493     		/*Check for invalid Pre Event*/
4494     		IF (NVL(p_agdl_tbl(i).pre_business_event_flag,'N') IN ('Y','N')) THEN
4495     			p_agdl_tbl(i).pre_business_event_flag := NVL(p_agdl_tbl(i).pre_business_event_flag,'N');
4496     		ELSE
4497     			p_agdl_tbl(i).process_status := G_ERROR_RECORD;
4498 
4499 		        x_return_status := G_RET_STS_ERROR;
4500 
4501 		      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_agdl_tbl(i).transaction_id||' (AG,DL) = ('||p_agdl_tbl(i).attr_group_name||','||p_agdl_tbl(i).data_level_name||'). ' ||'Invalid Pre event flag.');
4502 
4503 		        error_handler.Add_error_message(p_message_name => 'EGO_INVALID_PRE_EVENT',p_application_id => 'EGO',
4504 		                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4505 		                                                  p_row_identifier => p_agdl_tbl(i).transaction_id,
4506 		                                                  p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_TAB);
4507     		END IF;
4508 
4509     		/*Check for invalid Post Event*/
4510     		IF (NVL(p_agdl_tbl(i).business_event_flag,'N') IN ('Y','N')) THEN
4511     			p_agdl_tbl(i).business_event_flag := NVL(p_agdl_tbl(i).business_event_flag,'N');
4512     		ELSE
4513     			p_agdl_tbl(i).process_status := G_ERROR_RECORD;
4514 
4515 		        x_return_status := G_RET_STS_ERROR;
4516 
4517 		      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_agdl_tbl(i).transaction_id||' (AG,DL) = ('
4518 		      	||p_agdl_tbl(i).attr_group_name||','||p_agdl_tbl(i).data_level_name||'). ' ||'Invalid post event flag.');
4519 
4520 		        error_handler.Add_error_message(p_message_name => 'EGO_INVALID_POST_EVENT',p_application_id => 'EGO',
4521 		                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4522 		                                                  p_row_identifier => p_agdl_tbl(i).transaction_id,
4523 		                                                  p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_TAB);
4524     		END IF;
4525 
4526 
4527     		/*Validation for deleting Business entity*/
4528     		IF (p_agdl_tbl(i).transaction_type = G_OPR_DELETE) THEN
4529     			DECLARE
4530     				lv_flag NUMBER;
4531     				lv_count NUMBER;
4532     			BEGIN
4533     				SELECT 1 INTO lv_flag
4534     				FROM EGO_ATTR_GROUP_DL
4535     				WHERE attr_group_id = p_agdl_tbl(i).attr_group_id
4536     				AND data_level_id = p_agdl_tbl(i).data_level_id;
4537 
4538     				IF (lv_flag = 1) THEN
4539     					SELECT COUNT(1) INTO lv_count
4540     					FROM EGO_ATTR_GROUP_DL
4541     					WHERE attr_group_id = p_agdl_tbl(i).attr_group_id;
4542 
4543     					IF (lv_count = 1) THEN
4544     						p_agdl_tbl(i).process_status := G_ERROR_RECORD;
4545 
4546 					        x_return_status := G_RET_STS_ERROR;
4547 
4548 					      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_agdl_tbl(i).transaction_id||' (AG,DL) = ('
4549 					      	||p_agdl_tbl(i).attr_group_name||','||p_agdl_tbl(i).data_level_name||'). '
4550 					      	||'Cannot delete the business entity since there is only one business entity');
4551 
4552 					        error_handler.Add_error_message(p_message_name => 'EGO_EF_DL_REQD_AG',p_application_id => 'EGO',
4553 					                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4554 					                                                  p_row_identifier => p_agdl_tbl(i).transaction_id,
4555 					                                                  p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_TAB);
4556     					END IF;
4557     				END IF;
4558     			EXCEPTION
4559     				WHEN NO_DATA_FOUND THEN
4560     					p_agdl_tbl(i).process_status := G_ERROR_RECORD;
4561 
4562 				        x_return_status := G_RET_STS_ERROR;
4563 
4564 				      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_agdl_tbl(i).transaction_id||' (AG,DL) = ('
4565 				      	||p_agdl_tbl(i).attr_group_name||','||p_agdl_tbl(i).data_level_name||'). '
4566 				      	||'Cannot delete the business entity since its not associated to the AG');
4567 
4568 				        error_handler.Add_error_message(p_message_name => 'EGO_DL_NOT_ASSOC',p_application_id => 'EGO',
4569 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4570 				                                                  p_row_identifier => p_agdl_tbl(i).transaction_id,
4571 				                                                  p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_TAB);
4572     				WHEN OTHERS THEN
4573     					x_return_status := G_RET_STS_UNEXP_ERROR;
4574 
4575 				      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_agdl_tbl(i).transaction_id||' (AG,DL) = ('
4576 				      	||p_agdl_tbl(i).attr_group_name||','||p_agdl_tbl(i).data_level_name||'). ' ||'Exception -'||SQLERRM);
4577 
4578 				        error_handler.Add_error_message(p_message_text => SQLERRM,p_application_id => 'EGO',
4579 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
4580 				                                                  p_row_identifier => p_agdl_tbl(i).transaction_id,
4581 				                                                  p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_TAB);
4582     			END;
4583     		END IF;
4584 
4585     		/*Sets the attr_group_id if its still NULL and if its present in the system.*/
4586     		IF (p_agdl_tbl(i).attr_group_id IS NULL) THEN
4587     			BEGIN
4588     				SELECT attr_group_id INTO p_agdl_tbl(i).attr_group_id
4589 	                  FROM   ego_fnd_dsc_flx_ctx_ext
4590 	                  WHERE  application_id = G_EGO_APPLICATION_ID
4591 	                         AND descriptive_flexfield_name = p_agdl_tbl(i).attr_group_type
4592 	                         AND descriptive_flex_context_code = p_agdl_tbl(i).attr_group_name;
4593     			EXCEPTION
4594     				WHEN NO_DATA_FOUND THEN
4595     					p_agdl_tbl(i).process_status := G_ERROR_RECORD;
4596 
4597 				        x_return_status := G_RET_STS_ERROR;
4598 
4599 				      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_agdl_tbl(i).transaction_id||' (AG,DL) = ('
4600 				      	||p_agdl_tbl(i).attr_group_name||','||p_agdl_tbl(i).data_level_name||'). ' ||'Attribute group does not exist');
4601 
4602 				        error_handler.Add_error_message(p_message_name => 'EGO_AG_NOT_EXIST',p_application_id => 'EGO',
4603 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4604 				                                                  p_row_identifier => p_agdl_tbl(i).transaction_id,
4605 				                                                  p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_TAB);
4606     				WHEN OTHERS THEN
4607     					x_return_status := G_RET_STS_UNEXP_ERROR;
4608 
4609 				      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_agdl_tbl(i).transaction_id||' (AG,DL) = ('
4610 				      	||p_agdl_tbl(i).attr_group_name||','||p_agdl_tbl(i).data_level_name||'). ' ||'Exception -'||SQLERRM);
4611 
4612 				        error_handler.Add_error_message(p_message_text => SQLERRM,p_application_id => 'EGO',
4613 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
4614 				                                                  p_row_identifier => p_agdl_tbl(i).transaction_id,
4615 				                                                  p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_TAB);
4616     			END;
4617     		END IF;
4618 
4619     	END IF;
4620     END LOOP;
4621 
4622     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit Common_dl_validations');
4623   EXCEPTION
4624     WHEN OTHERS THEN
4625       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Common_dl_validations Exception when others'||SQLERRM);
4626 
4627       x_return_status := G_RET_STS_UNEXP_ERROR;
4628 
4629       x_return_msg := 'ego_ag_bulkload_pvt.Common_dl_validations - '||SQLERRM;
4630 
4631    	  RETURN;
4632   END Common_dl_validations;
4633 
4634   /*This procedure is used to do Common validations on attributes.
4635   	Used in the Interface and API flow.
4636   	p_attr_tbl        IN OUT NOCOPY  Attribute group plsql table
4637   	x_return_status OUT NOCOPY parameter that returns the status*/
4638   PROCEDURE Common_attr_validations
4639        (p_attr_tbl       IN OUT NOCOPY ego_metadata_pub.ego_attr_group_cols_tbl,
4640         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
4641   IS
4642     lv_smt  NUMBER; --Statement counter
4643   	lv_proc VARCHAR2(30) := 'Common_attr_validations';
4644   	lv_flag VARCHAR2(1):= 'N';
4645   BEGIN
4646     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering Common_attr_validations');
4647 
4648     x_return_status := G_RET_STS_SUCCESS;
4649 
4650     FOR i IN p_attr_tbl.FIRST.. p_attr_tbl.LAST LOOP
4651     	IF (p_attr_tbl(i).process_status = G_PROCESS_RECORD) THEN
4652 		    	/*Checks for the mandatory columns during the CREATE flow*/
4653 		    	IF ((p_attr_tbl(i).attr_group_type  IS NULL    --Changed for 9625957
4654 		    	    OR p_attr_tbl(i).attr_group_name  IS NULL
4655 		    	    OR p_attr_tbl(i).internal_name  IS NULL
4656 		    		OR p_attr_tbl(i).display_name  IS NULL
4657 		    		OR p_attr_tbl(i).sequence  IS NULL
4658 		    		OR p_attr_tbl(i).data_type  IS NULL
4659 		    		OR p_attr_tbl(i).display_code  IS NULL
4660 		    		OR p_attr_tbl(i).application_column_name  IS NULL)
4661 		    		AND p_attr_tbl(i).transaction_type = G_OPR_CREATE) THEN
4662 		    		p_attr_tbl(i).process_status := G_ERROR_RECORD;
4663 
4664 		    		x_return_status := G_RET_STS_ERROR;
4665 
4666 		    		write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
4667 		    		||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Mandatory columns for the attribute are not populated');
4668 
4669 		    		error_handler.Add_error_message(p_message_name => 'EGO_ATTR_MANDATORY',p_application_id => 'EGO',
4670 		                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4671 		                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
4672 		                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4673 		    	END IF;
4674 
4675 		    	/*Checks whether the data type entered is valid*/
4676 		    	IF (p_attr_tbl(i).data_type = G_TRANS_TEXT_DATA_TYPE
4677 		    		OR p_attr_tbl(i).data_type = G_CHAR_DATA_TYPE
4678 		    		OR p_attr_tbl(i).data_type = G_NUMBER_DATA_TYPE
4679 		    		OR p_attr_tbl(i).data_type = G_DATE_DATA_TYPE
4680 		    		OR p_attr_tbl(i).data_type = G_DATE_TIME_DATA_TYPE) THEN
4681 		    		NULL;
4682 		    	ELSIF (p_attr_tbl(i).transaction_type = G_OPR_DELETE) THEN
4683 		    		NULL;
4684 		    	ELSE
4685 		    		p_attr_tbl(i).process_status := G_ERROR_RECORD;
4686 
4687 		    		x_return_status := G_RET_STS_ERROR;
4688 
4689 		    		write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
4690 		    		||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Data type populated is invalid');
4691 
4692 		    		error_handler.Add_error_message(p_message_name => 'EGO_DATA_TYPE_INVALID',p_application_id => 'EGO',
4693 		                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4694 		                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
4695 		                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4696 		    	END IF;
4697 
4698 		    	/*Checks for invalid data type and display as combination*/
4699 
4700 		    	IF ((p_attr_tbl(i).data_type = g_char_data_type AND p_attr_tbl(i).display_code = g_attach_disp_type)
4701 		             OR (p_attr_tbl(i).data_type = g_number_data_type AND (p_attr_tbl(i).display_code = g_checkbox_disp_type
4702 		             													   OR p_attr_tbl(i).display_code = g_static_url_disp_type
4703 		             													   OR p_attr_tbl(i).display_code = g_text_area_disp_type))
4704 		             OR ((p_attr_tbl(i).data_type = g_date_data_type
4705 		                 OR p_attr_tbl(i).data_type = g_date_time_data_type) AND (p_attr_tbl(i).display_code = g_checkbox_disp_type
4706 		                 														  OR p_attr_tbl(i).display_code = g_dyn_url_disp_type
4707 		                 														  OR p_attr_tbl(i).display_code = g_static_url_disp_type
4708 		                 														  OR p_attr_tbl(i).display_code = g_text_area_disp_type
4709 		                 														  OR p_attr_tbl(i).display_code = g_attach_disp_type))
4710 		             OR (p_attr_tbl(i).data_type = g_trans_text_data_type AND (p_attr_tbl(i).display_code = g_attach_disp_type
4711 		       				   --OR p_attr_tbl(i).display_code = g_dyn_url_disp_type -- commenting to fix bug 12650597
4712 		       				   --OR p_attr_tbl(i).display_code = g_dyn_url_disp_type -- commenting to fix bug 12650597
4713 		       				   --OR p_attr_tbl(i).display_code = g_text_area_disp_type  -- commenting to fix bug 12650597
4714 		       				   OR p_attr_tbl(i).display_code = g_checkbox_disp_type))
4715 		    		) THEN
4716 
4717 		    		p_attr_tbl(i).process_status := G_ERROR_RECORD;
4718 
4719 		    		x_return_status := G_RET_STS_ERROR;
4720 
4721 		    		write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
4722 		    		||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Data type and display as combination is invalid');
4723 
4724 		    		error_handler.Add_error_message(p_message_name => 'EGO_DT_DISP_COMB_INVALID',p_application_id => 'EGO',
4725 		                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4726 		                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
4727 		                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4728 		    	END IF;
4729 
4730 		    	/*Checks if the value set is mandatory*/
4731 
4732 		    	IF ((p_attr_tbl(i).display_code = g_attach_disp_type OR p_attr_tbl(i).display_code = g_radio_disp_type)
4733 		           	 AND (p_attr_tbl(i).flex_value_set_name  IS NULL OR p_attr_tbl(i).flex_value_set_id  IS NULL)) THEN
4734 
4735 		           	p_attr_tbl(i).process_status := G_ERROR_RECORD;
4736 
4737 		        	x_return_status := G_RET_STS_ERROR;
4738 
4739 		    		write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
4740 		    		||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Value Set is mandatory for particular display');
4741 
4742 		    		error_handler.Add_error_message(p_message_name => 'EGO_VALUE_SET_REQUIRED',p_application_id => 'EGO',
4743 		                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4744 		                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
4745 		                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4746 		        END IF;
4747 
4748 		        /*Checks if the dynamic URL is mandatory*/
4749 
4750 		        IF (p_attr_tbl(i).display_code = g_dyn_url_disp_type AND p_attr_tbl(i).info_1  IS NULL) THEN
4751 
4752 		        	p_attr_tbl(i).process_status := G_ERROR_RECORD;
4753 
4754 		        	x_return_status := G_RET_STS_ERROR;
4755 
4756 		    		write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
4757 		    		||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Value Set is mandatory for particular display');
4758 
4759 		    		error_handler.Add_error_message(p_message_name => 'EGO_DYN_URL_MANDATORY',p_application_id => 'EGO',
4760 		                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4761 		                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
4762 		                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4763 		        END IF;
4764 
4765 		        /*Checks for existing sequence number - CREATE flow*/  --Added for 9625957
4766 		        IF (p_attr_tbl(i).sequence IS NOT NULL AND p_attr_tbl(i).transaction_type = G_OPR_CREATE) THEN
4767 		        	BEGIN
4768 			        	SELECT 'Y' INTO lv_flag
4769 				        FROM FND_DESCR_FLEX_COLUMN_USAGES
4770 				       	WHERE APPLICATION_ID = G_EGO_APPLICATION_ID
4771 				        AND DESCRIPTIVE_FLEXFIELD_NAME = p_attr_tbl(i).attr_group_type
4772 				        AND DESCRIPTIVE_FLEX_CONTEXT_Code = p_attr_tbl(i).attr_group_name
4773 				        AND COLUMN_SEQ_NUM = p_attr_tbl(i).sequence;
4774 
4775 				        IF (lv_flag = 'Y') THEN
4776 				        	p_attr_tbl(i).process_status := G_ERROR_RECORD;
4777 
4778 				        	x_return_status := G_RET_STS_ERROR;
4779 
4780 				        	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
4781 				        	||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'SEQUENCE already exists in the system - CREATE');
4782 
4783 				    		error_handler.Add_error_message(p_message_name => 'EGO_EF_CR_ATTR_DUP_SEQ_ERR',p_application_id => 'EGO',
4784 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4785 				                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
4786 				                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4787 
4788 				            lv_flag := 'N';
4789 				        END IF;
4790 
4791 				    EXCEPTION
4792 				    	WHEN NO_DATA_FOUND THEN
4793 				    		NULL;
4794 				    	WHEN OTHERS THEN
4795 				    		x_return_status := G_RET_STS_UNEXP_ERROR;
4796 
4797 				    		write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
4798 				    		||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Exception - '||SQLERRM);
4799 
4800 				    		error_handler.Add_error_message(p_message_text => SQLERRM,p_application_id => 'EGO',
4801 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
4802 				                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
4803 				                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4804 				    END;
4805 		        END IF;
4806 
4807 		        /*Checks for existing sequence number - UPDATE flow*/  --Added for 9625957
4808 		        IF (p_attr_tbl(i).sequence IS NOT NULL AND p_attr_tbl(i).transaction_type = G_OPR_UPDATE) THEN
4809 		        	DECLARE
4810 		        	l_sequence NUMBER;
4811 		        	BEGIN
4812 		        		SELECT COLUMN_SEQ_NUM
4813 				        INTO l_sequence
4814 				        FROM FND_DESCR_FLEX_COLUMN_USAGES
4815 				       WHERE APPLICATION_ID = G_EGO_APPLICATION_ID
4816 				         AND DESCRIPTIVE_FLEXFIELD_NAME = p_attr_tbl(i).attr_group_type
4817 				         AND DESCRIPTIVE_FLEX_CONTEXT_Code = p_attr_tbl(i).attr_group_name
4818 				         AND END_USER_COLUMN_NAME = p_attr_tbl(i).internal_name;
4819 
4820 				      IF (l_sequence <> NVL(p_attr_tbl(i).sequence, l_sequence)) THEN
4821 				        -- If the sequence is being updated to a NEW non-null value,
4822 				        -- check for uniqueness
4823 
4824 				        SELECT COUNT(*)
4825 				          INTO l_sequence
4826 				          FROM FND_DESCR_FLEX_COLUMN_USAGES
4827 				         WHERE APPLICATION_ID = G_EGO_APPLICATION_ID
4828 				           AND DESCRIPTIVE_FLEXFIELD_NAME = p_attr_tbl(i).attr_group_type
4829 				           AND DESCRIPTIVE_FLEX_CONTEXT_Code = p_attr_tbl(i).attr_group_name
4830 				           AND COLUMN_SEQ_NUM = p_attr_tbl(i).sequence;
4831 
4832 				        IF (l_sequence > 0) THEN
4833 
4834 				        	p_attr_tbl(i).process_status := G_ERROR_RECORD;
4835 
4836 				        	x_return_status := G_RET_STS_ERROR;
4837 
4838 				        	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
4839 				        	||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'SEQUENCE already exists in the system - UPDATE');
4840 
4841 				    		error_handler.Add_error_message(p_message_name => 'EGO_EF_UP_ATTR_DUP_SEQ_ERR',p_application_id => 'EGO',
4842 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4843 				                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
4844 				                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4845 
4846 				        END IF;
4847 				      END IF;
4848 				    EXCEPTION
4849 				    	WHEN OTHERS THEN
4850 				    		x_return_status := G_RET_STS_UNEXP_ERROR;
4851 
4852 				    		write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
4853 				    		||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Exception - '||SQLERRM);
4854 
4855 				    		error_handler.Add_error_message(p_message_text => SQLERRM,p_application_id => 'EGO',
4856 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
4857 				                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
4858 				                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4859 				    END;
4860 		        END IF;
4861 
4862 		        /*Checks for existing column name - CREATE flow*/  --Added for 9625957
4863 		        IF (p_attr_tbl(i).application_column_name IS NOT NULL AND p_attr_tbl(i).transaction_type = G_OPR_CREATE) THEN
4864 		        	BEGIN
4865 			        	SELECT 'Y' INTO lv_flag
4866 				        FROM FND_DESCR_FLEX_COLUMN_USAGES
4867 				       	WHERE APPLICATION_ID = G_EGO_APPLICATION_ID
4868 				        AND DESCRIPTIVE_FLEXFIELD_NAME = p_attr_tbl(i).attr_group_type
4869 				        AND DESCRIPTIVE_FLEX_CONTEXT_Code = p_attr_tbl(i).attr_group_name
4870 				        AND application_column_name = p_attr_tbl(i).application_column_name;
4871 
4872 				        IF (lv_flag = 'Y') THEN
4873 				        	p_attr_tbl(i).process_status := G_ERROR_RECORD;
4874 
4875 				        	x_return_status := G_RET_STS_ERROR;
4876 
4877 				        	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
4878 				        	||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'SEQUENCE already exists in the system - CREATE');
4879 
4880 				    		error_handler.Add_error_message(p_message_name => 'EGO_EF_CR_ATTR_DUP_COL_ERR',p_application_id => 'EGO',
4881 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4882 				                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
4883 				                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4884 
4885 				            lv_flag := 'N';
4886 				        END IF;
4887 
4888 				    EXCEPTION
4889 				    	WHEN NO_DATA_FOUND THEN
4890 				    		NULL;
4891 				    	WHEN OTHERS THEN
4892 				    		x_return_status := G_RET_STS_UNEXP_ERROR;
4893 
4894 				    		write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
4895 				    		||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Exception - '||SQLERRM);
4896 
4897 				    		error_handler.Add_error_message(p_message_text => SQLERRM,p_application_id => 'EGO',
4898 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
4899 				                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
4900 				                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4901 				    END;
4902 		        END IF;
4903 
4904 		        /*Checks for existing column name - UPDATE flow*/  --Added for 9625957
4905 		        IF (p_attr_tbl(i).sequence IS NOT NULL AND p_attr_tbl(i).transaction_type = G_OPR_UPDATE) THEN
4906 		        	DECLARE
4907 		        	lv_column VARCHAR2(40);
4908 		        	lv_count NUMBER;
4909 		        	BEGIN
4910 		        		SELECT application_column_name
4911 				        INTO lv_column
4912 				        FROM FND_DESCR_FLEX_COLUMN_USAGES
4913 				       WHERE APPLICATION_ID = G_EGO_APPLICATION_ID
4914 				         AND DESCRIPTIVE_FLEXFIELD_NAME = p_attr_tbl(i).attr_group_type
4915 				         AND DESCRIPTIVE_FLEX_CONTEXT_Code = p_attr_tbl(i).attr_group_name
4916 				         AND END_USER_COLUMN_NAME = p_attr_tbl(i).internal_name;
4917 
4918 				      IF (lv_column <> NVL(p_attr_tbl(i).application_column_name, lv_column)) THEN
4919 				        -- If the sequence is being updated to a NEW non-null value,
4920 				        -- check for uniqueness
4921 
4922 				        SELECT COUNT(*)
4923 				          INTO lv_count
4924 				          FROM FND_DESCR_FLEX_COLUMN_USAGES
4925 				         WHERE APPLICATION_ID = G_EGO_APPLICATION_ID
4926 				           AND DESCRIPTIVE_FLEXFIELD_NAME = p_attr_tbl(i).attr_group_type
4927 				           AND DESCRIPTIVE_FLEX_CONTEXT_Code = p_attr_tbl(i).attr_group_name
4928 				           AND application_column_name = p_attr_tbl(i).application_column_name;
4929 
4930 				        IF (lv_count > 0) THEN
4931 
4932 				        	p_attr_tbl(i).process_status := G_ERROR_RECORD;
4933 
4934 				        	x_return_status := G_RET_STS_ERROR;
4935 
4936 				        	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
4937 				        	||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'SEQUENCE already exists in the system - UPDATE');
4938 
4939 				    		error_handler.Add_error_message(p_message_name => 'EGO_EF_UP_ATTR_DUP_SEQ_ERR',p_application_id => 'EGO',
4940 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
4941 				                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
4942 				                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4943 
4944 
4945 				        END IF;
4946 				      END IF;
4947 				    EXCEPTION
4948 				    	WHEN OTHERS THEN
4949 				    		x_return_status := G_RET_STS_UNEXP_ERROR;
4950 
4951 				    		write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
4952 				    		||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Exception - '||SQLERRM);
4953 
4954 				    		error_handler.Add_error_message(p_message_text => SQLERRM,p_application_id => 'EGO',
4955 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
4956 				                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
4957 				                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
4958 				    END;
4959 		        END IF;
4960 
4961 		        /*Checks for the correct combination of column name and data type*/ --Added for 9625957
4962 
4963 		        DECLARE
4964 			    	l_table_name VARCHAR2(40);
4965 			    	l_chg_table_name VARCHAR2(40);
4966 			    	l_col_data_type VARCHAR2(1);
4967 			    	l_col_width NUMBER;
4968 		        BEGIN
4969 					------------------------------------------------------------------------
4970 				    -- Find the correct table name for use in validating column data type --
4971 				    ------------------------------------------------------------------------
4972 
4973 				    IF (p_attr_tbl(i).data_type = G_TRANS_TEXT_DATA_TYPE) THEN
4974 				      l_table_name := Get_TL_Table_Name(G_EGO_APPLICATION_ID
4975 				                                       ,p_attr_tbl(i).attr_group_type);
4976 				      l_chg_table_name:=Get_Attr_Changes_TL_Table(p_application_id => G_EGO_APPLICATION_ID
4977 				                                       ,p_attr_group_type => p_attr_tbl(i).attr_group_type);--for getting the pending table
4978 				    ELSE
4979 				      l_table_name := Get_Table_Name(G_EGO_APPLICATION_ID
4980 				                                       ,p_attr_tbl(i).attr_group_type);
4981 				      l_chg_table_name:=Get_Attr_Changes_B_Table(p_application_id => G_EGO_APPLICATION_ID
4982 				                                       ,p_attr_group_type => p_attr_tbl(i).attr_group_type);--for getting the pending table
4983 
4984 				    END IF;--IF (l_data_type_is_trans_text)
4985 
4986 				      SELECT COLUMN_TYPE , WIDTH
4987 				        INTO l_col_data_type, l_col_width
4988 				        FROM FND_COLUMNS
4989 				       WHERE COLUMN_NAME = p_attr_tbl(i).application_column_name
4990 				         AND TABLE_ID = (SELECT TABLE_ID
4991 				                           FROM FND_TABLES
4992 				                          WHERE TABLE_NAME = l_table_name);
4993 
4994 				      IF (p_attr_tbl(i).transaction_type <> G_OPR_DELETE AND
4995 				      	   ((p_attr_tbl(i).data_type = G_CHAR_DATA_TYPE OR
4996 				            p_attr_tbl(i).data_type = G_TRANS_TEXT_DATA_TYPE) AND
4997 				           l_col_data_type <> 'V') OR
4998 				          (p_attr_tbl(i).data_type = G_NUMBER_DATA_TYPE AND l_col_data_type <> 'N') OR
4999 				          ((p_attr_tbl(i).data_type = G_DATE_DATA_TYPE OR
5000 				            p_attr_tbl(i).data_type = G_DATE_TIME_DATA_TYPE) AND
5001 				           l_col_data_type <> 'D')) THEN
5002 
5003 							/***
5004 							TO DO: right now we can't verify that TransText Attributes use TL-type columns,
5005 							because we can't rely on the column being named 'TL_EXT_ATTR%' and we aren't
5006 							using FND_COLUMNS's TRANSLATE_FLAG column yet; but we should be, and we should
5007 							add to the IF check above that if the data type is TransText and the column's
5008 							TRANSLATE_FLAG isn't 'Y' then we should error out.
5009 							***/
5010 							p_attr_tbl(i).process_status := G_ERROR_RECORD;
5011 
5012 				        	x_return_status := G_RET_STS_ERROR;
5013 
5014 				        	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
5015 				        	||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Column name and data type dont match');
5016 
5017 				    		error_handler.Add_error_message(p_message_name => 'EGO_EF_CR_ATTR_COL_DT_ERR',p_application_id => 'EGO',
5018 			                                                p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5019 			                                                p_row_identifier => p_attr_tbl(i).transaction_id,
5020 			                                                p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
5021 
5022 
5023 				      END IF;
5024 
5025 				      IF ( (p_attr_tbl(i).data_type = G_CHAR_DATA_TYPE OR
5026 				            p_attr_tbl(i).data_type = G_TRANS_TEXT_DATA_TYPE) AND
5027 				            LENGTH(p_attr_tbl(i).default_value) >  l_col_width )THEN
5028 
5029 				        	p_attr_tbl(i).process_status := G_ERROR_RECORD;
5030 
5031 				        	x_return_status := G_RET_STS_ERROR;
5032 
5033 				        	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
5034 				        	||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Default value exceeds the acceptable length');
5035 
5036 				    		error_handler.Add_error_message(p_message_name => 'EGO_EF_DEFAULT_VAL_LEN_ERR',p_application_id => 'EGO',
5037 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5038 				                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
5039 				                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
5040 
5041 
5042 				      END IF;
5043 
5044 			    EXCEPTION
5045 			      WHEN NO_DATA_FOUND THEN
5046 			      		IF (p_attr_tbl(i).transaction_type <> G_OPR_DELETE) THEN
5047 			        -- whoever owns the table didn't seed the column correctly
5048 			        		p_attr_tbl(i).process_status := G_ERROR_RECORD;
5049 
5050 				        	x_return_status := G_RET_STS_ERROR;
5051 
5052 				        	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
5053 				        	||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Column name and data type dont match');
5054 
5055 				    		error_handler.Add_error_message(p_message_name => 'EGO_EF_CR_ATTR_COL_DT_ERR',p_application_id => 'EGO',
5056 				                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5057 				                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
5058 				                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
5059 				         END IF;
5060 			    END;
5061 
5062 			    /*Check for invalid Required flag*/
5063 	    		IF (NVL(p_attr_tbl(i).required_flag,'N') IN ('Y','N')) THEN
5064 	    			p_attr_tbl(i).required_flag := NVL(p_attr_tbl(i).required_flag,'N');
5065 	    		ELSE
5066 	    			p_attr_tbl(i).process_status := G_ERROR_RECORD;
5067 
5068 			        x_return_status := G_RET_STS_ERROR;
5069 
5070 			      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
5071 			      	||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Invalid required flag.');
5072 
5073 			      	G_TOKEN_TABLE(1).Token_Name   :=  'COL_NAME';
5074            			G_TOKEN_TABLE(1).Token_Value  :=  'REQUIRED_FLAG';
5075 
5076 			        error_handler.Add_error_message(p_message_name => 'EGO_INVALID_VALUE_FOR_COL',p_application_id => 'EGO',
5077 	                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5078 	                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
5079 	                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
5080 
5081 	                G_TOKEN_TABLE.DELETE;
5082 
5083 	    		END IF;
5084 
5085 	    		/*Check for invalid enabled flag*/
5086 	    		IF (NVL(p_attr_tbl(i).enabled_flag,'N') IN ('Y','N')) THEN
5087 	    			p_attr_tbl(i).enabled_flag := NVL(p_attr_tbl(i).enabled_flag,'N');
5088 	    		ELSE
5089 	    			p_attr_tbl(i).process_status := G_ERROR_RECORD;
5090 
5091 			        x_return_status := G_RET_STS_ERROR;
5092 
5093 			      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
5094 			      	||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Invalid enabled flag.');
5095 
5096 			      	G_TOKEN_TABLE(1).Token_Name   :=  'COL_NAME';
5097            			G_TOKEN_TABLE(1).Token_Value  :=  'ENABLED_FLAG';
5098 
5099 			        error_handler.Add_error_message(p_message_name => 'EGO_INVALID_VALUE_FOR_COL',p_application_id => 'EGO',
5100 	                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5101 	                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
5102 	                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
5103 
5104 	                G_TOKEN_TABLE.DELETE;
5105 
5106 	    		END IF;
5107 
5108 	    		/*Check for invalid security enabled flag*/
5109 	    		IF (NVL(p_attr_tbl(i).security_enabled_flag,'N') IN ('Y','N')) THEN
5110 	    			p_attr_tbl(i).security_enabled_flag := NVL(p_attr_tbl(i).security_enabled_flag,'N');
5111 	    		ELSE
5112 	    			p_attr_tbl(i).process_status := G_ERROR_RECORD;
5113 
5114 			        x_return_status := G_RET_STS_ERROR;
5115 
5116 			      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
5117 			      	||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Invalid security enabled flag.');
5118 
5119 			      	G_TOKEN_TABLE(1).Token_Name   :=  'COL_NAME';
5120            			G_TOKEN_TABLE(1).Token_Value  :=  'SECURITY_ENABLED_FLAG';
5121 
5122 			        error_handler.Add_error_message(p_message_name => 'EGO_INVALID_VALUE_FOR_COL',p_application_id => 'EGO',
5123 	                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5124 	                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
5125 	                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
5126 
5127 	                G_TOKEN_TABLE.DELETE;
5128 
5129 	    		END IF;
5130 
5131 	    		/*Check for invalid searchable flag*/
5132 	    		IF (NVL(p_attr_tbl(i).search_flag,'N') IN ('Y','N')) THEN
5133 	    			p_attr_tbl(i).search_flag := NVL(p_attr_tbl(i).search_flag,'N');
5134 	    		ELSE
5135 	    			p_attr_tbl(i).process_status := G_ERROR_RECORD;
5136 
5137 			        x_return_status := G_RET_STS_ERROR;
5138 
5139 			      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
5140 			      	||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Invalid searchable flag.');
5141 
5142 			      	G_TOKEN_TABLE(1).Token_Name   :=  'COL_NAME';
5143            			G_TOKEN_TABLE(1).Token_Value  :=  'SEARCH_FLAG';
5144 
5145 			        error_handler.Add_error_message(p_message_name => 'EGO_INVALID_VALUE_FOR_COL',p_application_id => 'EGO',
5146 	                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5147 	                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
5148 	                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
5149 
5150 	                G_TOKEN_TABLE.DELETE;
5151 
5152 	    		END IF;
5153 
5154 	    		/*Check for invalid Unique Key flag*/
5155 	    		IF (NVL(p_attr_tbl(i).unique_key_flag,'N') IN ('Y','N')) THEN
5156 	    			p_attr_tbl(i).unique_key_flag := NVL(p_attr_tbl(i).unique_key_flag,'N');
5157 	    		ELSE
5158 	    			p_attr_tbl(i).process_status := G_ERROR_RECORD;
5159 
5160 			        x_return_status := G_RET_STS_ERROR;
5161 
5162 			      	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - Err_msg_TID: '||p_attr_tbl(i).transaction_id||' (AG,ATTR) = ('
5163 			      	||p_attr_tbl(i).attr_group_name||','||p_attr_tbl(i).internal_name||'). ' ||'Invalid unique key flag.');
5164 
5165 			      	G_TOKEN_TABLE(1).Token_Name   :=  'COL_NAME';
5166            			G_TOKEN_TABLE(1).Token_Value  :=  'UNIQUE_KEY_FLAG';
5167 
5168 			        error_handler.Add_error_message(p_message_name => 'EGO_INVALID_VALUE_FOR_COL',p_application_id => 'EGO',
5169 	                                                  p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5170 	                                                  p_row_identifier => p_attr_tbl(i).transaction_id,
5171 	                                                  p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
5172 
5173 	                G_TOKEN_TABLE.DELETE;
5174 
5175 	    		END IF;
5176 		END IF;
5177 	END LOOP;
5178 	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit Common_attr_validations');
5179   EXCEPTION
5180     WHEN OTHERS THEN
5181       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Common_attr_validations Exception when others'||SQLERRM);
5182 
5183       x_return_status := G_RET_STS_UNEXP_ERROR;
5184 
5185       x_return_msg := 'ego_ag_bulkload_pvt.Common_attr_validations - '||SQLERRM;
5186 
5187    	  RETURN;
5188   END Common_attr_validations;
5189 
5190   /*This procedure is used to do additional validations on attribute groups.
5191   	Used in the API flow.
5192   	p_ag_tbl        IN OUT NOCOPY  Attribute group plsql table
5193   	x_return_status OUT NOCOPY parameter that returns the status*/
5194   PROCEDURE Additional_agdl_validations
5195        (p_ag_tbl         IN OUT NOCOPY ego_metadata_pub.ego_attr_groups_tbl,
5196         p_agdl_tbl       IN OUT NOCOPY ego_metadata_pub.ego_attr_groups_dl_tbl,
5197         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
5198   IS
5199     lv_smt   NUMBER; --Statement counter
5200     lv_flag  VARCHAR2(1);
5201     lv_proc VARCHAR2(30) := 'Additional_agdl_validations';
5202   BEGIN
5203     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering Additional_agdl_validations');
5204 
5205     x_return_status := G_RET_STS_SUCCESS;
5206 
5207     lv_smt := 1;
5208 
5209     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
5210 
5211     /*Check for invalid transaction type in the AG table*/
5212     FOR i IN p_ag_tbl.FIRST.. p_ag_tbl.LAST LOOP
5213       /*Convert transaction type to upper case*/
5214       SELECT Upper(P_ag_tbl(i).transaction_type)
5215       INTO   P_ag_tbl(i).transaction_type
5216       FROM   dual;
5217 
5218       IF ( P_ag_tbl(i).transaction_type = G_OPR_CREATE
5219            OR P_ag_tbl(i).transaction_type = G_OPR_UPDATE
5220            OR P_ag_tbl(i).transaction_type = G_OPR_DELETE
5221            OR P_ag_tbl(i).transaction_type = G_OPR_SYNC) THEN
5222            NULL;
5223       ELSE
5224         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Transaction type Invalid for AG');
5225 
5226         P_ag_tbl(i).process_status := G_ERROR_RECORD;
5227 
5228         x_return_status := G_RET_STS_ERROR;
5229 
5230       	error_handler.Add_error_message(p_message_name => 'EGO_TRANS_TYPE_INVALID',p_application_id => 'EGO',
5231                                       	p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5232                                       	p_row_identifier => P_ag_tbl(i).transaction_id,
5233                                       	p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
5234       END IF;
5235 
5236       /*Checks if the attribute group type passed is EGO_ITEMMGMT_GROUP or else thows the error EGO_AG_TYPE_INVALID*/
5237       IF (P_ag_tbl(i).attr_group_type <> G_EGO_ITEMMGMT_GROUP) THEN
5238         P_ag_tbl(i).process_status := G_ERROR_RECORD;
5239 
5240         x_return_status := G_RET_STS_ERROR;
5241 
5242         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute group Type passed is incorrect');
5243 
5244       	error_handler.Add_error_message(p_message_name => 'EGO_AG_TYPE_INVALID',p_application_id => 'EGO',
5245                                       	p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5246                                       	p_row_identifier => P_ag_tbl(i).transaction_id,
5247                                       	p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
5248       END IF;
5249     END LOOP;
5250 
5251     lv_smt := 2;
5252 
5253     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
5254 
5255     /*Check for invalid transaction type in the DL table*/
5256     FOR i IN p_agdl_tbl.FIRST.. p_agdl_tbl.LAST LOOP
5257       /*Convert transaction type to upper case*/
5258       SELECT Upper(P_agdl_tbl(i).transaction_type)
5259       INTO   P_agdl_tbl(i).transaction_type
5260       FROM   dual;
5261 
5262       IF ( P_agdl_tbl(i).transaction_type = G_OPR_CREATE
5263            OR P_agdl_tbl(i).transaction_type = G_OPR_UPDATE
5264            OR P_agdl_tbl(i).transaction_type = G_OPR_SYNC) THEN
5265            NULL;
5266       ELSE
5267         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Transaction type is invalid for DL');
5268 
5269         P_agdl_tbl(i).process_status := G_ERROR_RECORD;
5270 
5271         x_return_status := G_RET_STS_ERROR;
5272 
5273         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Invalid transaction type for DL');
5274 
5275       	error_handler.Add_error_message(p_message_name => 'EGO_TRANS_TYPE_INVALID',p_application_id => 'EGO',
5276                                       	p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5277                                       	p_row_identifier => P_agdl_tbl(i).transaction_id,
5278                                       	p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_TAB);
5279 
5280       END IF;
5281 
5282       /*Checks if the attribute group type passed is EGO_ITEMMGMT_GROUP or else thows the error EGO_AG_TYPE_INVALID*/
5283       IF (P_agdl_tbl(i).attr_group_type <> G_EGO_ITEMMGMT_GROUP) THEN
5284         P_agdl_tbl(i).process_status := G_ERROR_RECORD;
5285 
5286         x_return_status := G_RET_STS_ERROR;
5287 
5288         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute group Type passed is incorrect');
5289 
5290       	error_handler.Add_error_message(p_message_name => 'EGO_AG_TYPE_INVALID',p_application_id => 'EGO',
5291                                       	p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5292                                       	p_row_identifier => P_agdl_tbl(i).transaction_id,
5293                                       	p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_TAB);
5294 
5295       END IF;
5296     END LOOP;
5297 
5298     /*Value to ID Conversions for AG*/
5299     Value_to_id_ag_tbl(p_ag_tbl,x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
5300 
5301     lv_smt := 3;
5302 
5303     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 3');
5304 
5305     /*If the attribute group in the DL plsql table doesn't exist in the system as well in the AG plsql table then error OUT NOCOPY with message EGO_AG_INVALID*/
5306     FOR i IN p_agdl_tbl.FIRST.. p_ag_tbl.LAST LOOP
5307       IF (P_agdl_tbl(i).process_status = G_PROCESS_RECORD) THEN
5308         IF (P_agdl_tbl(i).attr_group_name  IS NOT NULL
5309             AND P_agdl_tbl(i).attr_group_id  IS NULL) THEN
5310           BEGIN
5311             SELECT attr_group_id
5312             INTO   P_agdl_tbl(i).attr_group_id
5313             FROM   ego_fnd_dsc_flx_ctx_ext
5314             WHERE  application_id = g_ego_application_id
5315                    AND descriptive_flexfield_name = P_agdl_tbl(i).attr_group_type
5316                    AND descriptive_flex_context_code = P_agdl_tbl(i).attr_group_name;
5317           EXCEPTION
5318             WHEN no_data_found THEN
5319               IF (P_agdl_tbl(i).transaction_type = G_OPR_UPDATE) THEN
5320                 P_agdl_tbl(i).process_status := G_ERROR_RECORD;
5321 
5322                 x_return_status := G_RET_STS_ERROR;
5323 
5324                 write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute Group does not exist');
5325 
5326                 error_handler.Add_error_message(p_message_name => 'EGO_AG_INVALID',p_application_id => 'EGO',
5327                                                 p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5328                                                 p_row_identifier => P_agdl_tbl(i).transaction_id,
5329                                                 p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_TAB);
5330 
5331               ELSE
5332                 lv_flag := 'N';
5333 
5334                 FOR i IN p_ag_tbl.FIRST.. p_agdl_tbl.LAST LOOP
5335                   IF (P_ag_tbl(i).process_status = G_PROCESS_RECORD
5336                       AND P_ag_tbl(i).transaction_type = G_OPR_CREATE
5337                       AND (G_SET_PROCESS_ID IS NULL
5338                             OR P_ag_tbl(i).set_process_id = G_SET_PROCESS_ID)) THEN
5339                     IF (P_agdl_tbl(i).attr_group_name = P_agdl_tbl(i).attr_group_name) THEN
5340                       lv_flag := 'Y';
5341 
5342                       IF (P_agdl_tbl(i).transaction_type = G_OPR_SYNC) THEN
5343                         P_agdl_tbl(i).transaction_type := G_OPR_CREATE;
5344                       END IF;
5345                     END IF;
5346                   END IF;
5347                 END LOOP;
5348 
5349                 IF (lv_flag = 'N') THEN
5350                   write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute Group in the DL plsql table does not exist in the system or in the AG plsql table');
5351 
5352                   P_agdl_tbl(i).process_status := G_ERROR_RECORD;
5353 
5354                   x_return_status := G_RET_STS_ERROR;
5355 
5356                   error_handler.Add_error_message(p_message_name => 'EGO_AG_INVALID',p_application_id => 'EGO',
5357                                                   p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5358                                                   p_row_identifier => P_agdl_tbl(i).transaction_id,
5359                                                   p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5360                 END IF;
5361               END IF;
5362             WHEN OTHERS THEN
5363               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_agdl_validations Exception when others smt 3');
5364 
5365               x_return_status := G_RET_STS_UNEXP_ERROR;
5366 
5367               error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
5368                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
5369                                               p_row_identifier => P_agdl_tbl(i).transaction_id,
5370                                               p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5371 
5372               x_return_msg := 'ego_ag_bulkload_pvt.Additional_agdl_validations smt 3 - '||SQLERRM;
5373 
5374    	  		  RETURN;
5375           END;
5376         END IF;
5377       END IF;
5378     END LOOP;
5379 
5380     /*Value to ID Conversions for DL*/
5381     Value_to_id_dl_tbl(p_agdl_tbl,x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
5382 
5383     lv_smt := 4;
5384 
5385     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 4');
5386 
5387     /*For a AG record of transaction Type CREATE there should be atleast one record in the DL record. Else error OUT NOCOPY EGO_EF_DL_REQD_AG*/
5388     FOR i IN p_ag_tbl.FIRST.. p_ag_tbl.LAST LOOP
5389       lv_flag := 'N';
5390 
5391       IF P_ag_tbl(i).transaction_type = G_OPR_CREATE THEN
5392         FOR i IN p_agdl_tbl.FIRST.. p_agdl_tbl.LAST LOOP
5393           IF P_agdl_tbl(i).attr_group_name = P_ag_tbl(i).attr_group_name THEN
5394             lv_flag := 'Y';
5395           END IF;
5396         END LOOP;
5397 
5398         IF (lv_flag = 'N') THEN
5399           write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Please insert at least one business entity when creating an Attribute Group');
5400 
5401           P_ag_tbl(i).process_status := G_ERROR_RECORD;
5402 
5403           x_return_status := G_RET_STS_ERROR;
5404 
5405           error_handler.Add_error_message(p_message_name => 'EGO_EF_DL_REQD_AG',p_application_id => 'EGO',
5406                                           p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5407                                           p_row_identifier => P_agdl_tbl(i).transaction_id,
5408                                           p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5409         END IF;
5410       END IF;
5411     END LOOP;
5412 
5413     lv_smt := 5;
5414 
5415     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 5');
5416 
5417     /*Additional Validations for AG*/
5418     FOR i IN p_ag_tbl.FIRST.. p_ag_tbl.LAST LOOP
5419       IF (P_ag_tbl(i).process_status = G_PROCESS_RECORD) THEN
5420         /*Sets the Attribute Name if Attribute ID exists. If it doesn't exist, then flags an error EGO_AG_INVALID*/
5421         IF (P_ag_tbl(i).attr_group_id  IS NOT NULL
5422             AND P_ag_tbl(i).attr_group_name  IS NULL
5423             AND P_ag_tbl(i).transaction_type = G_OPR_UPDATE) THEN
5424           BEGIN
5425             SELECT descriptive_flex_context_code
5426             INTO   P_ag_tbl(i).attr_group_name
5427             FROM   ego_fnd_dsc_flx_ctx_ext
5428             WHERE  application_id = g_ego_application_id
5429                    AND descriptive_flexfield_name = P_ag_tbl(i).attr_group_type
5430                    AND descriptive_flex_context_code = P_ag_tbl(i).attr_group_id;
5431           EXCEPTION
5432             WHEN no_data_found THEN
5433               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute group does not exist in the system');
5434 
5435               P_ag_tbl(i).process_status := G_ERROR_RECORD;
5436 
5437               x_return_status := G_RET_STS_ERROR;
5438 
5439               error_handler.Add_error_message(p_message_name => 'EGO_AG_INVALID',p_application_id => 'EGO',
5440                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5441                                               p_row_identifier => P_ag_tbl(i).transaction_id,
5442                                               p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
5443             WHEN OTHERS THEN
5444               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_agdl_validations Exception when others smt 5');
5445 
5446               x_return_status := G_RET_STS_UNEXP_ERROR;
5447 
5448               error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
5449                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
5450                                               p_row_identifier => P_ag_tbl(i).transaction_id,
5451                                               p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
5452 
5453               x_return_msg := 'ego_ag_bulkload_pvt.Additional_agdl_validations smt 5 - '||SQLERRM;
5454 
5455    	  		  RETURN;
5456           END;
5457         END IF;
5458 
5459         /*Defaults the MULTROW column to N if not provided*/
5460         IF (P_ag_tbl(i).multi_row  IS NULL
5461             AND P_ag_tbl(i).transaction_type = G_OPR_CREATE) THEN
5462           P_ag_tbl(i).multi_row := 'N';
5463         END IF;
5464 
5465         /*If the attribute group internal name or the display name is null for the CREATE flow then flag an error EGO_AG_MANDATORY*/
5466         IF ((P_ag_tbl(i).attr_group_name  IS NULL
5467               OR P_ag_tbl(i).attr_group_disp_name  IS NULL)
5468             AND P_ag_tbl(i).transaction_type = G_OPR_CREATE) THEN
5469           write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute group internal name and display name are not provided in the CREATE flow');
5470 
5471           P_agdl_tbl(i).process_status := G_ERROR_RECORD;
5472 
5473           x_return_status := G_RET_STS_ERROR;
5474 
5475           error_handler.Add_error_message(p_message_name => 'EGO_AG_MANDATORY',p_application_id => 'EGO',
5476                                           p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5477                                           p_row_identifier => P_ag_tbl(i).transaction_id,
5478                                           p_entity_code => G_ENTITY_AG,p_table_name => G_ENTITY_AG_TAB);
5479         END IF;
5480       END IF;
5481     END LOOP;
5482 
5483     lv_smt := 6;
5484 
5485     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 6');
5486 
5487     /*Additional Validation for DL*/
5488     FOR i IN p_agdl_tbl.FIRST.. p_agdl_tbl.LAST LOOP
5489       IF (P_agdl_tbl(i).process_status = G_PROCESS_RECORD) THEN
5490         /*Sets the Attribute Name if Attribute ID exists. If it doesn't exist, then flags an error EGO_AG_INVALID*/
5491         IF (P_agdl_tbl(i).attr_group_id  IS NOT NULL
5492             AND P_agdl_tbl(i).attr_group_name  IS NULL
5493             AND P_agdl_tbl(i).transaction_type = G_OPR_UPDATE) THEN
5494           BEGIN
5495             SELECT descriptive_flex_context_code
5496             INTO   P_agdl_tbl(i).attr_group_name
5497             FROM   ego_fnd_dsc_flx_ctx_ext
5498             WHERE  application_id = g_ego_application_id
5499                    AND descriptive_flexfield_name = P_agdl_tbl(i).attr_group_type
5500                    AND descriptive_flex_context_code = P_agdl_tbl(i).attr_group_id;
5501           EXCEPTION
5502             WHEN no_data_found THEN
5503               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute group does not exist in the system');
5504 
5505               P_agdl_tbl(i).process_status := G_ERROR_RECORD;
5506 
5507               x_return_status := G_RET_STS_ERROR;
5508 
5509               error_handler.Add_error_message(p_message_name => 'EGO_AG_INVALID',p_application_id => 'EGO',
5510                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5511                                               p_row_identifier => P_agdl_tbl(i).transaction_id,
5512                                               p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5513             WHEN OTHERS THEN
5514               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_agdl_validations Exception when others smt 6');
5515 
5516               x_return_status := G_RET_STS_UNEXP_ERROR;
5517 
5518               error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
5519                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
5520                                               p_row_identifier => P_agdl_tbl(i).transaction_id,
5521                                               p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5522 
5523               x_return_msg := 'ego_ag_bulkload_pvt.Additional_agdl_validations smt 6 - '||SQLERRM;
5524 
5525    	  		  RETURN;
5526           END;
5527         END IF;
5528       END IF;
5529 
5530       /*Sets the View Privilege when the ID is given then flags an error EGO_VIEW_PRIV_NOT_EXIST*/
5531       IF (P_agdl_tbl(i).view_privilege_id IS NOT NULL
5532       	  AND P_agdl_tbl(i).view_privilege_id <> G_NULL_CHAR
5533           AND P_agdl_tbl(i).view_privilege_name  IS NULL) THEN
5534         BEGIN
5535           SELECT function_name
5536           INTO   P_agdl_tbl(i).view_privilege_name
5537           FROM   fnd_form_functions
5538           WHERE  function_id = P_agdl_tbl(i).view_privilege_id;
5539         EXCEPTION
5540           WHEN no_data_found THEN
5541             write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'View Privilege provided is invalid');
5542 
5543             P_agdl_tbl(i).process_status := G_ERROR_RECORD;
5544 
5545             x_return_status := G_RET_STS_ERROR;
5546 
5547             error_handler.Add_error_message(p_message_name => 'EGO_VIEW_PRIV_NOT_EXIST',
5548                                             p_application_id => 'EGO',p_token_tbl => g_token_table,
5549                                             p_message_type => G_RET_STS_ERROR,p_row_identifier => P_agdl_tbl(i).transaction_id,
5550                                             p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5551           WHEN OTHERS THEN
5552             write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_agdl_validations Exception when others smt 7');
5553 
5554             x_return_status := G_RET_STS_UNEXP_ERROR;
5555 
5556             error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
5557                                             p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
5558                                             p_row_identifier => P_agdl_tbl(i).transaction_id,
5559                                             p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5560 
5561             x_return_msg := 'ego_ag_bulkload_pvt.Additional_agdl_validations smt 7 - '||SQLERRM;
5562 
5563    	  		RETURN;
5564         END;
5565       END IF;
5566 
5567       /*Sets the Edit Privilege when the ID is given then flags an error EGO_EDITW_PRIV_NOT_EXIST*/
5568       IF (P_agdl_tbl(i).edit_privilege_id IS NOT NULL
5569       	  AND P_agdl_tbl(i).edit_privilege_id <> G_NULL_NUM
5570           AND P_agdl_tbl(i).edit_privilege_name  IS NULL) THEN
5571         BEGIN
5572           SELECT function_name
5573           INTO   P_agdl_tbl(i).edit_privilege_name
5574           FROM   fnd_form_functions
5575           WHERE  function_id = P_agdl_tbl(i).edit_privilege_id;
5576         EXCEPTION
5577           WHEN no_data_found THEN
5578             write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Edit Privilege provided is invalid');
5579 
5580             P_agdl_tbl(i).process_status := G_ERROR_RECORD;
5581 
5582             x_return_status := G_RET_STS_ERROR;
5583 
5584             error_handler.Add_error_message(p_message_name => 'EGO_EDIT_PRIV_NOT_EXIST',
5585                                             p_application_id => 'EGO',p_token_tbl => g_token_table,
5586                                             p_message_type => G_RET_STS_ERROR,p_row_identifier => P_agdl_tbl(i).transaction_id,
5587                                             p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5588           WHEN OTHERS THEN
5589             write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_agdl_validations Exception when others smt 8');
5590 
5591             x_return_status := G_RET_STS_UNEXP_ERROR;
5592 
5593             error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
5594                                             p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
5595                                             p_row_identifier => P_agdl_tbl(i).transaction_id,
5596                                             p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5597 
5598             x_return_msg := 'ego_ag_bulkload_pvt.Additional_agdl_validations smt 8 - '||SQLERRM;
5599 
5600    	  		RETURN;
5601         END;
5602       END IF;
5603 
5604       /*Sets the Defaulting Name when the Defaulting is given then flags an error EGO_DEFAULTING_INVALID*/
5605       IF (P_agdl_tbl(i).defaulting  IS NOT NULL
5606           AND P_agdl_tbl(i).defaulting_name  IS NULL
5607           AND P_agdl_tbl(i).transaction_type <> G_OPR_DELETE) THEN
5608         BEGIN
5609           SELECT meaning
5610           INTO   P_agdl_tbl(i).defaulting_name
5611           FROM   fnd_lookup_values
5612           WHERE  lookup_type = 'EGO_EF_AG_DL_BEHAVIOR'
5613                  AND lookup_code = P_agdl_tbl(i).defaulting
5614                  AND language = Userenv('LANG');
5615         EXCEPTION
5616           WHEN no_data_found THEN
5617           	IF (P_agdl_tbl(i).data_level_name <> 'ITEM_REVISION_LEVEL') THEN
5618 	            write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'The defaulting provided is invalid');
5619 
5620 	            P_agdl_tbl(i).process_status := G_ERROR_RECORD;
5621 
5622 	            x_return_status := G_RET_STS_ERROR;
5623 
5624 	            error_handler.Add_error_message(p_message_name => 'EGO_DEFAULTING_INVALID',p_application_id => 'EGO',
5625 	                                            p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5626 	                                            p_row_identifier => P_agdl_tbl(i).transaction_id,
5627 	                                            p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5628 	        END IF;
5629           WHEN OTHERS THEN
5630             write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_agdl_validations Exception when others smt 9');
5631 
5632             x_return_status := G_RET_STS_UNEXP_ERROR;
5633 
5634             error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
5635                                             p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
5636                                             p_row_identifier => P_agdl_tbl(i).transaction_id,
5637                                             p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5638 
5639             x_return_msg := 'ego_ag_bulkload_pvt.Additional_agdl_validations smt 9 - '||SQLERRM;
5640 
5641    	  		RETURN;
5642         END;
5643       END IF;
5644 
5645       /*Sets the Defaulting when the Defaulting Name is given then flags an error EGO_DEFAULTING_INVALID*/
5646       IF (P_agdl_tbl(i).defaulting  IS NULL
5647           AND P_agdl_tbl(i).defaulting_name  IS NOT NULL
5648           and P_agdl_tbl(i).transaction_type <> G_OPR_DELETE) THEN
5649         BEGIN
5650           SELECT lookup_code
5651           INTO   P_agdl_tbl(i).defaulting_name
5652           FROM   fnd_lookup_values
5653           WHERE  lookup_type = 'EGO_EF_AG_DL_BEHAVIOR'
5654                  AND meaning = P_agdl_tbl(i).defaulting_name
5655                  AND language = Userenv('LANG');
5656         EXCEPTION
5657           WHEN no_data_found THEN
5658           	IF (P_agdl_tbl(i).data_level_name <> 'ITEM_REVISION_LEVEL') THEN
5659 	            write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'The defaulting name provided is invalid');
5660 
5661 	            P_agdl_tbl(i).process_status := G_ERROR_RECORD;
5662 
5663 	            x_return_status := G_RET_STS_ERROR;
5664 
5665 	            error_handler.Add_error_message(p_message_name => 'EGO_DEFAULTING_INVALID',p_application_id => 'EGO',
5666 	                                            p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5667 	                                            p_row_identifier => P_agdl_tbl(i).transaction_id,
5668 	                                            p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5669 	        END IF;
5670           WHEN OTHERS THEN
5671             write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_agdl_validations Exception when others smt 10');
5672 
5673             x_return_status := G_RET_STS_UNEXP_ERROR;
5674 
5675             error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
5676                                             p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
5677                                             p_row_identifier => P_agdl_tbl(i).transaction_id,
5678                                             p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5679 
5680             x_return_msg := 'ego_ag_bulkload_pvt.Additional_agdl_validations smt 10 - '||SQLERRM;
5681 
5682    	  		RETURN;
5683         END;
5684       END IF;
5685 
5686       /*Sets the data level when the data level id is given or else flags an error EGO_DL_NOT_EXIST*/
5687       IF (P_agdl_tbl(i).data_level_id  IS NOT NULL
5688           AND P_agdl_tbl(i).data_level_name  IS NULL) THEN
5689         BEGIN
5690           SELECT data_level_name
5691           INTO   P_agdl_tbl(i).data_level_name
5692           FROM   ego_data_level_b
5693           WHERE  attr_group_type = P_agdl_tbl(i).attr_group_type
5694                  AND application_id = g_ego_application_id
5695                  AND data_level_id = P_agdl_tbl(i).data_level_id;
5696         EXCEPTION
5697           WHEN no_data_found THEN
5698             write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Data Level provided is invalid');
5699 
5700             P_agdl_tbl(i).process_status := G_ERROR_RECORD;
5701 
5702             x_return_status := G_RET_STS_ERROR;
5703 
5704             error_handler.Add_error_message(p_message_name => 'EGO_DL_NOT_EXIST',p_application_id => 'EGO',
5705                                             p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5706                                             p_row_identifier => P_agdl_tbl(i).transaction_id,
5707                                             p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5708           WHEN OTHERS THEN
5709             write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_agdl_validations Exception when others smt 11');
5710 
5711             x_return_status := G_RET_STS_UNEXP_ERROR;
5712 
5713             error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
5714                                             p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
5715                                             p_row_identifier => P_agdl_tbl(i).transaction_id,
5716                                             p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5717 
5718             x_return_msg := 'ego_ag_bulkload_pvt.Additional_agdl_validations smt 11 - '||SQLERRM;
5719 
5720    	  		RETURN;
5721         END;
5722       END IF;
5723 
5724       /*Throws an error EGO_VAR_DL_SKU if the AG is of type VARIANT and Business Entity is not ITEM and SKU NULL*/
5725       IF (P_agdl_tbl(i).attr_group_id  IS NOT NULL
5726           AND (P_agdl_tbl(i).data_level_name <> G_DL_ITEM_LEVEL
5727                 OR P_agdl_tbl(i).defaulting  IS NOT NULL)) THEN
5728         BEGIN
5729           SELECT Nvl(variant,'N')
5730           INTO   lv_flag
5731           FROM   ego_fnd_dsc_flx_ctx_ext
5732           WHERE  attr_group_id = P_agdl_tbl(i).attr_group_id;
5733 
5734           IF (lv_flag = 'Y') THEN
5735             write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute group of type Variant can only set ITEM as the business entity and with SKU as NULL');
5736 
5737             P_agdl_tbl(i).process_status := G_ERROR_RECORD;
5738 
5739             x_return_status := G_RET_STS_ERROR;
5740 
5741             error_handler.Add_error_message(p_message_name => 'EGO_VAR_DL_SKU',p_application_id => 'EGO',
5742                                             p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5743                                             p_row_identifier => P_agdl_tbl(i).transaction_id,
5744                                             p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5745           END IF;
5746         EXCEPTION
5747           WHEN no_data_found THEN
5748             write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute Group is invalid');
5749 
5750             x_return_status := G_RET_STS_ERROR;
5751 
5752             error_handler.Add_error_message(p_message_name => 'EGO_AG_INVALID',p_application_id => 'EGO',
5753                                             p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5754                                             p_row_identifier => P_agdl_tbl(i).transaction_id,
5755                                             p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5756           WHEN OTHERS THEN
5757             write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_agdl_validations Exception when others smt 12');
5758 
5759             x_return_status := G_RET_STS_UNEXP_ERROR;
5760 
5761             error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
5762                                             p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
5763                                             p_row_identifier => P_agdl_tbl(i).transaction_id,
5764                                             p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5765 
5766             x_return_msg := 'ego_ag_bulkload_pvt.Additional_agdl_validations smt 12 - '||SQLERRM;
5767 
5768    	  		RETURN;
5769         END;
5770       END IF;
5771 
5772       /*Throws an error EGO_DL_NOT_EXIST if the AG is of type single row or Multi row and Business Entity is not
5773 ITEM_LEVEL, ITEM_REVISION_LEVEL, ITEM_ORG, ITEM_SUP, ITEM_SUP_SITE, ITEM_SUP_SITE_ORG*/
5774       IF (P_agdl_tbl(i).attr_group_id  IS NOT NULL) THEN
5775           IF (P_agdl_tbl(i).data_level_name = G_DL_ITEM_LEVEL
5776                 OR P_agdl_tbl(i).data_level_name = G_DL_ITEM_REV_LEVEL
5777                 OR P_agdl_tbl(i).data_level_name = G_DL_ITEM_ORG
5778                 OR P_agdl_tbl(i).data_level_name = G_DL_ITEM_SUP
5779                 OR P_agdl_tbl(i).data_level_name = G_DL_ITEM_SUP_SITE
5780                 OR P_agdl_tbl(i).data_level_name = G_DL_ITEM_SUP_SITE_ORG) THEN
5781                 NULL;
5782            ELSE
5783 		        BEGIN
5784 		          SELECT Nvl(variant,'N')
5785 		          INTO   lv_flag
5786 		          FROM   ego_fnd_dsc_flx_ctx_ext
5787 		          WHERE  attr_group_id = P_agdl_tbl(i).attr_group_id;
5788 
5789 		          IF (lv_flag = 'N') THEN
5790 		            write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'The Behaviour and Business Entity combination is incorrect');
5791 
5792 		            P_agdl_tbl(i).process_status := G_ERROR_RECORD;
5793 
5794 		            x_return_status := G_RET_STS_ERROR;
5795 
5796 		            error_handler.Add_error_message(p_message_name => 'EGO_VAR_DL_SKU',p_application_id => 'EGO',
5797 		                                            p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5798 		                                            p_row_identifier => P_agdl_tbl(i).transaction_id,
5799 		                                            p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5800 		          END IF;
5801 		        EXCEPTION
5802 		          WHEN no_data_found THEN
5803 		            write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute group is invalid');
5804 
5805 		            x_return_status := G_RET_STS_ERROR;
5806 
5807 		            error_handler.Add_error_message(p_message_name => 'EGO_AG_INVALID',p_application_id => 'EGO',
5808 		                                            p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5809 		                                            p_row_identifier => P_agdl_tbl(i).transaction_id,
5810 		                                            p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5811 		          WHEN OTHERS THEN
5812 		            write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_agdl_validations Exception when others smt 13');
5813 
5814 		            x_return_status := G_RET_STS_UNEXP_ERROR;
5815 
5816 		            error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
5817 		                                            p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
5818 		                                            p_row_identifier => P_agdl_tbl(i).transaction_id,
5819 		                                            p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5820 
5821 		            x_return_msg := 'ego_ag_bulkload_pvt.Additional_agdl_validations smt 13 - '||SQLERRM;
5822 
5823 		   	  		RETURN;
5824 		        END;
5825         END IF;
5826        END IF;
5827         /*Throws an error EGO_MULROW_SKU if the AG is of type single row or Multi row and Business Entity and SKU combination is invalid*/
5828         IF (P_agdl_tbl(i).attr_group_id  IS NOT NULL) THEN
5829             IF (((P_agdl_tbl(i).data_level_name = G_DL_ITEM_LEVEL
5830                     OR P_agdl_tbl(i).data_level_name = G_DL_ITEM_ORG
5831                     OR P_agdl_tbl(i).data_level_name = G_DL_ITEM_SUP
5832                     OR P_agdl_tbl(i).data_level_name = G_DL_ITEM_SUP_SITE
5833                     OR P_agdl_tbl(i).data_level_name = G_DL_ITEM_SUP_SITE_ORG)
5834                   AND (P_agdl_tbl(i).defaulting = 'D'
5835                         OR P_agdl_tbl(i).defaulting = 'I'))
5836                   OR (P_agdl_tbl(i).data_level_name = G_DL_ITEM_REV_LEVEL
5837                       AND P_agdl_tbl(i).defaulting  IS NULL)) THEN
5838 	              NULL;
5839             ELSE
5840 		          BEGIN
5841 		            SELECT Nvl(variant,'N')
5842 		            INTO   lv_flag
5843 		            FROM   ego_fnd_dsc_flx_ctx_ext
5844 		            WHERE  attr_group_id = P_agdl_tbl(i).attr_group_id;
5845 
5846 		            IF (lv_flag = 'N') THEN
5847 		              write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute Group behaviour, business entity and the style to SKU combination in invalid');
5848 
5849 		              P_agdl_tbl(i).process_status := G_ERROR_RECORD;
5850 
5851 		              x_return_status := G_RET_STS_ERROR;
5852 
5853 		              error_handler.Add_error_message(p_message_name => 'EGO_MULROW_SKU',p_application_id => 'EGO',
5854 		                                              p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5855 		                                              p_row_identifier => P_agdl_tbl(i).transaction_id,
5856 		                                              p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5857 		            END IF;
5858 		          EXCEPTION
5859 		            WHEN no_data_found THEN
5860 		              write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute group is invalid');
5861 
5862 		              x_return_status := G_RET_STS_ERROR;
5863 
5864 		              error_handler.Add_error_message(p_message_name => 'EGO_AG_INVALID',p_application_id => 'EGO',
5865 		                                              p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5866 		                                              p_row_identifier => P_agdl_tbl(i).transaction_id,
5867 		                                              p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5868 		            WHEN OTHERS THEN
5869 		              write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_agdl_validations Exception when others smt 14');
5870 
5871 		              x_return_status := G_RET_STS_UNEXP_ERROR;
5872 
5873 		              error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
5874 		                                              p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
5875 		                                              p_row_identifier => P_agdl_tbl(i).transaction_id,
5876 		                                              p_entity_code => G_ENTITY_DL,p_table_name => G_ENTITY_DL_tab);
5877 
5878 		              x_return_msg := 'ego_ag_bulkload_pvt.Additional_agdl_validations smt 14 - '||SQLERRM;
5879 
5880 		   	  		  RETURN;
5881 		          END;
5882           END IF;
5883         END IF;
5884     END LOOP;
5885   EXCEPTION
5886     WHEN OTHERS THEN
5887       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_agdl_validations Exception when others'||SQLERRM);
5888 
5889       x_return_status := G_RET_STS_UNEXP_ERROR;
5890 
5891       x_return_msg := 'ego_ag_bulkload_pvt.Additional_agdl_validations - '||SQLERRM;
5892 
5893    	  RETURN;
5894   END Additional_agdl_validations;
5895 
5896   /*This procedure is used to do additional validations on attributes.
5897   	Used in the API flow.
5898   	p_attr_tbl        IN OUT NOCOPY  Attributes plsql table
5899   	x_return_status OUT NOCOPY parameter that returns the status*/
5900   PROCEDURE Additional_attr_validations
5901        (p_attr_tbl       IN OUT NOCOPY ego_metadata_pub.ego_attr_group_cols_tbl,
5902         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
5903   IS
5904     lv_smt  NUMBER; --Statement counter
5905   	lv_proc VARCHAR2(30) := 'Additional_attr_validations';
5906   BEGIN
5907     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering Additional_attr_validations');
5908 
5909     x_return_status := G_RET_STS_SUCCESS;
5910 
5911     lv_smt := 1;
5912 
5913     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
5914 
5915     FOR i IN p_attr_tbl.FIRST.. p_attr_tbl.LAST LOOP
5916       /*Convert transaction type to upper case*/
5917       SELECT Upper(P_attr_tbl(i).transaction_type)
5918       INTO   P_attr_tbl(i).transaction_type
5919       FROM   dual;
5920 
5921       /*Check for invalid transaction type in the Attribute table*/
5922       IF ( P_attr_tbl(i).transaction_type = G_OPR_CREATE
5923            OR P_attr_tbl(i).transaction_type = G_OPR_UPDATE
5924            OR P_attr_tbl(i).transaction_type = G_OPR_DELETE
5925            OR P_attr_tbl(i).transaction_type = G_OPR_SYNC) THEN
5926            NULL;
5927       ELSE
5928         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Transaction type Invalid for Attributes');
5929 
5930         P_attr_tbl(i).process_status := G_ERROR_RECORD;
5931 
5932         x_return_status := G_RET_STS_ERROR;
5933 
5934         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Transaction Type passed is incorrect');
5935 
5936         error_handler.Add_error_message(p_message_name => 'EGO_TRANS_TYPE_INVALID',p_application_id => 'EGO',
5937                                         p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5938                                         p_row_identifier => P_attr_tbl(i).transaction_id,
5939                                         p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
5940       END IF;
5941 
5942       /*Checks if the attribute group type passed is EGO_ITEMMGMT_GROUP or else thows the error EGO_AG_TYPE_INVALID*/
5943       IF (P_attr_tbl(i).attr_group_type <> G_EGO_ITEMMGMT_GROUP) THEN
5944         P_attr_tbl(i).process_status := G_ERROR_RECORD;
5945 
5946         x_return_status := G_RET_STS_ERROR;
5947 
5948         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute group Type passed is incorrect');
5949 
5950         error_handler.Add_error_message(p_message_name => 'EGO_AG_TYPE_INVALID',p_application_id => 'EGO',
5951                                         p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5952                                         p_row_identifier => P_attr_tbl(i).transaction_id,
5953                                         p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
5954       END IF;
5955     END LOOP;
5956 
5957     /*Value to ID Conversions for Attributes*/
5958     Value_to_id_attr_tbl(p_attr_tbl,x_return_status, x_return_msg); IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN RETURN; END IF;
5959 
5960     FOR i IN p_attr_tbl.FIRST.. p_attr_tbl.LAST LOOP
5961       IF (P_attr_tbl(i).process_status = G_PROCESS_RECORD) THEN
5962         lv_smt := 1;
5963 
5964         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 1');
5965 
5966         /*Sets the attribute group name when the attribute group id is given*/
5967         IF (P_attr_tbl(i).attr_group_id IS NOT NULL
5968             AND P_attr_tbl(i).attr_group_name IS NULL) THEN
5969           BEGIN
5970             SELECT descriptive_flex_context_code
5971             INTO   P_attr_tbl(i).attr_group_name
5972             FROM   ego_fnd_dsc_flx_ctx_ext
5973             WHERE  application_id = g_ego_application_id
5974                    AND descriptive_flexfield_name = P_attr_tbl(i).attr_group_type
5975                    AND attr_group_id = P_attr_tbl(i).attr_group_id;
5976           EXCEPTION
5977             WHEN no_data_found THEN
5978               x_return_status := G_RET_STS_ERROR;
5979 
5980               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute Group does not exist');
5981 
5982               error_handler.Add_error_message(p_message_name => 'EGO_AG_INVALID',p_application_id => 'EGO',
5983                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
5984                                               p_row_identifier => P_attr_tbl(i).transaction_id,
5985                                               p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
5986             WHEN OTHERS THEN
5987               x_return_status := G_RET_STS_UNEXP_ERROR;
5988 
5989               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_attr_validations when others smt 1');
5990 
5991               error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
5992                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
5993                                               p_row_identifier => P_attr_tbl(i).transaction_id,
5994                                               p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
5995 
5996               x_return_msg := 'ego_ag_bulkload_pvt.Additional_attr_validations smt 1- '||SQLERRM;
5997 
5998    	  		  RETURN;
5999           END;
6000         END IF;
6001 
6002         lv_smt := 2;
6003 
6004         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 2');
6005 
6006         /*Sets the internal attribute name when the attribute id is given*/
6007         IF (P_attr_tbl(i).attr_id IS NOT NULL
6008             AND P_attr_tbl(i).internal_name IS NULL) THEN
6009           BEGIN
6010             SELECT fdfcu.end_user_column_name
6011             INTO   P_attr_tbl(i).internal_name
6012             FROM   fnd_descr_flex_column_usages fdfcu,
6013                    ego_fnd_df_col_usgs_ext efdcue
6014             WHERE  fdfcu.application_id = efdcue.application_id
6015                    AND fdfcu.descriptive_flexfield_name = efdcue.descriptive_flexfield_name
6016                    AND fdfcu.descriptive_flex_context_code = efdcue.descriptive_flex_context_code
6017                    AND fdfcu.application_column_name = efdcue.application_column_name
6018                    AND fdfcu.application_id = g_ego_application_id
6019                    AND fdfcu.descriptive_flexfield_name = P_attr_tbl(i).attr_group_type
6020                    AND fdfcu.descriptive_flex_context_code = P_attr_tbl(i).attr_group_name
6021                    AND efdcue.attr_id = P_attr_tbl(i).attr_id;
6022 
6023             IF (P_attr_tbl(i).transaction_type = G_OPR_SYNC) THEN
6024               P_attr_tbl(i).transaction_type := G_OPR_UPDATE;
6025             END IF;
6026           EXCEPTION
6027             WHEN no_data_found THEN
6028               IF (P_attr_tbl(i).transaction_type = G_OPR_SYNC) THEN
6029                 P_attr_tbl(i).transaction_type := G_OPR_CREATE;
6030               ELSE
6031                 x_return_status := G_RET_STS_ERROR;
6032 
6033                 write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Attribute does not exist');
6034 
6035                 error_handler.Add_error_message(p_message_name => 'EGO_ATTR_NOT_EXISTS',p_application_id => 'EGO',
6036                                                 p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
6037                                                 p_row_identifier => P_attr_tbl(i).transaction_id,
6038                                                 p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
6039               END IF;
6040             WHEN OTHERS THEN
6041               x_return_status := G_RET_STS_UNEXP_ERROR;
6042 
6043               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_attr_validations Exception when others smt 2');
6044 
6045               error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
6046                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
6047                                               p_row_identifier => P_attr_tbl(i).transaction_id,
6048                                               p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
6049 
6050               x_return_msg := 'ego_ag_bulkload_pvt.Additional_attr_validations smt 2- '||SQLERRM;
6051 
6052    	  		  RETURN;
6053           END;
6054         END IF;
6055 
6056         lv_smt := 3;
6057 
6058         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Statement 3');
6059 
6060         /*Sets the value set name when the value set id is given*/
6061         IF (P_attr_tbl(i).flex_value_set_id IS NOT NULL
6062         	AND P_attr_tbl(i).flex_value_set_id <> G_NULL_NUM
6063             AND P_attr_tbl(i).flex_value_set_name IS NULL) THEN
6064           BEGIN
6065             SELECT ffvs.flex_value_set_name
6066             INTO   P_attr_tbl(i).flex_value_set_name
6067             FROM   fnd_flex_value_sets ffvs
6068             WHERE  ffvs.flex_value_set_id = P_attr_tbl(i).flex_value_set_id;
6069           EXCEPTION
6070             WHEN no_data_found THEN
6071               x_return_status := G_RET_STS_ERROR;
6072 
6073               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Value Set does not exist in the system');
6074 
6075               error_handler.Add_error_message(p_message_name => 'EGO_EF_BC_SEL_EXI_VALUE',p_application_id => 'EGO',
6076                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_ERROR,
6077                                               p_row_identifier => P_attr_tbl(i).transaction_id,
6078                                               p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
6079             WHEN OTHERS THEN
6080               x_return_status := G_RET_STS_UNEXP_ERROR;
6081 
6082               write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_attr_validations Exception when others smt 3');
6083 
6084 
6085               error_handler.Add_error_message(p_message_text => sqlerrm,p_application_id => 'EGO',
6086                                               p_token_tbl => g_token_table,p_message_type => G_RET_STS_UNEXP_ERROR,
6087                                               p_row_identifier => P_attr_tbl(i).transaction_id,
6088                                               p_entity_code => G_ENTITY_ATTR,p_table_name => G_ENTITY_ATTR_TAB);
6089 
6090               x_return_msg := 'ego_ag_bulkload_pvt.Additional_attr_validations smt 3 - '||SQLERRM;
6091 
6092    	  		  RETURN;
6093           END;
6094         END IF;
6095       END IF;
6096     END LOOP;
6097 
6098     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit Additional_attr_validations');
6099   EXCEPTION
6100     WHEN OTHERS THEN
6101       x_return_status := G_RET_STS_UNEXP_ERROR;
6102 
6103       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Additional_attr_validations Exception when others'||SQLERRM);
6104 
6105       x_return_msg := 'ego_ag_bulkload_pvt.Additional_attr_validations - '||SQLERRM;
6106 
6107    	  RETURN;
6108   END Additional_attr_validations;
6109 
6110   /*This procedure is used to update the attribute group interface table
6111   	Used in the interface flow.
6112   	p_ag_tbl        IN OUT NOCOPY Attribute group plsql table
6113   	x_return_status OUT NOCOPY parameter that returns the status*/
6114   PROCEDURE update_intf_attr_groups
6115        (p_ag_tbl         IN OUT NOCOPY ego_metadata_pub.ego_attr_groups_tbl,
6116         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
6117   IS
6118   	lv_proc VARCHAR2(30) := 'update_intf_attr_groups';
6119   	trans_id dbms_sql.number_table;
6120   BEGIN
6121     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering update_intf_attr_groups');
6122 
6123     x_return_status := G_RET_STS_SUCCESS;
6124 
6125     FOR i IN p_ag_tbl.FIRST..p_ag_tbl.LAST LOOP
6126     	trans_id(i) := p_ag_tbl(i).transaction_id;
6127   	END LOOP;
6128 
6129     FORALL i IN p_ag_tbl.FIRST..p_ag_tbl.LAST
6130       UPDATE ego_attr_groups_interface
6131       SET    ROW = p_ag_tbl(i)
6132       WHERE  transaction_id = trans_id(i);
6133 
6134     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit update_intf_attr_groups');
6135   EXCEPTION
6136     WHEN OTHERS THEN
6137       x_return_status := G_RET_STS_UNEXP_ERROR;
6138 
6139       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'update_intf_attr_groups Exception when others'||SQLERRM);
6140 
6141       x_return_msg := 'ego_ag_bulkload_pvt.update_intf_attr_groups - '||SQLERRM;
6142 
6143    	  RETURN;
6144   END update_intf_attr_groups;
6145 
6146   /*This procedure is used to update the attribute group data level interface table
6147   	Used in the interface flow.
6148   	p_agdl_tbl        IN OUT NOCOPY Attribute group data level plsql table
6149   	x_return_status OUT NOCOPY parameter that returns the status*/
6150   PROCEDURE update_intf_data_level
6151        (p_agdl_tbl       IN OUT NOCOPY ego_metadata_pub.ego_attr_groups_dl_tbl,
6152         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
6153   IS
6154   	lv_proc VARCHAR2(30) := 'update_intf_data_level';
6155   	trans_id dbms_sql.number_table;
6156   BEGIN
6157     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering update_intf_data_level');
6158 
6159     x_return_status := G_RET_STS_SUCCESS;
6160 
6161     FOR i IN p_agdl_tbl.FIRST..p_agdl_tbl.LAST LOOP
6162     	trans_id(i) := p_agdl_tbl(i).transaction_id;
6163   	END LOOP;
6164 
6165     FORALL i IN p_agdl_tbl.FIRST..p_agdl_tbl.LAST
6166       UPDATE ego_attr_groups_dl_interface
6167       SET    ROW = p_agdl_tbl(i)
6168       WHERE  transaction_id = trans_id(i);
6169 
6170 
6171     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit update_intf_data_level');
6172   EXCEPTION
6173     WHEN OTHERS THEN
6174       x_return_status := G_RET_STS_UNEXP_ERROR;
6175 
6176       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'update_intf_data_level Exception when others'||SQLERRM);
6177 
6178       x_return_msg := 'ego_ag_bulkload_pvt.update_intf_data_level - '||SQLERRM;
6179 
6180    	  RETURN;
6181   END update_intf_data_level;
6182 
6183   /*This procedure is used to update the attributes interface table
6184   	Used in the Interface flow.
6185   	p_attr_tbl        IN OUT NOCOPY Attributes plsql table
6186   	x_return_status OUT NOCOPY parameter that returns the status*/
6187   PROCEDURE update_intf_attribute
6188        (p_attr_tbl       IN OUT NOCOPY ego_metadata_pub.ego_attr_group_cols_tbl,
6189         x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
6190   IS
6191   	lv_proc VARCHAR2(30) := 'update_intf_attribute';
6192   	trans_id dbms_sql.number_table;
6193   BEGIN
6194     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering update_intf_attribute');
6195 
6196     x_return_status := G_RET_STS_SUCCESS;
6197 
6198     FOR i IN p_attr_tbl.FIRST..p_attr_tbl.LAST LOOP
6199     	trans_id(i) := p_attr_tbl(i).transaction_id;
6200   	END LOOP;
6201 
6202     FORALL i IN p_attr_tbl.FIRST..p_attr_tbl.LAST
6203       UPDATE ego_attr_group_cols_intf
6204       SET    ROW = P_attr_tbl(i)
6205       WHERE  transaction_id = trans_id(i);
6206 
6207       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit update_intf_attribute');
6208   EXCEPTION
6209     WHEN OTHERS THEN
6210       x_return_status := G_RET_STS_UNEXP_ERROR;
6211 
6212       write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'update_intf_attribute Exception when others'||SQLERRM);
6213 
6214       x_return_msg := 'ego_ag_bulkload_pvt.update_intf_attribute - '||SQLERRM;
6215 
6216    	  RETURN;
6217   END update_intf_attribute;
6218 
6219   /*This procedure is used to delete processed records from the attribute group's interface table
6220   	Used in the interface flow.
6221   	x_set_process_id IN Set process id
6222   	x_return_status OUT NOCOPY parameter that returns the status*/
6223   PROCEDURE delete_processed_attr_groups(
6224     x_set_process_id IN NUMBER,
6225     x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
6226     IS
6227     	lv_proc VARCHAR2(30) := 'delete_processed_attr_groups';
6228     BEGIN
6229     	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering delete_processed_attr_groups');
6230 
6231     	x_return_status := G_RET_STS_SUCCESS;
6232 
6233     	DELETE FROM ego_attr_groups_interface
6234       	WHERE process_status = G_SUCCESS_RECORD
6235       	AND (x_set_process_id IS  NULL
6236       		 OR set_process_id = x_set_process_id);
6237 
6238     	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit delete_processed_attr_groups');
6239     EXCEPTION
6240     	WHEN OTHERS THEN
6241     	   	x_return_status := G_RET_STS_UNEXP_ERROR;
6242 
6243          	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'delete_processed_attr_groups Exception when others'||SQLERRM);
6244 
6245          	x_return_msg := 'ego_ag_bulkload_pvt.delete_processed_attr_groups - '||SQLERRM;
6246 
6247    	     RETURN;
6248 
6249     END delete_processed_attr_groups;
6250 
6251   /*This procedure is used to delete processed records from the AG Data level's interface table
6252   	Used in the interface flow.
6253 	x_set_process_id IN Set process id
6254 	x_return_status OUT NOCOPY parameter that returns the status*/
6255   PROCEDURE delete_processed_data_level(
6256     x_set_process_id IN NUMBER,
6257     x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
6258     IS
6259     	lv_proc VARCHAR2(30) := 'delete_processed_data_level';
6260     BEGIN
6261     	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering delete_processed_data_level');
6262 
6263     	x_return_status := G_RET_STS_SUCCESS;
6264 
6265     	DELETE FROM ego_attr_groups_dl_interface
6266       	WHERE process_status = G_SUCCESS_RECORD
6267       	AND (x_set_process_id IS  NULL
6268       		 OR set_process_id = x_set_process_id);
6269 
6270     	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit delete_processed_data_level');
6271     EXCEPTION
6272     	WHEN OTHERS THEN
6273     	  	x_return_status := G_RET_STS_UNEXP_ERROR;
6274 
6275          	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'delete_processed_data_level Exception when others'||SQLERRM);
6276 
6277          	x_return_msg := 'ego_ag_bulkload_pvt.delete_processed_data_level - '||SQLERRM;
6278 
6279    	     RETURN;
6280     END delete_processed_data_level;
6281 
6282   /*This procedure is used to delete processed records from the Attribute's interface table
6283   	Used in the Interface flow.
6284 	x_set_process_id IN Set process id
6285 	x_return_status OUT NOCOPY parameter that returns the status*/
6286   PROCEDURE delete_processed_attributes(
6287     x_set_process_id IN NUMBER,
6288     x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
6289     IS
6290     	lv_proc VARCHAR2(30) := 'delete_processed_attributes';
6291     BEGIN
6292     	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering delete_processed_attributes');
6293 
6294     	x_return_status := G_RET_STS_SUCCESS;
6295 
6296     	DELETE FROM ego_attr_group_cols_intf
6297       	WHERE process_status = G_SUCCESS_RECORD
6298       	AND (x_set_process_id IS  NULL
6299       		 OR set_process_id = x_set_process_id);
6300 
6301     	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit delete_processed_attributes');
6302     EXCEPTION
6303     	WHEN OTHERS THEN
6304     	   	x_return_status := G_RET_STS_UNEXP_ERROR;
6305 
6306          	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'delete_processed_attributes Exception when others'||SQLERRM);
6307 
6308          	x_return_msg := 'ego_ag_bulkload_pvt.delete_processed_attributes - '||SQLERRM;
6309 
6310    	     	RETURN;
6311     END delete_processed_attributes;
6312 
6313   /*This procedure is used in the update flow to handle null values for AG
6314   	Used in the interface and API flow.
6315   	p_ag_tbl        IN OUT NOCOPY Attribute groups plsql table
6316   	x_return_status OUT NOCOPY parameter that returns the status
6317   	x_return_msg OUT NOCOPY parameter that returns the error message*/
6318   PROCEDURE handle_null_ag(
6319     p_ag_tbl        IN OUT NOCOPY ego_metadata_pub.ego_attr_groups_tbl,
6320     x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
6321     IS
6322     lv_display_name VARCHAR2(40);	/*Added for bug 9738246*/
6323     lv_num_of_cols NUMBER;
6324     lv_num_of_rows NUMBER;
6325     lv_multi_row   VARCHAR2(1);
6326     lv_variant	   VARCHAR2(1);
6327     lv_description VARCHAR2(240);	/*Added for bug 9738246*/
6328     lv_proc VARCHAR2(30) := 'handle_null_ag';
6329     BEGIN
6330     	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering handle_null_ag');
6331 
6332     	x_return_status := G_RET_STS_SUCCESS;
6333 
6334     	FOR i IN p_ag_tbl.FIRST..p_ag_tbl.LAST LOOP
6335     		IF (p_ag_tbl(i).process_status = G_PROCESS_RECORD
6336     			AND p_ag_tbl(i).transaction_type = G_OPR_UPDATE) THEN
6337     			BEGIN
6338     				write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Smt 1');
6339 
6340     				SELECT NUM_OF_COLS, NUM_OF_ROWS, MULTI_ROW, VARIANT INTO lv_num_of_cols, lv_num_of_rows, lv_multi_row, lv_variant
6341     				FROM EGO_FND_DSC_FLX_CTX_EXT
6342     				WHERE DESCRIPTIVE_FLEXFIELD_NAME = p_ag_tbl(i).attr_group_type
6343         	 		AND DESCRIPTIVE_FLEX_CONTEXT_CODE = p_ag_tbl(i).attr_group_name
6344          			AND APPLICATION_ID = G_EGO_APPLICATION_ID;
6345 
6346          			write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'smt 2');
6347 
6348          			SELECT DESCRIPTIVE_FLEX_CONTEXT_NAME, DESCRIPTION INTO lv_display_name, lv_description
6349          			FROM FND_DESCR_FLEX_CONTEXTS_TL
6350          			WHERE APPLICATION_ID = G_EGO_APPLICATION_ID
6351        				AND DESCRIPTIVE_FLEXFIELD_NAME = p_ag_tbl(i).attr_group_type
6352        				AND DESCRIPTIVE_FLEX_CONTEXT_CODE = p_ag_tbl(i).attr_group_name
6353       				AND USERENV('LANG') = LANGUAGE;
6354 
6355       				write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'smt 3');
6356 
6357       				IF (p_ag_tbl(i).attr_group_disp_name  IS NULL
6358       					OR p_ag_tbl(i).attr_group_disp_name = G_NULL_CHAR) THEN
6359       					p_ag_tbl(i).attr_group_disp_name := lv_display_name;
6360       				END IF;
6361 
6362       				write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'smt 4');
6363 
6364       				IF p_ag_tbl(i).description  IS NULL THEN
6365       					p_ag_tbl(i).description := lv_description;
6366       				ELSIF p_ag_tbl(i).description = G_NULL_CHAR THEN
6367       					p_ag_tbl(i).description := NULL;
6368       				END IF;
6369 
6370       				write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'smt 5');
6371 
6372       				IF ((p_ag_tbl(i).num_of_rows  IS NULL
6373       					OR p_ag_tbl(i).num_of_rows = G_NULL_NUM)	/*Changed for bug 9719202*/
6374       					AND lv_num_of_rows  IS NOT NULL) THEN
6375       					p_ag_tbl(i).num_of_rows := lv_num_of_rows;
6376       				END IF;
6377 
6378       				write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'smt 6');
6379 
6380       				IF ((p_ag_tbl(i).num_of_cols  IS NULL
6381       					OR p_ag_tbl(i).num_of_cols = G_NULL_NUM)	/*Changed for bug 9719202*/
6382       					AND lv_num_of_cols  IS NOT NULL) THEN
6383       					p_ag_tbl(i).num_of_cols := lv_num_of_cols;
6384       				END IF;
6385 
6386       				/*Added for bug 9719202*/
6387       				write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'smt 7');
6388 
6389       				IF (NVL(lv_variant,'N') = 'N' AND lv_multi_row = 'N') THEN
6390       					p_ag_tbl(i).num_of_rows := null;
6391       				END IF;
6392 
6393       				write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'smt 8');
6394 
6395       				IF (NVL(lv_variant,'N') = 'Y' AND lv_multi_row = 'N') THEN
6396       					p_ag_tbl(i).num_of_rows := null;
6397       					p_ag_tbl(i).num_of_cols := null;
6398       				END IF;
6399          			/*End of comment for bug 9719202*/
6400       			EXCEPTION
6401       				WHEN OTHERS THEN
6402       					x_return_status := G_RET_STS_UNEXP_ERROR;
6403 
6404          				write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'handle_null_ag exception when others smt 1');
6405 
6406          				x_return_msg := 'ego_ag_bulkload_pvt.handle_null_ag - '||SQLERRM;
6407 
6408    	     				RETURN;
6409     			END;
6410     		END IF;
6411     	END LOOP;
6412     	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit handle_null_ag');
6413     EXCEPTION
6414     	WHEN OTHERS THEN
6415     		write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'handle_null_ag Exception when others'||SQLERRM);
6416     END handle_null_ag;
6417 
6418   /*This procedure is used to do final processing of the attribute group data level.
6419   	Used in the interface and API flow.
6420   	p_agdl_tbl        IN OUT NOCOPY Attribute group data level plsql table
6421   	x_return_status OUT NOCOPY parameter that returns the status
6422   	x_return_msg OUT NOCOPY parameter that returns the error message*/
6423   PROCEDURE handle_null_dl(
6424     p_agdl_tbl      IN OUT NOCOPY ego_metadata_pub.ego_attr_groups_dl_tbl,
6425     x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
6426     IS
6427     lv_defaulting VARCHAR2(1);
6428     lv_view_privilege_id NUMBER;
6429     lv_edit_privilege_id NUMBER;
6430     lv_raise_pre_event VARCHAR2(1);
6431     lv_raise_post_event VARCHAR2(1);
6432     lv_proc VARCHAR2(30) := 'handle_null_dl';
6433     BEGIN
6434     	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering handle_null_dl');
6435 
6436     	x_return_status := G_RET_STS_SUCCESS;
6437 
6438     	FOR i IN p_agdl_tbl.FIRST..p_agdl_tbl.LAST LOOP
6439     		IF (p_agdl_tbl(i).process_status = G_PROCESS_RECORD
6440     			AND p_agdl_tbl(i).transaction_type = G_OPR_UPDATE) THEN
6441     			BEGIN
6442     				write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Smt 1');
6443 
6444     				SELECT defaulting ,view_privilege_id,edit_privilege_id,raise_pre_event,raise_post_event
6445     				INTO lv_defaulting, lv_view_privilege_id ,lv_edit_privilege_id,lv_raise_pre_event, lv_raise_post_event
6446     				FROM EGO_ATTR_GROUP_DL
6447     				WHERE attr_group_id = p_agdl_tbl(i).attr_group_id
6448     				AND data_level_id = p_agdl_tbl(i).data_level_id;
6449 
6450     				IF (p_agdl_tbl(i).defaulting  IS NULL
6451     					OR p_agdl_tbl(i).defaulting = G_NULL_CHAR
6452     					OR p_agdl_tbl(i).defaulting_name = G_NULL_CHAR) THEN
6453     					p_agdl_tbl(i).defaulting := lv_defaulting;
6454     				END IF;
6455 
6456     				IF (p_agdl_tbl(i).view_privilege_id = G_NULL_NUM OR p_agdl_tbl(i).view_privilege_name = G_NULL_CHAR) THEN
6457     					p_agdl_tbl(i).view_privilege_id := NULL;
6458     					p_agdl_tbl(i).view_privilege_name := NULL;
6459     				ELSIF p_agdl_tbl(i).view_privilege_id  IS NULL THEN
6460     					p_agdl_tbl(i).view_privilege_id :=  lv_view_privilege_id;
6461     				END IF;
6462 
6463     				IF (p_agdl_tbl(i).edit_privilege_id = G_NULL_NUM OR p_agdl_tbl(i).edit_privilege_name = G_NULL_CHAR) THEN
6464     					p_agdl_tbl(i).edit_privilege_id := NULL;
6465     					p_agdl_tbl(i).edit_privilege_name := NULL;
6466     				ELSIF p_agdl_tbl(i).edit_privilege_id  IS NULL THEN
6467     					p_agdl_tbl(i).edit_privilege_id :=  lv_edit_privilege_id;
6468     				END IF;
6469 
6470     				IF p_agdl_tbl(i).pre_business_event_flag = G_NULL_CHAR THEN
6471     					p_agdl_tbl(i).pre_business_event_flag := NULL;
6472     				ELSIF p_agdl_tbl(i).pre_business_event_flag  IS NULL THEN
6473     					p_agdl_tbl(i).pre_business_event_flag :=  lv_raise_pre_event;
6474 
6475     				END IF;
6476 
6477     				IF p_agdl_tbl(i).business_event_flag = G_NULL_CHAR THEN
6478     					p_agdl_tbl(i).business_event_flag := NULL;
6479     				ELSIF p_agdl_tbl(i).business_event_flag  IS NULL THEN
6480     					p_agdl_tbl(i).business_event_flag :=  lv_raise_post_event;
6481 
6482     				END IF;
6483     			EXCEPTION
6484     				WHEN OTHERS THEN
6485     					x_return_status := G_RET_STS_UNEXP_ERROR;
6486 
6487          				write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'handle_null_dl exception when others smt 1');
6488 
6489          				x_return_msg := 'ego_ag_bulkload_pvt.handle_null_dl - '||SQLERRM;
6490 
6491    	     				RETURN;
6492     			END;
6493     		END IF;
6494     	END LOOP;
6495     	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit handle_null_dl');
6496 
6497     EXCEPTION
6498     	WHEN OTHERS THEN
6499     		write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'handle_null_dl Exception when others'||SQLERRM);
6500     END handle_null_dl;
6501 
6502   /*This procedure is used to do final processing of the attributes.
6503   	Used in the interface and API flow.
6504   	p_attr_tbl        IN OUT NOCOPY Attributes plsql table
6505   	x_return_status OUT NOCOPY parameter that returns the status
6506   	x_return_msg OUT NOCOPY parameter that returns the error message*/
6507   PROCEDURE handle_null_attr(
6508     p_attr_tbl      IN OUT NOCOPY ego_metadata_pub.ego_attr_group_cols_tbl,
6509     x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
6510     IS
6511     lv_value_set_id NUMBER;
6512     lv_default_value VARCHAR2(2000); 	/*Added for bug 9738246 */
6513     lv_info_1 VARCHAR2(2048);			/*Added for bug 9738246 */
6514     lv_uom_class VARCHAR2(40);
6515     lv_proc VARCHAR2(30) := 'handle_null_attr';
6516     BEGIN
6517     	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Entering handle_null_attr');
6518 
6519     	x_return_status := G_RET_STS_SUCCESS;
6520 
6521     	FOR i IN p_attr_tbl.FIRST..p_attr_tbl.LAST LOOP
6522     		IF (p_attr_tbl(i).process_status = G_PROCESS_RECORD
6523     			AND p_attr_tbl(i).transaction_type = G_OPR_UPDATE) THEN
6524     			BEGIN
6525     				SELECT FLEX_VALUE_SET_ID,DEFAULT_VALUE INTO lv_value_set_id, lv_default_value
6526     				FROM FND_DESCR_FLEX_COLUMN_USAGES
6527     				WHERE APPLICATION_ID =  G_EGO_APPLICATION_ID
6528          			AND DESCRIPTIVE_FLEXFIELD_NAME = p_attr_tbl(i).attr_group_type
6529          			AND DESCRIPTIVE_FLEX_CONTEXT_CODE = p_attr_tbl(i).attr_group_name
6530          			AND APPLICATION_COLUMN_NAME = p_attr_tbl(i).application_column_name;
6531 
6532          			SELECT INFO_1, UOM_CLASS INTO lv_info_1, lv_uom_class
6533          			FROM EGO_FND_DF_COL_USGS_EXT
6534          			WHERE APPLICATION_ID =  G_EGO_APPLICATION_ID
6535          			AND DESCRIPTIVE_FLEXFIELD_NAME = p_attr_tbl(i).attr_group_type
6536          			AND DESCRIPTIVE_FLEX_CONTEXT_CODE = p_attr_tbl(i).attr_group_name
6537          			AND APPLICATION_COLUMN_NAME = p_attr_tbl(i).application_column_name;
6538 
6539          			IF (p_attr_tbl(i).flex_value_set_id = G_NULL_NUM OR p_attr_tbl(i).flex_value_set_name = G_NULL_CHAR)THEN
6540          				p_attr_tbl(i).flex_value_set_id := NULL;
6541          			ELSIF p_attr_tbl(i).flex_value_set_id  IS NULL THEN
6542          				p_attr_tbl(i).flex_value_set_id := lv_value_set_id;
6543 
6544          			END IF;
6545 
6546          			IF p_attr_tbl(i).default_value = G_NULL_CHAR THEN
6547          				p_attr_tbl(i).default_value := NULL;
6548          			ELSIF p_attr_tbl(i).default_value  IS NULL THEN
6549          				p_attr_tbl(i).default_value := lv_default_value;
6550 
6551          			END IF;
6552 
6553          			IF (p_attr_tbl(i).info_1  IS NULL OR p_attr_tbl(i).info_1 = G_NULL_CHAR) THEN
6554          				p_attr_tbl(i).info_1 := lv_info_1;
6555          			END IF;
6556 
6557          			IF p_attr_tbl(i).uom_class = G_NULL_CHAR THEN
6558          				p_attr_tbl(i).uom_class := NULL;
6559          			ELSIF p_attr_tbl(i).uom_class  IS NULL THEN
6560          				p_attr_tbl(i).uom_class := lv_uom_class;
6561          			END IF;
6562     			EXCEPTION
6563     				WHEN OTHERS THEN
6564     				    x_return_status := G_RET_STS_UNEXP_ERROR;
6565 
6566          				write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'handle_null_attr exception when others smt 1');
6567 
6568          				x_return_msg := 'ego_ag_bulkload_pvt.handle_null_attr - '||SQLERRM;
6569     			END;
6570     		END IF;
6571     	END LOOP;
6572     	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exit handle_null_attr');
6573     EXCEPTION
6574     	WHEN OTHERS THEN
6575     		write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'handle_null_attr Exception when others'||SQLERRM);
6576     END handle_null_attr;
6577 
6578   /*This procedure is used to delete AG existing in the production table without a single DL associated
6579   	Used in the Interface flow and API flow.
6580 	x_return_status OUT NOCOPY parameter that returns the status
6581 	x_return_msg OUT NOCOPY parameter that returns the error message*/
6582   PROCEDURE delete_ag_none_dl(
6583   x_return_status OUT NOCOPY VARCHAR2, x_return_msg OUT NOCOPY VARCHAR2)
6584   IS
6585   CURSOR cur_ag_none_dl IS
6586   SELECT attr_group_id
6587 	FROM ego_fnd_dsc_flx_ctx_ext efd
6588 	WHERE application_id = G_EGO_APPLICATION_ID
6589 	AND DESCRIPTIVE_FLEXFIELD_NAME = G_EGO_ITEMMGMT_GROUP
6590 	AND NOT EXISTS (SELECT 1
6591     	            FROM EGO_ATTR_GROUP_DL
6592         	        WHERE attr_group_id = efd.attr_group_id);
6593 
6594   x_errorcode NUMBER;
6595   x_msg_count NUMBER;
6596   x_msg_data VARCHAR2(2000);
6597   lv_proc VARCHAR2(30) := 'delete_ag_none_dl';
6598   BEGIN
6599   	write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Enters delete_ag_none_dl');
6600 
6601   	x_return_status := G_RET_STS_SUCCESS;
6602 
6603   	FOR rec IN cur_ag_none_dl LOOP
6604   		EGO_EXT_FWK_PUB.Delete_Attribute_Group (
6605 											        p_api_version => 1.0
6606 											       ,p_attr_group_id =>  rec.attr_group_id
6607 											       ,p_init_msg_list =>  fnd_api.g_FALSE
6608 											       ,p_commit  =>  fnd_api.g_FALSE
6609 											       ,x_return_status =>  x_return_status
6610 											       ,x_errorcode  =>   x_errorcode
6611 											       ,x_msg_count =>   x_msg_count
6612 											       ,x_msg_data  =>    x_msg_data
6613 											    );
6614     END LOOP;
6615     COMMIT;
6616     write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'Exits delete_ag_none_dl');
6617   EXCEPTION
6618   	WHEN OTHERS THEN
6619   		x_return_status := G_RET_STS_UNEXP_ERROR;
6620 
6621         write_debug('ego_ag_bulkload_pvt.'||lv_proc||' - '||'delete_ag_none_dl Exception when others'||SQLERRM);
6622 
6623         x_return_msg := 'ego_ag_bulkload_pvt.delete_ag_none_dl - '||SQLERRM;
6624   END delete_ag_none_dl;
6625 
6626   /*This local procedure will return the TL table name based on the attribute group Type
6627     p_application_id  IN EGO Application ID
6628     p_attr_group_type IN Attribute group Type*/
6629   FUNCTION Get_TL_Table_Name (
6630         p_application_id  IN   NUMBER
6631        ,p_attr_group_type IN   VARCHAR2
6632 	)
6633 	RETURN VARCHAR2
6634 	IS
6635 	    l_table_name             VARCHAR2(30);
6636 
6637 	  BEGIN
6638 	    SELECT EXT_TL_TABLE_NAME
6639 	      INTO l_table_name
6640 	      FROM EGO_ATTR_GROUP_TYPES_V
6641 	     WHERE APPLICATION_ID = p_application_id
6642 	       AND ATTR_GROUP_TYPE = p_attr_group_type;
6643 
6644 	    RETURN l_table_name;
6645 
6646 	  EXCEPTION
6647 	    WHEN NO_DATA_FOUND THEN
6648 	      RETURN NULL;
6649 
6650 	END Get_TL_Table_Name;
6651 
6652 	/*This local procedure will return the table name based on the attribute group Type
6653     p_application_id  IN EGO Application ID
6654     p_attr_group_type IN Attribute group Type*/
6655 	FUNCTION Get_Table_Name (
6656         p_application_id  IN   NUMBER
6657        ,p_attr_group_type IN   VARCHAR2
6658 	)
6659 	RETURN VARCHAR2
6660 	IS
6661 
6662 	    l_table_name             VARCHAR2(30);
6663 
6664 	  BEGIN
6665 	    SELECT APPLICATION_TABLE_NAME
6666 	      INTO l_table_name
6667 	      FROM FND_DESCRIPTIVE_FLEXS
6668 	     WHERE APPLICATION_ID = p_application_id
6669 	       AND DESCRIPTIVE_FLEXFIELD_NAME = p_attr_group_type;
6670 
6671 	    RETURN l_table_name;
6672 
6673 	  EXCEPTION
6674 	    WHEN NO_DATA_FOUND THEN
6675 	      RETURN NULL;
6676 
6677 	END Get_Table_Name;
6678 
6679 	------------------------------------------------------------------------------------------
6680 	-- Function: To return the  pending transalatable table name  for a given attribute group type
6681 	--  an the application id
6682 	--           If the table is not defined, NULL is returned
6683 	--
6684 	-- Parameters:
6685 	--         IN
6686 	--  p_attr_group_type:  attribute_group_type
6687 	--  p_attr_group_type      application_id
6688 	--        OUT
6689 	--  l_table_name     : translatable table for attribute_changes
6690 	------------------------------------------------------------------------------------------
6691 	FUNCTION Get_Attr_Changes_TL_Table (
6692 	        p_application_id                IN   NUMBER
6693 	       ,p_attr_group_type               IN   VARCHAR2
6694 	)
6695 	RETURN VARCHAR2
6696 	IS
6697 
6698 	    l_table_name             VARCHAR2(30);
6699 	    l_dynamic_sql            VARCHAR2(350);
6700 
6701 	  BEGIN
6702 	    l_dynamic_sql:='SELECT CHANGE_TL_TABLE_NAME'||
6703 	'      FROM ENG_PENDING_CHANGE_CTX'||
6704 	'     WHERE APPLICATION_ID = :1'||--p_application_id
6705 	'    AND CHANGE_ATTRIBUTE_GROUP_TYPE =:2' ;--p_attr_group_type;
6706 
6707 	    EXECUTE IMMEDIATE l_dynamic_sql INTO l_table_name USING p_application_id
6708 	                                                            ,p_attr_group_type;
6709 
6710 	    RETURN l_table_name;
6711 
6712 	  EXCEPTION
6713 	    WHEN OTHERS THEN
6714 	      RETURN NULL;
6715 
6716 	END Get_Attr_Changes_TL_Table;
6717 
6718 	------------------------------------------------------------------------------------------
6719 	-- Function: To return the  pending base table name  for a given attribute group type
6720 	--  an the application id
6721 	--           If the table is not defined, NULL is returned
6722 	--
6723 	-- Parameters:
6724 	--         IN
6725 	--  p_attr_group_type:  attribute_group_type
6726 	--  p_attr_group_type      application_id
6727 	--        OUT
6728 	--  l_table_name     : base table for attribute_changes
6729 	------------------------------------------------------------------------------------------
6730 	FUNCTION Get_Attr_Changes_B_Table (
6731 	        p_application_id                IN   NUMBER
6732 	       ,p_attr_group_type               IN   VARCHAR2
6733 	)
6734 	RETURN VARCHAR2
6735 	IS
6736 
6737 	    l_table_name             VARCHAR2(30);
6738 	    l_dynamic_sql            VARCHAR2(350);
6739 
6740 	  BEGIN
6741 	    l_dynamic_sql:='SELECT CHANGE_B_TABLE_NAME'||
6742 	'      FROM ENG_PENDING_CHANGE_CTX'||
6743 	'     WHERE APPLICATION_ID = :1'||--p_application_id
6744 	'    AND CHANGE_ATTRIBUTE_GROUP_TYPE =:2' ;--p_attr_group_type;
6745 
6746 	    EXECUTE IMMEDIATE l_dynamic_sql INTO l_table_name USING p_application_id
6747 	                                                            ,p_attr_group_type;
6748 	    RETURN l_table_name;
6749 
6750 	  EXCEPTION
6751 	    WHEN OTHERS THEN
6752 	      RETURN NULL;
6753 	END Get_Attr_Changes_B_Table;
6754 
6755   /*This procedure will log debug messages
6756     x_msg IN Input message name*/
6757   Procedure write_debug(x_msg IN VARCHAR2)
6758   IS
6759   BEGIN
6760   	ego_metadata_bulkload_pvt.write_debug(x_msg);
6761   	--debug_proc(x_msg);
6762   EXCEPTION
6763   	WHEN OTHERS THEN
6764   		NULL;
6765   END write_debug;
6766 END ego_ag_bulkload_pvt;