[Home] [Help]
PACKAGE BODY: APPS.GMIGAPI
Source
1 PACKAGE BODY GMIGAPI AS
2 /* $Header: GMIGAPIB.pls 115.23 2004/03/15 20:07:41 jsrivast ship $ */
3
4 /* Global variables */
5 G_PKG_NAME CONSTANT VARCHAR2(30):='GMIGAPI';
6
7 /* +==========================================================================+
8 | PROCEDURE NAME |
9 | Create_Item |
10 | |
11 | TYPE |
12 | Public |
13 | |
14 | USAGE |
15 | Create a new Item. |
16 | |
17 | DESCRIPTION |
18 | This procedure creates a new item using the raw data supplied |
19 | |
20 | PARAMETERS |
21 | p_api_version IN NUMBER - Api Version |
22 | p_init_msg_list IN VARCHAR2 - Message Initialization Ind. |
23 | p_commit IN VARCHAR2 - Commit Indicator |
24 | p_validation_level IN VARCHAR2 - Validation Level Indicator |
25 | p_item_rec IN item_rec_typ - Item details |
26 | x_ic_item_mst_row OUT ic_item_mst%ROWTYPE - The ic_item_mst row |
27 | x_ic_item_cpg_row OUT ic_item_cpg%ROWTYPE - The ic_item_cpg row |
28 | x_return_status OUT VARCHAR2 - Return Status |
29 | x_msg_count OUT NUMBER - Number of messages |
30 | x_msg_data OUT VARCHAR2 - Messages in encoded format |
31 | |
32 | RETURNS |
33 | Via x_ OUT parameters |
34 | |
35 | HISTORY |
36 | 13-May-00 P.J.Schofield Major restructuring for performance reasons |
37 | B1294915. |
38 | 18-Oct-02 A. Cataldo - Bug 2513463 - Need to handle problems with |
39 | ic_item_mst_insert and Create_Lot if they occur |
40 +==========================================================================+
41 */
42
43 PROCEDURE Create_Item
44 ( p_api_version IN NUMBER
45 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
46 , p_commit IN VARCHAR2 := FND_API.G_FALSE
47 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
48 , p_item_rec IN GMIGAPI.item_rec_typ
49 , x_ic_item_mst_row OUT NOCOPY ic_item_mst%ROWTYPE
50 , x_ic_item_cpg_row OUT NOCOPY ic_item_cpg%ROWTYPE
51 , x_return_status OUT NOCOPY VARCHAR2
52 , x_msg_count OUT NOCOPY NUMBER
53 , x_msg_data OUT NOCOPY VARCHAR2
54 )
55 IS
56 l_api_name VARCHAR2(30) := 'G_Create_Item';
57 l_lot_rec GMIGAPI.lot_rec_typ;
58 l_return_status NUMBER;
59 l_ic_lots_mst_row ic_lots_mst%ROWTYPE;
60 l_ic_lots_cpg_row ic_lots_cpg%ROWTYPE;
61 BEGIN
62
63 /* Standard call to check for call compatibility. */
64
65 IF NOT FND_API.Compatible_API_CALL
66 (GMIGUTL.api_version, p_api_version, l_api_name, G_PKG_NAME)
67 THEN
68 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
69 END IF;
70
71 /* Initialize message list if p_int_msg_list is set TRUE. */
72 IF FND_API.to_boolean(p_init_msg_list)
73 THEN
74 FND_MSG_PUB.Initialize;
75 END IF;
76
77 x_return_status :=FND_API.G_RET_STS_SUCCESS;
78
79 GMIVITM.Validate_Item
80 ( p_api_version => p_api_version
81 , p_validation_level => p_validation_level
82 , p_item_rec => p_item_rec
83 , x_ic_item_mst_row => x_ic_item_mst_row
84 , x_ic_item_cpg_row => x_ic_item_cpg_row
85 , x_return_status => x_return_status
86 , x_msg_count => x_msg_count
87 , x_msg_data => x_msg_data
88 );
89
90 SAVEPOINT Create_Item;
91
92 IF x_return_status = FND_API.G_RET_STS_SUCCESS
93 THEN
94 /* If no errors were found then proceed with the database inserts */
95 IF GMIVDBL.ic_item_mst_insert(x_ic_item_mst_row, x_ic_item_mst_row)
96 THEN
97 -- TKW 9/11/2003 B2378017
98 -- Moved call to gmi_item_categories from ic_item_mst_insert to here.
99 -- It is now called with new signature.
100 GMIVDBL.gmi_item_categories(p_item_rec, x_ic_item_mst_row);
101
102 -- Jatinder - B3158806 - removed the check for the CPG install and
103 -- added check for lot_ctl instead
104 IF x_ic_item_mst_row.lot_ctl = 1
105 THEN
106 /* ic_item_mst created OK. Copy the allocated item_id. */
107 x_ic_item_cpg_row.item_id := x_ic_item_mst_row.item_id;
108 IF GMIVDBL.ic_item_cpg_insert(x_ic_item_cpg_row, x_ic_item_cpg_row)
109 THEN
110 NULL;
111 ELSE
112 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
113 END IF;
114 END IF;
115
116 /* Item Master row(s) created ok, so now we must create */
117 /* the Lot Master row(s). Set up the input lot record */
118 /* and call the gmigapi.create_lot procedure with the validation level */
119 /* set to NONE. This will bypass the validation in the procedure, but */
120 /* still set up the row(s) ready for insertion into the database. */
121
122 l_lot_rec.lot_no := GMIGUTL.IC$DEFAULT_LOT;
123
124 Create_Lot ( p_api_version => p_api_version
125 , p_init_msg_list => FND_API.G_FALSE
126 , p_commit => FND_API.G_FALSE
127 , p_validation_level=> FND_API.G_VALID_LEVEL_NONE
128 , p_lot_rec => l_lot_rec
129 , p_ic_item_mst_row => x_ic_item_mst_row
130 , p_ic_item_cpg_row => x_ic_item_cpg_row
131 , x_ic_lots_mst_row => l_ic_lots_mst_row
132 , x_ic_lots_cpg_row => l_ic_lots_cpg_row
133 , x_return_status => x_return_status
134 , x_msg_count => x_msg_count
135 , x_msg_data => x_msg_data
136 );
137
138 IF x_return_status = FND_API.G_RET_STS_SUCCESS
139 THEN
140 FND_MESSAGE.SET_NAME('GMI','IC_API_ITEM_CREATED');
141 FND_MESSAGE.SET_TOKEN('ITEM_NO', l_lot_rec.item_no);
142 FND_MSG_PUB.Add;
143
144 IF FND_API.to_boolean(p_commit)
145 THEN
146 COMMIT;
147 END IF;
148 ELSE /* Bug 2513463 - Handle possbile errors with Create_Lot */
149 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
150 END IF;
151 ELSE /* Bug 2513463 - Handle possbile errors with ic_item_insert */
152 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
153 END IF;
154 ELSE
155 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
156 END IF;
157
158 FND_MSG_PUB.Count_AND_GET
159 (p_count => x_msg_count, p_data => x_msg_data);
160
161 IF x_return_status <> FND_API.G_RET_STS_SUCCESS
162 THEN
163 ROLLBACK TO Create_Item;
164 END IF;
165
166 EXCEPTION
167 WHEN OTHERS THEN
168 ROLLBACK TO Create_Item;
169 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
170
171 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
172 FND_MSG_PUB.Count_AND_GET
173 (p_count => x_msg_count, p_data => x_msg_data);
174 END Create_Item;
175
176
177 /* +==========================================================================+
178 | PROCEDURE NAME |
179 | Create_Lot |
180 | |
181 | TYPE |
182 | Group |
183 | |
184 | USAGE |
185 | Create a new Inventory Lot. |
186 | |
187 | DESCRIPTION |
188 | This procedure creates a new inventory Lot using the raw data and |
189 | datbase rows passed in. |
190 | |
191 | PARAMETERS |
192 | p_api_version IN NUMBER - Api Version |
193 | p_init_msg_list IN VARCHAR2 - Message Initialization Ind. |
194 | p_commit IN VARCHAR2 - Commit Indicator |
195 | p_validation_level IN VARCHAR2 - Validation Level Indicator |
196 | p_lot_rec IN lot_rec_typ - Lot Master details |
197 | x_return_status OUT VARCHAR2 - Return Status |
198 | x_msg_count OUT NUMBER - Number of messages |
199 | x_msg_data OUT VARCHAR2 - Messages in encoded format |
200 | |
201 | RETURNS |
202 | None |
203 | |
204 | HISTORY |
205 | 13-May-00 P.J.Schofield Major restructuring for performance reasons |
206 | B1294915. |
207 +==========================================================================+
208 */
209
210 PROCEDURE Create_Lot
211 ( p_api_version IN NUMBER
212 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
213 , p_commit IN VARCHAR2 := FND_API.G_FALSE
214 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
215 , p_lot_rec IN lot_rec_typ
216 , p_ic_item_mst_row IN ic_item_mst%ROWTYPE
217 , p_ic_item_cpg_row IN ic_item_cpg%ROWTYPE
218 , x_ic_lots_mst_row OUT NOCOPY ic_lots_mst%ROWTYPE
219 , x_ic_lots_cpg_row OUT NOCOPY ic_lots_cpg%ROWTYPE
220 , x_return_status OUT NOCOPY VARCHAR2
221 , x_msg_count OUT NOCOPY NUMBER
222 , x_msg_data OUT NOCOPY VARCHAR2
223 )
224 IS
225 l_api_name VARCHAR2(30) := 'G_Create_Lot';
226 BEGIN
227
228 /* Standard call to check for call compatibility. */
229
230 IF NOT FND_API.Compatible_API_CALL
231 (GMIGUTL.api_version, p_api_version, l_api_name, G_PKG_NAME)
232 THEN
233 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
234 END IF;
235
236 /* Initialize message list if p_int_msg_list is set TRUE. */
237 IF FND_API.to_boolean(p_init_msg_list)
238 THEN
239 FND_MSG_PUB.Initialize;
240 END IF;
241
242 x_return_status :=FND_API.G_RET_STS_SUCCESS;
243
244 GMIVLOT.Validate_Lot
245 ( p_api_version => p_api_version
246 , p_validation_level => p_validation_level
247 , p_lot_rec => p_lot_rec
248 , p_ic_item_mst_row => p_ic_item_mst_row
249 , p_ic_item_cpg_row => p_ic_item_cpg_row
250 , x_ic_lots_mst_row => x_ic_lots_mst_row
251 , x_ic_lots_cpg_row => x_ic_lots_cpg_row
252 , x_return_status => x_return_status
253 , x_msg_count => x_msg_count
254 , x_msg_data => x_msg_data
255 );
256
257 SAVEPOINT Create_Lot;
258 IF x_return_status = FND_API.G_RET_STS_SUCCESS
259 THEN
260 /* If no errors were found then proceed with the database inserts */
261
262 IF GMIVDBL.ic_lots_mst_insert(x_ic_lots_mst_row, x_ic_lots_mst_row)
263 THEN
264 -- Jatinder - B3158806 - Removed SY$CPG_INSTALL check
265 x_ic_lots_cpg_row.lot_id := x_ic_lots_mst_row.lot_id;
266 IF GMIVDBL.ic_lots_cpg_insert(x_ic_lots_cpg_row, x_ic_lots_cpg_row)
267 THEN
268 NULL;
269 ELSE
270 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
271 END IF;
272
273 FND_MESSAGE.SET_NAME('GMI','IC_API_LOT_CREATED');
274 FND_MESSAGE.SET_TOKEN('ITEM_NO', p_lot_rec.item_no);
275 FND_MESSAGE.SET_TOKEN('LOT_NO', p_lot_rec.lot_no);
276 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', p_lot_rec.sublot_no);
277 FND_MSG_PUB.Add;
278
279 IF FND_API.to_boolean(p_commit)
280 THEN
281 COMMIT WORK;
282 END IF;
283 ELSE
284 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
285 END IF;
286 --Jalaj Srivastava Bug 2485879
287 --Added else for assigning return status
288 ELSE
289 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
290 END IF;
291
292 FND_MSG_PUB.Count_AND_GET
293 (p_count => x_msg_count, p_data => x_msg_data);
294
295 IF x_return_status <> FND_API.G_RET_STS_SUCCESS
296 THEN
297 ROLLBACK TO Create_Lot;
298 END IF;
299
300 EXCEPTION
301 WHEN OTHERS THEN
302 ROLLBACK TO Create_Lot;
303 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
304
305 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
306 FND_MSG_PUB.Count_AND_GET
307 (p_count => x_msg_count, p_data => x_msg_data);
308 END Create_Lot;
309
310
311
312 /* +==========================================================================+
313 | PROCEDURE NAME |
314 | Create_Item_lot_Conv |
315 | |
316 | TYPE |
317 | Group |
318 | |
319 | USAGE |
320 | Create a new Item/Lot/Sublot conversion using the data and database |
321 | rows supplied |
322 | |
323 | PARAMETERS |
324 | p_api_version IN NUMBER - Api Version |
325 | p_init_msg_list IN VARCHAR2 - Message Initialization Ind. |
326 | p_commit IN VARCHAR2 - Commit Indicator |
327 | p_validation_level IN VARCHAR2 - Validation Level Indicator |
328 | p_conv_rec IN GMIGAPI.lot_rec_typ - Conversion details |
329 | x_ic_item_cnv_row OUT ic_item_cnv%ROWTYPE |
330 | x_return_status OUT VARCHAR2 - Return Status |
331 | x_msg_count OUT NUMBER - Number of messages |
332 | x_msg_data OUT VARCHAR2 - Messages in encoded format |
333 | |
334 | RETURNS |
335 | Via x_ OUT parameters |
336 | |
337 | HISTORY |
338 | 13-May-00 P.J.Schofield Major restructuring for performance reasons |
339 | B1294915. |
340 | |
341 | 17-Apr-2001 A. Mundhe Bug 1741321- Added code so that uom type is |
342 | displayed in the success message. |
343 | |
344 | 02-May-2001 A. Mundhe Bug 1741321- Display message if conversion |
345 | already exists. |
346 +==========================================================================+
347 */
348 PROCEDURE Create_Item_Lot_Conv
349 ( p_api_version IN NUMBER
350 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
351 , p_commit IN VARCHAR2 := FND_API.G_FALSE
352 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
353 , p_conv_rec IN GMIGAPI.conv_rec_typ
354 , p_ic_item_mst_row IN ic_item_mst%ROWTYPE
355 , p_ic_lots_mst_row IN ic_lots_mst%ROWTYPE
356 , x_ic_item_cnv_row OUT NOCOPY ic_item_cnv%ROWTYPE
357 , x_return_status OUT NOCOPY VARCHAR2
358 , x_msg_count OUT NOCOPY NUMBER
359 , x_msg_data OUT NOCOPY VARCHAR2
360 )
361 IS
362 l_api_name VARCHAR2(30) := 'G_Create_Conv';
363 BEGIN
364
365 /* Standard call to check for call compatibility. */
366
367 IF NOT FND_API.Compatible_API_CALL
368 (GMIGUTL.api_version, p_api_version, l_api_name, G_PKG_NAME)
369 THEN
370 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
371 END IF;
372
373 /* Initialize message list if p_int_msg_list is set TRUE. */
374 IF FND_API.to_boolean(p_init_msg_list)
375 THEN
376 FND_MSG_PUB.Initialize;
377 END IF;
378
379 x_return_status :=FND_API.G_RET_STS_SUCCESS;
380
381 GMIVILC.Validate_Lot_Conversion
382 ( p_api_version => p_api_version
383 , p_validation_level => p_validation_level
384 , p_item_cnv_rec => p_conv_rec
385 , p_ic_item_mst_row => p_ic_item_mst_row
386 , p_ic_lots_mst_row => p_ic_lots_mst_row
387 , x_ic_item_cnv_row => x_ic_item_cnv_row
388 , x_return_status => x_return_status
389 , x_msg_count => x_msg_count
390 , x_msg_data => x_msg_data
391 );
392
393 SAVEPOINT Create_Conv;
394 IF x_return_status = FND_API.G_RET_STS_SUCCESS
395 THEN
396 /* If no errors were found then proceed with the database insert */
397 /* Bug 1741321 */
398 /* Set token for uom type to be displayed in the success message */
399 IF GMIVDBL.ic_item_cnv_insert(x_ic_item_cnv_row, x_ic_item_cnv_row)
400 THEN
401
402 FND_MESSAGE.SET_NAME('GMI','IC_API_ILC_CREATED');
403 FND_MESSAGE.SET_TOKEN('ITEM_NO', p_conv_rec.item_no);
404 FND_MESSAGE.SET_TOKEN('LOT_NO', p_conv_rec.lot_no);
405 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', p_conv_rec.sublot_no);
406 FND_MESSAGE.SET_TOKEN('UM_TYPE', x_ic_item_cnv_row.um_type);
407 FND_MSG_PUB.Add;
408
409 IF FND_API.to_boolean(p_commit)
410 THEN
411 COMMIT WORK;
412 END IF;
413 /* Bug 1741321 */
414 /* Display message if conversion already exists. */
415 ELSE
416 IF GMIGUTL.DB_ERRNUM = -1
417 THEN
418 FND_MESSAGE.SET_NAME('GMI','IC_API_ITEM_CNV_ALREADY_EXISTS');
419 FND_MESSAGE.SET_TOKEN('ITEM_NO', p_conv_rec.item_no);
420 FND_MESSAGE.SET_TOKEN('LOT_NO', p_conv_rec.lot_no);
421 FND_MESSAGE.SET_TOKEN('SUBLOT_NO', p_conv_rec.sublot_no);
422 FND_MESSAGE.SET_TOKEN('UM_TYPE', x_ic_item_cnv_row.um_type);
423 FND_MSG_PUB.Add;
424 ELSE
425 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
426 END IF;
427 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
428 END IF;
429 END IF;
430
431 FND_MSG_PUB.Count_AND_GET
432 (p_count => x_msg_count, p_data => x_msg_data);
433
434 IF x_return_status <> FND_API.G_RET_STS_SUCCESS
435 THEN
436 ROLLBACK TO Create_Conv;
437 END IF;
438
439 EXCEPTION
440 WHEN OTHERS THEN
441 ROLLBACK TO Create_Conv;
442 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
443
444 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
445 FND_MSG_PUB.Count_AND_GET
446 (p_count => x_msg_count, p_data => x_msg_data);
447 END Create_Item_lot_Conv;
448
449
450 /* +==========================================================================+
451 | PROCEDURE NAME |
452 | Inventory_posting |
453 | |
454 | TYPE |
455 | Group |
456 | |
457 | USAGE |
458 | Sets up and posts and inventory journal from raw data and database |
459 | rows supplied. |
460 | |
461 | PARAMETERS |
462 | p_api_version IN NUMBER - Api Version |
463 | p_init_msg_list IN VARCHAR2 - Message Initialization Ind. |
464 | p_commit IN VARCHAR2 - Commit Indicator |
465 | p_validation_level IN VARCHAR2 - Validation Level Indicator |
466 | p_qty_rec IN GMIGAPI.qty_rec_typ - Quantity details |
467 | p_ic_item_mst_row IN ic_item_mst%ROWTYPE |
468 | p_ic_item_cpg_row IN ic_item_cpg%ROWTYPE |
469 | p_ic_lots_mst_row IN ic_lots_mst%ROWTYPE |
470 | p_ic_lots_cpg_row IN ic_lots_cpg%ROWTYPE |
471 | x_ic_jrnl_mst_row OUT ic_jrnl_mst%ROWTYPE |
472 | x_ic_adjs_jnl_row1 OUT ic_adjs_jnl%ROWTYPE |
473 | x_ic_adjs_jnl_row2 OUT ic_adjs_jnl%ROWTYPE |
474 | x_return_status OUT VARCHAR2 - Return Status |
475 | x_msg_count OUT NUMBER - Number of messages |
476 | x_msg_data OUT VARCHAR2 - Messages in encoded format |
477 | |
478 | RETURNS |
479 | Via x_ OUT parameters |
480 | |
481 | HISTORY |
482 | 13-May-00 P.J.Schofield Major restructuring for performance reasons |
483 | B1294915. |
484 | |
485 | 16/Mar/2001 A. Mundhe Bug 1655794 - Generate the output log file |
486 | with proper messages upon sucessful run of |
487 | the API. |
488 | |
489 | 11/NOV/2001 A. Mundhe Bug 2033879 - Added code so that inventory |
490 | summary is updated correctly for status |
491 | immediate. |
492 | 01/Nov/2001 Ajay Kumar Bug 1834743 - For manual document ordering, |
493 | insert the journal number which is passed |
494 | from the flat file. |
495 | |
496 | 14-Mar-2002 Ajay Kumar BUG#1834743 - Added code to validate the |
497 | journal number entered, when manual document |
498 | ordering is done. |
499 | 07/24/02 Jalaj Srivastava Bug 2483656 |
500 | Modified inventory_posting to let users create |
501 | journals through APIs. |
502 | Backed out fix for bug 2033879 as the correct |
503 | place for the fix would be GMIVTXN package
504 | 'coz the call to APIs from the form does not |
505 | go through this procedure.
506 | 10-Mar-04 Jalaj Srivastava Bug 3282770 |
507 | Move allocations while doing |
508 | a move immediate if all the criterion are satisfied. |
509 +==========================================================================+
510 */
511
512 PROCEDURE Inventory_Posting
513 ( p_api_version IN NUMBER
514 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
515 , p_commit IN VARCHAR2 := FND_API.G_FALSE
516 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
517 , p_qty_rec IN GMIGAPI.qty_rec_typ
518 , p_ic_item_mst_row IN ic_item_mst%ROWTYPE
519 , p_ic_item_cpg_row IN ic_item_cpg%ROWTYPE
520 , p_ic_lots_mst_row IN ic_lots_mst%ROWTYPE
521 , p_ic_lots_cpg_row IN ic_lots_cpg%ROWTYPE
522 , x_ic_jrnl_mst_row OUT NOCOPY ic_jrnl_mst%ROWTYPE
523 , x_ic_adjs_jnl_row1 OUT NOCOPY ic_adjs_jnl%ROWTYPE
524 , x_ic_adjs_jnl_row2 OUT NOCOPY ic_adjs_jnl%ROWTYPE
525 , x_return_status OUT NOCOPY VARCHAR2
526 , x_msg_count OUT NOCOPY NUMBER
527 , x_msg_data OUT NOCOPY VARCHAR2
528 )
529 IS
530 l_ic_lots_mst_row ic_lots_mst%ROWTYPE;
531 l_ic_lots_cpg_row ic_lots_cpg%ROWTYPE;
532 l_lot_rec GMIGAPI.lot_rec_typ;
533 l_tran_row1 ic_tran_cmp%ROWTYPE;
534 l_tran_row2 ic_tran_cmp%ROWTYPE;
535 l_tran_rec GMI_TRANS_ENGINE_PUB.ictran_rec;
536 l_qty_rec GMIGAPI.qty_rec_typ;
537 l_api_name VARCHAR2(30) := 'G_Inventory_Post';
538 l_return_status NUMBER;
539 l_trans_qty NUMBER;
540 l_trans_qty2 NUMBER;
541 x_move_allocations VARCHAR2(1);
542
543 -- BEGIN BUG#1834743 V. Ajay Kumar
544 l_assign_type NUMBER;
545 CURSOR Check_Assignment_Type IS
546 SELECT assignment_type
547 FROM sy_docs_seq
548 WHERE orgn_code = p_qty_rec.orgn_code
549 AND doc_type = 'JRNL';
550 -- END BUG#1834743
551
552 -- BEGIN BUG#1834743 V. Ajay Kumar
553 --Cursor added to fetch the number of records for a journal no.
554 l_record_count NUMBER;
555 CURSOR Check_Record_Count IS
556 SELECT count(*)
557 FROM ic_jrnl_mst
558 WHERE journal_no = l_qty_rec.journal_no
559 AND orgn_code = l_qty_rec.orgn_code;
560 --END BUG#1834743
561
562 Cursor check_journal_no IS
563 SELECT count(1)
564 FROM ic_jrnl_mst j, ic_adjs_jnl a
565 where j.journal_no = l_qty_rec.journal_no
566 AND j.orgn_code = l_qty_rec.orgn_code
567 AND j.delete_mark = 0
568 AND j.posted_ind = 0
569 AND a.orgn_code = j.orgn_code
570 AND a.journal_id = j.journal_id
571 AND a.trans_type = x_ic_adjs_jnl_row1.trans_type;
572
573 CURSOR get_doc_line IS
574 SELECT nvl(max(doc_line),0) + 1
575 FROM ic_adjs_jnl
576 WHERE orgn_code = x_ic_adjs_jnl_row1.orgn_code AND
577 journal_id = x_ic_adjs_jnl_row1.journal_id;
578
579
580 BEGIN
581
582 /* Standard call to check for call compatibility. */
583
584 IF NOT FND_API.Compatible_API_CALL
585 (GMIGUTL.api_version, p_api_version, l_api_name, G_PKG_NAME)
586 THEN
587 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
588 END IF;
589
590 /* Initialize message list if p_int_msg_list is set TRUE. */
591 IF FND_API.to_boolean(p_init_msg_list)
592 THEN
593 FND_MSG_PUB.Initialize;
594 END IF;
595
596 x_return_status :=FND_API.G_RET_STS_SUCCESS;
597 --Jalaj Srivastava Bug 2483656
598 l_qty_rec := p_qty_rec;
599 GMIVQTY.Validate_Inventory_Posting
600 ( p_api_version => p_api_version
601 , p_validation_level => p_validation_level
602 , p_qty_rec => p_qty_rec
603 , p_ic_item_mst_row => p_ic_item_mst_row
604 , p_ic_item_cpg_row => p_ic_item_cpg_row
605 , p_ic_lots_mst_row => p_ic_lots_mst_row
606 , p_ic_lots_cpg_row => p_ic_lots_cpg_row
607 , x_ic_jrnl_mst_row => x_ic_jrnl_mst_row
608 , x_ic_adjs_jnl_row1 => x_ic_adjs_jnl_row1
609 , x_ic_adjs_jnl_row2 => x_ic_adjs_jnl_row2
610 , x_return_status => x_return_status
611 , x_msg_count => x_msg_count
612 , x_msg_data => x_msg_data
613 );
614
615 SAVEPOINT Create_Posting;
616 IF x_return_status = FND_API.G_RET_STS_SUCCESS
617 THEN
618 /* If this is a 'CREI' transaction and the item is lot controlled */
619 /* then we must create the lot first as we'll need the ID in what */
620 /* follows. */
621
622 IF x_ic_adjs_jnl_row1.trans_type IN ('CREI','CRER')
623 THEN
624 IF p_ic_item_mst_row.lot_ctl = 0
625 THEN
626 l_ic_lots_mst_row.lot_id := 0;
627 l_ic_lots_mst_row.lot_no := GMIGUTL.IC$DEFAULT_LOT;
628 x_ic_adjs_jnl_row1.lot_id := l_ic_lots_mst_row.lot_id;
629 ELSE
630 l_lot_rec.lot_no := p_qty_rec.lot_no;
631 IF p_ic_item_mst_row.sublot_ctl = 1
632 THEN
633 l_lot_rec.sublot_no := p_qty_rec.sublot_no;
634 END IF;
635
636 /* Make sure we aren't trying to create a lot which exists already. */
637
638 GMIGUTL.get_lot
639 ( p_ic_item_mst_row.item_id
640 , p_qty_rec.lot_no
641 , p_qty_rec.sublot_no
642 , l_ic_lots_mst_row
643 , l_ic_lots_cpg_row
644 );
645
646 IF l_ic_lots_mst_row.lot_id IS NULL
647 THEN
648 Create_Lot ( p_api_version => p_api_version
649 , p_init_msg_list => FND_API.G_FALSE
650 , p_commit => FND_API.G_FALSE
651 , p_validation_level=> FND_API.G_VALID_LEVEL_FULL
652 , p_lot_rec => l_lot_rec
653 , p_ic_item_mst_row => p_ic_item_mst_row
654 , p_ic_item_cpg_row => p_ic_item_cpg_row
655 , x_ic_lots_mst_row => l_ic_lots_mst_row
656 , x_ic_lots_cpg_row => l_ic_lots_cpg_row
657 , x_return_status => x_return_status
658 , x_msg_count => x_msg_count
659 , x_msg_data => x_msg_data
660 );
661 END IF;
662
663 IF x_return_status = FND_API.G_RET_STS_SUCCESS
664 THEN
665 x_ic_adjs_jnl_row1.lot_id := l_ic_lots_mst_row.lot_id;
666 ELSE
667 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
668 END IF;
669 END IF;
670 ELSE
671 IF p_ic_item_mst_row.lot_ctl = 0
672 THEN
673 l_ic_lots_mst_row.lot_id := 0;
674 l_ic_lots_mst_row.lot_no := GMIGUTL.IC$DEFAULT_LOT;
675 x_ic_adjs_jnl_row1.lot_id := l_ic_lots_mst_row.lot_id;
676 END IF;
677 END IF;
678
679 /* *********************************************************************
680 Jalaj Srivastava Bug 3282770
681 If it is a move immediate, check if moving allocations is
682 required/permitted. It is applicable only for lot controlled items.
683 ********************************************************************* */
684 --{
685 IF ( (p_ic_item_mst_row.lot_ctl = 1)
686 AND ( (p_ic_item_mst_row.status_ctl = 0)
687 OR (fnd_profile.value('IC$MOVEDIFFSTAT') IN (0,2))
688 )
689 AND (x_ic_adjs_jnl_row1.trans_type = 'TRNI')
690 AND (fnd_profile.value('IC$MOVEALLOC') = 1)
691 ) THEN
692
693 GMIALLOC.CHECK_ALLOC_QTY
694 ( p_api_version => 1.0
695 ,p_init_msg_list => fnd_api.g_false
696 ,p_commit => fnd_api.g_false
697 ,p_validation_level => fnd_api.g_valid_level_full
698 ,x_return_status => x_return_status
699 ,x_msg_count => x_msg_count
700 ,x_msg_data => x_msg_data
701 ,pfrom_whse_code => x_ic_adjs_jnl_row1.whse_code
702 ,pfrom_location => nvl(x_ic_adjs_jnl_row1.location,fnd_profile.value('IC$DEFAULT_LOCT'))
703 ,plot_id => x_ic_adjs_jnl_row1.lot_id
704 ,pitem_id => x_ic_adjs_jnl_row1.item_id
705 ,pmove_qty => x_ic_adjs_jnl_row2.qty
706 ,pto_whse_code => x_ic_adjs_jnl_row2.whse_code
707 ,x_move_allocations => x_move_allocations
708 );
709
710 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
711 RAISE FND_API.G_EXC_ERROR;
712 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
713 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
714 END IF;
715 END IF;--}
716
717
718 /* If manual document sequencing is in force we need a journal
719 number. If it's automatic we will generate one. If we're
720 given one and the sequencing is automatic, use the one we've
721 generated. */
722 -- BEGIN BUG#1834743 V. Ajay Kumar
723 -- Check for document ordering and assign the journal number.
724 OPEN Check_Assignment_Type;
725 FETCH Check_Assignment_Type into l_assign_type;
726 CLOSE Check_Assignment_Type;
727
728 --Jalaj Srivastava Bug 2483656
729 IF (l_assign_type = 2) THEN
730 IF (p_qty_rec.trans_type <= 5) THEN
731 x_ic_jrnl_mst_row.journal_no :=GMA_GLOBAL_GRP.Get_doc_no ( 'JRNL', p_qty_rec.orgn_code);
732 ELSIF (p_qty_rec.trans_type >= 6) THEN
733 IF (p_qty_rec.journal_no IS NULL) THEN
734 x_ic_jrnl_mst_row.journal_no :=GMA_GLOBAL_GRP.Get_doc_no ( 'JRNL' , p_qty_rec.orgn_code);
735 ELSE
736 IF ( (upper(p_qty_rec.journal_no) = 'PREVIOUS')
737 AND (p_qty_rec.orgn_code = prev_orgn_code)
738 ) THEN
739 l_qty_rec.journal_no := prev_journal_no;
740 END IF;
741 OPEN check_journal_no;
742 FETCH check_journal_no INTO l_record_count;
743 CLOSE check_journal_no;
744 IF (l_record_count = 0) THEN
745 FND_MESSAGE.SET_NAME ('GMI', 'IC_API_INVALID_JOURNAL_NO');
746 FND_MESSAGE.SET_TOKEN('JOURNAL_NO',p_qty_rec.journal_no);
747 FND_MSG_PUB.Add;
748 RAISE FND_API.G_EXC_ERROR;
749 ELSE
750 x_ic_jrnl_mst_row.journal_no := l_qty_rec.journal_no;
751 END IF;
752 END IF;
753 END IF;
754 ELSE
755 OPEN Check_Record_Count;
756 FETCH Check_Record_Count INTO l_record_count;
757 CLOSE Check_Record_Count;
758
759 --Validation of the journal number takes place here.
760 --If there are no records retreived, then a journal is created sucessfully,
761 --else an error message is displayed.
762
763 IF l_record_count = 0 THEN
764 x_ic_jrnl_mst_row.journal_no := l_qty_rec.journal_no;
765 ELSIF (p_qty_rec.trans_type <= 5) THEN
766 FND_MESSAGE.SET_NAME ('GMI', 'GMI_JOURNALNOEXISTS');
767 FND_MSG_PUB.Add;
768 RAISE FND_API.G_EXC_ERROR;
769 ELSIF (p_qty_rec.trans_type >=6) THEN
770 OPEN check_journal_no;
771 FETCH check_journal_no INTO l_record_count;
772 CLOSE check_journal_no;
773 IF (l_record_count = 0) THEN
774 FND_MESSAGE.SET_NAME ('GMI', 'IC_API_INVALID_JOURNAL_NO');
775 FND_MESSAGE.SET_TOKEN('JOURNAL_NO',l_qty_rec.journal_no);
776 FND_MSG_PUB.Add;
777 RAISE FND_API.G_EXC_ERROR;
778 ELSE
779 x_ic_jrnl_mst_row.journal_no := l_qty_rec.journal_no;
780 END IF;
781 END IF;
782 END IF;
783 IF (upper(l_qty_rec.journal_no) = 'PREVIOUS') THEN
784 FND_MESSAGE.SET_NAME ('GMI', 'IC_API_INVALID_JOURNAL_NO');
785 FND_MESSAGE.SET_TOKEN('JOURNAL_NO',l_qty_rec.journal_no);
786 FND_MSG_PUB.Add;
787 RAISE FND_API.G_EXC_ERROR;
788 END IF;
789 IF (NVL(x_ic_jrnl_mst_row.journal_no, ' ') = ' ') THEN
790 FND_MESSAGE.SET_NAME('GMI','IC_API_UNABLE_TO_GET_DOC_NO');
791 FND_MESSAGE.SET_TOKEN('DOC_TYPE','JRNL');
792 FND_MESSAGE.SET_TOKEN('ORGN_CODE',p_qty_rec.orgn_code);
793 FND_MSG_PUB.Add;
794 RAISE FND_API.G_EXC_ERROR;
795 END IF;
796 IF GMIVDBL.ic_jrnl_mst_insert(x_ic_jrnl_mst_row, x_ic_jrnl_mst_row) THEN
797 x_return_status := FND_API.G_RET_STS_SUCCESS;
798 x_ic_adjs_jnl_row1.journal_id := x_ic_jrnl_mst_row.journal_id;
799 --Jalaj Srivastava Bug 2483656
800 IF ( (l_assign_type = 2)
801 AND (p_qty_rec.trans_type >=6)
802 ) THEN
803 prev_orgn_code := p_qty_rec.orgn_code;
804 prev_journal_no := x_ic_jrnl_mst_row.journal_no;
805 ELSE
806 prev_orgn_code := NULL;
807 prev_journal_no := NULL;
808 END IF;
809 OPEN get_doc_line;
810 FETCH get_doc_line INTO x_ic_adjs_jnl_row1.doc_line;
811 CLOSE get_doc_line;
812
813 IF GMIVDBL.ic_adjs_jnl_insert(x_ic_adjs_jnl_row1,x_ic_adjs_jnl_row1) THEN
814 x_return_status := FND_API.G_RET_STS_SUCCESS;
815 IF (substr(x_ic_adjs_jnl_row1.trans_type,4,1) = 'I') THEN
816 GMIVQTY.construct_txn_rec
817 (x_ic_adjs_jnl_row1, l_tran_rec);
818 GMI_TRANS_ENGINE_PUB.create_completed_transaction
819 ( p_api_version => 1.0
820 , p_init_msg_list => FND_API.G_FALSE
821 , p_commit => FND_API.G_FALSE
822 , p_validation_level => FND_API.G_VALID_LEVEL_FULL
823 , p_tran_rec => l_tran_rec
824 , x_tran_row => l_tran_row1
825 , x_return_status => x_return_status
826 , x_msg_count => x_msg_count
827 , x_msg_data => x_msg_data
828 );
829 IF x_return_status <> FND_API.G_RET_STS_SUCCESS
830 THEN
831 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
832 END IF;
833 END IF; --IF (substr(x_ic_adjs_jnl_row1.trans_type,4,1) = 'I')
834
835 IF substr(x_ic_adjs_jnl_row1.trans_type,1,3) IN ('TRN','STS','GRD') THEN
836 x_ic_adjs_jnl_row2.doc_id := x_ic_adjs_jnl_row1.doc_id;
837 x_ic_adjs_jnl_row2.journal_id := x_ic_adjs_jnl_row1.journal_id;
838 x_ic_adjs_jnl_row2.doc_line := x_ic_adjs_jnl_row1.doc_line + 1;
839 IF GMIVDBL.ic_adjs_jnl_insert(x_ic_adjs_jnl_row2, x_ic_adjs_jnl_row2) THEN
840 x_return_status := FND_API.G_RET_STS_SUCCESS;
841 IF (substr(x_ic_adjs_jnl_row1.trans_type,4,1) = 'I') THEN
842 GMIVQTY.construct_txn_rec
843 (x_ic_adjs_jnl_row2, l_tran_rec);
844 GMI_TRANS_ENGINE_PUB.create_completed_transaction
845 ( p_api_version => 1.0
846 , p_init_msg_list => FND_API.G_FALSE
847 , p_commit => FND_API.G_FALSE
848 , p_validation_level => FND_API.G_VALID_LEVEL_FULL
849 , p_tran_rec => l_tran_rec
850 , x_tran_row => l_tran_row2
851 , x_return_status => x_return_status
852 , x_msg_count => x_msg_count
853 , x_msg_data => x_msg_data
854 );
855
856 IF x_return_status <> FND_API.G_RET_STS_SUCCESS
857 THEN
858 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
859 END IF;
860 /* *********************************************************************
861 Jalaj Srivastava Bug 3282770
862 If it is a move immediate and moving allocations is
863 required/permitted then lets do it.
864 ********************************************************************* */
865 --{
866 IF (x_move_allocations = 'Y') THEN
867 GMIALLOC.UPDATE_PENDING_ALLOCATIONS
868 ( p_api_version => 1.0
869 ,p_init_msg_list => fnd_api.g_false
870 ,p_commit => fnd_api.g_false
871 ,p_validation_level => fnd_api.g_valid_level_full
872 ,x_return_status => x_return_status
873 ,x_msg_count => x_msg_count
874 ,x_msg_data => x_msg_data
875 ,pdoc_id => l_tran_rec.doc_id
876 ,pto_whse_code => x_ic_adjs_jnl_row2.whse_code
877 ,pto_location => nvl(x_ic_adjs_jnl_row2.location,fnd_profile.value('IC$DEFAULT_LOCT'))
878 );
879
880
881 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
882 RAISE FND_API.G_EXC_ERROR;
883 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
884 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
885 END IF;
886
887 END IF;--}
888
889 END IF; --(substr(x_ic_adjs_jnl_row1.trans_type,4,1) = 'I')
890 ELSE --GMIVDBL.ic_adjs_jnl_insert(x_ic_adjs_jnl_row2, x_ic_adjs_jnl_row2)
891 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
892 END IF; --GMIVDBL.ic_adjs_jnl_insert(x_ic_adjs_jnl_row2, x_ic_adjs_jnl_row2)
893 END IF; --substr(x_ic_adjs_jnl_row1.trans_type,1,3) IN ('TRN','STS','GRD')
894 ELSE --GMIVDBL.ic_adjs_jnl_insert(x_ic_adjs_jnl_row1,x_ic_adjs_jnl_row1)
895 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
896 END IF; --GMIVDBL.ic_adjs_jnl_insert(x_ic_adjs_jnl_row1,x_ic_adjs_jnl_row1)
897 ELSE --GMIVDBL.ic_jrnl_mst_insert(x_ic_jrnl_mst_row, x_ic_jrnl_mst_row)
898 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
899 END IF;
900 END IF;
901
902 /* Bug 1655794 - Generate the output log file with proper messages */
903 /* upon sucessful run of the API. */
904 IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
905 IF(x_ic_adjs_jnl_row1.trans_type = 'CREI') THEN
906 FND_MESSAGE.SET_NAME('GMI','IC_API_CRE_TRAN_POSTED');
907 ELSIF(x_ic_adjs_jnl_row1.trans_type = 'ADJI') THEN
908 FND_MESSAGE.SET_NAME('GMI','IC_API_ADJ_TRAN_POSTED');
909 ELSIF(x_ic_adjs_jnl_row1.trans_type = 'TRNI') THEN
910 FND_MESSAGE.SET_NAME('GMI','IC_API_TRN_TRAN_POSTED');
911 ELSIF(x_ic_adjs_jnl_row1.trans_type = 'STSI') THEN
912 FND_MESSAGE.SET_NAME('GMI','IC_API_STS_TRAN_POSTED');
913 ELSIF(x_ic_adjs_jnl_row1.trans_type = 'GRDI') THEN
914 FND_MESSAGE.SET_NAME('GMI','IC_API_GRD_TRAN_POSTED');
915 ELSIF (x_ic_adjs_jnl_row1.trans_type = 'CRER') THEN
916 FND_MESSAGE.SET_NAME('GMI','IC_API_CRER_TRAN_CREATED');
917 ELSIF(x_ic_adjs_jnl_row1.trans_type = 'ADJR') THEN
918 FND_MESSAGE.SET_NAME('GMI','IC_API_ADJR_TRAN_CREATED');
919 ELSIF(x_ic_adjs_jnl_row1.trans_type = 'TRNR') THEN
920 FND_MESSAGE.SET_NAME('GMI','IC_API_TRNR_TRAN_CREATED');
921 ELSIF(x_ic_adjs_jnl_row1.trans_type = 'STSR') THEN
922 FND_MESSAGE.SET_NAME('GMI','IC_API_STSR_TRAN_CREATED');
923 ELSIF(x_ic_adjs_jnl_row1.trans_type = 'GRDR') THEN
924 FND_MESSAGE.SET_NAME('GMI','IC_API_GRDR_TRAN_CREATED');
925 END IF;
926 IF (x_ic_adjs_jnl_row1.trans_type IN ('CRER','ADJR')) THEN
927 FND_MESSAGE.SET_TOKEN('DOC_LINE', x_ic_adjs_jnl_row1.doc_line);
928 ELSIF (x_ic_adjs_jnl_row1.trans_type IN ('GRDR','TRNR','STSR')) THEN
929 FND_MESSAGE.SET_TOKEN('DOC_LINE_FROM', x_ic_adjs_jnl_row1.doc_line);
930 FND_MESSAGE.SET_TOKEN('DOC_LINE_TO', x_ic_adjs_jnl_row2.doc_line);
931 END IF;
932 FND_MESSAGE.SET_TOKEN('JOURNAL_NO', x_ic_jrnl_mst_row.journal_no);
933 FND_MESSAGE.SET_TOKEN('ORGN_CODE', x_ic_adjs_jnl_row1.orgn_code);
934 FND_MESSAGE.SET_TOKEN('ITEM_NO', p_ic_item_mst_row.item_no);
935 FND_MESSAGE.SET_TOKEN('LOT_NO',p_ic_lots_mst_row.lot_no);
936 FND_MESSAGE.SET_TOKEN('SUBLOT_NO',p_ic_lots_mst_row.sublot_no);
937 FND_MSG_PUB.Add;
938
939 /* **************************************************************
940 Jalaj Srivastava Bug 3282770
941 Post message to log to indicate that the allocations have been
942 moved.
943 *************************************************************** */
944 IF (x_ic_adjs_jnl_row1.trans_type = 'TRNI' and x_move_allocations = 'Y') THEN
945 FND_MESSAGE.SET_NAME('GMI','GMI_ALLOCATIONS_MOVED');
946 END IF;
947 FND_MSG_PUB.Add;
948
949 IF FND_API.to_boolean(p_commit) THEN
950 COMMIT WORK;
951 END IF;
952 ELSE
953 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
954 END IF; --(x_return_status = FND_API.G_RET_STS_SUCCESS)
955 FND_MSG_PUB.Count_AND_GET
956 (p_count => x_msg_count, p_data => x_msg_data);
957 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
958 ROLLBACK TO Create_Posting;
959 END IF;
960
961 EXCEPTION
962 WHEN FND_API.G_EXC_ERROR THEN
963 ROLLBACK TO Create_Posting;
964 x_return_status := FND_API.G_RET_STS_ERROR;
965 FND_MSG_PUB.Count_AND_GET
966 (p_count => x_msg_count, p_data => x_msg_data);
967 WHEN OTHERS THEN
968 ROLLBACK TO Create_Posting;
969 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
970
971 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
972 FND_MSG_PUB.Count_AND_GET
973 (p_count => x_msg_count, p_data => x_msg_data);
974 END Inventory_Posting;
975
976
977
978 PROCEDURE Inventory_Transfer
979 ( p_api_version IN NUMBER
980 , p_init_msg_list IN VARCHAR2
981 , p_commit IN VARCHAR2
982 , p_validation_level IN NUMBER
983 , p_xfer_rec IN GMIGAPI.xfer_rec_typ
984 , p_ic_item_mst_row IN ic_item_mst%ROWTYPE
985 , p_ic_item_cpg_row IN ic_item_cpg%ROWTYPE
986 , p_ic_lots_mst_row IN ic_lots_mst%ROWTYPE
987 , p_ic_lots_cpg_row IN ic_lots_cpg%ROWTYPE
988 , p_ic_xfer_mst_row OUT NOCOPY ic_xfer_mst%ROWTYPE
989 , x_ic_xfer_mst_row OUT NOCOPY ic_xfer_mst%ROWTYPE
990 , x_return_status OUT NOCOPY VARCHAR2
991 , x_msg_count OUT NOCOPY NUMBER
992 , x_msg_data OUT NOCOPY VARCHAR2
993 )
994 IS
995 l_api_name VARCHAR2(30) := 'Inventory Transfer';
996 l_return_status NUMBER;
997 BEGIN
998 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
999
1000 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
1001 FND_MSG_PUB.Count_AND_GET
1002 (p_count => x_msg_count, p_data => x_msg_data);
1003 END Inventory_Transfer;
1004
1005 END GMIGAPI;