[Home] [Help]
PACKAGE BODY: APPS.GMI_ITEM_LOT_CONV_PUB
Source
1 PACKAGE BODY GMI_ITEM_LOT_CONV_PUB AS
2 -- $Header: GMIPILCB.pls 115.6 2002/11/04 20:14:17 jdiiorio gmigapib.pls $
3 -- Body start of comments
4 --+==========================================================================+
5 --| Copyright (c) 1998 Oracle Corporation |
6 --| Redwood Shores, CA, USA |
7 --| All rights reserved. |
8 --+==========================================================================+
9 --| FILE NAME |
10 --| GMIPILCB.pls |
11 --| |
12 --| PACKAGE NAME |
13 --| GMI_ITEM_LOT_CONV_PUB |
14 --| |
15 --| DESCRIPTION |
16 --| This package defines all APIs related to Item/Lot/Sublot Uom |
17 --| conversion |
18 --| |
19 --| CONTENTS |
20 --| Create_Item_Lot_Uom_Conv |
21 --| |
22 --| HISTORY |
23 --| 25-FEB-1999 M.Godfrey Upgrade to R11 |
24 --| 20/AUG/99 Bug 951828 Change GMS package Calls to GMA |
25 --| H.Verdding |
26 --| 25-OCT-2002 J. DiIorio Bug#2643440 - nocopy added. |
27 --| |
28 --+==========================================================================+
29 -- Body end of comments
30 -- Global variables
31 G_PKG_NAME CONSTANT VARCHAR2(30):='GMI_ITEM_LOT_CONV_PUB';
32
33 -- Api start of comments
34 --+==========================================================================+
35 --| PROCEDURE NAME |
36 --| Create_Item_Lot_Uom_Conv |
37 --| |
38 --| TYPE |
39 --| Public |
40 --| |
41 --| USAGE |
42 --| Create an Item/Lot/Sublot UoM conversion |
43 --| |
44 --| DESCRIPTION |
45 --| This procedure creates an Item/Lot/Sublot UoM conversion |
46 --| |
47 --| PARAMETERS |
48 --| p_api_version IN NUMBER - API Version |
49 --| p_init_msg_list IN VARCHAR2 - Msg List initialization Ind |
50 --| p_commit IN VARCHAR2 - Commit Indicator |
51 --| p_validation_level IN VARCHAR2 - Validation Level indicator |
52 --| x_return_status OUT NOCOPY VARCHAR2 - return Status |
53 --| x_msg_count OUT NOCOPY NUMBER - Number of Messages returned |
54 --| x_msg_data OUT NOCOPY VARCHAR2 - Messages in encoded format |
55 --| p_item_cnv_rec IN item_cnv_rec_typ - Item Conversion details |
56 --| |
57 --| RETURNS |
58 --| None |
59 --| |
60 --| HISTORY |
61 --| |
62 --+==========================================================================+
63 -- Api end of comments
64 PROCEDURE Create_Item_Lot_Uom_Conv
65 ( p_api_version IN NUMBER
66 , p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE
67 , p_commit IN VARCHAR2 :=FND_API.G_FALSE
68 , p_validation_level IN VARCHAR2 :=FND_API.G_VALID_LEVEL_FULL
69 , p_item_cnv_rec IN item_cnv_rec_typ
70 , x_return_status OUT NOCOPY VARCHAR2
71 , x_msg_count OUT NOCOPY NUMBER
72 , x_msg_data OUT NOCOPY VARCHAR2
73 )
74 IS
75 l_api_name CONSTANT VARCHAR2 (30) :='Create_Item_Lot_Uom_Conv';
76 l_api_version CONSTANT NUMBER :=2.0;
77 l_msg_count NUMBER;
78 l_msg_data VARCHAR2(2000);
79 l_return_status VARCHAR2(1);
80 l_error_code NUMBER;
81 l_factor NUMBER;
82 l_type_factorrev NUMBER;
83 l_ic_item_cnv_rec ic_item_cnv%ROWTYPE;
84 l_ic_item_mst_rec ic_item_mst%ROWTYPE;
85 l_ic_lots_mst_rec ic_lots_mst%ROWTYPE;
86 l_item_cnv_rec item_cnv_rec_typ;
87 l_ic_item_cpg_rec ic_item_cpg%ROWTYPE;
88 l_ic_lots_cpg_rec ic_lots_cpg%ROWTYPE;
89 l_sy_uoms_mst_rec_um1 sy_uoms_mst%ROWTYPE;
90 l_sy_uoms_typ_rec_um1 sy_uoms_typ%ROWTYPE;
91 l_sy_uoms_mst_rec_from sy_uoms_mst%ROWTYPE;
92 l_sy_uoms_typ_rec_from sy_uoms_typ%ROWTYPE;
93 l_sy_uoms_mst_rec_to sy_uoms_mst%ROWTYPE;
94 l_sy_uoms_typ_rec_to sy_uoms_typ%ROWTYPE;
95 l_um_type sy_uoms_mst.um_type%TYPE;
96 l_from_um sy_uoms_mst.um_code%TYPE;
97 l_to_um sy_uoms_mst.um_code%TYPE;
98 l_from_std_um sy_uoms_mst.um_code%TYPE;
99 l_to_std_um sy_uoms_mst.um_code%TYPE;
100 l_user_name fnd_user.user_name%TYPE;
101 l_user_id fnd_user.user_id%TYPE;
102
103 BEGIN
104
105 -- Standard Start OF API savepoint
106 SAVEPOINT Create_Item_Lot_Uom_Conv;
107 -- Standard call to check for call compatibility.
108 IF NOT FND_API.Compatible_API_CALL ( l_api_version
109 , p_api_version
110 , l_api_name
111 , G_PKG_NAME
112 )
113 THEN
114 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
115 END IF;
116
117 -- Initialize message list if p_int_msg_list is set TRUE.
118 IF FND_API.to_boolean(p_init_msg_list)
119 THEN
120 FND_MSG_PUB.Initialize;
121 END IF;
122 -- Initialize API return status to sucess
123 x_return_status :=FND_API.G_RET_STS_SUCCESS;
124
125 -- Populate WHO columns
126 l_user_name :=p_item_cnv_rec.user_name;
127 GMA_GLOBAL_GRP.Get_who( p_user_name => l_user_name
128 , x_user_id => l_user_id
129 );
130
131 IF l_user_id = 0
132 THEN
133 FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_USER_NAME');
134 FND_MESSAGE.SET_TOKEN('USER_NAME',l_user_name);
135 FND_MSG_PUB.Add;
136 RAISE FND_API.G_EXC_ERROR;
137 END IF;
138
139 -- Ensure Upper-case columns are converted
140
141 l_item_cnv_rec :=p_item_cnv_rec;
142 l_item_cnv_rec.to_uom :=l_item_cnv_rec.to_uom;
143 l_item_cnv_rec.from_uom :=l_item_cnv_rec.from_uom;
144
145 -- Get the item details ensuring that the item is active and not deleted
146
147 GMI_GLOBAL_GRP.Get_Item ( p_item_no => l_item_cnv_rec.item_no
148 , x_ic_item_mst => l_ic_item_mst_rec
149 , x_ic_item_cpg => l_ic_item_cpg_rec
150 );
151
152 IF (l_ic_item_mst_rec.item_id < 0)
153 THEN
154 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
155 ELSIF (l_ic_item_mst_rec.item_id = 0) OR
156 (l_ic_item_mst_rec.delete_mark = 1)
157 THEN
158 FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_ITEM_NO');
159 FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_cnv_rec.item_no);
160 FND_MSG_PUB.Add;
161 RAISE FND_API.G_EXC_ERROR;
162 ELSIF (l_ic_item_mst_rec.noninv_ind = 1)
163 THEN
164 FND_MESSAGE.SET_NAME('GMI','IC_API_NONINV_ITEM_NO');
165 FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_cnv_rec.item_no);
166 FND_MSG_PUB.Add;
167 RAISE FND_API.G_EXC_ERROR;
168 ELSIF (l_ic_item_mst_rec.inactive_ind = 1)
169 THEN
170 FND_MESSAGE.SET_NAME('GMI','IC_API_INACTIVE_ITEM_NO');
171 FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_cnv_rec.item_no);
172 FND_MSG_PUB.Add;
173 -- x_return_status :=FND_API.G_RET_STS_ERROR;
174 -- RAISE FND_API.G_EXC_ERROR;
175 END IF;
176
177 -- If blank or null lot_no then get default lot
178
179 IF (l_item_cnv_rec.lot_no = ' ' OR l_item_cnv_rec.lot_no IS NULL)
180 THEN
181 l_item_cnv_rec.lot_no :=FND_PROFILE.Value_Specific
182 ( name => 'IC$DEFAULT_LOT'
183 , user_id => l_user_id
184 );
185 IF (l_item_cnv_rec.lot_no IS NULL)
186 THEN
187 FND_MESSAGE.SET_NAME('GMI','IC_API_UNABLE_TO_GET_CONSTANT');
188 FND_MESSAGE.SET_TOKEN('CONSTANT_NAME','IC$DEFAULT_LOT');
189 FND_MSG_PUB.Add;
190 RAISE FND_API.G_EXC_ERROR;
191 END IF;
192 END IF;
193
194
195 -- Get the lot details ensuring that the lot is not deleted.
196 -- This may be the default lot for the item.
197
198
199 GMI_GLOBAL_GRP.Get_Lot ( p_item_id => l_ic_item_mst_rec.item_id
200 , p_lot_no => l_item_cnv_rec.lot_no
201 , p_sublot_no => l_item_cnv_rec.sublot_no
202 , x_ic_lots_mst => l_ic_lots_mst_rec
203 , x_ic_lots_cpg => l_ic_lots_cpg_rec
204 );
205
206 IF (l_ic_lots_mst_rec.lot_id = -1) OR
207 (l_ic_lots_mst_rec.delete_mark = 1) OR
208 (l_ic_lots_mst_rec.inactive_ind = 1)
209 THEN
210 FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_NO');
211 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
212 FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
213 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
214 FND_MSG_PUB.Add;
215 RAISE FND_API.G_EXC_ERROR;
216 END IF;
217
218 -- Get UOM details of the from Unit of Measure
219
220
221 GMI_GLOBAL_GRP.Get_Um ( p_um_code => l_item_cnv_rec.from_uom
222 , x_sy_uoms_mst => l_sy_uoms_mst_rec_from
223 , x_sy_uoms_typ => l_sy_uoms_typ_rec_from
224 , x_error_code => l_error_code
225 );
226
227 IF (l_error_code = -1)
228 THEN
229 FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_UOM');
230 FND_MESSAGE.SET_TOKEN('UOM', l_item_cnv_rec.from_uom);
231 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
232 FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
233 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
234 FND_MSG_PUB.Add;
235 RAISE FND_API.G_EXC_ERROR;
236 ELSIF (l_error_code = -2)
237 THEN
238 FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_UOM_TYPE');
239 FND_MESSAGE.SET_TOKEN('UOM', l_item_cnv_rec.from_uom);
240 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
241 FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
242 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
243 FND_MSG_PUB.Add;
244 RAISE FND_API.G_EXC_ERROR;
245 END IF;
246
247 -- Get UOM details of the to Unit of Measure
248
249 GMI_GLOBAL_GRP.Get_Um ( p_um_code => l_item_cnv_rec.to_uom
250 , x_sy_uoms_mst => l_sy_uoms_mst_rec_to
251 , x_sy_uoms_typ => l_sy_uoms_typ_rec_to
252 , x_error_code => l_error_code
253 );
254
255 IF (l_error_code = -1)
256 THEN
257 FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_UOM');
258 FND_MESSAGE.SET_TOKEN('UOM', l_item_cnv_rec.to_uom);
259 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
260 FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
261 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
262 FND_MSG_PUB.Add;
263 RAISE FND_API.G_EXC_ERROR;
264 ELSIF (l_error_code = -2)
265 THEN
266 FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_UOM_TYPE');
267 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
268 FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
269 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
270 FND_MESSAGE.SET_TOKEN('UOM', l_item_cnv_rec.to_uom);
271 FND_MSG_PUB.Add;
272 RAISE FND_API.G_EXC_ERROR;
273 END IF;
274
275 -- Check that the from UoM type differs from the to UoM type. If not then
276 -- error and exit
277 IF l_sy_uoms_typ_rec_from.um_type = l_sy_uoms_typ_rec_to.um_type
278 THEN
279 FND_MESSAGE.SET_NAME('GMI','IC_API_LOT_ITEM_UOM_MISMATCH');
280 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
281 FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
282 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
283 FND_MSG_PUB.Add;
284 RAISE FND_API.G_EXC_ERROR;
285 END IF;
286
287 -- Get UOM details of the item primary Unit of Measure
288 -- This should not produce any errors but we'll check for them anyway.
289
290 GMI_GLOBAL_GRP.Get_Um ( p_um_code => l_ic_item_mst_rec.item_um
291 , x_sy_uoms_mst => l_sy_uoms_mst_rec_um1
292 , x_sy_uoms_typ => l_sy_uoms_typ_rec_um1
293 , x_error_code => l_error_code
294 );
295
296 IF (l_error_code = -1)
297 THEN
298 FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_UOM');
299 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
300 FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
301 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
302 FND_MESSAGE.SET_TOKEN('UOM', l_ic_item_mst_rec.item_um);
303 FND_MSG_PUB.Add;
304 RAISE FND_API.G_EXC_ERROR;
305 ELSIF (l_error_code = -2)
306 THEN
307 FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_UOM_TYPE');
308 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
309 FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
310 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
311 FND_MESSAGE.SET_TOKEN('UOM', l_ic_item_mst_rec.item_um);
312 FND_MSG_PUB.Add;
313 RAISE FND_API.G_EXC_ERROR;
314 END IF;
315
316 -- Check that the unit of measure type of the from_uom or the to_uom
317 -- is the same as the unit of measure type of the item primary uom.
318 -- Adjust conversion factor as appropriate.
319
320 IF (l_sy_uoms_typ_rec_um1.std_um = l_sy_uoms_typ_rec_from.std_um)
321 THEN
322 l_factor := 1 / l_item_cnv_rec.type_factor;
323 l_um_type := l_sy_uoms_mst_rec_to.um_type;
324 l_from_um := l_item_cnv_rec.from_uom;
325 l_from_std_um := l_sy_uoms_typ_rec_from.std_um;
326 l_to_um := l_item_cnv_rec.to_uom;
327 l_to_std_um := l_sy_uoms_typ_rec_to.std_um;
328 ELSIF (l_sy_uoms_typ_rec_um1.std_um = l_sy_uoms_typ_rec_to.std_um)
329 THEN
330 l_factor := l_item_cnv_rec.type_factor;
331 l_um_type := l_sy_uoms_mst_rec_from.um_type;
332 l_from_um := l_item_cnv_rec.to_uom;
333 l_from_std_um := l_sy_uoms_typ_rec_to.std_um;
334 l_to_um := l_item_cnv_rec.from_uom;
335 l_to_std_um := l_sy_uoms_typ_rec_from.std_um;
336 ELSE
337 FND_MESSAGE.SET_NAME('GMI','IC_API_LOT_ITEM_UOM_MISMATCH');
338 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
339 FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
340 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
341 FND_MSG_PUB.Add;
342 RAISE FND_API.G_EXC_ERROR;
343 END IF;
344
345 -- Check that item/lot conversion does not already exist
346
347 IF GMI_VALID_GRP.Validate_item_cnv ( l_item_cnv_rec.item_no
348 , l_item_cnv_rec.lot_no
349 , l_item_cnv_rec.sublot_no
350 , l_um_type
351 )
352 THEN
353 FND_MESSAGE.SET_NAME('GMI','IC_API_ITEM_CNV_ALREADY_EXISTS');
354 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
355 FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
356 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
357 FND_MESSAGE.SET_TOKEN('UM_TYPE', l_um_type);
358 FND_MSG_PUB.Add;
359 RAISE FND_API.G_EXC_ERROR;
360 END IF;
361
362 -- Check that conversion factor is positive value
363
364 IF (l_factor <= 0)
365 THEN
366 FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_TYPE_FACTOR');
367 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
368 FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
369 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
370 FND_MSG_PUB.Add;
371 RAISE FND_API.G_EXC_ERROR;
372 END IF;
373
374 -- Now we have all the data required to calculate the conversion
375 -- factor from the standard unit of measure of the unit of measure
376 -- type of the item primary unit of measure to the standard unit
377 -- of measure of the unit of measure type of the from_uom.
378
379 -- First convert from from_uom to std_um for item_um uom type
380 -- if required
381
382 IF (l_from_um <> l_sy_uoms_typ_rec_from.std_um)
383 THEN
384 l_factor := GMICUOM.uom_conversion(pitem_id => l_ic_item_mst_rec.item_id
385 ,plot_id => l_ic_lots_mst_rec.lot_id
386 ,pcur_qty => l_factor
387 ,pcur_uom => l_from_um
388 ,pnew_uom => l_from_std_um
389 ,patomic => 0
390 );
391 IF (l_factor < 0)
392 THEN
393 FND_MESSAGE.SET_NAME('GMI','IC_API_ITEM_LOT_UOM_FAILED');
394 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
395 FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
396 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
397 FND_MESSAGE.SET_TOKEN('UM1', l_from_um);
398 FND_MESSAGE.SET_TOKEN('UM2', l_sy_uoms_typ_rec_from.std_um);
399 FND_MSG_PUB.Add;
400 RAISE FND_API.G_EXC_ERROR;
401 END IF;
402 END IF;
403
404 -- Next convert from to_uom to std_um for to_uom uom type
405 -- if required
406
407 IF (l_item_cnv_rec.to_uom <> l_sy_uoms_typ_rec_to.std_um)
408 THEN
409 l_factor := GMICUOM.uom_conversion(pitem_id => l_ic_item_mst_rec.item_id
410 ,plot_id => l_ic_lots_mst_rec.lot_id
411 ,pcur_qty => l_factor
412 ,pcur_uom => l_to_std_um
413 ,pnew_uom => l_to_um
414 ,patomic => 0
415 );
416 IF (l_factor < 0)
417 THEN
418 FND_MESSAGE.SET_NAME('GMI','IC_API_ITEM_LOT_UOM_FAILED');
419 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
420 FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
421 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
422 FND_MESSAGE.SET_TOKEN('UM1', l_to_um);
423 FND_MESSAGE.SET_TOKEN('UM2', l_sy_uoms_typ_rec_to.std_um);
424 FND_MSG_PUB.Add;
425 RAISE FND_API.G_EXC_ERROR;
426 END IF;
427 END IF;
428
429 -- Now calculate the inverse value of the conversion factor
430
431 l_type_factorrev := 1 / l_factor;
432
433 -- Set up PL/SQL record and insert item/lot conversion into IC_ITEM_CNV
434
435 l_ic_item_cnv_rec.item_id := l_ic_item_mst_rec.item_id;
436 l_ic_item_cnv_rec.lot_id := l_ic_lots_mst_rec.lot_id;
437 l_ic_item_cnv_rec.um_type := l_um_type;
438 l_ic_item_cnv_rec.type_factor := l_factor;
439 l_ic_item_cnv_rec.last_update_date := SYSDATE;
440 l_ic_item_cnv_rec.last_updated_by := l_user_id;
441 l_ic_item_cnv_rec.trans_cnt := 1;
442 l_ic_item_cnv_rec.delete_mark := 0;
443 l_ic_item_cnv_rec.text_code := NULL;
444 l_ic_item_cnv_rec.creation_date := SYSDATE;
445 l_ic_item_cnv_rec.created_by := l_user_id;
446 l_ic_item_cnv_rec.type_factorrev := l_type_factorrev;
447 l_ic_item_cnv_rec.last_update_login :=TO_NUMBER(FND_PROFILE.Value(
448 'LOGIN_ID'));
449
450
451 IF NOT GMI_ITEM_LOT_CONV_PVT.insert_IC_ITEM_CNV(l_ic_item_cnv_rec)
452 THEN
453 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
454 END IF;
455
456 -- END of API Body
457
458 -- Standard Check of p_commit.
459 IF FND_API.to_boolean(p_commit)
460 THEN
461 COMMIT WORK;
462 END IF;
463 -- Success message
464 FND_MESSAGE.SET_NAME('GMI','IC_API_ILC_CREATED');
465 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
466 FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
467 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
468 FND_MESSAGE.SET_TOKEN('UM_TYPE', l_um_type);
469 FND_MSG_PUB.Add;
470 -- Standard Call to get message count and if count is 1,
471 -- get message info.
472 FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
473 , p_data => x_msg_data
474 );
475
476 EXCEPTION
477 WHEN FND_API.G_EXC_ERROR THEN
478 ROLLBACK TO Create_Item_Lot_Uom_Conv;
479 x_return_status := FND_API.G_RET_STS_ERROR;
480 FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
481 , p_data => x_msg_data
482 );
483 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
484 ROLLBACK TO Create_Item_Lot_Uom_Conv;
485 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
486 FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
487 , p_data => x_msg_data
488 );
489 WHEN OTHERS THEN
490 ROLLBACK TO Create_Item_Lot_Uom_Conv;
491 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
492 -- IF FND_MSG_PUB.check_msg_level
493 -- (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
494 -- THEN
495
496 FND_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME
497 , l_api_name
498 );
499 -- END IF;
500 FND_MSG_PUB.Count_AND_GET ( p_count => x_msg_count
501 , p_data => x_msg_data
502 );
503 END Create_Item_Lot_Uom_Conv;
504
505 -- END of API Body
506 END GMI_ITEM_LOT_CONV_PUB;