DBA Data[Home] [Help]

PACKAGE BODY: APPS.WSH_U_TRACK

Source


1 PACKAGE BODY WSH_U_TRACK AS
2 /* $Header: WSHUTRKB.pls 120.0.12020000.4 2013/02/14 01:08:21 adagur ship $ */
3 
4 -- standard global constants
5 G_PKG_NAME      CONSTANT VARCHAR2(30)   := 'WSH_U_TRACK';
6 p_message_type	CONSTANT VARCHAR2(1) 	:= 'E';
7 
8 
9 
10 
11 
12 
13 -- -------------------------------------------------------------------
14 -- Start of comments
15 -- API name			: EnhancedTracking
16 -- Type				: public
17 -- Function			: compose the input string, call UPS APIs and parse
18 --                                the L_OUTPUT string, place them in the returning
19 --
20 -- Version			: Initial version 1.0
21 -- Notes
22 --
23 -- End of comments
24 
25 -- ---------------------------------------------------------------------
26 PROCEDURE EnhancedTracking
27         ( p_api_version                IN               NUMBER
28         , p_init_msg_list              IN               VARCHAR2
29         , x_return_status              OUT NOCOPY       VARCHAR2
30         , x_msg_count                  OUT NOCOPY       NUMBER
31         , x_msg_data                   OUT NOCOPY       VARCHAR2
32         , p_AppVersion                 IN		VARCHAR2
33         , p_AcceptLicenseAgreement     IN		VARCHAR2
34         , p_ResponseType               IN		VARCHAR2
35         , p_request_in                 IN               EnhancedTrackInRec
36         , x_track_header               OUT NOCOPY       TrackHeaderRec
37         , x_track_error                OUT NOCOPY       TrackErrorRec
38         , x_track_address              OUT NOCOPY       TrackAddressTblTyp
39         , x_multi_sum_header           OUT NOCOPY       MultiSumHdrTblTyp
40         , x_multi_sum_detail           OUT NOCOPY       MultiSumDtlTblTyp
41         , x_pkg_detail_segment         OUT NOCOPY       PkgDtlSegTblTyp
42         , x_pkg_progress               OUT NOCOPY       PkgProgressHdrRec
43         , x_activity_detail            OUT NOCOPY       ActivityDetailTblTyp)
44 IS
45 
46 -- standard version infermation
47    l_api_version        CONSTANT    NUMBER         := 1.0;
48    l_api_name           CONSTANT    VARCHAR2(30)   := 'EnhancedTracking';
49 
50    -- standard variables
51    l_return_status	VARCHAR2(1)      := FND_API.G_RET_STS_SUCCESS;
52    l_msg_count		NUMBER           := 0;
53    l_msg_data		VARCHAR2(2000)   := NULL;
54    l_msg_summary	VARCHAR2(2000)   := NULL;
55    l_msg_details	VARCHAR2(4000)   := NULL;
56    l_trk_request_in     EnhancedTrackInRec; --Added for Carrier Services Integration with Shipping project Bug 16095594
57 
58    /* --Commented for Carrier Services Integration with Shipping project Bug 16095594
59    -- L_UPS_URL VARCHAR2(200) := 'http://wwwapps.ups.com/etracking/tracking.cgi';
60    L_UPS_URL VARCHAR2(1000) := NULL;
61    L_INTERNET_PROXY VARCHAR2(1000) := NULL;
62 
63    l_boundary_string_start		NUMBER  := 0;
64    l_boundary_string_end			NUMBER  := 0;
65    l_boundary_string				VARCHAR2(100)		 := NULL;
66 
67    L_Content_Str_Len NUMBER					:= 0;
68    l_sub_str_len NUMBER := 0;
69    l_loop_counter_limit  NUMBER := 0;
70    l_remainder NUMBER := 0;
71    j NUMBER := 0;
72 
73    l_request_in EnhancedTrackInRec;
74 
75    L_INPUT_STR VARCHAR2(2000);
76    L_OUTPUT_STR VARCHAR2(10000);
77    l_output_data  utl_http.html_pieces;
78 
79    L_Track_Message VARCHAR2(500);
80 
81    L_Content_Type VARCHAR2(200);
82    L_Previous_Content_Type VARCHAR2(200);
83 
84    l_date_string VARCHAR2(8) := NULL;
85    l_time_string VARCHAR2(6) := NULL;
86 
87    L_Locate_boundary NUMBER := 1;
88    L_Locate_Str_Len  NUMBER := 1;
89    L_Locate_Str_Len_End NUMBER := 0;
90    L_Locate_Content  NUMBER :=1;
91    L_Locate_boundary_End NUMBER := 1;
92    L_Locate_Begin   NUMBER := 1;
93    L_Token_Start NUMBER := 1;
94    L_Token_End NUMBER := 0;
95 
96 
97    l_track_address_i BINARY_INTEGER	:= 0;
98    l_multi_sum_header_i BINARY_INTEGER		:= 0;
99    l_multi_sum_detail_i BINARY_INTEGER		:= 0;
100    l_pkg_detail_segment_i BINARY_INTEGER	:= 0;
101    l_activity_detail_i BINARY_INTEGER		:= 0;
102 
103 
104 
105    -- this is used to print the debug message only
106    l_outrec_index BINARY_INTEGER := 0;
107    l_char_index NUMBER;
108    l_find_error NUMBER := 0;
109    WSH_U_INPUT_PARAMETER 	exception;
110    WSH_U_CAR_URL				exception;
111    WSH_U_PROXY					exception;
112    WSH_U_APPVER				exception;
113    WSH_U_LICAGRE				exception;
114    WSH_U_RESTYP				exception;
115    WSH_U_INQNO					exception;
116    WSH_U_TYP_INQNO			exception;
117    WSH_U_NO_HOST			exception;
118    REQUEST_FAILED			exception;
119    INIT_FAILED			exception;
120  --End of Comment for Carrier Services Integration with Shipping project Bug 16095594 */
121 
122    --
123    l_debug_on BOOLEAN;
124    --
125    l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'ENHANCEDTRACKING';
126    --
127 BEGIN
128 
129    -- Standard call to check for call compatibility.
130    --
131    -- Debug Statements
132    --
133    --
134    l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
135    --
136    IF l_debug_on IS NULL
137    THEN
138       l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
139    END IF;
140    --
141    IF l_debug_on THEN
142       WSH_DEBUG_SV.push(l_module_name);
143       --
144       WSH_DEBUG_SV.log(l_module_name,'P_API_VERSION',P_API_VERSION);
145       WSH_DEBUG_SV.log(l_module_name,'P_INIT_MSG_LIST',P_INIT_MSG_LIST);
146       WSH_DEBUG_SV.log(l_module_name,'P_APPVERSION',P_APPVERSION);
147       WSH_DEBUG_SV.log(l_module_name,'P_ACCEPTLICENSEAGREEMENT',P_ACCEPTLICENSEAGREEMENT);
148       WSH_DEBUG_SV.log(l_module_name,'P_RESPONSETYPE',P_RESPONSETYPE);
149    END IF;
150 
151    --
152    IF NOT FND_API.compatible_api_call
153                 ( l_api_version
154                 , p_api_version
155                 , l_api_name
156                 , G_PKG_NAME)
157    THEN
158       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
159    END IF;
160 
161    -- Check p_init_msg_list
162    IF FND_API.to_boolean(p_init_msg_list)
163    THEN
164       FND_MSG_PUB.initialize;
165    END IF;
166 
167    -- initialize API return status to success
168    x_return_status := FND_API.G_RET_STS_SUCCESS;
169    x_msg_count 	:= 0;
170    x_msg_data 	:= NULL;
171 
172    -- program specific logic begins here
173    --Code starts here for Carrier Services Integration with Shipping project Bug 16095594
174    l_trk_request_in := p_request_in;
175 
176 
177    IF l_debug_on THEN
178       WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_CUSTOM_PUB.SHIPMENT_SERVICES',WSH_DEBUG_SV.C_PROC_LEVEL);
179       WSH_DEBUG_SV.logmsg(l_module_name,'InquiryNumber :'||l_trk_request_in.InquiryNumber);
180       WSH_DEBUG_SV.logmsg(l_module_name,'TypeOfInquiryNumber :'||l_trk_request_in.TypeOfInquiryNumber);
181       WSH_DEBUG_SV.logmsg(l_module_name,'InternalKey :'||l_trk_request_in.InternalKey);
182       WSH_DEBUG_SV.log(l_module_name,'Entity Called is '||l_trk_request_in.Entity);
183       WSH_DEBUG_SV.log(l_module_name,'EntityId is '||l_trk_request_in.Entity_Id);
184    END IF;
185 
186    wsh_custom_pub.trk_shipment_services
187                 ( p_request_in         => l_trk_request_in
188                 , x_track_address      => x_track_address
189                 , x_pkg_detail_segment => x_pkg_detail_segment
190                 , x_activity_detail    => x_activity_detail
191                 , x_msg_count          => l_msg_count
192                 , x_msg_data           => l_msg_data
193                 , x_return_status      => l_return_status);
194 
195 
196    IF l_return_status = FND_API.G_RET_STS_SUCCESS
197    THEN
198       x_return_status := l_return_status;
199       IF l_debug_on THEN
200          WSH_DEBUG_SV.logmsg(l_module_name,'Service Level is '||x_pkg_detail_segment(1).ServiceLevelDescription);
201          WSH_DEBUG_SV.logmsg(l_module_name,'City is '||x_track_address(1).City);
202          WSH_DEBUG_SV.logmsg(l_module_name,'State is '||x_track_address(1).StateProv);
203          WSH_DEBUG_SV.logmsg(l_module_name,'Country is '||x_track_address(1).Country);
204          WSH_DEBUG_SV.logmsg(l_module_name,'x_activity_detail(1).StatusType IS '||x_activity_detail(1).StatusType);
205       END IF;
206    ELSE
207       x_return_status := l_return_status;
208       x_msg_count := l_msg_count;
209       x_msg_data  := l_msg_data;
210       IF l_debug_on THEN
211          WSH_DEBUG_SV.logmsg(l_module_name,'x_return_status :'||x_return_status);
212          WSH_DEBUG_SV.logmsg(l_module_name,'x_msg_count :'||x_msg_count);
213          WSH_DEBUG_SV.logmsg(l_module_name,'x_msg_data :'||x_msg_data);
214       END IF;
215    END IF;
216 
217 /* --Commented for Carrier Services Integration with Shipping project Bug 16095594
218 		l_request_in := p_request_in;
219 
220 
221 		--
222 		-- Debug Statements
223 		--
224 		IF l_debug_on THEN
225 		    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.GET_CARRIER_API_URL',WSH_DEBUG_SV.C_PROC_LEVEL);
226 		END IF;
227 		--
228 		L_UPS_URL := WSH_U_UTIL.Get_Carrier_API_URL(
229 	 						p_api_version		=> 1.0,
230 							p_init_msg_list	=> FND_API.G_TRUE,
231 							x_return_status	=> l_return_status,
232 							x_msg_count       => l_msg_count,
233 							x_msg_data        => l_msg_data,
234 							p_Carrier_Name		=> 'UPS',
235 							p_API_Name		   => 'ENHANCED_TRACKING');
236 		if l_return_status <> FND_API.G_RET_STS_SUCCESS then
237 				raise WSH_U_CAR_URL;
238 		end if;
239 
240 		L_INPUT_STR := L_UPS_URL || '?';
241 
242 		-- ---------------------------------------------------------------
243 		-- UPS standard parameters: AppVersion
244 		--                          AcceptLicenseAgreement
245 		--	     							 ResponseType
246 		-- ---------------------------------------------------------------
247 
248 		-- AppVersion ---------------------------------------------------------
249       if( p_AppVersion IS NULL) then
250 			raise WSH_U_APPVER;
251 			-- l_request_in.AppVersion := '1.0';
252       end if;
253 		L_INPUT_STR := L_INPUT_STR || 'AppVersion' ||'='|| p_AppVersion;
254 
255 		-- AcceptLicenseAgreement ---------------------------------------------
256       if( p_AcceptLicenseAgreement IS NULL) then
257 			raise WSH_U_LICAGRE;
258 			-- l_request_in.AcceptLicenseAgreement := 'YES';
259       end if;
260 		L_INPUT_STR := L_INPUT_STR || '&' ||'AcceptUPSLicenseAgreement'||'=' || p_AcceptLicenseAgreement;
261 
262 		-- ResponseType --------------------------------------------------------
263       if( p_ResponseType IS NULL) then
264 			raise WSH_U_RESTYP;
265 			-- l_request_in.ResponseType := 'application/x-ups-tracking-full-response';
266       end if;
267       L_INPUT_STR := L_INPUT_STR || '&' || 'ResponseType' ||'='|| p_ResponseType;
268 
269 		-- ---------------------------------------------------------------
270 		-- Program specific parameters start here
271 		-- ---------------------------------------------------------------
272 		-- Inquiry Number ------------------------------------------------
273 		if(l_request_in.InquiryNumber IS NULL) then
274 			-- l_request_in.InquiryNumber := '3';
275 			raise WSH_U_INQNO;
276 		end if;
277 
278 
279 		L_INPUT_STR := L_INPUT_STR || '&' || 'InquiryNumber' ||'='|| l_request_in.InquiryNumber;
280 
281 		-- Type of Inquiry Number --------------------------------------------
282 		if(l_request_in.TypeOfInquiryNumber IS NULL) then
283 			-- l_request_in.TypeOfInquiryNumber := 'T';
284 			raise WSH_U_TYP_INQNO;
285 		end if;
286 		L_INPUT_STR := L_INPUT_STR || '&' || 'TypeOfInquiryNumber'||'=' || l_request_in.TypeOfInquiryNumber;
287 
288 		-- if l_request_in is in (M, D, P), it is a follow up request, internalKey is required.
289 		if((l_request_in.TypeOfInquiryNumber = 'M' OR
290 			l_request_in.TypeOfInquiryNumber = 'D' OR
291 			l_request_in.TypeOfInquiryNumber = 'P')AND
292 			l_request_in.InternalKey is NULL) THEN
293 			raise WSH_U_INPUT_PARAMETER;
294 		end if;
295 
296 		-- -------------------------------------------------------------------
297 		-- INternal Key is required for subsuccessive request, ignored in the
298 		-- initial request
299 		-- -------------------------------------------------------------------
300 		if(l_request_in.InternalKey IS NOT NULL) then
301 			L_INPUT_STR := L_INPUT_STR || '&' || 'InternalKey' ||'='|| l_request_in.InternalKey;
302 		end if;
303 
304 
305 		-- Sender Shipper Number ------------------------------------------------
306 		if(l_request_in.SenderShipperNumber IS NOT NULL) then
307 			L_INPUT_STR := L_INPUT_STR || '&' || 'SenderShipperNumber' ||'='|| l_request_in.SenderShipperNumber;
308 		end if;
309 
310 
311 		-- From Pickup Date -----------------------------------------------------
312 		if(l_request_in.FromPickupDate IS NOT NULL) then
313     		L_INPUT_STR := L_INPUT_STR || '&' || 'FromPickupDate' ||'='|| TO_CHAR(l_request_in.FromPickupDate, 'YYYYMMDD');
314 		end if;
315 
316 
317 		-- To Pickup Date -------------------------------------------------------
318 		if(l_request_in.ToPickupDate IS NOT NULL) then
319     		L_INPUT_STR := L_INPUT_STR || '&' || 'ToPickupDate' ||'='|| TO_CHAR(l_request_in.ToPickupDate, 'YYYYMMDD');
320 		end if;
321 
322 
323 		-- Destination Postal Code ----------------------------------------------
324 		if(l_request_in.DestinationPostalCode IS NOT NULL) then
325     		L_INPUT_STR := L_INPUT_STR || '&' || 'DestinationPostalCode'||'=' || l_request_in.DestinationPostalCode;
326 		end if;
327 
328 
329 		-- Destination Country --------------------------------------------------
330 		if(l_request_in.DestinationCountry IS NOT NULL) then
331     		L_INPUT_STR := L_INPUT_STR || '&' || 'DestinationCountry'||'=' || l_request_in.DestinationCountry;
332 		end if;
333 
334 		L_INPUT_STR := REPLACE(L_INPUT_STR, ' ', '+');
335 
336 		-- DBMS_OUTPUT.PUT_LINE('========== request begin =========');
337 	   -- DBMS_OUTPUT.PUT_LINE(SUBSTR(L_INPUT_STR,0,50));
338 		-- DBMS_OUTPUT.PUT_LINE(SUBSTR(L_INPUT_STR,51,50));
339 		-- DBMS_OUTPUT.PUT_LINE(SUBSTR(L_INPUT_STR,101,50));
340 		-- DBMS_OUTPUT.PUT_LINE(SUBSTR(L_INPUT_STR,151,50));
341 		-- DBMS_OUTPUT.PUT_LINE(SUBSTR(L_INPUT_STR,201,50));
342 		-- DBMS_OUTPUT.PUT_LINE(SUBSTR(L_INPUT_STR,251,50));
343 		-- DBMS_OUTPUT.PUT_LINE('========== request end =========');
344 
345 		-- clear variables before calling subroutine
346 		l_return_status	:= FND_API.G_RET_STS_SUCCESS;
347 		l_msg_count			:= 0;
348 		l_msg_data			:= NULL;
349 
350 
351 	 	-- get proxy server URL
352 		--
353 		-- Debug Statements
354 		--
355 		IF l_debug_on THEN
356 		    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.GET_PROXY',WSH_DEBUG_SV.C_PROC_LEVEL);
357 		END IF;
358 		--
359 		L_INTERNET_PROXY := WSH_U_UTIL.Get_PROXY(
360 	 					p_api_version			=> 1.0,
361 						p_init_msg_list		=> FND_API.G_TRUE,
362 						x_return_status		=> l_return_status,
363 						x_msg_count				=> l_msg_count,
364 						x_msg_data				=> l_msg_data);
365 
366 		if l_return_status <> FND_API.G_RET_STS_SUCCESS then
367 				raise WSH_U_PROXY;
368 		end if;
369 
370 		-- send request to UPS site
371 		if L_INTERNET_PROXY is not NULL then
372 	   		l_output_data := utl_http.request_pieces(L_INPUT_STR,100,L_INTERNET_PROXY);
373 		else
374 	   		l_output_data := utl_http.request_pieces(L_INPUT_STR,100);
375 		end if;
376 		-- when no response is received from a request to a given URL
377 		-- then a formatted HTML error message may be returned, it contains the
378 		-- following error message
379 		l_find_error := INSTR(l_output_data(1), 'Can''t locate remote host');
380 		if l_find_error <> 0 then
381 		   raise WSH_U_NO_HOST;
382 		end if;
383 
384 
385 		-- It is only good for up to 100 iteration else it will fail.
386 		-- DBMS_OUTPUT.PUT_LINE('======= result begin =============');
387 		FOR i in 1 .. l_output_data.count LOOP
388 				L_OUTPUT_STR := L_OUTPUT_STR || l_output_data(i);
389 				-- DBMS_OUTPUT.PUT_LINE(SUBSTR(l_output_data(i), 1, 250));
390 				-- DBMS_OUTPUT.PUT_LINE(SUBSTR(l_output_data(i), 251, 250));
391 				-- DBMS_OUTPUT.PUT_LINE(SUBSTR(l_output_data(i), 501, 250));
392 				-- DBMS_OUTPUT.PUT_LINE(SUBSTR(l_output_data(i), 751, 250));
393 				-- DBMS_OUTPUT.PUT_LINE(SUBSTR(l_output_data(i), 1001, 250));
394 				-- DBMS_OUTPUT.PUT_LINE(SUBSTR(l_output_data(i), 1251, 250));
395 				-- DBMS_OUTPUT.PUT_LINE(SUBSTR(l_output_data(i), 1501, 250));
396 				-- DBMS_OUTPUT.PUT_LINE(SUBSTR(l_output_data(i), 1751, 250));
397 
398 /*				l_sub_str_len := length(l_output_data(i));
399 				l_loop_counter_limit := l_sub_str_len / 250;
400 				l_remainder :=     MOD(l_sub_str_len,250);
401 				j := 0;
402 				DBMS_OUTPUT.PUT_LINE('******* Inner loop ********');
403 				loop
404 					if j < l_loop_counter_limit then
405 					   if l_remainder <> l_sub_str_len then
406 						 	DBMS_OUTPUT.PUT_LINE(SUBSTR(l_output_data(i), j*250+1, l_remainder));
407 							exit;
408 						else
409 							exit;
410 						end if;
411 					else
412 						DBMS_OUTPUT.PUT_LINE(SUBSTR(l_output_data(i), j*250+1, 250));
413 						j := j+1;
414 					end if;
415 
416 				end loop;
417 				DBMS_OUTPUT.PUT_LINE('******* Inner loop ********');
418 
419 				-- EXIT WHEN i = 100;
420 		END LOOP;
421 		-- DBMS_OUTPUT.PUT_LINE('========== result end ===========');
422     	l_boundary_string_start		:= INSTR(L_OUTPUT_STR, 'boundary=', 1 , 1);
423 		if l_boundary_string_start <> 0 then
424     		l_boundary_string_start		:= l_boundary_string_start + 9;
425 			-- l_boundary_string_end	:= INSTR(L_OUTPUT_STR, '--', l_boundary_string_start,1);
426 			l_boundary_string_end		:= INSTR(L_OUTPUT_STR, FND_GLOBAL.LOCAL_CHR(13), l_boundary_string_start,1);
427 			l_boundary_string				:= SUBSTR(L_OUTPUT_STR,
428 													l_boundary_string_start ,
429 	 												l_boundary_string_end - l_boundary_string_start);
430 		else
431 
432 			l_boundary_string		:= 'UPSBOUNDARYUPS';
433 		end if;
434 		l_boundary_string := '--' || l_boundary_string;
435 		-- DBMS_OUTPUT.PUT_LINE('Boundary String:'|| l_boundary_string);
436 
437 
438 
439 		LOOP
440 
441  				L_Locate_boundary :=INSTR(L_OUTPUT_STR, l_boundary_string ,L_Locate_boundary,1);
442 				L_Locate_Content := INSTR(L_OUTPUT_STR,'Content-type',L_Locate_boundary,1);
443 				-- DBMS_OUTPUT.PUT_LINE('LOCATE CONTENT IS************'||to_char(L_Locate_Content));
444 				L_Locate_Str_Len  := INSTR(L_OUTPUT_STR, 'Content-length',L_Locate_boundary,1);
445 				-- DBMS_OUTPUT.PUT_LINE('LOCATE STR IS************'||to_char(L_Locate_Str_Len));
446     			L_Locate_Begin   := INSTR(L_OUTPUT_STR,'UPSOnLine',L_Locate_boundary,1);
447 				-- DBMS_OUTPUT.PUT_LINE('LOCATE BEGIN IS************'||to_char(L_Locate_Begin));
448 				L_Locate_boundary_End := INSTR(L_OUTPUT_STR, l_boundary_string ,L_Locate_boundary,2);
449 				-- DBMS_OUTPUT.PUT_LINE('LOCATE boundary END************'||to_char(L_Locate_boundary_End));
450 				IF(L_Locate_boundary_End > L_Locate_Begin) THEN
451 
452 				-- DBMS_OUTPUT.PUT_LINE('l_outrec_index BEGIN:' || to_char(l_outrec_index));
453      			l_outrec_index := l_outrec_index + 1;
454 				-- DBMS_OUTPUT.PUT_LINE('l_outrec_index END:' || to_char(l_outrec_index));
455 
456 
457 				-- Get Content-length
458 
459 				L_Locate_Str_Len_End := INSTR(L_OUTPUT_STR, FND_GLOBAL.LOCAL_CHR(13), L_Locate_Str_Len, 1);
460 				L_Content_Str_Len := TO_NUMBER(SUBSTR(L_OUTPUT_STR,(L_Locate_Str_Len+16),L_Locate_Str_Len_End - L_Locate_Str_Len - 16));
461 
462 				-- DBMS_OUTPUT.PUT_LINE('CONTENT STR LENGTH IS ***********'||to_char(L_Content_Str_Len));
463 				L_Content_Type := SUBSTR(L_OUTPUT_STR,(L_Locate_Content + LENGTH('Content-type: application/')),(L_Locate_Str_Len -  (L_Locate_Content + LENGTH('Content-type: application/'))));
464 
465 				L_Track_Message := SUBSTR(L_OUTPUT_STR, L_Locate_Begin, L_Content_Str_Len);
466 				-- DBMS_OUTPUT.put_line('Message Is:'||L_Track_Message);
467 				-- DBMS_OUTPUT.PUT_LINE('CONTENT_TYPE IS ************'||L_Content_Type||'*********');
468 
469 				if(SUBSTR(L_Content_Type,1,LENGTH('x-ups-tracking-full-response')) = 'x-ups-tracking-full-response') then
470 					-- DBMS_OUTPUT.PUT_LINE('===<begin> === x-ups-tracking-full-response ===');
471 					L_Token_Start := 0;
472 					L_Token_End := 0;
473 
474 					L_Previous_Content_Type := 'x-ups-tracking-full-response';
475 
476 					--
477 					-- Debug Statements
478 					--
479 					IF l_debug_on THEN
480 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
481 					END IF;
482 					--
483 					x_track_header.UPSOnLine :=
484 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
485 					--
486 					-- Debug Statements
487 					--
488 					IF l_debug_on THEN
489 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
490 					END IF;
491 					--
492 					x_track_header.AppVersion :=
493 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message, L_Token_Start,L_Token_End));
494 					--
495 					-- Debug Statements
496 					--
497 					IF l_debug_on THEN
498 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
499 					END IF;
500 					--
501 					x_track_header.TypeofResponse :=
502 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
503 					--
504 					-- Debug Statements
505 					--
506 					IF l_debug_on THEN
507 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
508 					END IF;
509 					--
510 					x_track_header.InquiryNumber :=
511 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
512 					--
513 					-- Debug Statements
514 					--
515 					IF l_debug_on THEN
516 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
517 					END IF;
518 					--
519 					x_track_header.TypeOfInquiryNumber :=
520 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
521 					--
522 					-- Debug Statements
523 					--
524 					IF l_debug_on THEN
525 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
526 					END IF;
527 					--
528 					x_track_header.SenderShiperNumber :=
529 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
530 					--
531 					-- Debug Statements
532 					--
533 					IF l_debug_on THEN
534 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
535 					END IF;
536 					--
537 					x_track_header.InternalKey :=
538 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
539 					--
540 					-- Debug Statements
541 					--
542 					IF l_debug_on THEN
543 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
544 					END IF;
545 					--
546 					x_track_header.FromPickupDate :=
547 							TO_DATE(WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End), 'YYYYMMDD');
548 					--
549 					-- Debug Statements
550 					--
551 					IF l_debug_on THEN
552 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
553 					END IF;
554 					--
555 					x_track_header.ToPickupDate :=
556 							TO_DATE(WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End), 'YYYYMMDD');
557 					--
558 					-- Debug Statements
559 					--
560 					IF l_debug_on THEN
561 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
562 					END IF;
563 					--
564 					x_track_header.DestinationPostalCode :=
565 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
566 					-- DBMS_OUTPUT.put_line('PostalCode:'||x_track_header.DestinationPostalCode);
567 					--
568 					-- Debug Statements
569 					--
570 					IF l_debug_on THEN
571 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
572 					END IF;
573 					--
574 					x_track_header.DestinationCountry :=
575 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
576 					-- DBMS_OUTPUT.put_line('Country:'||x_track_header.DestinationCountry);
577 
578 					-- DBMS_OUTPUT.PUT_LINE('===<end> === x-ups-tracking-full-response ===');
579 
580 				elsif(SUBSTR(L_Content_Type,1,LENGTH('x-ups-error')) = 'x-ups-error') then
581 					-- DBMS_OUTPUT.PUT_LINE('===<begin> === x-ups-error ===');
582 					L_Token_Start := 0;
583 					L_Token_End := 0;
584 
585 					L_Previous_Content_Type := 'x-ups-error';
586 
587 					--
588 					-- Debug Statements
589 					--
590 					IF l_debug_on THEN
591 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
592 					END IF;
593 					--
594 					x_track_error.UPSOnLine :=
595 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
596 					--
597 					-- Debug Statements
598 					--
599 					IF l_debug_on THEN
600 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
601 					END IF;
602 					--
603 					x_track_error.AppVersion :=
604 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message, L_Token_Start,L_Token_End));
605 					--
606 					-- Debug Statements
607 					--
608 					IF l_debug_on THEN
609 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
610 					END IF;
611 					--
612 					x_track_error.ReturnCode :=
613 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message, L_Token_Start,L_Token_End));
614 
615 					--
616 					-- Debug Statements
617 					--
618 					IF l_debug_on THEN
619 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
620 					END IF;
621 					--
622 					x_track_error.MessageText :=
623 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
624 					x_track_error.MessageNumber := SUBSTR(x_track_error.MessageText, 1,4 );
625 					x_track_error.MessageText := SUBSTR(x_track_error.MessageText,
626 																	5,
627 																	LENGTH(x_track_error.MessageText) - 4);
628 
629 					x_msg_count := 1;
630 					x_msg_data := 'Message ' || x_track_error.MessageNumber
631 							|| ': ' || x_track_error.MessageText;
632 					x_return_status := FND_API.G_RET_STS_ERROR;
633 
634 					-- DBMS_OUTPUT.PUT_LINE('===<end> === x-ups-error ===');
635 				elsif(SUBSTR(L_Content_Type,1,LENGTH('x-ups-address')) = 'x-ups-address') then
636 					-- DBMS_OUTPUT.PUT_LINE('===<begin> === x-ups-address ===');
637 
638 					L_Token_Start := 0;
639 					L_Token_End := 0;
640 
641 
642 					l_track_address_i := l_track_address_i + 1;
643 
644 					if(L_Previous_Content_Type = 'x-ups-tracking-multipiece-summary-hdr') then
645 						x_multi_sum_header(l_multi_sum_header_i).ConsigneeAddressIndex := l_track_address_i;
646 					elsif(L_Previous_Content_Type = 'x-ups-tracking-package-detail-hdr') then
647 						x_pkg_detail_segment(l_pkg_detail_segment_i).ConsigneeAddressIndex := l_track_address_i;
648 					elsif(L_Previous_Content_Type = 'x-ups-tracking-activity-detail') then
649 						x_activity_detail(l_activity_detail_i).ActivityAddressIndex := l_track_address_i;
650 					end if;
651 
652 					--L_Previous_Content_Type :=  'x-ups-address';
653 
654 	    			--
655 	    			-- Debug Statements
656 	    			--
657 	    			IF l_debug_on THEN
658 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
659 	    			END IF;
660 	    			--
661 	    			x_track_address(l_track_address_i).UPSOnLine :=
662 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
663 	    			--
664 	    			-- Debug Statements
665 	    			--
666 	    			IF l_debug_on THEN
667 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
668 	    			END IF;
669 	    			--
670 	    			x_track_address(l_track_address_i).AppVersion :=
671 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message, L_Token_Start,L_Token_End));
672 	    			--
673 	    			-- Debug Statements
674 	    			--
675 	    			IF l_debug_on THEN
676 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
677 	    			END IF;
678 	    			--
679 	    			x_track_address(l_track_address_i).TypeOfAddress :=
680 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
681 	    			--
682 	    			-- Debug Statements
683 	    			--
684 	    			IF l_debug_on THEN
685 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
686 	    			END IF;
687 	    			--
688 	    			x_track_address(l_track_address_i).Name :=
689 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
690 	    			--
691 	    			-- Debug Statements
692 	    			--
693 	    			IF l_debug_on THEN
694 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
695 	    			END IF;
696 	    			--
697 	    			x_track_address(l_track_address_i).Address1 :=
698 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
699 	    			--
700 	    			-- Debug Statements
701 	    			--
702 	    			IF l_debug_on THEN
703 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
704 	    			END IF;
705 	    			--
706 	    			x_track_address(l_track_address_i).Address2 :=
707 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
708 	    			--
709 	    			-- Debug Statements
710 	    			--
711 	    			IF l_debug_on THEN
712 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
713 	    			END IF;
714 	    			--
715 	    			x_track_address(l_track_address_i).Address3 :=
716 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
717 	    			--
718 	    			-- Debug Statements
719 	    			--
720 	    			IF l_debug_on THEN
721 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
722 	    			END IF;
723 	    			--
724 	    			x_track_address(l_track_address_i).City :=
725 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
726 	    			--
727 	    			-- Debug Statements
728 	    			--
729 	    			IF l_debug_on THEN
730 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
731 	    			END IF;
732 	    			--
733 	    			x_track_address(l_track_address_i).StateProv :=
734 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
735 	    			--
736 	    			-- Debug Statements
737 	    			--
738 	    			IF l_debug_on THEN
739 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
740 	    			END IF;
741 	    			--
742 	    			x_track_address(l_track_address_i).PostalCode :=
743 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
744 	    			--
745 	    			-- Debug Statements
746 	    			--
747 	    			IF l_debug_on THEN
748 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
749 	    			END IF;
750 	    			--
751 	    			x_track_address(l_track_address_i).Country :=
752 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
753 					-- DBMS_OUTPUT.PUT_LINE('===<end> === x-ups-address ===');
754  				elsif(SUBSTR(L_Content_Type,1,LENGTH( 'x-ups-tracking-multipiece-summary-hdr')) = 'x-ups-tracking-multipiece-summary-hdr') then
755 
756 					-- DBMS_OUTPUT.PUT_LINE('===<begin> === x-ups-tracking-multipiece-summary-hdr ===');
757 					L_Token_Start := 0;
758 					L_Token_End := 0;
759 
760 					l_multi_sum_header_i := l_multi_sum_header_i + 1;
761 					L_Previous_Content_Type :=  'x-ups-tracking-multipiece-summary-hdr';
762 
763 	    			--
764 	    			-- Debug Statements
765 	    			--
766 	    			IF l_debug_on THEN
767 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
768 	    			END IF;
769 	    			--
770 	    			x_multi_sum_header(l_multi_sum_header_i).UPSOnLine :=
771 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
772 	    			--
773 	    			-- Debug Statements
774 	    			--
775 	    			IF l_debug_on THEN
776 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
777 	    			END IF;
778 	    			--
779 	    			x_multi_sum_header(l_multi_sum_header_i).AppVersion :=
780 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message, L_Token_Start,L_Token_End));
781 					-- DBMS_OUTPUT.PUT_LINE('after AppVersion');
782 
783 	    			--
784 	    			-- Debug Statements
785 	    			--
786 	    			IF l_debug_on THEN
787 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
788 	    			END IF;
789 	    			--
790 	    			x_multi_sum_header(l_multi_sum_header_i).InternalShipmentKey :=
791 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
792 					-- DBMS_OUTPUT.PUT_LINE('after InternalShipmentKey');
793 
794 	    			--
795 	    			-- Debug Statements
796 	    			--
797 	    			IF l_debug_on THEN
798 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
799 	    			END IF;
800 	    			--
801 	    			x_multi_sum_header(l_multi_sum_header_i).ServiceLevelDescription :=
802 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
803 					-- DBMS_OUTPUT.PUT_LINE('after ServiceLevelDescription');
804 
805 	    			--
806 	    			-- Debug Statements
807 	    			--
808 	    			IF l_debug_on THEN
809 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
810 	    			END IF;
811 	    			--
812 	    			x_multi_sum_header(l_multi_sum_header_i).PickupDate :=
813 							TO_DATE(WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End), 'YYYYMMDD');
814 	    			-- DBMS_OUTPUT.PUT_LINE('after PickupDate');
815 
816 					--
817 					-- Debug Statements
818 					--
819 					IF l_debug_on THEN
820 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
821 					END IF;
822 					--
823 					x_multi_sum_header(l_multi_sum_header_i).ScheduledDeliveryDate :=
824 							TO_DATE(WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End), 'YYYYMMDD');
825 	    			--
826 	    			-- Debug Statements
827 	    			--
828 	    			IF l_debug_on THEN
829 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
830 	    			END IF;
831 	    			--
832 	    			x_multi_sum_header(l_multi_sum_header_i).TotalShipmentWeight :=
833 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End));
834 	    			--
835 	    			-- Debug Statements
836 	    			--
837 	    			IF l_debug_on THEN
838 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
839 	    			END IF;
840 	    			--
841 	    			x_multi_sum_header(l_multi_sum_header_i).WeightUOM :=
842 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
843 	    			--
844 	    			-- Debug Statements
845 	    			--
846 	    			IF l_debug_on THEN
847 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
848 	    			END IF;
849 	    			--
850 	    			x_multi_sum_header(l_multi_sum_header_i).NumberOfPackagesInShipment :=
851 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End));
852 	    			--
853 	    			-- Debug Statements
854 	    			--
855 	    			IF l_debug_on THEN
856 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
857 	    			END IF;
858 	    			--
859 	    			x_multi_sum_header(l_multi_sum_header_i).NumberOfPackagesDelivered :=
860 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End));
861 
862 					-- ------------------------------------------------------------
863 					-- to find all th details corresponding to the summary header
864 					-- use the MPieceSummaryDtlIndex to find the first detail and
865 					-- use the NumberOfPackagesActive to find the successive ones
866 					-- ------------------------------------------------------------
867 
868 	    			--
869 	    			-- Debug Statements
870 	    			--
871 	    			IF l_debug_on THEN
872 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
873 	    			END IF;
874 	    			--
875 	    			x_multi_sum_header(l_multi_sum_header_i).NumberOfPackagesActive :=
876 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End));
877 
878 					x_multi_sum_header(l_multi_sum_header_i).ConsigneeAddressIndex := 9999;
879 					x_multi_sum_header(l_multi_sum_header_i).MPieceSummaryDtlIndex := 9999;
880 					-- DBMS_OUTPUT.PUT_LINE('===<end> === x-ups-tracking-multipiece-summary-hdr ===');
881 
882  				elsif(SUBSTR(L_Content_Type,1,LENGTH( 'x-ups-tracking-multipiece-summary-det')) = 'x-ups-tracking-multipiece-summary-det') then
883 
884 					-- DBMS_OUTPUT.PUT_LINE('===<begin> === x-ups-tracking-multipiece-summary-det ===');
885 					L_Token_Start := 0;
886 					L_Token_End := 0;
887 
888 					l_multi_sum_detail_i:= l_multi_sum_detail_i+ 1;
889 					-- DBMS_OUTPUT.PUT_LINE('Previous Content Type: ' || L_Previous_Content_Type);
890 
891 					if(L_Previous_Content_Type = 'x-ups-tracking-multipiece-summary-hdr') then
892 						-- DBMS_OUTPUT.PUT_LINE(' added myself to the Summary Header index: ' || l_multi_sum_detail_i);
893 						x_multi_sum_header(l_multi_sum_header_i).MPieceSummaryDtlIndex := l_multi_sum_detail_i;
894 					end if;
895 
896 					L_Previous_Content_Type :=  'x-ups-tracking-multipiece-summary-det';
897 
898 	    			--
899 	    			-- Debug Statements
900 	    			--
901 	    			IF l_debug_on THEN
902 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
903 	    			END IF;
904 	    			--
905 	    			x_multi_sum_detail(l_multi_sum_detail_i).UPSOnLine :=
906 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
907 	    			--
908 	    			-- Debug Statements
909 	    			--
910 	    			IF l_debug_on THEN
911 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
912 	    			END IF;
913 	    			--
914 	    			x_multi_sum_detail(l_multi_sum_detail_i).AppVersion :=
915 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message, L_Token_Start,L_Token_End));
916 	    			--
917 	    			-- Debug Statements
918 	    			--
919 	    			IF l_debug_on THEN
920 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
921 	    			END IF;
922 	    			--
923 	    			x_multi_sum_detail(l_multi_sum_detail_i).TrackingNumber :=
924 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
925 	    			--
926 	    			-- Debug Statements
927 	    			--
928 	    			IF l_debug_on THEN
929 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
930 	    			END IF;
931 	    			--
932 	    			x_multi_sum_detail(l_multi_sum_detail_i).InternalPackageKey :=
933 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
934 
935 		  			x_multi_sum_detail(l_multi_sum_detail_i).ActivityDetailIndex := 9999;
936 					-- DBMS_OUTPUT.PUT_LINE('===<end> === x-ups-tracking-multipiece-summary-det ===');
937 
938  				elsif(SUBSTR(L_Content_Type,1,LENGTH( 'x-ups-tracking-package-detail-hdr')) = 'x-ups-tracking-package-detail-hdr') then
939 
940 					L_Token_Start := 0;
941 					L_Token_End := 0;
942 
943 					-- DBMS_OUTPUT.PUT_LINE('===<begin> === x-ups-tracking-package-detail-hdr ===');
944 					-- DBMS_OUTPUT.put_line('Message Is:'||L_Track_Message);
945 					-- DBMS_OUTPUT.PUT_LINE('PKG TBL INDEX:'||l_pkg_detail_segment_i);
946 					l_pkg_detail_segment_i := l_pkg_detail_segment_i + 1;
947 					-- DBMS_OUTPUT.PUT_LINE('PKG TBL INDEX:'||l_pkg_detail_segment_i);
948 					L_Previous_Content_Type := 'x-ups-tracking-package-detail-hdr';
949 
950 	    			--
951 	    			-- Debug Statements
952 	    			--
953 	    			IF l_debug_on THEN
954 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
955 	    			END IF;
956 	    			--
957 	    			x_pkg_detail_segment(l_pkg_detail_segment_i).UPSOnLine :=
958 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
959 
960 	    			--
961 	    			-- Debug Statements
962 	    			--
963 	    			IF l_debug_on THEN
964 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
965 	    			END IF;
966 	    			--
967 	    			x_pkg_detail_segment(l_pkg_detail_segment_i).AppVersion :=
968 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message, L_Token_Start,L_Token_End));
969 
970 	    			--
971 	    			-- Debug Statements
972 	    			--
973 	    			IF l_debug_on THEN
974 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
975 	    			END IF;
976 	    			--
977 	    			x_pkg_detail_segment(l_pkg_detail_segment_i).TrackingNumber :=
978 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
979 
980 	    			--
981 	    			-- Debug Statements
982 	    			--
983 	    			IF l_debug_on THEN
984 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
985 	    			END IF;
986 	    			--
987 	    			x_pkg_detail_segment(l_pkg_detail_segment_i).InternalPackageKey :=
988 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
989 
990 	    			--
991 	    			-- Debug Statements
992 	    			--
993 	    			IF l_debug_on THEN
994 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
995 	    			END IF;
996 	    			--
997 	    			x_pkg_detail_segment(l_pkg_detail_segment_i).ShipmentNumber :=
998 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
999 
1000 					--
1001 					-- Debug Statements
1002 					--
1003 					IF l_debug_on THEN
1004 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1005 					END IF;
1006 					--
1007 					x_pkg_detail_segment(l_pkg_detail_segment_i).InternalShipmentKey :=
1008 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
1009 
1010 					--
1011 					-- Debug Statements
1012 					--
1013 					IF l_debug_on THEN
1014 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1015 					END IF;
1016 					--
1017 					x_pkg_detail_segment(l_pkg_detail_segment_i).PickupDate :=
1018 							TO_DATE(WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End), 'YYYYMMDD');
1019 
1020 					--
1021 					-- Debug Statements
1022 					--
1023 					IF l_debug_on THEN
1024 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1025 					END IF;
1026 					--
1027 					x_pkg_detail_segment(l_pkg_detail_segment_i).NumberOfPackagesInShipment :=
1028 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message, L_Token_Start,L_Token_End));
1029 
1030 	    			--
1031 	    			-- Debug Statements
1032 	    			--
1033 	    			IF l_debug_on THEN
1034 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1035 	    			END IF;
1036 	    			--
1037 	    			x_pkg_detail_segment(l_pkg_detail_segment_i).ServiceLevelDescription :=
1038 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
1039 
1040 					--
1041 					-- Debug Statements
1042 					--
1043 					IF l_debug_on THEN
1044 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1045 					END IF;
1046 					--
1047 					x_pkg_detail_segment(l_pkg_detail_segment_i).PackageWeight :=
1048 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message, L_Token_Start,L_Token_End));
1049 
1050 	    			--
1051 	    			-- Debug Statements
1052 	    			--
1053 	    			IF l_debug_on THEN
1054 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1055 	    			END IF;
1056 	    			--
1057 	    			x_pkg_detail_segment(l_pkg_detail_segment_i).WeightUOM :=
1058 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
1059 
1060 	    			--
1061 	    			-- Debug Statements
1062 	    			--
1063 	    			IF l_debug_on THEN
1064 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1065 	    			END IF;
1066 	    			--
1067 	    			x_pkg_detail_segment(l_pkg_detail_segment_i).SignedForByName :=
1068 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
1069 
1070 	    			--
1071 	    			-- Debug Statements
1072 	    			--
1073 	    			IF l_debug_on THEN
1074 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1075 	    			END IF;
1076 	    			--
1077 	    			x_pkg_detail_segment(l_pkg_detail_segment_i).Location :=
1078 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
1079 
1080 	    			--
1081 	    			-- Debug Statements
1082 	    			--
1083 	    			IF l_debug_on THEN
1084 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1085 	    			END IF;
1086 	    			--
1087 	    			x_pkg_detail_segment(l_pkg_detail_segment_i).CusotmerReferenceNumber :=
1088 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
1089 
1090 
1091 
1092 					x_pkg_detail_segment(l_pkg_detail_segment_i).ConsigneeAddressIndex := 9999;
1093 
1094 					x_pkg_detail_segment(l_pkg_detail_segment_i).ActivityDetailIndex := 9999;
1095 					-- DBMS_OUTPUT.PUT_LINE('===<end> === x-ups-tracking-package-detail-hdr ===');
1096 
1097  				elsif(SUBSTR(L_Content_Type,1,LENGTH('x-ups-tracking-package-progress-hdr'))=
1098 					'x-ups-tracking-package-progress-hdr') then
1099 					-- DBMS_OUTPUT.PUT_LINE('===<begin> === x-ups-tracking-package-progress-hdr ===');
1100 					L_Token_Start := 0;
1101 					L_Token_End := 0;
1102 
1103 					L_Previous_Content_Type := 'x-ups-tracking-package-progress-hdr';
1104 
1105 	    			--
1106 	    			-- Debug Statements
1107 	    			--
1108 	    			IF l_debug_on THEN
1109 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1110 	    			END IF;
1111 	    			--
1112 	    			x_pkg_progress.UPSOnLine :=
1113 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
1114 	    			--
1115 	    			-- Debug Statements
1116 	    			--
1117 	    			IF l_debug_on THEN
1118 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1119 	    			END IF;
1120 	    			--
1121 	    			x_pkg_progress.AppVersion :=
1122 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message, L_Token_Start,L_Token_End));
1123 
1124 					-- ------------------------------------------------------------
1125 					-- to find all th details corresponding to the summary header
1126 					-- use the ActivityDetailIndex to find the first detail and
1127 					-- use the NumberOfActivityDetailLines to find the successive ones
1128 					-- ------------------------------------------------------------
1129 
1130 	    			--
1131 	    			-- Debug Statements
1132 	    			--
1133 	    			IF l_debug_on THEN
1134 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1135 	    			END IF;
1136 	    			--
1137 	    			x_pkg_progress.NumberOfActivityDetailLines :=
1138 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
1139 
1140 					x_pkg_progress.ActivityDetailIndex := 9999;
1141 					-- DBMS_OUTPUT.PUT_LINE('===<end> === x-ups-tracking-package-progress-hdr ===');
1142 
1143  				elsif(SUBSTR(L_Content_Type,1,LENGTH( 'x-ups-tracking-activity-detail')) = 'x-ups-tracking-activity-detail') then
1144 					-- DBMS_OUTPUT.PUT_LINE('===<begin> === x-ups-tracking-activity-detail ===');
1145 					L_Token_Start := 0;
1146 					L_Token_End := 0;
1147 
1148 
1149 					l_activity_detail_i := l_activity_detail_i + 1;
1150 
1151 					if(L_Previous_Content_Type = 'x-ups-tracking-multipiece-summary-det') then
1152 							x_multi_sum_detail(l_multi_sum_detail_i).ActivityDetailIndex := l_activity_detail_i;
1153 					elsif(L_Previous_Content_Type = 'x-ups-tracking-package-detail-hdr') then
1154 							x_pkg_detail_segment(l_pkg_detail_segment_i).ActivityDetailIndex := l_activity_detail_i;
1155 					elsif(L_Previous_Content_Type = 'x-ups-tracking-package-progress-hdr') then
1156 							x_pkg_progress.ActivityDetailIndex := l_activity_detail_i;
1157 					end if;
1158 
1159 					L_Previous_Content_Type :=  'x-ups-tracking-activity-detail';
1160 
1161 	    			--
1162 	    			-- Debug Statements
1163 	    			--
1164 	    			IF l_debug_on THEN
1165 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1166 	    			END IF;
1167 	    			--
1168 	    			x_activity_detail(l_activity_detail_i).UPSOnLine :=
1169 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
1170 
1171 	    			--
1172 	    			-- Debug Statements
1173 	    			--
1174 	    			IF l_debug_on THEN
1175 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1176 	    			END IF;
1177 	    			--
1178 	    			x_activity_detail(l_activity_detail_i).AppVersion :=
1179 							TO_NUMBER(WSH_U_UTIL.Calculate_Token(L_Track_Message, L_Token_Start,L_Token_End));
1180 
1181 	    			--
1182 	    			-- Debug Statements
1183 	    			--
1184 	    			IF l_debug_on THEN
1185 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1186 	    			END IF;
1187 	    			--
1188 	    			x_activity_detail(l_activity_detail_i).StatusType :=
1189 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
1190 
1191 	    			--
1192 	    			-- Debug Statements
1193 	    			--
1194 	    			IF l_debug_on THEN
1195 	    			    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1196 	    			END IF;
1197 	    			--
1198 	    			x_activity_detail(l_activity_detail_i).StatusLongDescription :=
1199 							WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
1200 
1201 					--
1202 					-- Debug Statements
1203 					--
1204 					IF l_debug_on THEN
1205 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1206 					END IF;
1207 					--
1208 					l_date_string := WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
1209 					--
1210 					-- Debug Statements
1211 					--
1212 					IF l_debug_on THEN
1213 					    WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_U_UTIL.CALCULATE_TOKEN',WSH_DEBUG_SV.C_PROC_LEVEL);
1214 					END IF;
1215 					--
1216 					l_time_string := WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
1217 
1218 	    			x_activity_detail(l_activity_detail_i).ActivityDate :=
1219 							TO_DATE(l_date_string || l_time_string, 'YYYYMMDDHH24MISS');
1220 
1221 	    			-- x_activity_detail(l_activity_detail_i).ActivityTime :=
1222 					-- 		WSH_U_UTIL.Calculate_Token(L_Track_Message,L_Token_Start,L_Token_End);
1223 
1224 					-- DBMS_OUTPUT.PUT_LINE('===<end> === x-ups-tracking-activity-detail ===');
1225 			end if;
1226 
1227 		END IF;
1228 
1229 		-- advance to next UPSBOUNDARYUPS section
1230 		L_Locate_boundary := L_Locate_boundary_End;
1231 
1232  		EXIT WHEN L_Locate_Begin = 0;
1233 
1234     END LOOP;
1235 
1236 */ --Commented for Carrier Services Integration with Shipping project Bug 16095594
1237 
1238 
1239 --
1240 -- Debug Statements
1241 --
1242 IF l_debug_on THEN
1243     WSH_DEBUG_SV.pop(l_module_name);
1244 END IF;
1245 --
1246 EXCEPTION
1247 /* --Commented for Carrier Services Integration with Shipping project Bug 16095594
1248 		WHEN WSH_U_CAR_URL THEN
1249 		   FND_MESSAGE.SET_NAME('WSH', 'WSH_U_CAR_URL');
1250 			WSH_UTIL_CORE.ADD_MESSAGE(p_message_type);
1251 			x_return_status := FND_API.G_RET_STS_ERROR;
1252 			WSH_UTIL_CORE.get_messages( 'Y', l_msg_summary, l_msg_details, x_msg_count);
1253 			if x_msg_count > 1 then
1254 				x_msg_data := l_msg_summary || l_msg_details;
1255 			else
1256 				x_msg_data := l_msg_summary;
1257 		   end if;
1258 
1259 			--
1260 			-- Debug Statements
1261 			--
1262 			IF l_debug_on THEN
1263 			    WSH_DEBUG_SV.logmsg(l_module_name,'WSH_U_CAR_URL exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1264 			    WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_U_CAR_URL');
1265 			END IF;
1266 			--
1267 		WHEN WSH_U_PROXY THEN
1268 			FND_MESSAGE.SET_NAME('WSH', 'WSH_U_PROXY');
1269 			WSH_UTIL_CORE.ADD_MESSAGE(p_message_type);
1270 			x_return_status := FND_API.G_RET_STS_ERROR;
1271 			WSH_UTIL_CORE.get_messages( 'Y', l_msg_summary, l_msg_details, x_msg_count);
1272 			if x_msg_count > 1 then
1273 				x_msg_data := l_msg_summary || l_msg_details;
1274 			else
1275 				x_msg_data := l_msg_summary;
1276 		   end if;
1277 
1278 	  	-- this exception is produced by UTL_HTTP.REQUEST_PIECES
1279 	  	-- The http call fails(for example, bacause of failure of the HTTP
1280 	  	-- daemon, or bacause the argument to REQUEST_PIECES cannot be interpreted
1281 	  	-- as a URL because it is NULL or has non-HTTP syntax)
1282 	  	--
1283 	  	-- Debug Statements
1284 	  	--
1285 	  	IF l_debug_on THEN
1286 	  	    WSH_DEBUG_SV.logmsg(l_module_name,'WSH_U_PROXY exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1287 	  	    WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_U_PROXY');
1288 	  	END IF;
1289 	  	--
1290 		WHEN REQUEST_FAILED THEN
1291 			FND_MESSAGE.SET_NAME('WSH', 'WSH_U_REQ_FAILED');
1292 			WSH_UTIL_CORE.ADD_MESSAGE(p_message_type);
1293 			x_return_status := FND_API.G_RET_STS_ERROR;
1294 			WSH_UTIL_CORE.get_messages( 'Y', l_msg_summary, l_msg_details, x_msg_count);
1295 			if x_msg_count > 1 then
1296 				x_msg_data := l_msg_summary || l_msg_details;
1297 			else
1298 				x_msg_data := l_msg_summary;
1299 		   	end if;
1300 
1301 	  	-- this exception is produced by UTL_HTTP.REQUEST_PIECES
1302 	  	-- Initialization of the HTTP callout subsystem failed
1303 		-- for invironmental reasons such as lack of available memory
1304 		--
1305 		-- Debug Statements
1306 		--
1307 		IF l_debug_on THEN
1308 		    WSH_DEBUG_SV.logmsg(l_module_name,'REQUEST_FAILED exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1309 		    WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:REQUEST_FAILED');
1310 		END IF;
1311 		--
1312 		WHEN INIT_FAILED THEN
1313 			FND_MESSAGE.SET_NAME('WSH', 'WSH_U_INIT_FAILED');
1314 			WSH_UTIL_CORE.ADD_MESSAGE(p_message_type);
1315 			x_return_status := FND_API.G_RET_STS_ERROR;
1316 			WSH_UTIL_CORE.get_messages( 'Y', l_msg_summary, l_msg_details, x_msg_count);
1317 			if x_msg_count > 1 then
1318 				x_msg_data := l_msg_summary || l_msg_details;
1319 			else
1320 				x_msg_data := l_msg_summary;
1321 		   end if;
1322 
1323 		--
1324 		-- Debug Statements
1325 		--
1326 		IF l_debug_on THEN
1327 		    WSH_DEBUG_SV.logmsg(l_module_name,'INIT_FAILED exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1328 		    WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:INIT_FAILED');
1329 		END IF;
1330 		--
1331 		WHEN WSH_U_NO_HOST THEN
1332 			FND_MESSAGE.SET_NAME('WSH', 'WSH_U_NO_HOST');
1333 			WSH_UTIL_CORE.ADD_MESSAGE('E');
1334 			x_return_status := FND_API.G_RET_STS_ERROR;
1335 			WSH_UTIL_CORE.get_messages( 'Y', l_msg_summary, l_msg_details, x_msg_count);
1336 			if x_msg_count > 1 then
1337 				x_msg_data := l_msg_summary || l_msg_details;
1338 			else
1339 				x_msg_data := l_msg_summary;
1340 		   end if;
1341 
1342 			--
1343 			-- Debug Statements
1344 			--
1345 			IF l_debug_on THEN
1346 			    WSH_DEBUG_SV.logmsg(l_module_name,'WSH_U_NO_HOST exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1347 			    WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_U_NO_HOST');
1348 			END IF;
1349 			--
1350 		WHEN  WSH_U_APPVER THEN
1351 			FND_MESSAGE.SET_NAME('WSH', 'WSH_U_APPVER');
1352 			WSH_UTIL_CORE.ADD_MESSAGE(p_message_type);
1353 			x_return_status := FND_API.G_RET_STS_ERROR;
1354 			WSH_UTIL_CORE.get_messages( 'Y', l_msg_summary, l_msg_details, x_msg_count);
1355 			if x_msg_count > 1 then
1356 				x_msg_data := l_msg_summary || l_msg_details;
1357 			else
1358 				x_msg_data := l_msg_summary;
1359 		   end if;
1360 
1361 
1362 
1363 --
1364 -- Debug Statements
1365 --
1366 IF l_debug_on THEN
1367     WSH_DEBUG_SV.logmsg(l_module_name,'WSH_U_APPVER exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1368     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_U_APPVER');
1369 END IF;
1370 --
1371 		WHEN  WSH_U_LICAGRE THEN
1372 			FND_MESSAGE.SET_NAME('WSH', 'WSH_U_LICAGRE');
1373 			WSH_UTIL_CORE.ADD_MESSAGE(p_message_type);
1374 			x_return_status := FND_API.G_RET_STS_ERROR;
1375 			WSH_UTIL_CORE.get_messages( 'Y', l_msg_summary, l_msg_details, x_msg_count);
1376 			if x_msg_count > 1 then
1377 				x_msg_data := l_msg_summary || l_msg_details;
1378 			else
1379 				x_msg_data := l_msg_summary;
1380 		   end if;
1381 
1382 
1383 
1384 --
1385 -- Debug Statements
1386 --
1387 IF l_debug_on THEN
1388     WSH_DEBUG_SV.logmsg(l_module_name,'WSH_U_LICAGRE exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1389     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_U_LICAGRE');
1390 END IF;
1391 --
1392 		WHEN  WSH_U_RESTYP THEN
1393 			FND_MESSAGE.SET_NAME('WSH', 'WSH_U_RESTYP');
1394 			WSH_UTIL_CORE.ADD_MESSAGE(p_message_type);
1395 			x_return_status := FND_API.G_RET_STS_ERROR;
1396 			WSH_UTIL_CORE.get_messages( 'Y', l_msg_summary, l_msg_details, x_msg_count);
1397 			if x_msg_count > 1 then
1398 				x_msg_data := l_msg_summary || l_msg_details;
1399 			else
1400 				x_msg_data := l_msg_summary;
1401 		   end if;
1402 
1403 
1404 
1405 --
1406 -- Debug Statements
1407 --
1408 IF l_debug_on THEN
1409     WSH_DEBUG_SV.logmsg(l_module_name,'WSH_U_RESTYP exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1410     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_U_RESTYP');
1411 END IF;
1412 --
1413 		WHEN WSH_U_INPUT_PARAMETER THEN
1414 			FND_MESSAGE.SET_NAME('WSH', 'WSH_U_INPUT_PARAMETER');
1415 			WSH_UTIL_CORE.ADD_MESSAGE(p_message_type);
1416 			x_return_status := FND_API.G_RET_STS_ERROR;
1417 			WSH_UTIL_CORE.get_messages( 'Y', l_msg_summary, l_msg_details, x_msg_count);
1418 			if x_msg_count > 1 then
1419 				x_msg_data := l_msg_summary || l_msg_details;
1420 			else
1421 				x_msg_data := l_msg_summary;
1422 		   end if;
1423 
1424 
1425 
1426 --
1427 -- Debug Statements
1428 --
1429 IF l_debug_on THEN
1430     WSH_DEBUG_SV.logmsg(l_module_name,'WSH_U_INPUT_PARAMETER exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1431     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_U_INPUT_PARAMETER');
1432 END IF;
1433 --
1434 		WHEN WSH_U_INQNO	 THEN
1435 			FND_MESSAGE.SET_NAME('WSH', 'WSH_U_INQNO');
1436 			WSH_UTIL_CORE.ADD_MESSAGE(p_message_type);
1437 			x_return_status := FND_API.G_RET_STS_ERROR;
1438 			WSH_UTIL_CORE.get_messages( 'Y', l_msg_summary, l_msg_details, x_msg_count);
1439 			if x_msg_count > 1 then
1440 				x_msg_data := l_msg_summary || l_msg_details;
1441 			else
1442 				x_msg_data := l_msg_summary;
1443 		   end if;
1444 
1445 
1446 
1447 --
1448 -- Debug Statements
1449 --
1450 IF l_debug_on THEN
1451     WSH_DEBUG_SV.logmsg(l_module_name,'WSH_U_INQNO exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1452     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_U_INQNO');
1453 END IF;
1454 --
1455 		WHEN WSH_U_TYP_INQNO THEN
1456 			FND_MESSAGE.SET_NAME('WSH', 'WSH_U_TYP_INQNO');
1457 			WSH_UTIL_CORE.ADD_MESSAGE(p_message_type);
1458 			x_return_status := FND_API.G_RET_STS_ERROR;
1459 			WSH_UTIL_CORE.get_messages( 'Y', l_msg_summary, l_msg_details, x_msg_count);
1460 			if x_msg_count > 1 then
1461 				x_msg_data := l_msg_summary || l_msg_details;
1462 			else
1463 				x_msg_data := l_msg_summary;
1464 		   end if;
1465 
1466 
1467 		--
1468 		-- Debug Statements
1469 		--
1470 		IF l_debug_on THEN
1471 		    WSH_DEBUG_SV.logmsg(l_module_name,'WSH_U_TYP_INQNO exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1472 		    WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_U_TYP_INQNO');
1473 		END IF;
1474 		--
1475 		 --End of Comment for Carrier Services Integration with Shipping project Bug 16095594 */
1476    WHEN FND_API.G_EXC_UNEXPECTED_ERROR
1477    THEN
1478       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1479       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1480       THEN
1481          FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
1482       END IF;
1483       FND_MSG_PUB.count_and_get ( p_count => x_msg_count, p_data => x_msg_data);
1484       --
1485       -- Debug Statements
1486       --
1487       IF l_debug_on
1488       THEN
1489          WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_UNEXPECTED_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1490          WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
1491       END IF;
1492       --
1493    WHEN OTHERS
1494    THEN
1495       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1496       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1497       THEN
1498          FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
1499       END IF;
1500       FND_MSG_PUB.count_and_get ( p_count => x_msg_count, p_data => x_msg_data);
1501       --
1502       -- Debug Statements
1503       --
1504       IF l_debug_on
1505       THEN
1506          WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1507          WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1508       END IF;
1509       --
1510 END EnhancedTracking;
1511 
1512 
1513 END WSH_U_TRACK;