DBA Data[Home] [Help]

PACKAGE BODY: APPS.WMS_TXNREASONS_PUB

Source


1 PACKAGE BODY  wms_txnreasons_pub as
2 /* $Header: WMSTXR3B.pls 120.1 2005/06/10 10:18:39 appldev  $ */
3 g_pkg_name CONSTANT VARCHAR(30) := 'wms_txnreasons_pub';
4 
5 -- to turn off debugger, comment out the line 'dbms_output.put_line(msg);'
6 PROCEDURE mdebug(msg in varchar2)
7 IS
8     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
9 BEGIN
10 --dbms_output.put_line(msg);
11    null;
12 END;
13 
14 Procedure Start_Workflow(
15 P_REASON_ID				IN	NUMBER,
16 P_REASON_NAME				IN	VARCHAR2 DEFAULT NULL,
17 P_SOURCE_ORGANIZATION_ID		IN	NUMBER DEFAULT NULL,
18 P_DESTINATION_ORGANIZATION_ID		IN	NUMBER DEFAULT NULL,
19 P_LPN_ID				IN	NUMBER DEFAULT NULL,
20 P_INVENTORY_ITEM_ID			IN	NUMBER DEFAULT NULL,
21 P_REVISION				IN	VARCHAR2 DEFAULT NULL,
22 p_update_status_method                  IN 	VARCHAR2 DEFAULT NULL,
23 P_LOT_NUMBER				IN	VARCHAR2 DEFAULT NULL,
24 p_to_lot_number                         IN      VARCHAR2 DEFAULT NULL,
25 P_LOT_STATUS				IN	VARCHAR2 DEFAULT NULL,
26 P_SUBLOT_NUMBER				IN	VARCHAR2 DEFAULT NULL,
27 P_SUBLOT_STATUS				IN	VARCHAR2 DEFAULT NULL,
28 P_SOURCE_SUBINVENTORY			IN	VARCHAR2 DEFAULT NULL,
29 P_SOURCE_SUBINVENTORY_STATUS		IN	VARCHAR2 DEFAULT NULL,
30 P_DESTINATION_SUBINVENTORY		IN	VARCHAR2 DEFAULT NULL,
31 P_DESTINATION_SUBINVENTORY_ST           IN	VARCHAR2 DEFAULT NULL,
32 P_SOURCE_LOCATOR			IN	NUMBER DEFAULT NULL,
33 P_SOURCE_LOCATOR_STATUS			IN	VARCHAR2 DEFAULT NULL,
34 P_DESTINATION_LOCATOR			IN	NUMBER DEFAULT NULL,
35 P_DESTINATION_LOCATOR_STATUS		IN	VARCHAR2 DEFAULT NULL,
36 P_SOURCE_IMMEDIATE_LPN_ID		IN	NUMBER DEFAULT NULL,
37 P_SOURCE_IMMEDIATE_LPN_STATUS		IN	VARCHAR2 DEFAULT NULL,
38 P_SOURCE_TOPLEVEL_LPN_ID		IN	NUMBER DEFAULT NULL,
39 P_SOURCE_TOPLEVEL_LPN_STATUS		IN	VARCHAR2 DEFAULT NULL,
40 P_DEST_IMMEDIATE_LPN_ID 		IN	NUMBER DEFAULT NULL,
41 P_DEST_IMMEDIATE_LPN_STATUS     	IN	VARCHAR2 DEFAULT NULL,
42 P_DEST_TOPLEVEL_LPN_ID  		IN	NUMBER DEFAULT NULL,
43 P_DEST_TOPLEVEL_LPN_STATUS      	IN	VARCHAR2 DEFAULT NULL,
44 P_SERIAL_NUMBER				IN	VARCHAR2 DEFAULT NULL,
45 p_to_serial_number                      IN      VARCHAR2 DEFAULT NULL,
46 P_SERIAL_NUMBER_STATUS			IN	VARCHAR2 DEFAULT NULL,
47 P_PRIMARY_UOM				IN	VARCHAR2 DEFAULT NULL,
48 P_TRANSACTION_UOM			IN	VARCHAR2 DEFAULT NULL,
49 P_PRIMARY_QUANTITY			IN	NUMBER DEFAULT NULL,
50 P_TRANSACTION_QUANTITY			IN	NUMBER DEFAULT NULL,
51 P_TRANSACTION_ACTION_ID			IN	NUMBER DEFAULT NULL,
52 P_TRANSACTION_SOURCE_TYPE_ID		IN	NUMBER DEFAULT NULL,
53 P_TRANSACTION_SOURCE			IN	VARCHAR2 DEFAULT NULL,
54 P_PARENT_TRANSACTION_SOURCE		IN	VARCHAR2 DEFAULT NULL,
55 P_PARENT_TRANS_ACTION_ID		IN	NUMBER DEFAULT NULL,
56 P_PARENT_TRANS_SOURCE_TYPE_ID   	IN	NUMBER DEFAULT NULL,
57 P_RESERVATION_ID			IN	NUMBER DEFAULT NULL,
58 P_EQUIPMENT_ID				IN	NUMBER DEFAULT NULL,
59 P_ROLE_ID				IN	NUMBER DEFAULT NULL,
60 P_EMPLOYEE_ID				IN	NUMBER DEFAULT NULL,
61 P_TASK_TYPE_ID				IN	NUMBER DEFAULT NULL,
62 P_TASK_ID				IN	NUMBER DEFAULT NULL,
63 P_CALLING_PROGRAM_NAME			IN	VARCHAR2 DEFAULT NULL,
64 P_EMAIL_ID				IN	VARCHAR2 DEFAULT NULL,
65 P_PROGRAM_NAME				IN	VARCHAR2 DEFAULT NULL,
66 P_RUN_MODE				IN	VARCHAR2 DEFAULT NULL,
67 P_INIT_MSG_LST   			IN  	VARCHAR2 DEFAULT fnd_api.g_false,
68 P_PROGRAM_CONTROL_ARG1			IN	VARCHAR2 DEFAULT NULL,
69 P_PROGRAM_CONTROL_ARG2			IN	VARCHAR2 DEFAULT NULL,
70 P_PROGRAM_CONTROL_ARG3			IN	VARCHAR2 DEFAULT NULL,
71 P_PROGRAM_CONTROL_ARG4			IN	VARCHAR2 DEFAULT NULL,
72 P_PROGRAM_CONTROL_ARG5			IN	VARCHAR2 DEFAULT NULL,
73 P_PROGRAM_CONTROL_ARG6 			IN	VARCHAR2 DEFAULT NULL,
74 X_RETURN_STATUS				OUT NOCOPY	VARCHAR2,
75 X_MSG_DATA				OUT NOCOPY	VARCHAR2,
76 X_MSG_COUNT				OUT NOCOPY	NUMBER,
77 X_REVISION				OUT NOCOPY	VARCHAR2,
78 X_LOT_NUMBER				OUT NOCOPY	VARCHAR2,
79 X_LOT_STATUS				OUT NOCOPY	VARCHAR2,
80 X_SUBLOT_NUMBER				OUT NOCOPY	VARCHAR2,
81 X_SUBLOT_STATUS				OUT NOCOPY	VARCHAR2,
82 X_LPN_ID				OUT NOCOPY	NUMBER,
83 X_LPN_STATUS				OUT NOCOPY	VARCHAR2,
84 X_UOM_CODE				OUT NOCOPY	VARCHAR2,
85 X_QUANTITY				OUT NOCOPY	NUMBER,
86 X_INVENTORY_ITEM_ID			OUT NOCOPY	NUMBER,
87 X_ORGANIZATION_ID			OUT NOCOPY	NUMBER,
88 X_SUBINVENTORY				OUT NOCOPY	VARCHAR2,
89 X_SUBINVENTORY_STATUS			OUT NOCOPY	VARCHAR2,
90 X_LOCATOR				OUT NOCOPY	NUMBER,
91 X_LOCATOR_STATUS			OUT NOCOPY	VARCHAR2,
92 X_PRIMARY_QUANTITY			OUT NOCOPY	NUMBER,
93 X_TRANSACTION_QUANTITY 			OUT NOCOPY	NUMBER,
94 X_NEXT_FORM				OUT NOCOPY	VARCHAR2,
95 X_NEXT_MOBILE_FORM			OUT NOCOPY	VARCHAR2,
96 X_NEXT_PLSQL_PROGRAM			OUT NOCOPY	VARCHAR2,
97 X_RESERVATION_ID			OUT NOCOPY	NUMBER,
98 X_IS_RESERVATION_SUCCESSFUL		OUT NOCOPY	VARCHAR2,
99 X_IS_CYCLE_COUNT_SUCCESSFUL 		OUT  NOCOPY	VARCHAR2
100 ) IS
101 
102 l_reason_name		varchar2(250);
103 l_workflow_name		varchar2(250);
104 l_workflow_process	varchar2(250);
105 l_sequence_number	number ;
106 l_item_key 		varchar2(500);
107 
108     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
109 BEGIN
110   IF (l_debug = 1) THEN
111      mdebug('In Start_Workflow');
112   END IF;
113   -- make sure that reason name is not null
114   if (p_reason_id is null ) then
115        fnd_message.set_name('INV','INV_FIELD_INVALID');
116     fnd_msg_pub.ADD;
117     RAISE fnd_api.g_exc_error;
118   end if;
119 
120   IF (l_debug = 1) THEN
121      mdebug('Before Select WORKFLOW_NAME, WORKFLOW_PROCESS ');
122   END IF;
123   -- get workflow_name and workflow_process from mtl_transaction_reasons.
124   -- This is needed to create the workflow process
125   SELECT WORKFLOW_NAME, WORKFLOW_PROCESS
126   INTO  l_workflow_name, l_workflow_process
127   FROM MTL_TRANSACTION_REASONS
128   WHERE P_REASON_ID  = REASON_ID ;
129 
130   IF (l_debug = 1) THEN
131      mdebug('Workflow name is: '|| l_workflow_name);
132      mdebug('Workflow process: '|| l_workflow_process);
133   END IF;
134 
135   -- generate item key using sequence number and concat with txnworkflow 'twflow'.
136   -- This is needed to create the workflow process
137   SELECT WMS_DISPATCHED_TASKS_S.nextval
138   INTO l_sequence_number
139   FROM DUAL ;
140   l_item_key := 'twflow' || l_sequence_number ;
141 
142   IF (l_debug = 1) THEN
143      mdebug('Item key is: '|| l_item_key);
144   END IF;
145 
146    -- initialize workflow
147 	wf_engine.CreateProcess(itemtype	=>	l_workflow_name,
148 				itemkey		=>	l_item_key,
149 				process		=>	l_workflow_process);
150 
151   -- set the attribute values of workflow with the given input parameters
152 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
153 				  itemkey	=>	l_item_key,
154 				  aname		=>	'PW_REASON_ID',
155 				  avalue	=>	P_REASON_ID);
156 
157 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
158 				  itemkey	=>	l_item_key,
159 				  aname		=>	'PW_REASON_NAME',
160 				  avalue	=>	P_REASON_NAME);
161 
162 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
163 				    itemkey	=>	l_item_key,
164 				    aname	=>	'PW_SOURCE_ORGANIZATION_ID',
165 				    avalue	=>	P_SOURCE_ORGANIZATION_ID);
166 
167 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
168 				    itemkey	=>	l_item_key,
169 				    aname	=>	'PW_DESTINATION_ORGANIZATION_ID',
170 				    avalue	=>	P_DESTINATION_ORGANIZATION_ID);
171 
172 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
173 				    itemkey	=>	l_item_key,
174 				    aname	=>	'PW_LPN_ID',
175 				    avalue	=>	P_LPN_ID);
176 
177 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
178 				    itemkey	=>	l_item_key,
179 				    aname	=>	'PW_INVENTORY_ITEM_ID',
180 				    avalue	=>	P_INVENTORY_ITEM_ID);
181 
182 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
183 				  itemkey	=>	l_item_key,
184 				  aname		=>	'PW_REVISION',
185 				  avalue	=>	P_REVISION);
186 
187 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
188 				  itemkey	=>	l_item_key,
189 				  aname		=>	'PW_UPDATE_STATUS_METHOD',
190 				  avalue	=>	P_UPDATE_STATUS_METHOD);
191 
192 
193 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
194 				  itemkey	=>	l_item_key,
195 				  aname		=>	'PW_LOT_NUMBER',
196 				  avalue	=>	P_LOT_NUMBER);
197 
198 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
199 				  itemkey	=>	l_item_key,
200 				  aname		=>	'PW_TO_LOT_NUMBER',
201 				  avalue	=>	P_TO_LOT_NUMBER);
202 
203 
204 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
205 				  itemkey	=>	l_item_key,
206 				  aname		=>	'PW_LOT_STATUS',
207 				  avalue	=>	P_LOT_STATUS);
208 
209 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
210 				  itemkey	=>	l_item_key,
211 				  aname		=>	'PW_SUBLOT_NUMBER',
212 				  avalue	=>	P_SUBLOT_NUMBER);
213 
214 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
215 				  itemkey	=>	l_item_key,
216 				  aname		=>	'PW_SUBLOT_STATUS',
217 				  avalue	=>	P_SUBLOT_STATUS);
218 
219 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
220 				  itemkey	=>	l_item_key,
221 				  aname		=>	'PW_SOURCE_SUBINVENTORY',
222 				  avalue	=>	P_SOURCE_SUBINVENTORY);
223 
224 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
225 				  itemkey	=>	l_item_key,
226 				  aname		=>	'PW_SOURCE_SUBINVENTORY_STATUS',
227 				  avalue	=>	P_SOURCE_SUBINVENTORY_STATUS);
228 
229 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
230 				  itemkey	=>	l_item_key,
231 				  aname		=>	'PW_DESTINATION_SUBINVENTORY',
232 				  avalue	=>	P_DESTINATION_SUBINVENTORY);
233 
234 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
235 				  itemkey	=>	l_item_key,
236 				  aname		=>	'PW_DESTINATION_SUBINVENTORY_ST',
237 				  avalue	=>	P_DESTINATION_SUBINVENTORY_ST);
238 
239 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
240 				    itemkey	=>	l_item_key,
241 				    aname	=>	'PW_SOURCE_LOCATOR',
242 				    avalue	=>	P_SOURCE_LOCATOR);
243 
244 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
245 				  itemkey	=>	l_item_key,
246 				  aname		=>	'PW_SOURCE_LOCATOR_STATUS',
247 				  avalue	=>	P_SOURCE_LOCATOR);
248 
249 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
250 				    itemkey	=>	l_item_key,
251 				    aname	=>	'PW_DESTINATION_LOCATOR',
252 				    avalue	=>	P_DESTINATION_LOCATOR);
253 
254 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
255 				  itemkey	=>	l_item_key,
256 				  aname		=>	'PW_DESTINATION_LOCATOR_STATUS',
257 				  avalue	=>	P_DESTINATION_LOCATOR_STATUS);
258 
259 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
260 				    itemkey	=>	l_item_key,
261 				    aname	=>	'PW_SOURCE_IMMEDIATE_LPN_ID',
262 				    avalue	=>	P_SOURCE_IMMEDIATE_LPN_ID);
263 
264 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
265 				  itemkey	=>	l_item_key,
266 				  aname		=>	'PW_SOURCE_IMMEDIATE_LPN_STATUS',
267 				  avalue	=>	P_SOURCE_IMMEDIATE_LPN_STATUS);
268 
269 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
270 				    itemkey	=>	l_item_key,
271 				    aname	=>	'PW_SOURCE_TOPLEVEL_LPN_ID',
272 				    avalue	=>	P_SOURCE_TOPLEVEL_LPN_ID);
273 
274 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
275 				  itemkey	=>	l_item_key,
276 				  aname		=>	'PW_SOURCE_TOPLEVEL_LPN_STATUS',
277 				  avalue	=>	P_SOURCE_TOPLEVEL_LPN_STATUS);
278 
279 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
280 				    itemkey	=>	l_item_key,
281 				    aname	=>	'PW_DEST_IMMEDIATE_LPN_ID',
282 				    avalue	=>	P_DEST_IMMEDIATE_LPN_ID);
283 
284 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
285 				  itemkey	=>	l_item_key,
286 				  aname		=>	'PW_DEST_IMMEDIATE_LPN_STATUS',
287 				  avalue	=>	P_DEST_IMMEDIATE_LPN_STATUS);
288 
289 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
290 				    itemkey	=>	l_item_key,
291 				    aname	=>	'PW_DEST_TOPLEVEL_LPN_ID',
292 				    avalue	=>	P_DEST_TOPLEVEL_LPN_ID);
293 
294 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
295 				  itemkey	=>	l_item_key,
296 				  aname		=>	'PW_DEST_TOPLEVEL_LPN_STATUS',
297 				  avalue	=>	P_DEST_TOPLEVEL_LPN_STATUS);
298 
299 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
300 				  itemkey	=>	l_item_key,
301 				  aname		=>	'PW_SERIAL_NUMBER',
302 				  avalue	=>	P_SERIAL_NUMBER);
303 
304 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
305 				  itemkey	=>	l_item_key,
306 				  aname		=>	'PW_TO_SERIAL_NUMBER',
307 				  avalue	=>	P_TO_SERIAL_NUMBER);
308 
309 
310 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
311 				  itemkey	=>	l_item_key,
312 				  aname		=>	'PW_SERIAL_NUMBER_STATUS',
313 				  avalue	=>	P_SERIAL_NUMBER_STATUS);
314 
315 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
316 				  itemkey	=>	l_item_key,
317 				  aname		=>	'PW_PRIMARY_UOM',
318 				  avalue	=>	P_PRIMARY_UOM);
319 
320 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
321 				  itemkey	=>	l_item_key,
322 				  aname		=>	'PW_TRANSACTION_UOM',
323 				  avalue	=>	P_TRANSACTION_UOM);
324 
325 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
326 				    itemkey	=>	l_item_key,
327 				    aname	=>	'PW_PRIMARY_QUANTITY',
328 				    avalue	=>	P_PRIMARY_QUANTITY);
329 
330 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
331 				    itemkey	=>	l_item_key,
332 				    aname	=>	'PW_TRANSACTION_QUANTITY',
333 				    avalue	=>	P_TRANSACTION_QUANTITY);
334 
335 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
336 				    itemkey	=>	l_item_key,
337 				    aname	=>	'PW_TRANSACTION_ACTION_ID',
338 				    avalue	=>	P_TRANSACTION_ACTION_ID);
339 
340 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
341 				    itemkey	=>	l_item_key,
342 				    aname	=>	'PW_TRANSACTION_SOURCE_TYPE_ID',
343 				    avalue	=>	P_TRANSACTION_SOURCE_TYPE_ID);
344 
345 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
346 				  itemkey	=>	l_item_key,
347 				  aname		=>	'PW_TRANSACTION_SOURCE',
348 				  avalue	=>	P_TRANSACTION_SOURCE);
349 
350 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
351 				  itemkey	=>	l_item_key,
352 				  aname		=>	'PW_PARENT_TRANSACTION_SOURCE',
353 				  avalue	=>	P_PARENT_TRANSACTION_SOURCE);
354 
355 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
356 				    itemkey	=>	l_item_key,
357 				    aname	=>	'PW_PARENT_TRANS_ACTION_ID',
358 				    avalue	=>	P_PARENT_TRANS_ACTION_ID);
359 
360 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
361 				    itemkey	=>	l_item_key,
362 				    aname	=>	'PW_PARENT_TRANS_SOURCE_TYPE_ID',
363 				    avalue	=>	P_PARENT_TRANS_SOURCE_TYPE_ID);
364 
365 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
366 				    itemkey	=>	l_item_key,
367 				    aname	=>	'PW_RESERVATION_ID',
368 				    avalue	=>	P_RESERVATION_ID);
369 
370 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
371 				    itemkey	=>	l_item_key,
372 				    aname	=>	'PW_EQUIPMENT_ID',
373 				    avalue	=>	P_EQUIPMENT_ID);
374 
375 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
376 				    itemkey	=>	l_item_key,
377 				    aname	=>	'PW_ROLE_ID',
378 				    avalue	=>	P_ROLE_ID);
379 
380 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
381 				    itemkey	=>	l_item_key,
382 				    aname	=>	'PW_EMPLOYEE_ID',
383 				    avalue	=>	P_EMPLOYEE_ID);
384 
385 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
386 				    itemkey	=>	l_item_key,
387 				    aname	=>	'PW_TASK_TYPE_ID',
388 				    avalue	=>	P_TASK_TYPE_ID);
389 
390 	wf_engine.SetItemAttrNumber(itemtype	=>	l_workflow_name,
391 				    itemkey	=>	l_item_key,
392 				    aname	=>	'PW_TASK_ID',
393 				    avalue	=>	P_TASK_ID);
394 
395 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
396 				  itemkey	=>	l_item_key,
397 				  aname		=>	'PW_CALLING_PROGRAM_NAME',
401 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
398 				  avalue	=>	P_CALLING_PROGRAM_NAME);
399 
400 
402 				  itemkey	=>	l_item_key,
403 				  aname		=>	'PW_EMAIL_ID',
404 				  avalue	=>	P_EMAIL_ID);
405 
406 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
407 				  itemkey	=>	l_item_key,
408 				  aname		=>	'PW_PROGRAM_NAME',
409 			          avalue	=>	P_PROGRAM_NAME);
410 
411 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
412 				  itemkey	=>	l_item_key,
413 				  aname		=>	'PW_RUN_MODE',
414 			          avalue	=>	P_RUN_MODE);
415 
416 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
417 				  itemkey	=>	l_item_key,
418 				  aname		=>	'PW_INIT_MSG_LST',
419 			          avalue	=>	P_INIT_MSG_LST);
420 
421         wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
422 				  itemkey	=>	l_item_key,
423 				  aname		=>	'PW_PROGRAM_CONTROL_ARG1',
424 				  avalue	=>	P_PROGRAM_CONTROL_ARG1);
425 
426 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
427 				  itemkey	=>	l_item_key,
428 				  aname		=>	'PW_PROGRAM_CONTROL_ARG2',
429 				  avalue	=>	P_PROGRAM_CONTROL_ARG2);
430 
431 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
432 				  itemkey	=>	l_item_key,
433 				  aname		=>	'PW_PROGRAM_CONTROL_ARG3',
434 			          avalue	=>	P_PROGRAM_CONTROL_ARG3);
435 
436 	wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
437 				  itemkey	=>	l_item_key,
438 				  aname		=>	'PW_PROGRAM_CONTROL_ARG4',
439 			          avalue	=>	P_PROGRAM_CONTROL_ARG4);
440 
441         wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
442 				  itemkey	=>	l_item_key,
443 				  aname		=>	'PW_PROGRAM_CONTROL_ARG5',
444 				  avalue	=>	P_PROGRAM_CONTROL_ARG5);
445 
446         wf_engine.SetItemAttrText(itemtype	=>	l_workflow_name,
447 				  itemkey	=>	l_item_key,
448 				  aname		=>	'PW_PROGRAM_CONTROL_ARG6',
449 				  avalue	=>	P_PROGRAM_CONTROL_ARG6);
450 
451 
452  -- start workflow
453         IF (l_debug = 1) THEN
454            mdebug('Before Start Process of: ' || l_workflow_name);
455         END IF;
456 	wf_engine.StartProcess (itemtype	=>	l_workflow_name,
457 				itemkey		=>	l_item_key);
458 
459 -- on completion of the workflow, the output parameters are populated with the
460 -- workflow attribute values
461 X_RETURN_STATUS	:= wf_engine.GetItemAttrText(itemtype	=>	l_workflow_name,
462 				 	     itemkey	=>	l_item_key,
463 				  	     aname	=>	'XW_RETURN_STATUS');
464 
465 X_MSG_DATA	:= wf_engine.GetItemAttrText(itemtype	=>	l_workflow_name,
466 				  	     itemkey	=>	l_item_key,
467 				  	     aname	=>	'XW_MSG_DATA');
468 
469 X_MSG_COUNT	:= wf_engine.GetItemAttrNumber(itemtype	=>	l_workflow_name,
470 				    	       itemkey	=>	l_item_key,
471 				    	       aname	=>	'XW_MSG_COUNT');
472 
473 X_REVISION	:= wf_engine.GetItemAttrText(itemtype	=>	l_workflow_name,
474 				  	     itemkey	=>	l_item_key,
475 				  	     aname	=>	'XW_REVISION');
476 
477 X_LOT_NUMBER	:= wf_engine.GetItemAttrText(itemtype	=>	l_workflow_name,
478 				  	     itemkey	=>	l_item_key,
479 				  	     aname	=>	'XW_LOT_NUMBER');
480 
481 X_LOT_STATUS	:= wf_engine.GetItemAttrText(itemtype	=>	l_workflow_name,
482 				  	     itemkey	=>	l_item_key,
483 				  	     aname	=>	'XW_LOT_STATUS');
484 
485 X_SUBLOT_NUMBER	:=  wf_engine.GetItemAttrText(itemtype	=>	l_workflow_name,
486 				  	      itemkey	=>	l_item_key,
487 				  	      aname	=>	'XW_SUBLOT_NUMBER');
488 
489 X_SUBLOT_STATUS	:= wf_engine.GetItemAttrText(itemtype	=>	l_workflow_name,
490 				  	     itemkey	=>	l_item_key,
491 				  	     aname	=>	'XW_SUBLOT_STATUS');
492 
493 X_LPN_ID 	:= wf_engine.GetItemAttrNumber(itemtype	=>	l_workflow_name,
494 				    	       itemkey	=>	l_item_key,
495 				    	       aname	=>	'XW_LPN_ID');
496 
497 X_LPN_STATUS	:= wf_engine.GetItemAttrText(itemtype	=>	l_workflow_name,
498 				  	     itemkey	=>	l_item_key,
499 				  	     aname	=>	'XW_LPN_STATUS');
500 
501 X_UOM_CODE	:= wf_engine.GetItemAttrText(itemtype	=>	l_workflow_name,
502 				  	     itemkey	=>	l_item_key,
503 				  	     aname	=>	'XW_UOM_CODE');
504 
505 X_QUANTITY	:= wf_engine.GetItemAttrNumber(itemtype	=>	l_workflow_name,
506 				    	       itemkey	=>	l_item_key,
507 				    	       aname	=>	'XW_QUANTITY');
508 
509 X_INVENTORY_ITEM_ID:=wf_engine.GetItemAttrNumber(itemtype=>	l_workflow_name,
510 				    		 itemkey =>	l_item_key,
511 				    		 aname	 =>	'XW_INVENTORY_ITEM_ID');
512 
513 X_ORGANIZATION_ID:= wf_engine.GetItemAttrNumber(itemtype=>	l_workflow_name,
514 				    		itemkey	=>	l_item_key,
515 				    		aname	=>	'XW_ORGANIZATION_ID');
516 
517 X_SUBINVENTORY	:= wf_engine.GetItemAttrText(itemtype	=>	l_workflow_name,
518 				  	     itemkey	=>	l_item_key,
519 				  	     aname	=>	'XW_SUBINVENTORY');
520 
521 X_SUBINVENTORY_STATUS:=wf_engine.GetItemAttrText(itemtype=>	l_workflow_name,
522 				  		 itemkey =>	l_item_key,
523 				  		 aname	 =>	'XW_SUBINVENTORY_STATUS');
524 
525 X_LOCATOR	:= wf_engine.GetItemAttrNumber(itemtype	=>	l_workflow_name,
526 				    	       itemkey	=>	l_item_key,
527 				    	       aname	=>	'XW_LOCATOR');
528 
529 X_LOCATOR_STATUS:= wf_engine.GetItemAttrText(itemtype	=>	l_workflow_name,
530 				  	     itemkey	=>	l_item_key,
531 				  	     aname	=>	'XW_LOCATOR_STATUS');
532 
533 X_PRIMARY_QUANTITY:=wf_engine.GetItemAttrNumber(itemtype=>	l_workflow_name,
534 				    	        itemkey	=>	l_item_key,
535 				    	        aname	=>	'XW_PRIMARY_QUANTITY');
536 
537 X_TRANSACTION_QUANTITY:=wf_engine.GetItemAttrNumber(itemtype=>	l_workflow_name,
538 				    		    itemkey =>	l_item_key,
539 				    		    aname   =>	'XW_TRANSACTION_QUANTITY');
540 
541 X_NEXT_FORM	:= wf_engine.GetItemAttrText(itemtype	=>	l_workflow_name,
542 				  	     itemkey	=>	l_item_key,
543 				  	     aname	=>	'XW_NEXT_FORM');
544 
545 X_NEXT_MOBILE_FORM := wf_engine.GetItemAttrText(itemtype=>	l_workflow_name,
546 				  		itemkey	=>	l_item_key,
547 				  		aname	=>	'XW_NEXT_MOBILE_FORM');
548 
549 X_NEXT_PLSQL_PROGRAM := wf_engine.GetItemAttrText(itemtype =>	l_workflow_name,
550 				  		  itemkey  =>	l_item_key,
551 				  		  aname	   =>	'XW_NEXT_PLSQL_PROGRAM');
552 
553 X_RESERVATION_ID   := wf_engine.GetItemAttrText(itemtype=>	l_workflow_name,
554 				  		itemkey	=>	l_item_key,
555 				  		aname	=>	'XW_RESERVATION_ID');
556 
557 X_IS_RESERVATION_SUCCESSFUL:= wf_engine.GetItemAttrText(itemtype=>l_workflow_name,
558 				  		itemkey	=>l_item_key,
559 				  		aname	=>'XW_IS_RESERVATION_SUCCESSFUL');
560 
561 X_IS_CYCLE_COUNT_SUCCESSFUL:= wf_engine.GetItemAttrText(itemtype=>l_workflow_name,
562 				  		itemkey	=>l_item_key,
563 				  		aname	=>'XW_IS_CYCLE_COUNT_SUCCESSFUL');
564 
565 EXCEPTION
566 
567  WHEN fnd_api.g_exc_error THEN
568       x_return_status := fnd_api.g_ret_sts_error;
569       fnd_msg_pub.count_and_get
570 	( p_count => x_msg_count,
571 	  p_data  => x_msg_data
572 	 );
573 
574    WHEN fnd_api.g_exc_unexpected_error THEN
575       x_return_status := fnd_api.g_ret_sts_unexp_error ;
576        fnd_msg_pub.count_and_get
577 	( p_count => x_msg_count,
578 	  p_data  => x_msg_data
579 	  );
580 
581    WHEN NO_DATA_FOUND THEN
582      x_return_status := fnd_api.g_ret_sts_error;
583      fnd_message.set_name('INV','INV_INT_REACODE');
584      fnd_msg_pub.ADD;
585 
586    WHEN OTHERS THEN
587       x_return_status := fnd_api.g_ret_sts_unexp_error;
588      IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error)
589         THEN
590          fnd_msg_pub.add_exc_msg
591            (  g_pkg_name
592               , 'Start_Workflow'
593               );
594         END IF;
595      fnd_msg_pub.count_and_get
596 	( p_count => x_msg_count,
597 	  p_data  => x_msg_data
598 	  );
599 
600 END Start_workflow ;
601 
602 END wms_txnreasons_pub ;