DBA Data[Home] [Help]

PACKAGE BODY: APPS.WSH_U_TRACK

Source


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