DBA Data[Home] [Help]

PACKAGE BODY: APPS.IBE_CCTBOM_PVT

Source


1 PACKAGE BODY IBE_CCTBOM_PVT AS
2 /* $Header: IBEVCBMB.pls 120.1 2005/12/21 20:32:36 ssekar noship $ */
3 
4 FUNCTION Validate_Model_Bundle(p_model_id IN NUMBER, p_organization_id IN NUMBER)
5 RETURN VARCHAR2
6 IS
7      l_item_id 			NUMBER;
8      l_optional 		NUMBER;
9      l_component_code 		VARCHAR2(1000);
10      l_total_component_items  	NUMBER;
11      l_isModelBundle 		VARCHAR2(1);
12      l_isEmptyModelItem 	VARCHAR2(1); --gzhang 12/12/02, #2709735
13 
14      cursor l_option_class_csr IS
15 	SELECT component_item_id,optional,bom_item_type	FROM BOM_EXPLOSIONS
16 	WHERE  top_bill_sequence_id =
17 	                (SELECT bill_sequence_id FROM bom_structures_b
18                          WHERE assembly_item_id = p_model_id
19                            AND organization_id = p_organization_id
20                            AND alternate_bom_designator IS NULL)
21 	AND EXPLOSION_TYPE = 'ALL'
22 	AND organization_id = p_organization_id
23 	AND plan_level=1
24 	AND NVL(disable_date,sysdate) >=sysdate
25 	AND NVL(effectivity_date,sysdate) <= sysdate;
26 
27 BEGIN
28      IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
29      IBE_UTIL.DEBUG(G_PKG_NAME||'.Validate_Model_Bundle: Validating model bundle, item_id='||p_model_id||',organization_id='||p_organization_id);
30      END IF;
31 
32      l_isModelBundle := FND_API.G_TRUE;
33      l_isEmptyModelItem := FND_API.G_TRUE; --gzhang 12/12/02, #2709735
34 
35      FOR option_class_rec IN l_option_class_csr LOOP
36 
37      IF option_class_rec.optional <> 2 OR option_class_rec.bom_item_type <> 2 THEN
38 
39      	IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
40      	IBE_UTIL.DEBUG(G_PKG_NAME||'.Validate_Model_Bundle:'
41      	    ||option_class_rec.component_item_id||' is not a required optional class, optional='||option_class_rec.optional
42      	    ||',bom_item_type='||option_class_rec.bom_item_type);
43      	END IF;
44 
45      	l_isModelBundle := FND_API.G_FALSE;
46 
47      ELSE
48      	l_component_code := p_model_id || '-' || option_class_rec.component_item_id || '-%';
49      	IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
50      	IBE_UTIL.DEBUG(G_PKG_NAME||'.Validate_Model_Bundle: Looking for items with component code like '||l_component_code);
51      	END IF;
52 
53         SELECT count(component_item_id) into l_total_component_items
54         FROM BOM_EXPLOSIONS
55      	WHERE top_bill_sequence_id =
56      	                     (SELECT bill_sequence_id
57      	                      FROM bom_structures_b
58                               WHERE assembly_item_id = p_model_id
59                                 AND organization_id = p_organization_id
60                                 AND alternate_bom_designator IS NULL)
61 	  AND EXPLOSION_TYPE = 'ALL'
62      	  AND plan_level = 2
63      	  AND organization_id = p_organization_id
64      	  AND component_code like l_component_code
65 	  AND NVL(disable_date,sysdate) >=sysdate
66 	  AND NVL(effectivity_date,sysdate) <= sysdate;
67 
68      	IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
69      	IBE_UTIL.DEBUG(G_PKG_NAME||'.Validate_Model_Bundle: Found '||l_total_component_items||' component item(s)');
70      	END IF;
71      	IF l_total_component_items = 1 THEN
72             SELECT component_item_id, optional into l_item_id,l_optional
73             FROM BOM_EXPLOSIONS
74      	    WHERE top_bill_sequence_id =
75      	                       (SELECT bill_sequence_id
76      	                        FROM bom_structures_b
77                                 WHERE assembly_item_id = p_model_id
78                                   AND organization_id = p_organization_id
79                                   AND alternate_bom_designator IS NULL)
80      	       AND EXPLOSION_TYPE = 'ALL'
81      	       AND plan_level = 2
82      	       AND organization_id = p_organization_id
83      	       AND component_code like l_component_code
84 	       AND NVL(disable_date,sysdate) >=sysdate
85 	       AND NVL(effectivity_date,sysdate) <= sysdate;
86      	    IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
87      	    IBE_UTIL.DEBUG(G_PKG_NAME||'.Validate_Model_Bundle: item_id='||l_item_id||', optional='||l_optional);
88      	    END IF;
89      	    IF l_optional <> 1 THEN
90      	        l_isModelBundle := FND_API.G_FALSE;
91      	        IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
92      	        IBE_UTIL.DEBUG(G_PKG_NAME||'.Validate_Model_Bundle: component item(item_id='||l_item_id||') not optional, optional='||l_optional);
93      	        END IF;
94      	    END IF;
95      	ELSE
96      	    l_isModelBundle := FND_API.G_FALSE;
97      	    IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
98      	    IBE_UTIL.DEBUG(G_PKG_NAME||'.Validate_Model_Bundle: optional class (item_id='||option_class_rec.component_item_id||') contains '||l_total_component_items||'(more than one or ZERO) items');
99      	    END IF;
100      	END IF;
101      END IF;
102      l_isEmptyModelItem := FND_API.G_FALSE; --gzhang 12/12/02, #2709735
103      EXIT WHEN l_isModelBundle = FND_API.G_FALSE;
104      END LOOP;
105 
106      IF l_option_class_csr%ISOPEN THEN
107          CLOSE l_option_class_csr;
108      END IF;
109 
110      --gzhang 12/16/02, #2709735
111      IF l_isEmptyModelItem = FND_API.G_TRUE THEN
112      l_isModelBundle := FND_API.G_FALSE;
113       IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
114      	IBE_UTIL.DEBUG(G_PKG_NAME||'.Validate_Model_Bundle: No child items found');
115       END IF;
116      END IF;
117 
118      IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
119      IBE_UTIL.DEBUG(G_PKG_NAME||'.Validate_Model_Bundle: return '||l_isModelBundle);
120      END IF;
121      --gzhang 08/08/2002, bug#2488246
122      --IBE_UTIL.DISABLE_DEBUG;
123      RETURN l_isModelBundle;
124 EXCEPTION
125 	WHEN NO_DATA_FOUND THEN
126      	     IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
127      	     IBE_UTIL.DEBUG(G_PKG_NAME||'.Validate_Model_Bundle: NO_DATA_FOUND Exception, return F');
128      	     END IF;
129      	     --gzhang 08/08/2002, bug#2488246
130              --IBE_UTIL.DISABLE_DEBUG;
131      	     RETURN FND_API.G_FALSE;
132      	WHEN OTHERS THEN
133      	     IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
134      	     IBE_UTIL.DEBUG(G_PKG_NAME||'.Validate_Model_Bundle: OTHERS Exception, return F');
135      	     END IF;
136      	     --gzhang 08/08/2002, bug#2488246
137              --IBE_UTIL.DISABLE_DEBUG;
138      	     RETURN FND_API.G_FALSE;
139 END Validate_Model_Bundle;
140 
141 
142 -- Start of comments
143 --    API name   : Is_Model_Bundle
144 --    Type       : Private.
145 --    Function   : Given a model item id, returns 'T' if this is a model bundle,
146 --                 otherwise returns 'F'
147 --
148 --    Pre-reqs   : None.
149 --    Parameters :
150 --    IN         : p_api_version                IN  NUMBER   Required
151 --                 p_init_msg_list              IN  VARCHAR2 Optional
152 --                     Default = FND_API.G_FALSE
153 --                 p_validation_level           IN  NUMBER   Optional
154 --                     Default = FND_API.G_VALID_LEVEL_FULL
155 --
156 --                 p_model_id                   IN NUMBER Required
157 --                 p_orgnization_id             IN  NUMBER, Required
158 --
159 --
160 --
161 --
162 --
163 --    Version    : Current version      1.0
164 --
165 --                 previous version     None
166 --
167 --
168 --                 Initial version      1.0
169 --
170 --    Notes      : Note text
171 --
172 -- End of comments
173 
174 Function Is_Model_Bundle
175                 (p_api_version                  IN  NUMBER,
176                  p_init_msg_list                IN  VARCHAR2 := FND_API.G_FALSE,
177                  p_validation_level             IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
178                  p_model_id                     IN  NUMBER,
179                  p_organization_id               IN  NUMBER
180                 )
181 
182 RETURN VARCHAR2
183 
184 IS
185 
186     l_bundle       VARCHAR2(1) := FND_API.G_FALSE;
187 
188 
189     l_api_version       CONSTANT NUMBER       := 1.0;
190     l_explosion_date            DATE := sysdate;
191     l_error_code                NUMBER;
192     l_return_status             VARCHAR2(1);
193     l_msg_count                 NUMBER;
194     l_msg_data                  VARCHAR2(2000);
195 
196     l_count                     NUMBER := 0;
197     l_validate			VARCHAR2(1);
198 
199     l_bom_item_type		NUMBER;
200     l_resp_id 			NUMBER;
201     l_resp_appl_id		NUMBER;
202 
203     cursor l_bom_item_type_csr IS
204       SELECT MSIV.bom_item_type
205       FROM mtl_system_items_vl MSIV
206       WHERE MSIV.inventory_item_id = p_model_id
207         AND MSIV.organization_id = p_organization_id;
208 
209 BEGIN
210    --gzhang 08/08/2002, bug#2488246
211    --ibe_util.enable_debug;
212 
213    -- begin API body
214    l_return_status := FND_API.G_RET_STS_SUCCESS;
215    IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
216    IBE_UTIL.debug(G_PKG_NAME||'.Is_Model_Bundle : p_model_id ='||p_model_id||', p_organization_id='||p_organization_id);
217    END IF;
218 
219    OPEN l_bom_item_type_csr;
220    FETCH l_bom_item_type_csr INTO l_bom_item_type;
221    CLOSE l_bom_item_type_csr;
222 
223    l_resp_id := FND_PROFILE.value('RESP_ID');
224    l_resp_appl_id := FND_PROFILE.value('RESP_APPL_ID');
225 
226    IF l_bom_item_type = 1 AND CZ_CF_API.UI_FOR_ITEM(p_model_id, p_organization_id, SYSDATE, 'DHTML', FND_API.G_MISS_NUM, l_resp_id, l_resp_appl_id) IS NULL THEN
227        -- Call BOM Explosion API
228        IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
229        IBE_UTIL.debug(G_PKG_NAME||'.Is_Model_Bundle :Calling BOMPNORD.Bmxporder_Explode_For_Order()');
230        END IF;
231        Explode(p_validation_org => p_organization_id,
232           p_levels         => 6, --??
233           p_stdcompflag    => 'ALL',
234           p_top_item_id    => p_model_id,
235           p_revdate        => l_explosion_date,
236           x_msg_data       => l_msg_data,
237           x_error_code     => l_error_code,
238           x_return_status  => l_return_status);
239       IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
240           IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
241           IBE_UTIL.debug(G_PKG_NAME||'.Is_Model_Bundle : RAISE FND_API.G_RET_STS_UNEXP_ERROR');
242           END IF;
243           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
244       ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
245           IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
246           IBE_UTIL.debug(G_PKG_NAME||'.Is_Model_Bundle : RAISE FND_API.G_RET_STS_ERROR');
247           END IF;
248           RAISE FND_API.G_EXC_ERROR;
249       ELSE
250           l_bundle := Validate_Model_Bundle(p_model_id,p_organization_id);
251           IF l_bundle = FND_API.G_FALSE THEN
252               IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
253               IBE_UTIL.debug(G_PKG_NAME||'.Is_Model_Bundle : Model bundle ( item_id='||p_model_id||') is invalid. Incorrect BOM setup.');
254               END IF;
255           ELSE
256               IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
257               IBE_UTIL.debug(G_PKG_NAME||'.Is_Model_Bundle : valid model bundle, item_id='||p_model_id);
258               END IF;
259           END IF;
260           IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
261           IBE_UTIL.debug(G_PKG_NAME||'.Is_Model_Bundle : Validate_Model_Bundle('||p_model_id||','||p_organization_id||') returns '||l_bundle);
262           END IF;
263       END IF;
264   ELSE
265       l_bundle := FND_API.G_FALSE;
266       IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
267       IBE_UTIL.debug(G_PKG_NAME||'.Is_Model_Bundle : Item( item_id='||p_model_id||') is not a model bundle.');
268       END IF;
269   END IF;
270   return l_bundle;
271 END Is_Model_Bundle;
272 
273 
274 -- Start of comments
275 --    API name   : Load_Components
276 --    Type       : Private.
277 --    Function   : Given a model item id, retrieve all the component item ids of
278 --                 this model item.
279 --    Pre-reqs   : None.
280 --    Parameters :
281 --    IN         : p_api_version        IN  NUMBER   Required
282 --                 p_init_msg_list      IN  VARCHAR2 Optional
283 --                                          Default = FND_API.G_FALSE
284 --                 p_validation_level   IN  NUMBER   Optional
285 --                                          Default = FND_API.G_VALID_LEVEL_FULL
286 --
287 --                 p_model_id           IN NUMBER Required
288 --                 p_organization_id    IN NUMBER Required
289 --
290 --    OUT        : x_return_status      OUT NOCOPY VARCHAR2(1)
291 --                 x_msg_count          OUT NOCOPY NUMBER
292 --                 x_msg_data           OUT NOCOPY VARCHAR2(2000)
293 --                 x_item_csr           OUT NOCOPY IBE_CCTBOM_REF_CSR_TYPE
294 --                 Record type = IBE_BOM_EXPLOSION_REC
295 --
296 --
297 --
298 --
299 --    Version    : Current version 1.0
300 --
301 --
302 --                 previous version     None
303 --
304 --                 Initial version      1.0
305 --
306 --    Notes      : Note text
307 --
308 -- End of comments
309 
310   procedure Load_Components
311           (p_api_version             IN  NUMBER,
312            p_init_msg_list           IN  VARCHAR2 := FND_API.G_FALSE,
313            p_validation_level        IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
314            x_return_status           OUT NOCOPY VARCHAR2,
315            x_msg_count               OUT NOCOPY NUMBER,
316            x_msg_data                OUT NOCOPY VARCHAR2,
317            p_model_id                IN  NUMBER,
318            p_organization_id         IN  NUMBER ,
319            x_item_csr                OUT NOCOPY IBE_CCTBOM_REF_CSR_TYPE) IS
320 
321     l_api_name          CONSTANT VARCHAR2(30) := 'Load_Components';
322     l_api_version       CONSTANT NUMBER       := 1.0;
323 
324     l_explosion_date            DATE := sysdate;
325     l_error_code                NUMBER;
326     l_return_status             VARCHAR2(1);
327     l_msg_count                 NUMBER;
328     l_msg_data                  VARCHAR2(2000);
329 
330  BEGIN
331    --dbms_output.put_line('INSIDE LOAD COMPONENTS');
332    --gzhang 08/08/2002, bug#2488246
333    --ibe_util.enable_debug;
334    --  standard call to check for call compatibility
335    l_return_status := FND_API.G_RET_STS_SUCCESS;
336    IF NOT FND_API.Compatible_API_Call (l_api_version,
337                            p_api_version,
338                            l_api_name,
339                            G_PKG_NAME   )
340    THEN
341       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
342    END IF;
343 
344    -- initialize message list if p_init_msg_list is set to TRUE
345    IF FND_API.to_Boolean(p_init_msg_list) THEN
346      FND_MSG_PUB.initialize;
347    END IF;
348 
349    -- initialize API return status to success
350    x_return_status := FND_API.G_RET_STS_SUCCESS;
351 
352    IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
353    IBE_UTIL.debug(G_PKG_NAME||'.Load_Components');
354    -- begin API body
355    -- Call BOM Explosion API
356    IBE_UTIL.debug(G_PKG_NAME||'.Load_Components: Calling BOMPNORD.Bmxporder_Explode_For_Order()');
357    IBE_UTIL.debug(G_PKG_NAME||'.Load_Components: BEFORE EXPLODE in LOAD');
358    END IF;
359 
360    Explode(p_validation_org => p_organization_id,
361           p_levels         => 6, --??
362           p_stdcompflag    => 'ALL',
363           p_top_item_id    => p_model_id,
364           p_revdate        => l_explosion_date,
365           x_msg_data       => l_msg_data,
366           x_error_code     => l_error_code,
367           x_return_status  => l_return_status);
368   IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
369   IBE_UTIL.debug(G_PKG_NAME||'.Load_Components: AFTER Explode reture status = '||l_return_status); --gzhang 05/24/2002 typo error
370   END IF;
371 
372   IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
373         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
374   ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
375         RAISE FND_API.G_EXC_ERROR;
376   END IF;
377 
378   OPEN x_item_csr FOR
379   SELECT COMPONENT_ITEM_ID,
380          PLAN_LEVEL,
381          OPTIONAL,
382          PARENT_BOM_ITEM_TYPE,
383          BOM_ITEM_TYPE,
384          PRIMARY_UOM_CODE,
385          COMPONENT_QUANTITY,
386          COMPONENT_CODE
387   FROM   BOM_EXPLOSIONS
388   WHERE  top_bill_sequence_id =
389                (SELECT bill_sequence_id FROM bom_structures_b
390                 WHERE assembly_item_id = p_model_id
391                   AND organization_id = p_organization_id
392                   AND alternate_bom_designator IS NULL)
393   AND    ORGANIZATION_ID = p_organization_id  --gzhang 01/16/2003, bug#2750492
394   AND    EXPLOSION_TYPE = 'ALL'
395   AND    PARENT_BOM_ITEM_TYPE < 3
396   AND    COMPONENT_ITEM_ID <> TOP_ITEM_ID
397   --AND    OPTIONAL = 2
398   AND    DISABLE_DATE >= sysdate;
399 
400    -- end API body
401    --dbms_output.put_line('After select in load ');
402    IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
403    IBE_UTIL.debug(G_PKG_NAME||'.Load_Components: After select in load');
404    END IF;
405 
406    -- standard call to get message count and if count is 1, get message info.
407    FND_MSG_PUB.Count_And_Get
408      (    p_encoded => FND_API.G_FALSE,
409           p_count => x_msg_count,
410           p_data  => x_msg_data
411         );
412    --gzhang 08/08/2002, bug#2488246
413    --ibe_util.disable_debug;
414    EXCEPTION
415       WHEN FND_API.G_EXC_ERROR THEN
416      x_return_status := FND_API.G_RET_STS_ERROR;
417      FND_MSG_PUB.Count_And_Get
418           (    p_encoded => FND_API.G_FALSE,
419                p_count => x_msg_count,
420                p_data  => x_msg_data
421                 );
422         --gzhang 08/08/2002, bug#2488246
423         --ibe_util.disable_debug;
424       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
425      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
426      FND_MSG_PUB.Count_And_Get
427           (    p_encoded => FND_API.G_FALSE,
428                p_count => x_msg_count,
429                p_data  => x_msg_data
430                 );
431         --gzhang 08/08/2002, bug#2488246
432         --ibe_util.disable_debug;
433       WHEN OTHERS THEN
434      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
435         FND_MESSAGE.Set_Name('FND', 'SQL_PLSQL_ERROR');
436           FND_MESSAGE.Set_Token('ROUTINE', l_api_name);
437           FND_MESSAGE.Set_Token('ERRNO', SQLCODE);
438           FND_MESSAGE.Set_Token('REASON', SQLERRM);
439           FND_MSG_PUB.Add;
440      IF   FND_MSG_PUB.Check_Msg_Level
441           (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
442      THEN FND_MSG_PUB.Add_Exc_Msg
443                (    G_PKG_NAME,
444                     l_api_name
445                );
446      END IF;
447      FND_MSG_PUB.Count_And_Get
448           (    p_encoded => FND_API.G_FALSE,
449                p_count => x_msg_count,
450                p_data  => x_msg_data
451           );
452         --gzhang 08/08/2002, bug#2488246
453         --ibe_util.disable_debug;
454 END Load_Components;
455 
456 /*----------------------------------------------------------------------
457 Procedure Name : Explode
458 Description    :
459 -----------------------------------------------------------------------*/
460 Procedure Explode
461 ( p_validation_org IN  NUMBER
462 , p_group_id       IN  NUMBER := NULL
463 , p_session_id     IN  NUMBER := NULL
464 , p_levels         IN  NUMBER := 60
465 , p_stdcompflag    IN  VARCHAR2 := 'ALL'
466 , p_exp_quantity   IN  NUMBER := NULL
467 , p_top_item_id    IN  NUMBER
468 , p_revdate        IN  DATE
469 , p_component_code IN  VARCHAR2 := NULL
470 , x_msg_data       OUT NOCOPY VARCHAR2
471 , x_error_code     OUT NOCOPY NUMBER
472 , x_return_status  OUT NOCOPY VARCHAR2)
473 IS
474   l_group_id   NUMBER; -- bom out param
475 BEGIN
476 
477     IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
478     IBE_UTIL.debug(G_PKG_NAME||'.Explode: Inside EXPLODE before call itemid = '||p_top_item_id);
479     END IF;
480 
481     BOMPNORD.Bmxporder_Explode_For_Order(
482           org_id             => p_validation_org,
483           copy_flag          => 2,
484           expl_type          => p_stdcompflag,
485           order_by           => 2,
486           grp_id             => l_group_id,
487           session_id         => p_session_id,
488           levels_to_explode  => 60,
489           item_id            => p_top_item_id,
490           rev_date           => to_char(p_revdate,'YYYY/MM/DD HH24:MI'),
491           user_id            => 0,
492           commit_flag        => 'Y',
493           err_msg            => x_msg_data,
494           error_code         => x_error_code);
495     IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
496     IBE_UTIL.debug(G_PKG_NAME||'.Explode: Error Msg = '||x_msg_data);
497     IBE_UTIL.debug(G_PKG_NAME||'.Explode: Error_code = '|| x_error_code);
498     IBE_UTIL.debug(G_PKG_NAME||'.Explode: grp_id = '|| l_group_id);
499 
500     IBE_UTIL.debug(G_PKG_NAME||'.Explode: After calling bom Explode api');
501     END IF;
502 
503     IF x_error_code <> 0 THEN
504 	  --dbms_output.put_line('Error in BOM Explosion');
505 	  IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
506 	  IBE_UTIL.debug('Error in BOM Explosion');
507 	  END IF;
508 	  IF x_msg_data is not null THEN
509 	    IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
510         	IBE_UTIL.debug(G_PKG_NAME||'.Explode: BOM msg name= ' || substr(x_msg_data, 1, 250));
511             END IF;
512 
513           -- girish from bom team told err_msg is msg name, track bug 1623728
514           FND_MESSAGE.Set_Name('BOM', x_msg_data);
515 
516           END IF;
517 
518       RAISE FND_API.G_EXC_ERROR;
519     END IF;
520 
521 
522     x_return_status := FND_API.G_RET_STS_SUCCESS;
523     IF (IBE_UTIL.G_DEBUGON = FND_API.G_TRUE) THEN
524     IBE_UTIL.debug(G_PKG_NAME||'.Explode: Exiting Ibe_CctBom_Pvt.Explode');
525     END IF;
526 
527 EXCEPTION
528    WHEN FND_API.G_EXC_ERROR THEN
529        x_return_status := FND_API.G_RET_STS_ERROR;
530 END Explode;
531 
532 end IBE_CCTBOM_PVT;