DBA Data[Home] [Help]

PACKAGE BODY: APPS.EGO_IMPORT_BATCH_PURGE_PKG

Source


1 PACKAGE BODY ego_import_batch_purge_pkg  as
2 /* $Header: EGOIPURB.pls 120.2.12020000.2 2012/07/13 01:29:40 mshirkol ship $ */
3 
4 -- ****************************************************************** --
5 --  API name    : Ego_import_batch_purge_pkg                          --
6 --  Type        : Private                                             --
7 --  Pre-reqs    : None.                                               --
8 --  Parameters  :                                                     --
9 --       IN     :                                                     --
10 --                p_batch_id                 NUMBER   Required        --
11 --                p_purge_criteria           varchar2                 --
12 --
13 --       OUT    : retcode                    VARCHAR2(1)              --
14 --                error_buf                  VARCHAR2(30)             --
15 --  Version     :                                                     --
16 --                Current version       1.0                           --
17 --                Initial version       1.0                           --
18 --                                                                    --
19 --  Notes       :                                                      --
20 
21 -- ****************************************************************** --
22 
23 CURSOR l_item_list_c(batch_id NUMBER) IS
24 
25 SELECT Ego_item_list_inf (set_process_id, organization_id,
26                    ORGANIZATION_CODE, REQUEST_ID,
27                    INVENTORY_ITEM_ID, item_number,
28     BUNDLE_ID,
29     status ,
30     isinbill,
31     isincomp ,
32     isinsubcomp
33 )
34   FROM
35 
36 (SELECT
37     set_process_id,
38     organization_id,
39     ORGANIZATION_CODE,
40     REQUEST_ID,
41     INVENTORY_ITEM_ID,
42     item_number,
43     BUNDLE_ID,
44     COALESCE -- search for failures
45         (
46           ( -- Looking for failure rows in MTL_SYSTEM_ITEMS_INTERFACE
47             SELECT 'PARTIAL'
48             FROM MTL_SYSTEM_ITEMS_INTERFACE MSII
49             WHERE
50                 ( MSII.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
51                 OR  (   MSII.ITEM_NUMBER = I.ITEM_NUMBER
52                     AND (
53                         MSII.INVENTORY_ITEM_ID IS NULL
54                         OR I.INVENTORY_ITEM_ID IS NULL
55                         )
56                     )
57                 )
58               AND MSII.SET_PROCESS_ID = I.SET_PROCESS_ID
59               AND ( MSII.ORGANIZATION_ID = I.ORGANIZATION_ID
60                     OR ( MSII.ORGANIZATION_CODE = I.ORGANIZATION_CODE
61                          AND (MSII.ORGANIZATION_CODE IS NULL OR I.ORGANIZATION_CODE IS NULL )
62                        )
63                   )
64             AND ( (MSII.PROCESS_FLAG in (3,6) AND I.PROCESS_FLAG = 7) OR
65                   (MSII.PROCESS_FLAG = 7 AND I.PROCESS_FLAG <> 7)
66                 )
67               AND MSII.REQUEST_ID      = I.REQUEST_ID
68               AND ROWNUM = 1
69             )
70          ,
71           ( -- Looking for failure rows in MTL_ITEM_REVISIONS_INTERFACE
72             SELECT 'PARTIAL'
73             FROM MTL_ITEM_REVISIONS_INTERFACE MIRI
74             WHERE
75                 ( MIRI.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
76                 OR  (   MIRI.ITEM_NUMBER = I.ITEM_NUMBER
77                     AND (
78                         MIRI.INVENTORY_ITEM_ID IS NULL
79                         OR I.INVENTORY_ITEM_ID IS NULL
80                         )
81                     )
82                 )
83               AND MIRI.SET_PROCESS_ID = I.SET_PROCESS_ID
84               AND ( MIRI.ORGANIZATION_ID = I.ORGANIZATION_ID
85                     OR ( MIRI.ORGANIZATION_CODE = I.ORGANIZATION_CODE
86                          AND (MIRI.ORGANIZATION_CODE IS NULL OR I.ORGANIZATION_CODE IS NULL )
87                        )
88                   )
89             AND ( (MIRI.PROCESS_FLAG in (3,6) AND I.PROCESS_FLAG = 7) OR
90                   (MIRI.PROCESS_FLAG = 7 AND I.PROCESS_FLAG <> 7)
91                 )
92               AND MIRI.REQUEST_ID      = I.REQUEST_ID
93               AND ROWNUM = 1
94             )
95         ,
96             ( -- Looking for failure rows in EGO_ITEM_PEOPLE_INTF
97             SELECT 'PARTIAL'
98             FROM EGO_ITEM_PEOPLE_INTF EIPI
99             WHERE
100                 ( EIPI.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
101                 OR  (   EIPI.ITEM_NUMBER = I.ITEM_NUMBER
102                     AND (
103                         EIPI.INVENTORY_ITEM_ID IS NULL
104                         OR I.INVENTORY_ITEM_ID IS NULL
105                         )
106                     )
107                 )
108               AND EIPI.DATA_SET_ID = I.SET_PROCESS_ID
109               AND ( EIPI.ORGANIZATION_ID = I.ORGANIZATION_ID
110                     OR ( EIPI.ORGANIZATION_CODE = I.ORGANIZATION_CODE
111                          AND (EIPI.ORGANIZATION_CODE IS NULL OR I.ORGANIZATION_CODE IS NULL )
112                        )
113                   )
114               AND ( (EIPI.PROCESS_STATUS in (3,6) AND I.PROCESS_FLAG = 7) OR
115                     (EIPI.PROCESS_STATUS = 4 AND I.PROCESS_FLAG <> 7)
116                   )
117               AND EIPI.REQUEST_ID      = I.REQUEST_ID
118               AND ROWNUM = 1
119             )
120         ,
121             ( -- Looking for failure rows in MTL_ITEM_CATEGORIES_INTERFACE
122             SELECT 'PARTIAL'
123             FROM MTL_ITEM_CATEGORIES_INTERFACE MICI
124             WHERE
125                 ( MICI.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
126                 OR  (   MICI.ITEM_NUMBER = I.ITEM_NUMBER
127                     AND (
128                         MICI.INVENTORY_ITEM_ID IS NULL
129                         OR I.INVENTORY_ITEM_ID IS NULL
130                         )
131                     )
132                 )
133               AND MICI.SET_PROCESS_ID = I.SET_PROCESS_ID
134               AND ( MICI.ORGANIZATION_ID = I.ORGANIZATION_ID
135                     OR ( MICI.ORGANIZATION_CODE = I.ORGANIZATION_CODE
136                          AND (MICI.ORGANIZATION_CODE IS NULL OR I.ORGANIZATION_CODE IS NULL )
137                        )
138                   )
139               AND ( (MICI.PROCESS_FLAG in (3,6) AND I.PROCESS_FLAG = 7) OR
140                     (MICI.PROCESS_FLAG = 7 AND I.PROCESS_FLAG <> 7)
141                   )
142               AND MICI.REQUEST_ID      = I.REQUEST_ID
143               AND Nvl(MICI.BUNDLE_ID,0)       = Nvl(I.BUNDLE_ID,0)
144               AND ROWNUM = 1
145             )
146         ,
147             ( -- Looking for failure rows in EGO_AML_INTF
148             SELECT 'PARTIAL'
149             FROM EGO_AML_INTF EAI
150             WHERE
151                 ( EAI.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
152                 OR  (   EAI.ITEM_NUMBER = I.ITEM_NUMBER
153                     AND (
154                         EAI.INVENTORY_ITEM_ID IS NULL
155                         OR I.INVENTORY_ITEM_ID IS NULL
156                         )
157                     )
158                 )
159               AND EAI.DATA_SET_ID = I.SET_PROCESS_ID
160               AND ( EAI.ORGANIZATION_ID = I.ORGANIZATION_ID
161                     OR ( EAI.ORGANIZATION_CODE = I.ORGANIZATION_CODE
162                          AND (EAI.ORGANIZATION_CODE IS NULL OR I.ORGANIZATION_CODE IS NULL )
163                        )
164                   )
165             AND ( (EAI.PROCESS_FLAG in (3,6) AND I.PROCESS_FLAG = 7) OR
166                   (EAI.PROCESS_FLAG = 7 AND I.PROCESS_FLAG <> 7)
167                 )
168               AND EAI.REQUEST_ID      = I.REQUEST_ID
169               AND ROWNUM = 1
170             )
171         ,
172             ( -- Looking for failure rows in EGO_ITM_USR_ATTR_INTRFC
173             SELECT 'PARTIAL'
174             FROM EGO_ITM_USR_ATTR_INTRFC EIUAI
175             WHERE
176                 ( EIUAI.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
177                 OR  (   EIUAI.ITEM_NUMBER = I.ITEM_NUMBER
178                     AND (
179                         EIUAI.INVENTORY_ITEM_ID IS NULL
180                         OR I.INVENTORY_ITEM_ID IS NULL
181                         )
182                     )
183                 )
184               AND EIUAI.DATA_SET_ID = I.SET_PROCESS_ID
185               AND ( EIUAI.ORGANIZATION_ID = I.ORGANIZATION_ID
186                     OR ( EIUAI.ORGANIZATION_CODE = I.ORGANIZATION_CODE
187                          AND (EIUAI.ORGANIZATION_CODE IS NULL OR I.ORGANIZATION_CODE IS NULL )
188                        )
189                   )
190               AND ( (EIUAI.PROCESS_STATUS in (3,6) AND I.PROCESS_FLAG = 7) OR
191                     (EIUAI.PROCESS_STATUS = 4 AND I.PROCESS_FLAG <> 7)
192                   )
193               AND EIUAI.REQUEST_ID      = I.REQUEST_ID
194               AND Nvl(EIUAI.BUNDLE_ID,0)       = Nvl(I.BUNDLE_ID,0)
195               AND ROWNUM = 1
196             )
197         ,
198          /* ( -- Looking for failure rows in EGO_ITEM_ASSOCIATIONS_INTF
199             SELECT 'PARTIAL'
200             FROM EGO_ITEM_ASSOCIATIONS_INTF EIAI
201             WHERE
202                 ( EIAI.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
203                 OR  (   EIAI.ITEM_NUMBER = I.ITEM_NUMBER
204                     AND (
205                         EIAI.INVENTORY_ITEM_ID IS NULL
206                         OR I.INVENTORY_ITEM_ID IS NULL
207                         )
208                     )
209                 )
210               AND EIAI.BATCH_ID = I.SET_PROCESS_ID
211               AND ( EIAI.ORGANIZATION_ID = I.ORGANIZATION_ID
212                     OR ( EIAI.ORGANIZATION_CODE = I.ORGANIZATION_CODE
213                          AND (EIAI.ORGANIZATION_CODE IS NULL OR I.ORGANIZATION_CODE IS NULL )
214                        )
215                   )
216               AND ( (EIAI.PROCESS_FLAG in (3,6) AND I.PROCESS_FLAG = 7) OR
217                     (EIAI.PROCESS_FLAG = 7 AND I.PROCESS_FLAG <> 7)
218                   )
219               AND EIAI.REQUEST_ID      = I.REQUEST_ID
220               AND Nvl(EIAI.BUNDLE_ID,0)       = Nvl(I.BUNDLE_ID,0)
221               AND ROWNUM = 1
222             )
223         ,  */
224            DECODE(I.PROCESS_FLAG,7,'SUCCESS','ERROR')
225     ) AS status,
226     0 isinbill,
227     0 isincomp,
228     0 isinsubcomp
229 
230 FROM ( SELECT DISTINCT set_process_id, organization_id, ORGANIZATION_CODE, REQUEST_ID, INVENTORY_ITEM_ID, item_number, BUNDLE_ID ,PROCESS_FLAG
231          FROM MTL_SYSTEM_ITEMS_INTERFACE
232         WHERE PROCESS_FLAG IN (3,6,7)
233 
234        UNION
235 
236        SELECT DISTINCT set_process_id, organization_id, ORGANIZATION_CODE, REQUEST_ID, INVENTORY_ITEM_ID, item_number, null BUNDLE_ID ,PROCESS_FLAG
237          FROM MTL_ITEM_REVISIONS_INTERFACE
238         WHERE PROCESS_FLAG IN (3,6,7)
239 
240        UNION
241 
242         SELECT DISTINCT DATA_SET_ID set_process_id, organization_id, ORGANIZATION_CODE, REQUEST_ID, INVENTORY_ITEM_ID, item_number, null BUNDLE_ID , Decode ( PROCESS_STATUS,4,7,PROCESS_STATUS) PROCESS_FLAG
243          FROM EGO_ITEM_PEOPLE_INTF
244         WHERE PROCESS_STATUS IN (3,6,4)
245 
246        UNION
247 
248         SELECT DISTINCT set_process_id , organization_id, ORGANIZATION_CODE, REQUEST_ID, INVENTORY_ITEM_ID, item_number, BUNDLE_ID, PROCESS_FLAG
249          FROM MTL_ITEM_CATEGORIES_INTERFACE
250         WHERE PROCESS_FLAG IN (3,6,7)
251 
252        UNION
253 
254         SELECT DISTINCT DATA_SET_ID set_process_id, organization_id, ORGANIZATION_CODE, REQUEST_ID, INVENTORY_ITEM_ID, item_number, null BUNDLE_ID , PROCESS_FLAG
255          FROM EGO_AML_INTF
256         WHERE PROCESS_FLAG IN (3,6,7)
257 
258       /* UNION
259 
260         SELECT DISTINCT DATA_SET_ID set_process_id, organization_id, ORGANIZATION_CODE, REQUEST_ID, INVENTORY_ITEM_ID, item_number, BUNDLE_ID , Decode ( PROCESS_STATUS,4,7,PROCESS_STATUS) PROCESS_FLAG
261          FROM EGO_ITM_USR_ATTR_INTRFC
262         WHERE PROCESS_STATUS IN (3,6,4)*/
263 
264        UNION
265 
266         SELECT DISTINCT BATCH_ID set_process_id, organization_id, ORGANIZATION_CODE, REQUEST_ID, INVENTORY_ITEM_ID, item_number, BUNDLE_ID, PROCESS_FLAG
267          FROM EGO_ITEM_ASSOCIATIONS_INTF
268         WHERE PROCESS_FLAG IN (3,6,7)
269      ) I
270      WHERE set_process_id = batch_id );
271 
272 
273 
274 TYPE cur_table IS TABLE OF Ego_item_list_inf;
275 
276 
277 PROCEDURE clear_items(p_purge_criteria IN VARCHAR2,
278 				            l_item_table IN cur_table) IS
279 
280 l_item_entity_count NUMBER := 0;
281 l_item_rev_entity_count NUMBER := 0;
282 l_item_ppl_entity_count NUMBER := 0;
283 l_item_cat_entity_count NUMBER := 0;
284 l_item_asso_entity_count NUMBER := 0;
285 
286 BEGIN
287 
288            fnd_file.put_line(fnd_file.Log,'Start deleting Item Entities.');
289 
290 
291            FORALL item IN 1.. l_item_table.Count
292 
293                    DELETE FROM MTL_SYSTEM_ITEMS_INTERFACE
294                    WHERE set_process_id = TREAT( l_item_table(item) AS Ego_item_list_inf).set_process_id
295                     AND  ( organization_id = TREAT( l_item_table(item) AS Ego_item_list_inf).organization_id
296                             OR ( organization_code = TREAT( l_item_table(item) AS Ego_item_list_inf).organization_code
297                                  AND ( organization_code IS NULL OR TREAT( l_item_table(item) AS Ego_item_list_inf).organization_code IS NULL )
298                                )
299                          )
300                     AND   REQUEST_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).REQUEST_ID
301                     AND ( INVENTORY_ITEM_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).INVENTORY_ITEM_ID
302                           OR  ( ITEM_NUMBER = TREAT( l_item_table(item) AS Ego_item_list_inf).ITEM_NUMBER
303                                 AND (   INVENTORY_ITEM_ID IS NULL OR TREAT( l_item_table(item) AS Ego_item_list_inf).INVENTORY_ITEM_ID IS NULL )
304                               )
305                         )
306                     AND   Nvl(BUNDLE_ID,0)       = Nvl(TREAT( l_item_table(item) AS Ego_item_list_inf).BUNDLE_ID,0)
307                     AND TREAT( l_item_table(item) AS Ego_item_list_inf).isinbill = 0 AND TREAT( l_item_table(item) AS Ego_item_list_inf).isincomp = 0 AND TREAT( l_item_table(item) AS Ego_item_list_inf).isinsubcomp = 0
308                     AND TREAT( l_item_table(item) AS Ego_item_list_inf).status=p_purge_criteria;
309 
310 
311            FOR i IN 1.. l_item_table.Count
312            LOOP
313              l_item_entity_count := l_item_entity_count + SQL%BULK_ROWCOUNT(i);
314 
315            END LOOP;
316 
317            fnd_file.put_line(fnd_file.Log,'No.of Item Entities deleted are '||l_item_entity_count);
318 
319            FORALL item IN l_item_table.first .. l_item_table.last
320 
321                   DELETE FROM MTL_ITEM_REVISIONS_INTERFACE
322                   WHERE SET_PROCESS_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).SET_PROCESS_ID
323                   AND ( organization_id = TREAT( l_item_table(item) AS Ego_item_list_inf).organization_id
324                          OR ( organization_code = TREAT( l_item_table(item) AS Ego_item_list_inf).organization_code
325                               AND ( organization_code IS NULL OR TREAT( l_item_table(item) AS Ego_item_list_inf).organization_code IS NULL )
326                             )
327                       )
328                   AND REQUEST_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).REQUEST_ID
329                   AND ( INVENTORY_ITEM_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).INVENTORY_ITEM_ID
330                         OR  ( ITEM_NUMBER = TREAT( l_item_table(item) AS Ego_item_list_inf).ITEM_NUMBER
331                                AND ( INVENTORY_ITEM_ID IS NULL OR TREAT( l_item_table(item) AS Ego_item_list_inf).INVENTORY_ITEM_ID IS NULL )
332                             )
333                       )
334                   AND TREAT( l_item_table(item) AS Ego_item_list_inf).isinbill = 0 AND TREAT( l_item_table(item) AS Ego_item_list_inf).isincomp = 0 AND TREAT( l_item_table(item) AS Ego_item_list_inf).isinsubcomp = 0
335                   AND TREAT( l_item_table(item) AS Ego_item_list_inf).status=p_purge_criteria;
336 
337 
338 
339            FOR i IN l_item_table.first .. l_item_table.last
340            LOOP
341              l_item_rev_entity_count := l_item_rev_entity_count + SQL%BULK_ROWCOUNT(i);
342            END LOOP;
343            fnd_file.put_line(fnd_file.Log,'No.of Item Revision Entities deleted are '||l_item_rev_entity_count);
344 
345 
346 
347 
348 
349            FORALL item IN l_item_table.first .. l_item_table.last
350 
351                    DELETE FROM EGO_ITEM_PEOPLE_INTF
352                    WHERE DATA_SET_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).SET_PROCESS_ID
353                    AND ( organization_id = TREAT( l_item_table(item) AS Ego_item_list_inf).organization_id
354                          OR ( organization_code = TREAT( l_item_table(item) AS Ego_item_list_inf).organization_code
355                                AND ( organization_code IS NULL OR TREAT( l_item_table(item) AS Ego_item_list_inf).organization_code IS NULL )
356                             )
357                        )
358                    AND REQUEST_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).REQUEST_ID
359                    AND ( INVENTORY_ITEM_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).INVENTORY_ITEM_ID
360                          OR  ( ITEM_NUMBER = TREAT( l_item_table(item) AS Ego_item_list_inf).ITEM_NUMBER
361                                AND (   INVENTORY_ITEM_ID IS NULL OR TREAT( l_item_table(item) AS Ego_item_list_inf).INVENTORY_ITEM_ID IS NULL )
362                              )
363                        )
364                    AND TREAT( l_item_table(item) AS Ego_item_list_inf).isinbill = 0 AND TREAT( l_item_table(item) AS Ego_item_list_inf).isincomp = 0 AND TREAT( l_item_table(item) AS Ego_item_list_inf).isinsubcomp = 0
365                    AND TREAT( l_item_table(item) AS Ego_item_list_inf).status=p_purge_criteria;
366 
367 
368            FOR i IN l_item_table.first .. l_item_table.last
369            LOOP
370               l_item_ppl_entity_count := l_item_ppl_entity_count + SQL%BULK_ROWCOUNT(i);
371            END LOOP;
372            fnd_file.put_line(fnd_file.Log,'No.of Item People deleted are '||l_item_ppl_entity_count);
373 
374 
375             FORALL item IN l_item_table.first .. l_item_table.last
376 
377                    DELETE FROM MTL_ITEM_CATEGORIES_INTERFACE
378                    WHERE SET_PROCESS_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).SET_PROCESS_ID
379                    AND ( organization_id = TREAT( l_item_table(item) AS Ego_item_list_inf).organization_id
380                          OR ( organization_code = TREAT( l_item_table(item) AS Ego_item_list_inf).organization_code
381                               AND ( organization_code IS NULL OR TREAT( l_item_table(item) AS Ego_item_list_inf).organization_code IS NULL )
382                             )
383                        )
384                    AND REQUEST_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).REQUEST_ID
385                    AND ( INVENTORY_ITEM_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).INVENTORY_ITEM_ID
386                          OR ( ITEM_NUMBER = TREAT( l_item_table(item) AS Ego_item_list_inf).ITEM_NUMBER
387                               AND (   INVENTORY_ITEM_ID IS NULL OR TREAT( l_item_table(item) AS Ego_item_list_inf).INVENTORY_ITEM_ID IS NULL )
388                             )
389                        )
390                    AND Nvl(BUNDLE_ID,0) = Nvl(TREAT( l_item_table(item) AS Ego_item_list_inf).BUNDLE_ID,0)
391                    AND TREAT( l_item_table(item) AS Ego_item_list_inf).isinbill = 0 AND TREAT( l_item_table(item) AS Ego_item_list_inf).isincomp = 0 AND TREAT( l_item_table(item) AS Ego_item_list_inf).isinsubcomp = 0
392                    AND TREAT( l_item_table(item) AS Ego_item_list_inf).status=p_purge_criteria;
393 
394 
395 
396            FOR i IN l_item_table.first .. l_item_table.last
397            LOOP
398              l_item_cat_entity_count := l_item_cat_entity_count + SQL%BULK_ROWCOUNT(i);
399            END LOOP;
400            fnd_file.put_line(fnd_file.Log,'No.of Item Categories deleted are '||l_item_cat_entity_count);
401 
402 
403 
404             FORALL item IN l_item_table.first .. l_item_table.last
405 
406                    DELETE FROM EGO_AML_INTF
407                    WHERE DATA_SET_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).SET_PROCESS_ID
408                    AND ( organization_id = TREAT( l_item_table(item) AS Ego_item_list_inf).organization_id
409                          OR ( organization_code = TREAT( l_item_table(item) AS Ego_item_list_inf).organization_code
410                                AND ( organization_code IS NULL OR TREAT( l_item_table(item) AS Ego_item_list_inf).organization_code IS NULL )
411                             )
412                        )
413                    AND REQUEST_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).REQUEST_ID
414                    AND ( INVENTORY_ITEM_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).INVENTORY_ITEM_ID
415                          OR  ( ITEM_NUMBER = TREAT( l_item_table(item) AS Ego_item_list_inf).ITEM_NUMBER
416                                AND (   INVENTORY_ITEM_ID IS NULL OR TREAT( l_item_table(item) AS Ego_item_list_inf).INVENTORY_ITEM_ID IS NULL )
417                              )
418                        )
419                    AND TREAT( l_item_table(item) AS Ego_item_list_inf).isinbill = 0 AND TREAT( l_item_table(item) AS Ego_item_list_inf).isincomp = 0 AND TREAT( l_item_table(item) AS Ego_item_list_inf).isinsubcomp = 0
420                    AND TREAT( l_item_table(item) AS Ego_item_list_inf).status=p_purge_criteria;
421 
422 
423 
424            FORALL item IN l_item_table.first .. l_item_table.last
425 
426                    DELETE FROM EGO_ITM_USR_ATTR_INTRFC
427                    WHERE DATA_SET_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).SET_PROCESS_ID
428                    AND ( organization_id = TREAT( l_item_table(item) AS Ego_item_list_inf).organization_id
429                           OR ( organization_code = TREAT( l_item_table(item) AS Ego_item_list_inf).organization_code
430                                AND ( organization_code IS NULL OR TREAT( l_item_table(item) AS Ego_item_list_inf).organization_code IS NULL )
431                              )
432                        )
433                    AND REQUEST_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).REQUEST_ID
434                    AND ( INVENTORY_ITEM_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).INVENTORY_ITEM_ID
435                          OR ( ITEM_NUMBER = TREAT( l_item_table(item) AS Ego_item_list_inf).ITEM_NUMBER
436                               AND ( INVENTORY_ITEM_ID IS NULL OR TREAT( l_item_table(item) AS Ego_item_list_inf).INVENTORY_ITEM_ID IS NULL )
437                             )
438                         )
439                    AND Nvl(BUNDLE_ID,0) = Nvl(TREAT( l_item_table(item) AS Ego_item_list_inf).BUNDLE_ID,0)
440                    AND TREAT( l_item_table(item) AS Ego_item_list_inf).isinbill = 0 AND TREAT( l_item_table(item) AS Ego_item_list_inf).isincomp = 0 AND TREAT( l_item_table(item) AS Ego_item_list_inf).isinsubcomp = 0
441                    AND TREAT( l_item_table(item) AS Ego_item_list_inf).status=p_purge_criteria;
442 
443 
444           FORALL item IN l_item_table.first .. l_item_table.last
445 
446                    DELETE FROM EGO_ITEM_ASSOCIATIONS_INTF EIAI
447                    WHERE TREAT( l_item_table(item) AS Ego_item_list_inf).status=p_purge_criteria
448                    AND BATCH_ID  =  TREAT( l_item_table(item) AS Ego_item_list_inf).SET_PROCESS_ID
449                    AND ( organization_id = TREAT( l_item_table(item) AS Ego_item_list_inf).organization_id
450                           OR ( ORGANIZATION_CODE = TREAT( l_item_table(item) AS Ego_item_list_inf).ORGANIZATION_CODE
451                                AND (ORGANIZATION_CODE IS NULL OR TREAT( l_item_table(item) AS Ego_item_list_inf).ORGANIZATION_CODE IS NULL)
452                              )
453                        )
454                    AND nvl(REQUEST_ID,0) = TREAT( l_item_table(item) AS Ego_item_list_inf).REQUEST_ID
455                    AND ( INVENTORY_ITEM_ID = TREAT( l_item_table(item) AS Ego_item_list_inf).INVENTORY_ITEM_ID
456                          OR  ( ITEM_NUMBER = TREAT( l_item_table(item) AS Ego_item_list_inf).ITEM_NUMBER
457                                AND (   INVENTORY_ITEM_ID IS NULL OR TREAT( l_item_table(item) AS Ego_item_list_inf).INVENTORY_ITEM_ID IS NULL )
458                              )
459                        )
460                    AND TREAT( l_item_table(item) AS Ego_item_list_inf).isinbill = 0 AND TREAT( l_item_table(item) AS Ego_item_list_inf).isincomp = 0 AND TREAT( l_item_table(item) AS Ego_item_list_inf).isinsubcomp = 0
461                    AND Nvl(BUNDLE_ID,0) = Nvl(TREAT( l_item_table(item) AS Ego_item_list_inf).BUNDLE_ID,0);
462 
463 
464 
465            FOR i IN l_item_table.first .. l_item_table.last
466            LOOP
467              l_item_asso_entity_count := l_item_asso_entity_count + SQL%BULK_ROWCOUNT(i);
468            END LOOP;
469            fnd_file.put_line(fnd_file.Log,'No.of Item Associations deleted are '||l_item_asso_entity_count);
470 
471 
472 
473 END;
474 
475 
476 PROCEDURE batch_purge(err_buff OUT   NOCOPY  VARCHAR2,
477                 ret_code OUT   NOCOPY  VARCHAR2,
478                 p_batch_id IN NUMBER,
479                 p_purge_criteria IN varchar2) IS
480 
481  l_batch_type VARCHAR2(50);
482  stm_num NUMBER := 0;
483 
484 BEGIN
485     stm_num :=1;
486 
487 
488 
489     SELECT BATCH_TYPE INTO l_batch_type FROM EGO_IMPORT_BATCHES_B WHERE BATCH_ID=p_batch_id;
490 
491     fnd_file.put_line(fnd_file.Log,'Purge Program run for Batch ID:'||p_batch_id || '.');
492     fnd_file.put_line(fnd_file.Log,'Batch type is '||l_batch_type||'.');
493     fnd_file.put_line(fnd_file.Log,'Purge Criteria is '|| p_purge_criteria||'.');
494     fnd_file.put_line(fnd_file.Log,' ');
495 
496 
497    IF p_purge_criteria='ALL' THEN
498 
499         stm_num :=2;
500 
501         Purge_All(p_batch_id,ret_code,err_buff);
502 
503    ELSIF l_batch_type='EGO_ITEM' AND p_purge_criteria IS NOT NULL THEN
504 
505         stm_num :=3;
506 
507         Item_Purge(p_batch_id,p_purge_criteria,ret_code,err_buff);
508 
509    ELSIF l_batch_type='BOM_STRUCTURE' AND p_purge_criteria IS NOT NULL THEN
510 
511         stm_num :=4;
512 
513         Structure_Purge(p_batch_id,p_purge_criteria,ret_code,err_buff);
514 
515    END IF;
516 
517 EXCEPTION
518 
519   WHEN OTHERS THEN
520       err_buff := 'batch_purge: stm_num = '||stm_num||'. Error msg: '||SUBSTR(SQLERRM, 1, 200);
521       ret_code := 2;--FND_API.G_RET_STS_ERROR;
522       fnd_file.put_line(fnd_file.Log,err_buff);
523 
524 END batch_purge;
525 
526 
527 --Item Purge Procedure
528 
529 PROCEDURE Item_Purge(p_batch_id IN NUMBER,p_purge_criteria IN VARCHAR2,ret_code OUT NOCOPY VARCHAR2, err_buff OUT NOCOPY  VARCHAR2) IS
530 
531 l_item_table cur_table;
532 
533 item_num NUMBER:=0;
534 
535 stm_num NUMBER := 0;
536 
537 BEGIN
538 
539  stm_num := 1;
540 
541  OPEN l_item_list_c(p_batch_id);
542  FETCH l_item_list_c BULK COLLECT INTO l_item_table;
543  item_num:=l_item_list_c%ROWCOUNT;
544  CLOSE l_item_list_c;
545 
546  stm_num := 2;
547    IF item_num>0 THEN
548 
549       clear_items(p_purge_criteria,l_item_table);
550 
551       COMMIT;
552    ELSE
553       fnd_file.put_line(fnd_file.Log,'No.of Item Entities deleted are 0');
554       fnd_file.put_line(fnd_file.Log,'No.of Item Revision Entities deleted are 0');
555       fnd_file.put_line(fnd_file.Log,'No.of Item People deleted are 0');
556       fnd_file.put_line(fnd_file.Log,'No.of Item Categories deleted are 0');
557       fnd_file.put_line(fnd_file.Log,'No.of Item Associations deleted are 0');
558    END IF;
559 
560 EXCEPTION
561 
562    WHEN OTHERS THEN
563       err_buff := 'Item_Purge: stm_num = '||stm_num||'. Error msg: '||SUBSTR(SQLERRM, 1, 200);
564       ret_code := 2;--FND_API.G_RET_STS_ERROR;
565       fnd_file.put_line(fnd_file.Log,err_buff);
566 
567 
568 
569 END Item_Purge;
570 
571 
572 --structure purge procedure
573 
574 PROCEDURE Structure_Purge(p_batch_id IN NUMBER, p_purge_criteria IN VARCHAR2,ret_code OUT NOCOPY VARCHAR2,err_buff OUT NOCOPY  VARCHAR2) IS
575 
576 l_batch_id NUMBER:= p_batch_id;
577 l_purge_criteria VARCHAR2(20):=p_purge_criteria;
578 
579 
580 l_item_table cur_table;
581 item_num NUMBER;
582 
583 l_bom_entity_count NUMBER :=0;
584 l_comp_entity_count NUMBER :=0;
585 l_sub_comp_entity_count NUMBER :=0;
586 l_ref_comp_entity_count NUMBER :=0;
587 l_op_comp_entity_count NUMBER :=0;
588 
589 l_bom_op_route_entity_count NUMBER :=0;
590 l_bom_op_seq_entity_count NUMBER := 0;
591 l_bom_op_res_entity_count NUMBER := 0;
592 l_bom_sub_op_res_entity_count NUMBER := 0;
593 
594 
595 --cursor for list of structures in given batch
596 
597 CURSOR l_struct_list_c(batch_id_struct NUMBER,purge_criteria VARCHAR2)
598 IS
599 SELECT Ego_Structure_list_inf(
600 BATCH_ID,
601 ORGANIZATION_ID,
602 REQUEST_ID,
603 ASSEMBLY_ITEM_ID,
604 BILL_SEQUENCE_ID,
605 BUNDLE_ID,
606 ALTERNATE_BOM_DESIGNATOR ,
607 process_flag )
608 FROM
609 (
610 SELECT BATCH_ID,ORGANIZATION_ID,REQUEST_ID,ASSEMBLY_ITEM_ID,BILL_SEQUENCE_ID,BUNDLE_ID,ALTERNATE_BOM_DESIGNATOR,process_flag
611 FROM BOM_BILL_OF_MTLS_INTERFACE I
612 WHERE I.BATCH_ID =batch_id_struct
613 AND I.PROCESS_FLAG IN ( Decode(purge_criteria,'SUCCESS',7,'ERROR',3,-123456),  Decode(purge_criteria,'ERROR',6,-123456) ));
614 
615 
616 TYPE structure_table IS TABLE OF Ego_Structure_list_inf;
617 l_structure_table structure_table:=null;
618 str_num NUMBER;
619 
620 stm_num NUMBER := 0;
621 
622 --cursor for list of routings in given batch
623 
624 CURSOR l_routing_list_c(batch_id_route NUMBER,purge_criteria VARCHAR2)IS
625 
626 SELECT Ego_route_list_inf(
627 BATCH_ID,
628 ORGANIZATION_ID,
629 REQUEST_ID,
630 ASSEMBLY_ITEM_ID,
631 ROUTING_SEQUENCE_ID,
632 process_flag,
633 ALTERNATE_ROUTING_DESIGNATOR)
634 FROM
635 ( SELECT BATCH_ID,ORGANIZATION_ID,REQUEST_ID,ASSEMBLY_ITEM_ID,ROUTING_SEQUENCE_ID,process_flag,ALTERNATE_ROUTING_DESIGNATOR
636   FROM  bom_op_routings_interface I
637   WHERE I.BATCH_ID =batch_id_route
638   AND I.PROCESS_FLAG IN ( Decode(purge_criteria,'SUCCESS',7,'ERROR',3,-123456) , Decode(purge_criteria,'SUCCESS',7,'ERROR',6,-123456) )
639 );
640 
641 
642 TYPE routing_table IS TABLE OF Ego_route_list_inf;
643 l_routing_table routing_table:=null;
644 routing_num NUMBER := 0;
645 
646 
647 BEGIN
648 
649 --deletion of bom records in Sructure batch
650   stm_num := 1;
651 
652      OPEN l_struct_list_c(l_batch_id,l_purge_criteria);
653      FETCH l_struct_list_c BULK COLLECT INTO l_structure_table;
654      str_num:=l_struct_list_c%ROWCOUNT;
655      CLOSE l_struct_list_c;
656 
657 
658 
659 --Start deleting records from bom tables
660 
661      IF str_num >0 THEN
662 
663                 fnd_file.put_line(fnd_file.Log,'Start deleting Structure Entities');
664 
665                 --delete records from bom_sub_comps_interface
666                 stm_num := 2;
667 
668                 FORALL comp IN l_structure_table.first .. l_structure_table.last
669 
670                        DELETE FROM bom_sub_comps_interface bsci
671                        WHERE bsci.batch_id  = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).batch_id
672                         AND  bsci.organization_id = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).organization_id
673                         AND  Nvl(bsci.request_id,0) = Nvl(TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).request_id,0)
674                         AND ( bsci.bill_sequence_id = bill_sequence_id
675                               OR ( bsci.ORGANIZATION_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).organization_id AND
676                                    bsci.ASSEMBLY_ITEM_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).assembly_item_id AND
677                                    Nvl(bsci.ALTERNATE_BOM_DESIGNATOR,0) = Nvl(TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).ALTERNATE_BOM_DESIGNATOR,0)
678                                    AND (bsci.bill_sequence_id IS NULL OR bill_sequence_id IS NULL )
679                                  )
680                             );
681 
682 
683                   FOR i IN l_structure_table.first .. l_structure_table.last LOOP
684                      l_sub_comp_entity_count := l_sub_comp_entity_count + SQL%BULK_ROWCOUNT(i);
685                   END LOOP;
686 
687 
688                 --delete records from bom_ref_desgs_interface
689                   stm_num := 3;
690 
691                 FORALL comp IN l_structure_table.first .. l_structure_table.last
692 
693                       DELETE FROM bom_ref_desgs_interface brdi
694                       WHERE brdi.batch_id  = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).batch_id
695                        AND  brdi.organization_id = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).organization_id
696                        AND  Nvl(brdi.request_id,0) = Nvl(TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).request_id,0)
697                        AND ( brdi.bill_sequence_id = bill_sequence_id
698                              OR ( brdi.ORGANIZATION_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).organization_id AND
699                                   brdi.ASSEMBLY_ITEM_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).assembly_item_id AND
700                                   Nvl(brdi.ALTERNATE_BOM_DESIGNATOR,0) = Nvl(TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).ALTERNATE_BOM_DESIGNATOR,0)
701                                   AND (brdi.bill_sequence_id IS NULL OR bill_sequence_id IS NULL )
702                                 )
703                            );
704 
705 
706                   FOR i IN l_structure_table.first .. l_structure_table.last LOOP
707                       l_ref_comp_entity_count := l_ref_comp_entity_count + SQL%BULK_ROWCOUNT(i);
708                   END LOOP;
709 
710 
711 
712                --delete records from bom_cmp_usr_attr_interface
713                   stm_num := 4;
714 
715                FORALL comp IN l_structure_table.first .. l_structure_table.last
716 
717                      DELETE FROM bom_cmp_usr_attr_interface bcuai
718                      WHERE ( bcuai.batch_id  = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).batch_id OR bcuai.data_set_id = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).batch_id)
719                       AND  bcuai.organization_id = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).organization_id
720                       AND  Nvl(bcuai.request_id,0) = Nvl(TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).request_id,0)
721                       AND  bcuai.bill_sequence_id = bill_sequence_id;
722 
723 
724 
725                --delete records from bom_component_ops_interface
726                   stm_num := 5;
727 
728                FORALL comp IN l_structure_table.first .. l_structure_table.last
729 
730                     DELETE FROM bom_component_ops_interface bcoi
731                     WHERE bcoi.batch_id = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).batch_id
732                       AND bcoi.organization_id = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).organization_id
733                       AND Nvl(bcoi.request_id,0) = Nvl(TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).request_id,0)
734                       AND ( bcoi.bill_sequence_id = bill_sequence_id
735                             OR ( bcoi.ORGANIZATION_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).organization_id AND
736                                  bcoi.ASSEMBLY_ITEM_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).assembly_item_id AND
737                                  Nvl(bcoi.ALTERNATE_BOM_DESIGNATOR,0) = Nvl(TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).ALTERNATE_BOM_DESIGNATOR,0)
738                                  AND (bcoi.bill_sequence_id IS NULL OR bill_sequence_id IS NULL )
739                                )
740                           );
741 
742 
743                  FOR i IN l_structure_table.first .. l_structure_table.last LOOP
744                        l_op_comp_entity_count := l_op_comp_entity_count + SQL%BULK_ROWCOUNT(i);
745                  END LOOP;
746 
747 
748                --delete records from bom_inventory_comps_interface
749                   stm_num := 6;
750 
751                FORALL comp IN l_structure_table.first .. l_structure_table.last
752 
753                    DELETE FROM bom_inventory_comps_interface bici
754                    WHERE bici.BATCH_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).batch_id
755                      AND bici.ORGANIZATION_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).organization_id
756                      AND Nvl(bici.REQUEST_ID,0) = Nvl(TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).request_id,0)
757                      AND Nvl(bici.BUNDLE_ID,0) = Nvl(TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).bundle_id,0)
758                      AND ( bici.bill_sequence_id = bill_sequence_id
759                            OR (  bici.ORGANIZATION_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).organization_id AND
760                                  bici.ASSEMBLY_ITEM_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).assembly_item_id AND
761                                  Nvl(bici.ALTERNATE_BOM_DESIGNATOR,0) = Nvl(TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).ALTERNATE_BOM_DESIGNATOR,0) AND
762                                  (bici.bill_sequence_id IS NULL OR bill_sequence_id IS NULL )
763                               )
764                          );
765 
766 
767                   FOR i IN l_structure_table.first .. l_structure_table.last LOOP
768                      l_comp_entity_count := l_comp_entity_count + SQL%BULK_ROWCOUNT(i);
769                   END LOOP;
770 
771 
772                --delete record from bom_bill_of_mtls_interface
773                  stm_num := 7;
774 
775                FORALL comp IN l_structure_table.first .. l_structure_table.last
776 
777                     DELETE FROM bom_bill_of_mtls_interface bbmi
778                      WHERE bbmi.BATCH_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).batch_id
779                        AND bbmi.ORGANIZATION_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).organization_id
780                        AND Nvl(bbmi.REQUEST_ID,0) = Nvl(TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).request_id,0)
781                        AND Nvl(bbmi.BUNDLE_ID,0) = Nvl(TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).bundle_id,0)
782                        AND ( bbmi.BILL_SEQUENCE_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).bill_sequence_id
783                              OR ( bbmi.ORGANIZATION_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).organization_id AND
784                                   bbmi.ASSEMBLY_ITEM_ID = TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).assembly_item_id AND
785                                   nvl(bbmi.ALTERNATE_BOM_DESIGNATOR,0) = Nvl(TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).ALTERNATE_BOM_DESIGNATOR,0) AND
786                                   (bbmi.BILL_SEQUENCE_ID IS NULL OR TREAT(l_structure_table(comp) AS Ego_Structure_list_inf).bill_sequence_id IS NULL )
787                                 )
788                            );
789 
790 
791                  FOR i IN l_structure_table.first .. l_structure_table.last LOOP
792                       l_bom_entity_count := l_bom_entity_count + SQL%BULK_ROWCOUNT(i);
793                  END LOOP;
794 
795            COMMIT;
796 
797       END IF;
798 
799 
800  fnd_file.put_line(fnd_file.Log,'No.of Structures deleted are '||l_bom_entity_count);
801  fnd_file.put_line(fnd_file.Log,'No.of Components deleted are '||l_comp_entity_count);
802  fnd_file.put_line(fnd_file.Log,'No.of Sub-components deleted are '||l_sub_comp_entity_count);
803  fnd_file.put_line(fnd_file.Log,'No.of Ref-designators deleted are '||l_ref_comp_entity_count);
804  fnd_file.put_line(fnd_file.Log,'No.of Component operations deleted are '||l_op_comp_entity_count);
805 
806 
807 
808 --end deleting records from bom tables
809 
810 
811 --Start deleting data from routing tables
812 
813 
814 
815  OPEN l_routing_list_c(l_batch_id,l_purge_criteria);
816  FETCH l_routing_list_c BULK COLLECT INTO l_routing_table;
817  routing_num:=l_routing_list_c%ROWCOUNT;
818  CLOSE l_routing_list_c;
819 
820 
821 
822   IF routing_num >0 THEN
823 
824              --delete records from bom_op_resources_interface
825              stm_num := 8;
826 
827                fnd_file.put_line(fnd_file.Log,'Start deleting Routing Entities');
828 
829 
830                FORALL op IN l_routing_table.first .. l_routing_table.last
831 
832                                           DELETE FROM bom_op_resources_interface bori
833                                           WHERE bori.batch_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).batch_id
834                                           AND bori.organization_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).organization_id
835                                           AND bori.request_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).request_id
836                                           AND bori.assembly_item_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).assembly_item_id
837                                           AND ( bori.ROUTING_SEQUENCE_ID = TREAT(l_routing_table(op) AS Ego_route_list_inf).ROUTING_SEQUENCE_ID
838                                                  OR ( bori.organization_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).organization_id
839                                                      AND bori.assembly_item_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).assembly_item_id
840                                                      AND Nvl(bori.ALTERNATE_ROUTING_DESIGNATOR,0) = Nvl(TREAT(l_routing_table(op) AS Ego_route_list_inf).alternate_routing_designator,0)
841                                                      AND (bori.ROUTING_SEQUENCE_ID IS NULL OR TREAT(l_routing_table(op) AS Ego_route_list_inf).ROUTING_SEQUENCE_ID IS NULL)
842                                                    )
843                                                );
844 
845                      FOR i IN l_routing_table.first .. l_routing_table.last LOOP
846                             l_bom_op_res_entity_count := l_bom_op_res_entity_count + SQL%BULK_ROWCOUNT(i);
847                      END LOOP;
848 
849 
850              --delete records from bom_sub_op_resources_interface
851              stm_num := 9;
852 
853                  FORALL op IN l_routing_table.first .. l_routing_table.last
854 
855                                           DELETE FROM bom_sub_op_resources_interface bsr
856                                           WHERE bsr.batch_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).batch_id
857                                           AND bsr.organization_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).organization_id
858                                           AND bsr.request_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).request_id
859                                           AND bsr.assembly_item_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).assembly_item_id
860                                           AND ( bsr.ROUTING_SEQUENCE_ID = TREAT(l_routing_table(op) AS Ego_route_list_inf).ROUTING_SEQUENCE_ID
861                                                OR ( bsr.organization_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).organization_id
862                                                      AND bsr.assembly_item_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).assembly_item_id
863                                                      AND Nvl(bsr.ALTERNATE_ROUTING_DESIGNATOR,0) = Nvl(TREAT(l_routing_table(op) AS Ego_route_list_inf).alternate_routing_designator,0)
864                                                      AND (bsr.ROUTING_SEQUENCE_ID IS NULL OR TREAT(l_routing_table(op) AS Ego_route_list_inf).ROUTING_SEQUENCE_ID IS NULL)
865                                                    )
866                                               );
867 
868                       FOR i IN l_routing_table.first .. l_routing_table.last LOOP
869                              l_bom_sub_op_res_entity_count := l_bom_sub_op_res_entity_count + SQL%BULK_ROWCOUNT(i);
870                       END LOOP;
871 
872 
873                 --delete records from bom_op_networks_interface
874                 stm_num := 10;
875 
876                          /* DELETE FROM bom_op_networks_interface boni
877                            WHERE boni.batch_id = l_op_table(op).batch_id
878                              AND boni.organization_id = l_op_table(op).organization_id
879                              AND boni.request_id = l_op_table(op).request_id
880                              AND boni.assembly_item_id = l_op_table(op).assembly_item_id;
881                          */
882 
883 
884                  --delete records from bom_op_sequences_interface
885                 stm_num := 11;
886 
887                    FORALL op IN l_routing_table.first .. l_routing_table.last
888 
889                                           DELETE FROM bom_op_sequences_interface bseq
890                                           WHERE bseq.batch_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).batch_id
891                                           AND bseq.organization_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).organization_id
892                                           AND bseq.request_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).request_id
893                                           AND bseq.assembly_item_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).assembly_item_id
894                                           AND ( bseq.ROUTING_SEQUENCE_ID = TREAT(l_routing_table(op) AS Ego_route_list_inf).ROUTING_SEQUENCE_ID
895                                                 OR ( bseq.organization_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).organization_id
896                                                      AND bseq.assembly_item_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).assembly_item_id
897                                                      AND Nvl(bseq.ALTERNATE_ROUTING_DESIGNATOR,0) = Nvl(TREAT(l_routing_table(op) AS Ego_route_list_inf).alternate_routing_designator,0)
898                                                      AND (bseq.ROUTING_SEQUENCE_ID IS NULL OR TREAT(l_routing_table(op) AS Ego_route_list_inf).ROUTING_SEQUENCE_ID IS NULL)
899                                                    )
900                                               );
901 
902                      FOR i IN l_routing_table.first .. l_routing_table.last LOOP
903                         l_bom_op_seq_entity_count := l_bom_op_seq_entity_count + SQL%BULK_ROWCOUNT(i);
904                      END LOOP;
905 
906 
907                 --delete records from bom_op_routings_interface
908                 stm_num := 12;
909 
910                    FORALL op IN l_routing_table.first .. l_routing_table.last
911 
912                                          DELETE FROM bom_op_routings_interface brou
913                                          WHERE brou.batch_id =TREAT(l_routing_table(op) AS Ego_route_list_inf).batch_id
914                                          AND brou.organization_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).organization_id
915                                          AND brou.request_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).request_id
916                                          AND brou.assembly_item_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).assembly_item_id
917                                          AND ( brou.ROUTING_SEQUENCE_ID = TREAT(l_routing_table(op) AS Ego_route_list_inf).ROUTING_SEQUENCE_ID
918                                                OR ( brou.organization_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).organization_id AND
919                                                     brou.assembly_item_id = TREAT(l_routing_table(op) AS Ego_route_list_inf).assembly_item_id AND
920                                                     Nvl(brou.ALTERNATE_ROUTING_DESIGNATOR,0) = Nvl(TREAT(l_routing_table(op) AS Ego_route_list_inf).alternate_routing_designator,0) AND
921                                                     (brou.ROUTING_SEQUENCE_ID IS NULL OR TREAT(l_routing_table(op) AS Ego_route_list_inf).ROUTING_SEQUENCE_ID IS NULL )
922                                                   )
923                                              );
924 
925                           FOR i IN l_routing_table.first .. l_routing_table.last LOOP
926                               l_bom_op_route_entity_count := l_bom_op_route_entity_count + SQL%BULK_ROWCOUNT(i);
927                           END LOOP;
928 
929 
930                      COMMIT;
931 
932   END IF;
933 
934 
935  fnd_file.put_line(fnd_file.Log,'No.of Routings deleted are '||l_bom_op_route_entity_count);
936  fnd_file.put_line(fnd_file.Log,'No.of Operation Resources deleted are '||l_bom_op_res_entity_count);
937  fnd_file.put_line(fnd_file.Log,'No.of Sub-operation Resources deleted are '||l_bom_sub_op_res_entity_count);
938  fnd_file.put_line(fnd_file.Log,'No.of Operation sequences deleted are '||l_bom_op_seq_entity_count);
939 
940 --end delete routing tables
941 
942 
943 
944 
945 --deletion of items in Sructure batch
946 
947      stm_num := 13;
948 
949      OPEN l_item_list_c(l_batch_id);
950      FETCH l_item_list_c BULK COLLECT INTO l_item_table;
951      item_num:=l_item_list_c%ROWCOUNT;
952      CLOSE l_item_list_c;
953 
954    IF item_num >0 THEN
955 
956            FOR item IN l_item_table.first .. l_item_table.last LOOP
957 
958                    SELECT Count(1) INTO l_item_table(item).isinbill FROM bom_bill_of_mtls_interface bbmi
959                     WHERE bbmi.BATCH_ID = l_item_table(item).set_process_id
960                     AND ( bbmi.ORGANIZATION_ID = l_item_table(item).organization_id
961                           OR ( bbmi.ORGANIZATION_CODE = l_item_table(item).organization_code
962                                AND ( bbmi.ORGANIZATION_CODE IS NULL OR l_item_table(item).organization_code IS NULL)
963                              )
964                         )
965                     AND bbmi.ITEM_NUMBER = l_item_table(item).item_number;
966 
967 
968 
969                    SELECT Count(1) INTO l_item_table(item).isincomp FROM bom_inventory_comps_interface bici
970                     WHERE bici.BATCH_ID = l_item_table(item).set_process_id
971                     AND ( bici.ORGANIZATION_ID = l_item_table(item).organization_id
972                           OR ( bici.ORGANIZATION_CODE = l_item_table(item).organization_code
973                                AND ( bici.ORGANIZATION_CODE IS NULL OR l_item_table(item).organization_code IS NULL)
974                              )
975                         )
976                     AND bici.COMPONENT_ITEM_NUMBER = l_item_table(item).item_number;
977 
978 
979 
980                    SELECT Count(1) INTO l_item_table(item).isinsubcomp FROM bom_sub_comps_interface bsci
981                     WHERE bsci.BATCH_ID = l_item_table(item).set_process_id
982                     AND ( bsci.ORGANIZATION_ID = l_item_table(item).organization_id
983                           OR ( bsci.ORGANIZATION_CODE = l_item_table(item).organization_code
984                                AND ( bsci.ORGANIZATION_CODE IS NULL OR l_item_table(item).organization_code IS NULL)
985                              )
986                         )
987                     AND bsci.SUBSTITUTE_COMP_NUMBER = l_item_table(item).item_number;
988 
989            END LOOP;
990 
991            clear_items(l_purge_criteria, l_item_table);
992 
993            COMMIT;
994 
995   ELSE
996 
997       fnd_file.put_line(fnd_file.Log,'No.of Item Entities deleted are 0');
998       fnd_file.put_line(fnd_file.Log,'No.of Item Revision Entities deleted are 0');
999       fnd_file.put_line(fnd_file.Log,'No.of Item People deleted are 0');
1000       fnd_file.put_line(fnd_file.Log,'No.of Item Categories deleted are 0');
1001       fnd_file.put_line(fnd_file.Log,'No.of Item Associations deleted are 0');
1002 
1003   END IF;
1004 
1005 
1006 --end deleting item records in structure batch
1007 
1008 EXCEPTION
1009 
1010 WHEN OTHERS THEN
1011 
1012       err_buff := 'Structure_Purge: stm_num = '||stm_num||'. Error msg: '||SUBSTR(SQLERRM, 1, 200);
1013       ret_code := 2;--FND_API.G_RET_STS_ERROR;
1014       fnd_file.put_line(fnd_file.Log,err_buff);
1015 
1016 END Structure_Purge;
1017 
1018 
1019 --purge all procedure
1020 
1021 PROCEDURE Purge_All(p_batch_id IN NUMBER,ret_code OUT NOCOPY VARCHAR2,err_buff OUT NOCOPY  VARCHAR2 ) IS
1022 
1023 
1024   l_batch_type VARCHAR2(50);
1025   stm_num NUMBER := 0;
1026 
1027 BEGIN
1028 
1029     stm_num :=1;
1030 
1031     SELECT BATCH_TYPE INTO l_batch_type FROM EGO_IMPORT_BATCHES_B WHERE BATCH_ID=p_batch_id;
1032 
1033         stm_num :=2;
1034 
1035         DELETE FROM MTL_SYSTEM_ITEMS_INTERFACE WHERE set_process_id = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1036 
1037         fnd_file.put_line(fnd_file.Log,'No.of Item Entities deleted are '||SQL%ROWCOUNT);
1038 
1039         stm_num :=3;
1040 
1041         DELETE FROM MTL_ITEM_REVISIONS_INTERFACE WHERE SET_PROCESS_ID = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1042 
1043         fnd_file.put_line(fnd_file.Log,'No.of Item Revision Entities deleted are '||SQL%ROWCOUNT);
1044 
1045 
1046         stm_num :=4;
1047 
1048         DELETE FROM EGO_ITEM_PEOPLE_INTF WHERE DATA_SET_ID = p_batch_id AND PROCESS_STATUS IN (3,4,6,7);
1049 
1050         fnd_file.put_line(fnd_file.Log,'No.of Item People Entities deleted are '||SQL%ROWCOUNT);
1051 
1052 
1053         stm_num :=5;
1054 
1055         DELETE FROM MTL_ITEM_CATEGORIES_INTERFACE WHERE SET_PROCESS_ID = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1056 
1057         fnd_file.put_line(fnd_file.Log,'No.of Item Categories Entities deleted are '||SQL%ROWCOUNT);
1058 
1059 
1060         stm_num :=6;
1061 
1062 
1063         DELETE FROM EGO_ITEM_ASSOCIATIONS_INTF WHERE BATCH_ID = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1064 
1065         fnd_file.put_line(fnd_file.Log,'No.of Item Association Entities deleted are '||SQL%ROWCOUNT);
1066 
1067 
1068         stm_num :=7;
1069 
1070 
1071         DELETE FROM EGO_AML_INTF WHERE DATA_SET_ID = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1072 
1073 
1074 
1075         DELETE FROM EGO_ITM_USR_ATTR_INTRFC WHERE DATA_SET_ID = p_batch_id AND PROCESS_STATUS IN (3,4,6,7);
1076 
1077 
1078 
1079 
1080 
1081 
1082   IF l_batch_type='BOM_STRUCTURE' THEN
1083 
1084           stm_num :=8;
1085 
1086           DELETE bom_bill_of_mtls_interface WHERE batch_id = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1087 
1088           fnd_file.put_line(fnd_file.Log,'No.of Structures deleted are '||SQL%ROWCOUNT);
1089 
1090 
1091           stm_num :=9;
1092 
1093           DELETE bom_inventory_comps_interface WHERE batch_id = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1094 
1095           fnd_file.put_line(fnd_file.Log,'No.of Components deleted are '||SQL%ROWCOUNT);
1096 
1097 
1098           stm_num :=10;
1099 
1100           DELETE bom_ref_desgs_interface WHERE batch_id = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1101 
1102           fnd_file.put_line(fnd_file.Log,'No.of ref-designators deleted are '||SQL%ROWCOUNT);
1103 
1104 
1105           stm_num :=11;
1106 
1107           DELETE bom_sub_comps_interface WHERE batch_id = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1108 
1109           fnd_file.put_line(fnd_file.Log,'No.of Sub-components deleted are '||SQL%ROWCOUNT);
1110 
1111 
1112           stm_num :=12;
1113 
1114           DELETE bom_cmp_usr_attr_interface WHERE (batch_id = p_batch_id or data_set_id = p_batch_id) AND PROCESS_STATUS IN (3,6,7);
1115 
1116 
1117           stm_num :=13;
1118 
1119           DELETE bom_component_ops_interface WHERE batch_id = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1120 
1121           fnd_file.put_line(fnd_file.Log,'No.of Component Operations deleted are '||SQL%ROWCOUNT);
1122 
1123 
1124           stm_num :=14;
1125 
1126           DELETE bom_op_routings_interface WHERE batch_id = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1127 
1128           fnd_file.put_line(fnd_file.Log,'No.of Routings deleted are '||SQL%ROWCOUNT);
1129 
1130 
1131           stm_num :=15;
1132 
1133           DELETE bom_op_resources_interface WHERE batch_id = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1134 
1135           fnd_file.put_line(fnd_file.Log,'No.of Operation Resources deleted are '||SQL%ROWCOUNT);
1136 
1137 
1138           stm_num :=16;
1139 
1140           DELETE bom_sub_op_resources_interface WHERE batch_id = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1141 
1142           fnd_file.put_line(fnd_file.Log,'No.of Sub-operation Resources deleted are '||SQL%ROWCOUNT);
1143 
1144 
1145           stm_num :=17;
1146 
1147           DELETE bom_op_sequences_interface WHERE batch_id = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1148 
1149           fnd_file.put_line(fnd_file.Log,'No.of Operation sequences deleted are '||SQL%ROWCOUNT);
1150 
1151 
1152           stm_num :=18;
1153 
1154           DELETE bom_op_networks_interface WHERE batch_id = p_batch_id AND PROCESS_FLAG IN (3,6,7);
1155 
1156   END IF;
1157 
1158    COMMIT;
1159 
1160 EXCEPTION
1161 
1162 WHEN OTHERS THEN
1163       err_buff := 'Purge_All: stm_num = '||stm_num||'. Error msg: '||SUBSTR(SQLERRM, 1, 200);
1164       ret_code := 2; --FND_API.G_RET_STS_ERROR;
1165       fnd_file.put_line(fnd_file.Log,err_buff);
1166 
1167 END Purge_All;
1168 
1169 
1170 END Ego_import_batch_purge_pkg;