DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSM_MTL_ITEM_SUBINV_EVENT_PKG

Source


1 PACKAGE BODY CSM_MTL_ITEM_SUBINV_EVENT_PKG AS
2 /* $Header: csmemisb.pls 120.1 2005/07/25 00:11:58 trajasek noship $*/
3 --
4 -- To modify this template, edit file PKGBODY.TXT in TEMPLATE
5 -- directory of SQL Navigator
6 --
7 -- Purpose: Briefly explain the functionality of the package body
8 --
9 -- MODIFICATION HISTORY
10 -- Person      Date    Comments
11 -- ---------   ------  ------------------------------------------
12    -- Enter procedure, function bodies as shown below
13 
14 g_table_name1            CONSTANT VARCHAR2(30) := 'MTL_ITEM_SUB_INVENTORIES';
15 g_acc_table_name1        CONSTANT VARCHAR2(30) := 'CSM_MTL_ITEM_SUBINV_ACC';
16 g_acc_sequence_name1     CONSTANT VARCHAR2(30) := 'CSM_MTL_ITEM_SUBINV_ACC_S';
17 g_publication_item_name1 CONSTANT CSM_ACC_PKG.t_publication_item_list :=
18                              CSM_ACC_PKG.t_publication_item_list('CSM_MTL_ITEM_SUBINV');
19 g_pk1_name1              CONSTANT VARCHAR2(30) := 'INVENTORY_ITEM_ID';
20 g_pk2_name1              CONSTANT VARCHAR2(30) := 'ORGANIZATION_ID';
21 g_pk3_name1              CONSTANT VARCHAR2(30) := 'SECONDARY_INVENTORY';
22 g_pub_item               CONSTANT VARCHAR2(30) := 'CSM_MTL_ITEM_SUBINV';
23 
24 PROCEDURE INSERT_MTL_ITEM_SUBINV( p_organization_id IN number
25                                  , p_user_id     IN number
26 		                               , p_last_run_date   IN date)
27 IS
28 TYPE inventory_item_tbl_typ  IS TABLE OF mtl_system_items_b.inventory_item_id%TYPE INDEX BY BINARY_INTEGER;
29 TYPE organization_tbl_typ   IS TABLE OF mtl_system_items_b.organization_id%TYPE
30 INDEX BY BINARY_INTEGER;
31 TYPE secondary_inventory_typ IS TABLE OF mtl_item_sub_inventories.secondary_inventory%TYPE INDEX BY BINARY_INTEGER;
32 TYPE access_id_tbl_typ IS TABLE OF number INDEX BY binary_integer;
33 TYPE user_id_tbl_typ IS TABLE OF number INDEX BY binary_integer;
34 
35 l_inventory_items_tbl inventory_item_tbl_typ;
36 l_organizations_tbl organization_tbl_typ;
37 l_sec_inventory_tbl secondary_inventory_typ;
38 l_access_id_tbl access_id_tbl_typ;
39 l_mark_dirty boolean;
40 l_run_date date;
41 l_sqlerrno             varchar2(20);
42 l_sqlerrmsg            varchar2(2000);
43 
44 CURSOR l_ins_mtl_item_subinv_csr(p_organizationid IN number,
45                                   p_userid IN number,
46                                   p_lastrundate IN date)
47 IS
48 SELECT cila_acc.user_id, mis.inventory_item_id, mis.organization_id, mis.secondary_inventory
49 FROM csm_mtl_system_items_acc msi_acc,
50      csm_inv_loc_ass_acc cila_acc,
51      csp_inv_loc_assignments cila,
52      mtl_item_sub_inventories mis
53 WHERE msi_acc.inventory_item_id = mis.inventory_item_id
54 AND msi_acc.organization_id = mis.organization_id
55 AND cila.csp_inv_loc_assignment_id = cila_acc.csp_inv_loc_assignment_id
56 AND cila.subinventory_code = mis.secondary_inventory
57 AND cila_acc.user_id = msi_acc.user_id
58 AND NOT EXISTS
59     (SELECT 1
60      FROM csm_mtl_item_subinv_acc acc
61      WHERE acc.user_id = msi_acc.user_id
62      AND acc.inventory_item_id = mis.inventory_item_id
63      AND acc.organization_id = mis.organization_id
64      AND acc.secondary_inventory = mis.secondary_inventory
65      );
66 
67 BEGIN
68  CSM_UTIL_PKG.LOG('Entering CSM_MTL_ITEM_SUBINV_EVENT_PKG.INSERT_MTL_ITEM_SUBINV ',
69                          'CSM_MTL_ITEM_SUBINV_EVENT_PKG.INSERT_MTL_ITEM_SUBINV',FND_LOG.LEVEL_PROCEDURE);
70 
71  l_run_date := SYSDATE;
72 
73  -- process inserts
74  OPEN l_ins_mtl_item_subinv_csr(p_organization_id, p_user_id, p_last_run_date);
75  FETCH l_ins_mtl_item_subinv_csr BULK COLLECT INTO  l_access_id_tbl, l_inventory_items_tbl, l_organizations_tbl, l_sec_inventory_tbl;
76  CLOSE l_ins_mtl_item_subinv_csr;
77 
78  IF l_access_id_tbl.count > 0 THEN
79    FORALL i IN 1..l_access_id_tbl.count
80       INSERT INTO csm_mtl_item_subinv_acc(access_id, user_id, inventory_item_id, organization_id, secondary_inventory, counter,
81                                            created_by, creation_date, last_updated_by, last_update_date, last_update_login)
82                                     VALUES (l_access_id_tbl(i), p_user_id, l_inventory_items_tbl(i), l_organizations_tbl(i),l_sec_inventory_tbl(i), 1,
83                                             fnd_global.user_id, l_run_date, fnd_global.user_id, l_run_date, fnd_global.login_id);
84 
85    CSM_UTIL_PKG.LOG('Bulk inserted ' || l_access_id_tbl.count || ' records into csm_mtl_item_subinv_acc for user ' || p_user_id ,
86                          'CSM_MTL_ITEM_SUBINV_EVENT_PKG.INSERT_MTL_ITEM_SUBINV',FND_LOG.LEVEL_STATEMENT);
87 
88    -- make dirty calls
89    FOR i IN 1..l_access_id_tbl.count LOOP
90       l_mark_dirty := csm_util_pkg.MakeDirtyForUser(g_pub_item,
91                                                     l_access_id_tbl(i),
92                                                     p_user_id,
93                                                     asg_download.ins,
94                                                     l_run_date);
95    END LOOP;
96 
97    l_access_id_tbl.delete;
98 
99  END IF;
100 
101 /* --insert into acc
102  FOR i IN 1..l_inventory_items_tbl.count LOOP
103    CSM_ACC_PKG.Insert_Acc
104      ( P_PUBLICATION_ITEM_NAMES => g_publication_item_name1
105       ,P_ACC_TABLE_NAME         => g_acc_table_name1
106       ,P_SEQ_NAME               => g_acc_sequence_name1
107       ,P_PK1_NAME               => g_pk1_name1
108       ,P_PK1_NUM_VALUE          => l_inventory_items_tbl(i)
109       ,P_PK2_NAME               => g_pk2_name1
110       ,P_PK2_NUM_VALUE          => l_organizations_tbl(i)
111       ,P_PK3_NAME               => g_pk3_name1
112       ,P_PK3_CHAR_VALUE         => l_sec_inventory_tbl(i)
113       ,P_USER_ID                => p_user_id
114      );
115  END LOOP;
116 */
117 
118  CSM_UTIL_PKG.LOG('Leaving CSM_MTL_ITEM_SUBINV_EVENT_PKG.INSERT_MTL_ITEM_SUBINV ',
119                          'CSM_MTL_ITEM_SUBINV_EVENT_PKG.INSERT_MTL_ITEM_SUBINV',FND_LOG.LEVEL_PROCEDURE);
120 
121  EXCEPTION
122   WHEN others THEN
123      l_sqlerrno := to_char(SQLCODE);
124      l_sqlerrmsg := substr(SQLERRM, 1,2000);
125 --     ROLLBACK;
126      CSM_UTIL_PKG.LOG('Exception in CSM_MTL_ITEM_SUBINV_EVENT_PKG.INSERT_MTL_ITEM_SUBINV: ' || l_sqlerrno || ':' || l_sqlerrmsg,
127                          'CSM_MTL_ITEM_SUBINV_EVENT_PKG.INSERT_MTL_ITEM_SUBINV',FND_LOG.LEVEL_EXCEPTION);
128 END INSERT_MTL_ITEM_SUBINV;
129 
130 
131 PROCEDURE UPDATE_MTL_ITEM_SUBINV( p_organization_id IN number
132                                  , p_user_id     IN number
133 		                               , p_last_run_date   IN date)
134 IS
135 TYPE access_id_tbl_typ  IS TABLE OF csm_mtl_system_items_acc.access_id%TYPE INDEX BY BINARY_INTEGER;
136 l_access_id_tbl  access_id_tbl_typ;
137 l_mark_dirty boolean;
138 l_run_date date;
139 l_sqlerrno  varchar2(20);
140 l_sqlerrmsg varchar2(2000);
141 
142 CURSOR l_upd_mtl_item_subinv_csr( p_organizationid IN number
143                                  , p_lastrundate IN DATE
144                                  , p_userid IN NUMBER) IS
145 SELECT access_id
146 FROM csm_mtl_item_subinv_acc acc
147 ,    mtl_item_sub_inventories mis
148 WHERE mis.inventory_item_id = acc.inventory_item_id
149 AND   mis.organization_id = acc.organization_id
150 AND   mis.secondary_inventory = acc.secondary_inventory
151 AND   mis.last_update_date  >= p_last_run_date
152 AND   acc.organization_id = p_organizationid
153 AND   acc.user_id = p_userid;
154 
155 BEGIN
156  CSM_UTIL_PKG.LOG('Entering CSM_MTL_ITEM_SUBINV_EVENT_PKG.UPDATE_MTL_ITEM_SUBINV ',
157                          'CSM_MTL_ITEM_SUBINV_EVENT_PKG.UPDATE_MTL_ITEM_SUBINV',FND_LOG.LEVEL_PROCEDURE);
158 
159  l_run_date := SYSDATE;
160 
161  IF l_access_id_tbl.count > 0 THEN
162     l_access_id_tbl.DELETE;
163  END IF;
164 
165  OPEN l_upd_mtl_item_subinv_csr(p_organization_id, p_last_run_date, p_user_id);
166  FETCH l_upd_mtl_item_subinv_csr BULK COLLECT INTO l_access_id_tbl;
167  CLOSE l_upd_mtl_item_subinv_csr;
168 
169  IF l_access_id_tbl.count > 0 THEN
170    -- make dirty calls
171    FOR i IN 1..l_access_id_tbl.count LOOP
172          CSM_ACC_PKG.Update_Acc
173                ( P_PUBLICATION_ITEM_NAMES => g_publication_item_name1
174                 ,P_ACC_TABLE_NAME         => g_acc_table_name1
175                 ,P_ACCESS_ID              => l_access_id_tbl(i)
176                 ,P_USER_ID                => p_user_id
177                );
178    END LOOP;
179 
180    l_access_id_tbl.DELETE;
181  END IF;
182 
183  CSM_UTIL_PKG.LOG('Leaving CSM_MTL_ITEM_SUBINV_EVENT_PKG.UPDATE_MTL_ITEM_SUBINV ',
184                          'CSM_MTL_ITEM_SUBINV_EVENT_PKG.UPDATE_MTL_ITEM_SUBINV',FND_LOG.LEVEL_PROCEDURE);
185 
186  EXCEPTION
187   WHEN others THEN
188      l_sqlerrno := to_char(SQLCODE);
189      l_sqlerrmsg := substr(SQLERRM, 1,2000);
190      ROLLBACK;
191      CSM_UTIL_PKG.LOG('Exception in CSM_MTL_ITEM_SUBINV_EVENT_PKG.UPDATE_MTL_ITEM_SUBINV: ' || l_sqlerrno || ':' || l_sqlerrmsg,
192                          'CSM_MTL_ITEM_SUBINV_EVENT_PKG.UPDATE_MTL_ITEM_SUBINV',FND_LOG.LEVEL_EXCEPTION);
193 END UPDATE_MTL_ITEM_SUBINV;
194 
195 
196 PROCEDURE DELETE_MTL_ITEM_SUBINV( p_organization_id IN number
197                                  , p_user_id     IN number
198 		                               , p_last_run_date   IN date)
199 IS
200 TYPE inventory_item_tbl_typ  IS TABLE OF mtl_system_items_b.inventory_item_id%TYPE INDEX BY BINARY_INTEGER;
201 TYPE organization_tbl_typ   IS TABLE OF mtl_system_items_b.organization_id%TYPE INDEX BY BINARY_INTEGER;
202 TYPE secondary_inventory_typ IS TABLE OF mtl_item_sub_inventories.secondary_inventory%TYPE INDEX BY BINARY_INTEGER;
203 l_inventory_items_tbl inventory_item_tbl_typ;
204 l_organizations_tbl organization_tbl_typ;
205 l_sec_inventory_tbl secondary_inventory_typ;
206 l_sqlerrno varchar2(20);
207 l_sqlerrmsg varchar2(2000);
208 
209 CURSOR l_del_mtl_item_subinv_csr( p_organizationid IN number
210                                 , p_userid IN NUMBER)
211 IS
212 SELECT acc.inventory_item_id, acc.organization_id, acc.secondary_inventory
213 FROM  csm_mtl_item_subinv_acc acc
214 WHERE acc.user_id = p_userid
215 AND   acc.organization_id = p_organizationid
216 AND   NOT EXISTS
217      (SELECT 1
218       FROM mtl_item_sub_inventories mis
219       WHERE mis.inventory_item_id = acc.inventory_item_id
220       AND mis.organization_id = acc.organization_id
221       AND mis.secondary_inventory = acc.secondary_inventory
222       );
223 
224 BEGIN
225  CSM_UTIL_PKG.LOG('Entering CSM_MTL_ITEM_SUBINV_EVENT_PKG.DELETE_MTL_ITEM_SUBINV ',
226                          'CSM_MTL_ITEM_SUBINV_EVENT_PKG.DELETE_MTL_ITEM_SUBINV',FND_LOG.LEVEL_PROCEDURE);
227 
228  IF l_inventory_items_tbl.count > 0 THEN
229     l_inventory_items_tbl.delete;
230  END IF;
231 
232  IF l_organizations_tbl.count > 0 THEN
233     l_organizations_tbl.delete;
234  END IF;
235 
236  IF l_sec_inventory_tbl.count > 0 THEN
237     l_sec_inventory_tbl.delete;
238  END IF;
239 
240  -- process deletes
241  OPEN l_del_mtl_item_subinv_csr(p_organization_id, p_user_id);
242  FETCH l_del_mtl_item_subinv_csr BULK COLLECT INTO  l_inventory_items_tbl, l_organizations_tbl, l_sec_inventory_tbl;
243  CLOSE l_del_mtl_item_subinv_csr;
244 
245  IF l_inventory_items_tbl.count > 0 THEN
246    -- make dirty calls
247    FOR i IN 1..l_inventory_items_tbl.count LOOP
248     CSM_ACC_PKG.Delete_Acc
249      ( P_PUBLICATION_ITEM_NAMES => g_publication_item_name1
250       ,P_ACC_TABLE_NAME         => g_acc_table_name1
251       ,P_PK1_NAME               => g_pk1_name1
252       ,P_PK1_NUM_VALUE          => l_inventory_items_tbl(i)
253       ,P_PK2_NAME               => g_pk2_name1
254       ,P_PK2_NUM_VALUE          => l_organizations_tbl(i)
255       ,P_PK3_NAME               => g_pk3_name1
256       ,P_PK3_CHAR_VALUE         => l_sec_inventory_tbl(i)
257       ,P_USER_ID                => p_user_id
258      );
259    END LOOP;
260 
261  END IF;
262 
263  CSM_UTIL_PKG.LOG('Leaving CSM_MTL_ITEM_SUBINV_EVENT_PKG.DELETE_MTL_ITEM_SUBINV ',
264                          'CSM_MTL_ITEM_SUBINV_EVENT_PKG.DELETE_MTL_ITEM_SUBINV',FND_LOG.LEVEL_PROCEDURE);
265 
266  EXCEPTION
267   WHEN others THEN
268      l_sqlerrno := to_char(SQLCODE);
269      l_sqlerrmsg := substr(SQLERRM, 1,2000);
270      ROLLBACK;
271      CSM_UTIL_PKG.LOG('Exception in CSM_MTL_ITEM_SUBINV_EVENT_PKG.DELETE_MTL_ITEM_SUBINV: ' || l_sqlerrno || ':' || l_sqlerrmsg,
272                          'CSM_MTL_ITEM_SUBINV_EVENT_PKG.DELETE_MTL_ITEM_SUBINV',FND_LOG.LEVEL_EXCEPTION);
273 END DELETE_MTL_ITEM_SUBINV;
274 
275 
276 PROCEDURE Refresh_acc(p_status OUT NOCOPY VARCHAR2,
277                        p_message OUT NOCOPY VARCHAR2)
278 IS
279 PRAGMA AUTONOMOUS_TRANSACTION;
280 l_prog_update_date jtm_con_request_data.last_run_date%TYPE;
281 l_access_id jtm_fnd_lookups_acc.access_id%TYPE;
282 l_all_omfs_palm_resource_list asg_download.user_list;
283 l_valid_omfs_resource_list asg_download.user_list;
284 l_null_palm_omfs_resource_list asg_download.user_list;
285 l_user_id fnd_user.user_id%TYPE;
286 l_user_palm_organization_id mtl_system_items.organization_id%TYPE;
287 l_user_language mtl_system_items_tl.language%TYPE;
288 l_run_date date;
289 l_sqlerrno varchar2(20);
290 l_sqlerrmsg varchar2(2000);
291 
292 CURSOR l_last_run_date_csr
293 IS
294 SELECT nvl(last_run_date, (sysdate - 365*50))
295 FROM jtm_con_request_data
296 WHERE package_name = 'CSM_MTL_ITEM_SUBINV_EVENT_PKG'
297 AND procedure_name = 'REFRESH_ACC';
298 
299 --process inserts
300 CURSOR l_ins_mtl_item_subinv_csr
301 IS
302 SELECT cila_acc.user_id, mis.inventory_item_id, mis.organization_id, mis.secondary_inventory
303 FROM csm_mtl_system_items_acc msi_acc,
304      csm_inv_loc_ass_acc cila_acc,
305      csp_inv_loc_assignments cila,
306      mtl_item_sub_inventories mis
307 WHERE msi_acc.inventory_item_id = mis.inventory_item_id
311 AND cila_acc.user_id = msi_acc.user_id
308 AND msi_acc.organization_id = mis.organization_id
309 AND cila.csp_inv_loc_assignment_id = cila_acc.csp_inv_loc_assignment_id
310 AND cila.subinventory_code = mis.secondary_inventory
312 AND NOT EXISTS
313     (SELECT 1
314      FROM csm_mtl_item_subinv_acc acc
315      WHERE acc.user_id = msi_acc.user_id
316      AND acc.inventory_item_id = mis.inventory_item_id
317      AND acc.organization_id = mis.organization_id
318      AND acc.secondary_inventory = mis.secondary_inventory
319      );
320 
321 -- process updates
322 CURSOR l_upd_mtl_item_subinv_csr(p_last_upd_date DATE)
323 IS
324 SELECT acc.access_id, acc.secondary_inventory, acc.organization_id,
325        acc.inventory_item_id, acc.user_id
326 FROM csm_mtl_item_subinv_acc acc,
327      mtl_item_sub_inventories mis
328 WHERE mis.inventory_item_id = acc.inventory_item_id
329 AND mis.secondary_inventory = acc.secondary_inventory
330 AND mis.organization_id = acc.organization_id
331 AND mis.last_update_date >= p_last_upd_date;
332 
333 -- process deletes
334 CURSOR l_del_mtl_item_subinv_csr
335 IS
336 SELECT acc.access_id, acc.secondary_inventory, acc.organization_id,
337        acc.inventory_item_id, acc.user_id
338 FROM csm_mtl_item_subinv_acc acc
339 WHERE NOT EXISTS
340 (SELECT 1
341  FROM csm_mtl_system_items_acc msi_acc,
342      csm_inv_loc_ass_acc cila_acc,
343      csp_inv_loc_assignments cila,
344      mtl_item_sub_inventories mis
345  WHERE msi_acc.inventory_item_id = mis.inventory_item_id
346  AND msi_acc.organization_id = mis.organization_id
347  AND cila.csp_inv_loc_assignment_id = cila_acc.csp_inv_loc_assignment_id
348  AND cila.subinventory_code = mis.secondary_inventory
349  AND cila_acc.user_id = msi_acc.user_id
350  AND msi_acc.user_id = acc.user_id
351  AND msi_acc.inventory_item_id = acc.inventory_item_id
352  AND msi_acc.organization_id = acc.organization_id
353  AND acc.secondary_inventory = cila.subinventory_code
354  );
355 
356 CURSOR l_user_id_csr (p_resourceid IN number)
357 IS
358 SELECT user_id
359 FROM asg_user
360 WHERE resource_id = p_resourceid;
361 
362 BEGIN
363  CSM_UTIL_PKG.LOG('Entering CSM_MTL_ITEM_SUBINV_EVENT_PKG.Refresh_acc ',
364                          'CSM_MTL_ITEM_SUBINV_EVENT_PKG.Refresh_acc',FND_LOG.LEVEL_PROCEDURE);
365 
366  l_run_date := SYSDATE;
367 
368  -- get last conc program update date
369  OPEN l_last_run_date_csr;
370  FETCH l_last_run_date_csr INTO l_prog_update_date;
371  CLOSE l_last_run_date_csr;
372 
373  -- process deletes
374  FOR r_del_mtl_item_subinv_rec IN l_del_mtl_item_subinv_csr LOOP
375    CSM_ACC_PKG.Delete_acc
376      ( P_PUBLICATION_ITEM_NAMES => g_publication_item_name1
377       ,P_ACC_TABLE_NAME         => g_acc_table_name1
378       ,P_PK1_NAME               => g_pk1_name1
379       ,P_PK1_NUM_VALUE          => r_del_mtl_item_subinv_rec.inventory_item_id
380       ,P_PK2_NAME               => g_pk2_name1
381       ,P_PK2_NUM_VALUE          => r_del_mtl_item_subinv_rec.organization_id
382       ,P_PK3_NAME               => g_pk3_name1
383       ,P_PK3_CHAR_VALUE         => r_del_mtl_item_subinv_rec.secondary_inventory
384       ,P_USER_ID                => r_del_mtl_item_subinv_rec.user_id
385       );
386  END LOOP;
387 
388 -- process updates
389  FOR r_upd_mtl_item_subinv_rec IN l_upd_mtl_item_subinv_csr(l_prog_update_date) LOOP
390    CSM_ACC_PKG.Update_acc
391      ( P_PUBLICATION_ITEM_NAMES => g_publication_item_name1
392       ,P_ACC_TABLE_NAME         => g_acc_table_name1
393       ,P_ACCESS_ID              => r_upd_mtl_item_subinv_rec.access_id
394       ,P_USER_ID                => r_upd_mtl_item_subinv_rec.user_id
395       );
396  END LOOP;
397 
398  -- process inserts
399  FOR r_ins_mtl_item_subinv_rec IN l_ins_mtl_item_subinv_csr LOOP
400      CSM_ACC_PKG.Insert_Acc
401      ( P_PUBLICATION_ITEM_NAMES => g_publication_item_name1
402       ,P_ACC_TABLE_NAME         => g_acc_table_name1
403       ,P_SEQ_NAME               => g_acc_sequence_name1
404       ,P_PK1_NAME               => g_pk1_name1
405       ,P_PK1_NUM_VALUE          => r_ins_mtl_item_subinv_rec.inventory_item_id
406       ,P_PK2_NAME               => g_pk2_name1
407       ,P_PK2_NUM_VALUE          => r_ins_mtl_item_subinv_rec.organization_id
408       ,P_PK3_NAME               => g_pk3_name1
409       ,P_PK3_CHAR_VALUE         => r_ins_mtl_item_subinv_rec.secondary_inventory
410       ,P_USER_ID                => r_ins_mtl_item_subinv_rec.user_id
411      );
412  END LOOP;
413 
414  -- update last_run_date
415  UPDATE jtm_con_request_data
416  SET last_run_date = l_run_date
417  WHERE package_name = 'CSM_MTL_ITEM_SUBINV_EVENT_PKG'
418  AND procedure_name = 'REFRESH_ACC';
419 
420  COMMIT;
421 
422   p_status := 'FINE';
423   p_message :=  'CSM_MTL_ITEM_SUBINV_EVENT_PKG.Refresh_Acc Executed successfully';
424 
425  EXCEPTION
426   WHEN others THEN
427      l_sqlerrno := to_char(SQLCODE);
428      l_sqlerrmsg := substr(SQLERRM, 1,2000);
429      p_status := 'ERROR';
430      p_message :=  'Error in CSM_MTL_ITEM_SUBINV_EVENT_PKG.Refresh_Acc: ' || l_sqlerrno || ':' || l_sqlerrmsg;
431      ROLLBACK;
432      CSM_UTIL_PKG.LOG('Exception in CSM_MTL_ITEM_SUBINV_EVENT_PKG.refresh_acc: ' || l_sqlerrno || ':' || l_sqlerrmsg,
433                          'CSM_MTL_ITEM_SUBINV_EVENT_PKG.refresh_acc',FND_LOG.LEVEL_EXCEPTION);
434 END Refresh_acc;
435 
436 END CSM_MTL_ITEM_SUBINV_EVENT_PKG;