DBA Data[Home] [Help]

PACKAGE BODY: APPS.XDP_DRC_UTIL_PVT

Source


1 PACKAGE BODY XDP_DRC_UTIL_PVT AS
2 /* $Header: XDPDRCPB.pls 120.1 2005/06/15 22:53:15 appldev  $ */
3 
4 
5  PROCEDURE Validate_Task(
6 	p_workitem_id in NUMBER,
7 	x_workitem_name OUT NOCOPY VARCHAR2,
8 	return_code OUT NOCOPY number,
9 	error_description OUT NOCOPY varchar2);
10 
11  PROCEDURE Execute_Workitem_Sync(
12 	p_workitem_instance_id in number,
13 	return_code OUT NOCOPY number,
14 	error_description OUT NOCOPY varchar2);
15 
16  PROCEDURE Execute_FA_Sync(
17 	p_fa_instance_id in number,
18 	return_code OUT NOCOPY number,
19 	error_description OUT NOCOPY varchar2);
20 
21  PROCEDURE Process_DRC_Order(
22  	P_WORKITEM_ID 		IN  NUMBER,
23  	P_TASK_PARAMETER 	IN XDP_TYPES.ORDER_PARAMETER_LIST,
24 	x_SDP_ORDER_ID		OUT NOCOPY NUMBER,
25 	x_return_code		OUT NOCOPY NUMBER,
26 	x_error_description OUT NOCOPY VARCHAR2)
27   IS
28 
29    lv_ret number;
30    lv_str varchar2(800);
31    lv_line_id number;
32    lv_wi_instance_id number;
33    lv_wi varchar2(200);
34    lv_index binary_integer;
35    lv_count number;
36    lv_done varchar2(1);
37    lv_proc varchar2(80);
38  BEGIN
39 
40 	-- Standard Start of API savepoint
41 	-- SAVEPOINT	l_order_tag;
42 
43 -- Start of API body
44 
45 	--  Initialize API return status to success
46 	x_return_code := 0;
47 
48    Validate_Task(
49 		p_workitem_id => p_workitem_id,
50 		x_workitem_name => lv_wi,
51       	return_code => x_return_code,
52       	error_description =>x_error_description);
53 
54 -- Modified by SXBANERJ.10/30/2000
55  --  IF lv_ret <> 0 Then
56    --  return;
57  --  END IF;
58 If x_return_code<>0 THEN
59 return;
60 End If;
61 
62    select XDP_ORDER_HEADERS_S.NextVal into x_SDP_ORDER_ID
63    from dual;
64 
65    insert into xdp_order_headers
66    (
67     order_id,
68     external_order_number,
69     status_code,
70     state,
71     date_received,
72     provisioning_date,
73     actual_provisioning_date,
74     order_type,
75 	creation_date,
76 	created_by,
77 	last_update_date,
78 	last_updated_by,
79 	last_update_login
80     )
81     values
82     (
83      x_sdp_order_id,
84      'DRC-'||TO_CHAR(x_sdp_order_id),
85      'IN PROGRESS',
86      'RUNNING',
87      sysdate,
88      sysdate,
89      sysdate,
90      'DRC',
91 	 sysdate,
92 	 FND_GLOBAL.USER_ID,
93 	 sysdate,
94 	 FND_GLOBAL.USER_ID,
95 	 FND_GLOBAL.LOGIN_ID
96     );
97 
98    insert into xdp_order_line_items
99    (
100     line_item_id,
101     order_id,
102     line_number,
103     line_item_name,
104     provisioning_required_flag,
105     status_code,
106     state,
107     is_package_flag,
108     is_virtual_line_flag,
109     line_sequence,
110     provisioning_date,
111 	workitem_id,
112 	creation_date,
113 	created_by,
114 	last_update_date,
115 	last_updated_by,
116 	last_update_login
117 
118    )
119    values
120    (
121      XDP_ORDER_LINE_ITEMS_S.NextVal,
122      x_SDP_ORDER_ID,
123      1,
124      lv_wi,
125      'Y',
126      'IN PROGRESS',
127      'RUNNING',
128      'N',
129      'N',
130      0,
131      sysdate,
132 	 p_workitem_id,
133 	 sysdate,
134 	 FND_GLOBAL.USER_ID,
135 	 sysdate,
136 	 FND_GLOBAL.USER_ID,
137 	 FND_GLOBAL.LOGIN_ID
138    )
139    returning line_item_id into lv_line_id;
140 
141   IF p_task_parameter.count > 0 THEN
142     lv_index := p_task_parameter.first;
143     For lv_count in 1..p_task_parameter.count loop
144       insert into XDP_ORDER_LINEITEM_DETS
145       (
146         line_item_id,
147         line_parameter_name,
148         parameter_value,
149 		creation_date,
150 		created_by,
151 		last_update_date,
152 		last_updated_by,
153 		last_update_login
154        )
155        values
156        (
157         lv_line_id,
158         p_task_parameter(lv_index).parameter_name,
159         p_task_parameter(lv_index).parameter_value,
160 	 	sysdate,
161 	 	FND_GLOBAL.USER_ID,
162 	 	sysdate,
163 	 	FND_GLOBAL.USER_ID,
164 	 	FND_GLOBAL.LOGIN_ID
165        );
166        lv_index := p_task_parameter.next(lv_index);
167     end loop;
168   END IF;
169 
170 -- Modified by SXSBANERJ 10/30/2000 .Added two more parameters in Add_WI_toLine
171 --
172   lv_wi_instance_id := XDP_OA_UTIL.Add_WI_toLine(
173 			p_line_item_id => lv_line_id,
174 			p_workitem_id => p_workitem_id,
175                         x_error_code =>x_return_code,
176                         x_error_message => x_error_description);
177 IF x_return_code<>0 then
178    return;
179 END IF;
180 
181 -- Modified by SXBANERJ.10/30/2000. Changed lv_ret to x_return_code.
182 
183      Execute_Workitem_Sync(
184 	  p_workitem_instance_id => lv_wi_instance_id,
185 	  return_code => x_return_code,
186 	  error_description =>x_error_description);
187 
188   Begin
189     select 'N' into lv_done
190     from dual
191     where exists( select 'x' from
192           XDP_FULFILL_WORKLIST
193           where line_item_id = lv_line_id and
194           status_code = 'ERROR');
195    exception
196     when no_data_found then
197        lv_done := 'Y';
198    end;
199 
200    If lv_done = 'Y' then
201      update xdp_order_headers
202       set status_code = 'COMPLETED',
203           state = 'COMPLETED',
204 		  last_update_date = sysdate,
205 		  last_updated_by = FND_GLOBAL.USER_ID,
206 		  last_update_login = FND_GLOBAL.LOGIN_ID
207       where order_id = x_sdp_order_id;
208 
209       update xdp_order_line_items
210       set status_code = 'COMPLETED',
211           state = 'COMPLETED',
212 		  last_update_date = sysdate,
213 		  last_updated_by = FND_GLOBAL.USER_ID,
214 		  last_update_login = FND_GLOBAL.LOGIN_ID
215       where line_item_id = lv_line_id;
216    Else
217      update xdp_order_headers
218       set status_code = 'ERROR',
219           state = 'COMPLETED',
220 		  last_update_date = sysdate,
221 		  last_updated_by = FND_GLOBAL.USER_ID,
222 		  last_update_login = FND_GLOBAL.LOGIN_ID
223       where order_id = x_sdp_order_id;
224 
225       update xdp_order_line_items
226       set status_code = 'ERROR',
227           state = 'COMPLETED',
228 		  last_update_date = sysdate,
229 		  last_updated_by = FND_GLOBAL.USER_ID,
230 		  last_update_login = FND_GLOBAL.LOGIN_ID
231       where line_item_id = lv_line_id;
232 
233    END IF;
234 
235    /*COMMIT;*/
236 
237 EXCEPTION
238 	WHEN OTHERS THEN
239 	x_return_code := -191266;
240         FND_MESSAGE.SET_NAME('XDP', 'XDP_API_WHEN_OTHERS');
241         FND_MESSAGE.SET_TOKEN('API_NAME', 'XDPDRCPB');
242         FND_MESSAGE.SET_TOKEN('ERROR_STRING', SQLERRM);
243         x_error_description := FND_MESSAGE.GET;
244 
245 END Process_DRC_Order;
246 
247  /*
248     Task validation
249  */
250 PROCEDURE Validate_Task(
251 	p_workitem_id in number,
252 	x_workitem_name OUT NOCOPY VARCHAR2,
253 	return_code OUT NOCOPY number,
254 	error_description OUT NOCOPY varchar2)
255 IS
256   lv_id number;
257   lv_exists  varchar2(1) := 'N';
258   lv_type varchar2(80);
259 BEGIN
260    return_code := 0;
261    begin
262    	select
263      workitem_name, wi_type_code
264 	into
265 	 x_workitem_name,lv_type
266    from
267     xdp_workitems wim
268    where
269      wim.workitem_id = p_workitem_id;
270    	if lv_type not in ('STATIC','DYNAMIC') then
271 	 return_code := -191272;
272      FND_MESSAGE.SET_NAME('XDP', 'XDP_WI_CONFIG_ERROR');
273      FND_MESSAGE.SET_TOKEN('WORK_ITEM_NAME', x_workitem_name);
274      error_description := FND_MESSAGE.GET;
275        return;
276 	end if;
277    exception
278     when no_data_found then
279       return_code := -191273;
280       FND_MESSAGE.SET_NAME('XDP', 'XDP_INVALID_WORKITEM_ID');
281       error_description := FND_MESSAGE.GET;
282       return;
283    end;
284 
285    return;
286 
287 EXCEPTION
288    WHEN OTHERS THEN
289      return_code := -191266;
290      FND_MESSAGE.SET_NAME('XDP', 'XDP_API_WHEN_OTHERS');
291      FND_MESSAGE.SET_TOKEN('API_NAME', 'XDPDRCPB');
292      FND_MESSAGE.SET_TOKEN('ERROR_STRING', SQLERRM);
293      error_description := FND_MESSAGE.GET;
294 END Validate_Task;
295 
296 /*
297    execute workitem in a synchronous mode
298 */
299 
300 PROCEDURE Execute_Workitem_Sync(
301 	p_workitem_instance_id in number,
302 	return_code OUT NOCOPY number,
303 	error_description OUT NOCOPY varchar2)
304  IS
305    cursor lc_fa_map is
306     select
307 	wfg.fulfillment_action_id,
308 	wfg.provisioning_seq
309     from
310       xdp_wi_fa_mapping wfg,
311       XDP_FULFILL_WORKLIST fwt
312     where
313       fwt.workitem_id = wfg.workitem_id and
314       fwt.workitem_instance_id = p_workitem_instance_id
315     order by wfg.provisioning_seq;
316 
317    cursor lc_fa_list is
318     select fa_instance_id
319     from xdp_fa_runtime_list
320     where
321       workitem_instance_id = p_workitem_instance_id;
322 
323    lv_proc varchar2(80);
324    lv_type  varchar2(40);
325    lv_fa_id number;
326    lv_order_id number;
327    lv_line_item_id number;
328    lv_wi varchar2(80);
329    lv_fa_fail BOOLEAN := FALSE;
330    lv_ret number;
331    lv_str varchar2(4000);
332    -- lv_MessageList XDP_TYPES.MESSAGE_TOKEN_LIST;
333    lv_ref_id number := 0;
334 
335    x_parameters varchar2(4000);
336  BEGIN
337    return_code := 0;
338    select
339 	wim.wi_type_code,
340 	wim.fa_exec_map_proc,
341     fwt.order_id,
342     wim.workitem_name,
343 	fwt.line_item_id
344    into
345    	lv_type,
346 	lv_proc,
347 	lv_order_id,
348     lv_wi,
349 	lv_line_item_id
350    from
351      xdp_workitems wim,
352      XDP_FULFILL_WORKLIST fwt
353    where
354      wim.workitem_id = fwt.workitem_id and
355      fwt.workitem_instance_id = p_workitem_instance_id;
356 
357    if lv_type = 'STATIC' then
358       for lv_fa_rec in lc_fa_map loop
359         lv_fa_id := XDP_ENG_UTIL.Add_FA_toWI(
360 		p_wi_instance_id => p_workitem_instance_id,
361 		p_fulfillment_action_id => lv_fa_rec.fulfillment_action_id);
362       end loop;
363    elsif lv_proc is NOT NULL then
364      XDP_UTILITIES.CallFAMapProc(
365 		p_procedure_name => lv_proc,
366           	p_order_id => lv_order_id,
367           	p_line_item_id => lv_line_item_id,
368           	p_wi_instance_id => p_workitem_instance_id,
369           	p_return_code => return_code,
370           	p_error_description => error_description);
371      if return_code <> 0 then
372        -- lv_MessageList(1).MESSAGE_TOKEN_NAME := 'ERROR_STRING';
373        -- lv_MessageList(1).MESSAGE_TOKEN_VALUE := error_description;
374 
375 	-- Changed - sacsharm - 11.5.6 ErrorHandling
376        -- XDP_ERRORS_PKG.Set_Message(p_message_name => 'XDP_WI_PROV_ERROR',
377        --                              p_message_ref_id => lv_ref_id,
378        --                              p_message_param_list => lv_MessageList,
379        --                              p_appl_name => 'XDP',
380        --                              p_sql_code => lv_ret,
381        --                              p_sql_desc => lv_str);
382 
383 	x_parameters := 'ERROR_STRING='||error_description||'#XDP#';
384 	XDP_ERRORS_PKG.Set_Message(p_object_type => 'WORKITEM',
385 			     p_object_key => p_workitem_instance_id,
386 			     p_message_name => 'XDP_WI_PROV_ERROR',
387                              p_message_parameters => x_parameters);
388 
389      	UPDATE XDP_FULFILL_WORKLIST
390      	set status_code = 'ERROR',
391 	   	  -- error_ref_id = lv_ref_id,
392 		  last_update_date = sysdate,
393 		  last_updated_by = FND_GLOBAL.USER_ID,
394 		  last_update_login = FND_GLOBAL.LOGIN_ID
395      	where
396 	 workitem_instance_id = p_workitem_instance_id;
397      	/*COMMIT;*/
398 
399 	 return;
400      end if;
401    else
402 	return_code := -191272;
403         FND_MESSAGE.SET_NAME('XDP', 'XDP_WI_CONFIG_ERROR');
407         -- lv_MessageList(1).MESSAGE_TOKEN_VALUE := error_description;
404         FND_MESSAGE.SET_TOKEN('WORK_ITEM_NAME', lv_wi);
405         error_description := FND_MESSAGE.GET;
406         -- lv_MessageList(1).MESSAGE_TOKEN_NAME := 'ERROR_STRING';
408 
409 	-- Changed - sacsharm - 11.5.6 ErrorHandling
410        -- XDP_ERRORS_PKG.Set_Message(p_message_name => 'XDP_WI_PROV_ERROR',
411        --                              p_message_ref_id => lv_ref_id,
412        --                              p_message_param_list => lv_MessageList,
413        --                              p_appl_name => 'XDP',
414        --                              p_sql_code => lv_ret,
415        --                              p_sql_desc => lv_str);
416 
417 	x_parameters := 'ERROR_STRING='||error_description||'#XDP#';
418 	XDP_ERRORS_PKG.Set_Message(p_object_type => 'WORKITEM',
419 			     p_object_key => p_workitem_instance_id,
420 			     p_message_name => 'XDP_WI_PROV_ERROR',
421                              p_message_parameters => x_parameters);
422 
423      	UPDATE XDP_FULFILL_WORKLIST
424      	set status_code = 'ERROR',
425 	   	--	error_ref_id = lv_ref_id,
426 		  last_update_date = sysdate,
427 		  last_updated_by = FND_GLOBAL.USER_ID,
428 		  last_update_login = FND_GLOBAL.LOGIN_ID
429      	where
430 	 workitem_instance_id = p_workitem_instance_id;
431      	/*COMMIT;*/
432 
433       return;
434    end if;
435 
436    for lv_fa_rec2 in lc_fa_list loop
437 	execute_fa_sync(
438 		p_fa_instance_id => lv_fa_rec2.fa_instance_id,
439 		return_code => lv_ret,
440 		error_description => lv_str);
441      if lv_ret <> 0 then
442 	lv_fa_fail := TRUE;
443      end if;
444    end loop;
445 
446    IF lv_fa_fail = TRUE THEN
447 	update XDP_FULFILL_WORKLIST
448       set status_code = 'ERROR',
449 		  state = 'COMPLETED',
450 		  last_update_date = sysdate,
451 		  last_updated_by = FND_GLOBAL.USER_ID,
452 		  last_update_login = FND_GLOBAL.LOGIN_ID
453       where workitem_instance_id = p_workitem_instance_id;
454    ELSE
455 	update XDP_FULFILL_WORKLIST
456       set status_code = 'COMPLETED',
457 		  state = 'COMPLETED',
458 		  last_update_date = sysdate,
459 		  last_updated_by = FND_GLOBAL.USER_ID,
460 		  last_update_login = FND_GLOBAL.LOGIN_ID
461       where workitem_instance_id = p_workitem_instance_id;
462    END IF;
463    /*COMMIT;*/
464 
465  EXCEPTION
466    WHEN OTHERS THEN
467      return_code := -191266;
468      FND_MESSAGE.SET_NAME('XDP', 'XDP_API_WHEN_OTHERS');
469      FND_MESSAGE.SET_TOKEN('API_NAME', 'XDPDRCPB');
470      FND_MESSAGE.SET_TOKEN('ERROR_STRING', SQLERRM);
471      error_description := FND_MESSAGE.GET;
472      -- lv_MessageList(1).MESSAGE_TOKEN_NAME := 'ERROR_STRING';
473      -- lv_MessageList(1).MESSAGE_TOKEN_VALUE := error_description;
474 
475 	-- Changed - sacsharm - 11.5.6 ErrorHandling
476      -- XDP_ERRORS_PKG.Set_Message(p_message_name => 'XDP_WI_PROV_ERROR',
477      --                                p_message_ref_id => lv_ref_id,
478      --                                p_message_param_list => lv_MessageList,
479      --                                p_appl_name => 'XDP',
480      --                                p_sql_code => lv_ret,
481      --                                p_sql_desc => lv_str);
482 
483 	x_parameters := 'ERROR_STRING='||error_description||'#XDP#';
484 	XDP_ERRORS_PKG.Set_Message(p_object_type => 'WORKITEM',
485 			     p_object_key => p_workitem_instance_id,
486 			     p_message_name => 'XDP_WI_PROV_ERROR',
487                              p_message_parameters => x_parameters);
488 
489      	UPDATE XDP_FULFILL_WORKLIST
490      	set status_code = 'ERROR',
491 		  state = 'COMPLETED',
492 		  last_update_date = sysdate,
493 		  last_updated_by = FND_GLOBAL.USER_ID,
494 		  last_update_login = FND_GLOBAL.LOGIN_ID
495 	   -- ,error_ref_id = lv_ref_id
496      	where
497 	 workitem_instance_id = p_workitem_instance_id;
498      	/*COMMIT;*/
499 END Execute_Workitem_Sync;
500 
501 /*
502    execute FA in a synchronous mode
503 */
504 PROCEDURE Execute_FA_Sync(
505 	p_fa_instance_id in number,
506 	return_code OUT NOCOPY number,
507 	error_description OUT NOCOPY varchar2)
508  IS
509    lv_fe_name varchar2(80);
510    lv_fe_id  number;
511    lv_fa_id number;
512    lv_fetype_id number;
513    lv_fetype varchar2(80);
514    lv_sw_generic varchar2(80);
515    lv_adapter varchar2(80);
516    lv_proc varchar2(80);
517    lv_channel  varchar2(80);
518    lv_order_id number;
519    lv_wi_instance_id number;
520    lv_ret number;
521    lv_str varchar2(300);
522    -- lv_MessageList XDP_TYPES.MESSAGE_TOKEN_LIST;
523    lv_ref_id number := 0;
524    cursor lc_channels(l_fe_id number) is
525     select channel_name,adapter_status
526     from XDP_ADAPTER_REG
527     where adapter_status = 'IDLE' and
528 	    usage_code = 'TEST' and
529 	    fe_id = l_fe_id;
530   lv_found_lock BOOLEAN := FALSE;
531   lv_found_channel BOOLEAN := FALSE;
532   resource_busy exception;
533   pragma exception_init(resource_busy, -00054);
534   lv_count number;
535   lv_line_item_id number;
536 
537    x_parameters varchar2(4000);
538  BEGIN
539    return_code := 0;
540    select
541        fe_routing_proc,
542        frt.workitem_instance_id,
543        fwt.order_id,
544        frt.fulfillment_action_id,
545   	 fwt.line_item_id
546    into
547      lv_proc,
548 	 lv_wi_instance_id,
549 	 lv_order_id,
550 	 lv_fa_id,
551 	 lv_line_item_id
552    from XDP_FULFILL_ACTIONS fan,
553 		xdp_fa_runtime_list frt,
554 		XDP_FULFILL_WORKLIST fwt
555    where
559 
556 	 fan.fulfillment_action_id = frt.fulfillment_action_id and
557 	 fwt.workitem_instance_id = frt.workitem_instance_id and
558 	 frt.fa_instance_id = p_fa_instance_id;
560    XDP_UTILITIES.CallFERoutingProc(
561 		p_procedure_name  => lv_proc,
562       	p_order_id	=> lv_order_id,
563       	p_line_item_id	=> lv_line_item_id,
564        	p_wi_instance_id 	=> lv_wi_instance_id,
565        	p_fa_instance_id => p_fa_instance_id,
566      	p_fe_name 	=> lv_fe_name,
567  		p_return_code => return_code,
568  	   	p_error_description  => error_description);
569 
570    IF return_code <> 0 THEN
571        -- lv_MessageList(1).MESSAGE_TOKEN_NAME := 'ERROR_STRING';
572        -- lv_MessageList(1).MESSAGE_TOKEN_VALUE := error_description;
573 
574 	-- Changed - sacsharm - 11.5.6 ErrorHandling
575        -- XDP_ERRORS_PKG.Set_Message(p_message_name => 'XDP_FA_PROV_ERROR',
576        --                              p_message_ref_id => lv_ref_id,
577        --                              p_message_param_list => lv_MessageList,
578        --                              p_appl_name => 'XDP',
579        --                              p_sql_code => lv_ret,
580        --                              p_sql_desc => lv_str);
581 
582 	x_parameters := 'ERROR_STRING='||error_description||'#XDP#';
583 	XDP_ERRORS_PKG.Set_Message(p_object_type => 'FA',
584 			     p_object_key => p_fa_instance_id,
585 			     p_message_name => 'XDP_FA_PROV_ERROR',
586                              p_message_parameters => x_parameters);
587 
588      UPDATE xdp_fa_runtime_list
589      set status_code = 'ERROR',
590 		  state = 'COMPLETED',
591 		  last_update_date = sysdate,
592 		  last_updated_by = FND_GLOBAL.USER_ID,
593 		  last_update_login = FND_GLOBAL.LOGIN_ID
594 	   -- , error_ref_id = lv_ref_id
595      where
596 	 fa_instance_id = p_fa_instance_id;
597      /*COMMIT;*/
598      return;
599    ELSE
600      XDP_ENGINE.Get_FE_ConfigInfo(
601 		lv_fe_name,
602 	      lv_fe_id,
603 		lv_fetype_id,
604 		lv_fetype,
605 		lv_sw_generic,
606 		lv_adapter);
607 
608      select fulfillment_proc
609      into   lv_proc
610      from xdp_fa_fulfillment_proc ffp,
611 		xdp_fe_sw_gen_lookup fsp
612      where
613 	 ffp.fulfillment_action_id = lv_fa_id and
614 	 ffp.fe_sw_gen_lookup_id = fsp.fe_sw_gen_lookup_id and
615 	 fsp.fetype_id = lv_fetype_id and
616        fsp.sw_generic = lv_sw_generic and
617        fsp.adapter_type = lv_adapter;
618 
619 
620     FOR lv_count IN 1..3 LOOP
621      FOR lv_channel_rec IN lc_channels(lv_fe_id) loop
622        lv_found_channel := TRUE;
623        begin
624          select channel_name
625          into lv_channel
626          from XDP_ADAPTER_REG
627          where channel_name = lv_channel_rec.channel_name and
628                adapter_status = 'IDLE' and
629                usage_code = 'TEST'
630          FOR UPDATE NOWAIT;
631          lv_found_lock := TRUE;
632          lv_found_channel := TRUE;
633          goto l_Outer;
634       exception
635         when resource_busy then
636            null;
637         when no_data_found then
638            lv_found_channel := FALSE;
639 		goto l_Outer;
640       end;
641      END LOOP;
642      if lv_found_channel = FALSE then
643 	  goto l_Outer;
644      else
645        dbms_lock.sleep(10);
646      end if;
647     END LOOP;
648 
649     <<l_Outer>>
650     IF lv_found_channel = FALSE THEN
651        -- lv_MessageList(1).MESSAGE_TOKEN_NAME := 'FE_NAME';
652        -- lv_MessageList(1).MESSAGE_TOKEN_VALUE := lv_fe_name;
653 
654 	-- Changed - sacsharm - 11.5.6 ErrorHandling
655        -- XDP_ERRORS_PKG.Set_Message(p_message_name => 'XDP_NO_TEST_CHANNEL',
656        --                              p_message_ref_id => lv_ref_id,
657        --                              p_message_param_list => lv_MessageList,
658        --                              p_appl_name => 'XDP',
659        --                              p_sql_code => lv_ret,
660        --                              p_sql_desc => lv_str);
661 
662 	x_parameters := 'FE_NAME='||lv_fe_name||'#XDP#';
663 	XDP_ERRORS_PKG.Set_Message(p_object_type => 'FA',
664 			     p_object_key => p_fa_instance_id,
665 			     p_message_name => 'XDP_NO_TEST_CHANNEL',
666                              p_message_parameters => x_parameters);
667 
668       UPDATE xdp_fa_runtime_list
669       set status_code = 'ERROR',
670 		  state = 'COMPLETED',
671 		  last_update_date = sysdate,
672 		  last_updated_by = FND_GLOBAL.USER_ID,
673 		  last_update_login = FND_GLOBAL.LOGIN_ID
674 	   -- ,error_ref_id = lv_ref_id
675       where
676 	 fa_instance_id = p_fa_instance_id;
677       /*COMMIT;*/
678       return;
679     ELSIF lv_found_lock = FALSE THEN
680        -- lv_MessageList(1).MESSAGE_TOKEN_NAME := 'FE_NAME';
681        -- lv_MessageList(1).MESSAGE_TOKEN_VALUE := lv_fe_name;
682 
683 	-- Changed - sacsharm - 11.5.6 ErrorHandling
684        -- XDP_ERRORS_PKG.Set_Message(p_message_name => 'XDP_TEST_CHANNEL_BUSY',
685        --                              p_message_ref_id => lv_ref_id,
686        --                              p_message_param_list => lv_MessageList,
687        --                              p_appl_name => 'XDP',
688        --                              p_sql_code => lv_ret,
689        --                              p_sql_desc => lv_str);
690 
691 	x_parameters := 'FE_NAME='||lv_fe_name||'#XDP#';
692 	XDP_ERRORS_PKG.Set_Message(p_object_type => 'FA',
693 			     p_object_key => p_fa_instance_id,
694 			     p_message_name => 'XDP_TEST_CHANNEL_BUSY',
695                              p_message_parameters => x_parameters);
696 
697       UPDATE xdp_fa_runtime_list
698       set status_code = 'ERROR',
702 		  last_update_login = FND_GLOBAL.LOGIN_ID
699 		  state = 'COMPLETED',
700 		  last_update_date = sysdate,
701 		  last_updated_by = FND_GLOBAL.USER_ID,
703 	   -- ,error_ref_id = lv_ref_id
704       where
705 	 fa_instance_id = p_fa_instance_id;
706       /*COMMIT;*/
707       return;
708     END IF;
709 
710 
711     XDP_UTILITIES.CallFulfillmentProc(
712 		p_procedure_name => lv_proc,
713       	p_order_id => lv_order_id,
714 		p_line_item_id => lv_line_item_id,
715       	p_wi_instance_id => lv_wi_instance_id,
716       	p_fa_instance_id => p_fa_instance_id,
717  		p_channel_name	=> lv_channel,
718  		p_fe_name	=>lv_fe_name,
719  		p_fa_item_type => NULL,
720  		p_fa_item_key  => NULL,
721       	p_return_code => return_code,
722       	p_error_description => error_description);
723     IF return_code = 0 THEN
724       UPDATE xdp_fa_runtime_list
725       set status_code = 'COMPLETED',
726 		  state = 'COMPLETED',
727 		  last_update_date = sysdate,
728 		  last_updated_by = FND_GLOBAL.USER_ID,
729 		  last_update_login = FND_GLOBAL.LOGIN_ID
730      where
731 	 fa_instance_id = p_fa_instance_id;
732      /*COMMIT;*/
733 
734     ELSE
735        -- lv_MessageList(1).MESSAGE_TOKEN_NAME := 'ERROR_STRING';
736        -- lv_MessageList(1).MESSAGE_TOKEN_VALUE := error_description;
737 
738 	-- Changed - sacsharm - 11.5.6 ErrorHandling
739        -- XDP_ERRORS_PKG.Set_Message(p_message_name => 'XDP_FA_PROV_ERROR',
740        --                              p_message_ref_id => lv_ref_id,
741        --                              p_message_param_list => lv_MessageList,
742        --                              p_appl_name => 'XDP',
743        --                              p_sql_code => lv_ret,
744        --                              p_sql_desc => lv_str);
745 
746 	x_parameters := 'ERROR_STRING='||error_description||'#XDP#';
747 	XDP_ERRORS_PKG.Set_Message(p_object_type => 'FA',
748 			     p_object_key => p_fa_instance_id,
749 			     p_message_name => 'XDP_FA_PROV_ERROR',
750                              p_message_parameters => x_parameters);
751 
752       UPDATE xdp_fa_runtime_list
753       set status_code = 'ERROR',
754 		  state = 'COMPLETED',
755 		  last_update_date = sysdate,
756 		  last_updated_by = FND_GLOBAL.USER_ID,
757 		  last_update_login = FND_GLOBAL.LOGIN_ID
758 	   -- ,error_ref_id = lv_ref_id
759       where
760 	 fa_instance_id = p_fa_instance_id;
761       /*COMMIT;*/
762     END IF;
763 
764    END IF;
765 
766 
767  EXCEPTION
768    WHEN OTHERS THEN
769      return_code := -191266;
770      FND_MESSAGE.SET_NAME('XDP', 'XDP_API_WHEN_OTHERS');
771      FND_MESSAGE.SET_TOKEN('API_NAME', 'XDPDRCPB');
772      FND_MESSAGE.SET_TOKEN('ERROR_STRING', SQLERRM);
773      error_description := FND_MESSAGE.GET;
774      -- lv_MessageList(1).MESSAGE_TOKEN_NAME := 'ERROR_STRING';
775      -- lv_MessageList(1).MESSAGE_TOKEN_VALUE := SQLERRM;
776 
777 	-- Changed - sacsharm - 11.5.6 ErrorHandling
778      -- XDP_ERRORS_PKG.Set_Message(p_message_name => 'XDP_FA_PROV_ERROR',
779      --                                p_message_ref_id => lv_ref_id,
780      --                                p_message_param_list => lv_MessageList,
781      --                                p_appl_name => 'XDP',
782      --                                p_sql_code => lv_ret,
783      --                                p_sql_desc => lv_str);
784 
785 	x_parameters := 'ERROR_STRING='||SQLERRM||'#XDP#';
786 	XDP_ERRORS_PKG.Set_Message(p_object_type => 'FA',
787 			     p_object_key => p_fa_instance_id,
788 			     p_message_name => 'XDP_FA_PROV_ERROR',
789                              p_message_parameters => x_parameters);
790 
791      UPDATE xdp_fa_runtime_list
792      set status_code = 'ERROR',
793 		  state = 'COMPLETED',
794 		  last_update_date = sysdate,
795 		  last_updated_by = FND_GLOBAL.USER_ID,
796 		  last_update_login = FND_GLOBAL.LOGIN_ID
797 	   -- ,error_ref_id = lv_ref_id
798      where
799 	 fa_instance_id = p_fa_instance_id;
800      /*COMMIT;*/
801  END Execute_FA_Sync;
802 
803 
804 
805 END XDP_DRC_UTIL_PVT;