DBA Data[Home] [Help]

PACKAGE BODY: APPS.EC_CODE_CONVERSION_PVT

Source


1 PACKAGE BODY EC_Code_Conversion_PVT AS
2 -- $Header: ECVXREFB.pls 120.2.12000000.2 2007/02/09 17:32:02 cpeixoto ship $
3 
4 debug_mode_on_int	BOOLEAN := FALSE;
5 
6 
7 PROCEDURE Convert_from_ext_to_int
8    (p_api_version_number  IN    NUMBER,
9     p_init_msg_list       IN    VARCHAR2 := FND_API.G_FALSE,
10     p_simulate            IN    VARCHAR2 := FND_API.G_FALSE,
11     p_commit              IN    VARCHAR2 := FND_API.G_FALSE,
12     p_validation_level    IN    NUMBER   := FND_API.G_VALID_LEVEL_FULL,
13     p_return_status       OUT NOCOPY  VARCHAR2,
14     p_msg_count           OUT NOCOPY  NUMBER,
15     p_msg_data            OUT NOCOPY  VARCHAR2,
16     p_Category            IN    VARCHAR2,
17     p_Key1                IN    VARCHAR2 := NULL,
18     p_Key2                IN    VARCHAR2 := NULL,
19     p_Key3                IN    VARCHAR2 := NULL,
20     p_Key4                IN    VARCHAR2 := NULL,
21     p_Key5                IN    VARCHAR2 := NULL,
22     p_Ext_val1            IN    VARCHAR2,
23     p_Ext_val2            IN    VARCHAR2 := NULL,
24     p_Ext_val3            IN    VARCHAR2 := NULL,
25     p_Ext_val4            IN    VARCHAR2 := NULL,
26     p_Ext_val5            IN    VARCHAR2 := NULL,
27     p_Int_val             OUT NOCOPY  VARCHAR2) IS
28 
29     l_api_name            CONSTANT VARCHAR2(30) := 'Convert_from_ext_to_int';
30     l_api_version_number  CONSTANT NUMBER       := 1.0;
31 
32 /* bug 5865153
33     l_Int_val		varchar2(80) := NULL; */
34 
35     l_Int_val           ece_xref_data.xref_int_value%TYPE := NULL;
36 
37 
38 CURSOR match_5 IS
39 	SELECT  XREF_INT_VALUE
40 	FROM	ECE_XREF_DATA
41 	WHERE	XREF_KEY1 IS NOT NULL AND
42                 XREF_KEY2 IS NOT NULL AND
43 		XREF_KEY3 IS NOT NULL AND
44 		XREF_KEY4 IS NOT NULL AND
45 		XREF_KEY5 IS NOT NULL AND
46 		XREF_KEY1 = p_Key1 AND
47 		XREF_KEY2 = p_Key2 AND
48 		XREF_KEY3 = p_Key3 AND
49 		XREF_KEY4 = p_Key4 AND
50 		XREF_KEY5 = p_Key5 AND
51 		XREF_CATEGORY_CODE = p_Category AND
52 		XREF_EXT_VALUE1    = p_Ext_val1 AND
53 		(DIRECTION = 'IN' or DIRECTION = 'BOTH') AND
54 		NVL(XREF_EXT_VALUE2,FND_API.G_MISS_CHAR) = NVL(p_Ext_val2, FND_API.G_MISS_CHAR) AND
55 		NVL(XREF_EXT_VALUE3,FND_API.G_MISS_CHAR) = NVL(p_Ext_val3, FND_API.G_MISS_CHAR) AND
56 		NVL(XREF_EXT_VALUE4,FND_API.G_MISS_CHAR) = NVL(p_Ext_val4, FND_API.G_MISS_CHAR) AND
57 		NVL(XREF_EXT_VALUE5,FND_API.G_MISS_CHAR) = NVL(p_Ext_val5, FND_API.G_MISS_CHAR);
58 
59 CURSOR match_4 IS
60 	SELECT	XREF_INT_VALUE
61 	FROM 	ECE_XREF_DATA
62 	WHERE	XREF_KEY1 IS NOT NULL AND
63                 XREF_KEY2 IS NOT NULL AND
64                 XREF_KEY3 IS NOT NULL AND
65                 XREF_KEY4 IS NOT NULL AND
66                 XREF_KEY5 IS NULL AND
67                 XREF_KEY1 = p_Key1 AND
68                 XREF_KEY2 = p_Key2 AND
69                 XREF_KEY3 = p_Key3 AND
70                 XREF_KEY4 = p_Key4 AND
71                 XREF_CATEGORY_CODE = p_Category AND
72                 XREF_EXT_VALUE1    = p_Ext_val1 AND
73 		(DIRECTION = 'IN' or DIRECTION = 'BOTH') AND
74                 NVL(XREF_EXT_VALUE2,FND_API.G_MISS_CHAR) = NVL(p_Ext_val2, FND_API.G_MISS_CHAR) AND
75                 NVL(XREF_EXT_VALUE3,FND_API.G_MISS_CHAR) = NVL(p_Ext_val3, FND_API.G_MISS_CHAR) AND
76                 NVL(XREF_EXT_VALUE4,FND_API.G_MISS_CHAR) = NVL(p_Ext_val4, FND_API.G_MISS_CHAR) AND
77                 NVL(XREF_EXT_VALUE5,FND_API.G_MISS_CHAR) = NVL(p_Ext_val5, FND_API.G_MISS_CHAR);
78 
79 CURSOR match_3 IS
80 	SELECT	XREF_INT_VALUE
81 	FROM	ECE_XREF_DATA
82 	WHERE	XREF_KEY1 IS NOT NULL AND
83                 XREF_KEY2 IS NOT NULL AND
84                 XREF_KEY3 IS NOT NULL AND
85                 XREF_KEY4 IS NULL AND
86                 XREF_KEY5 IS NULL AND
87                 XREF_KEY1 = p_Key1 AND
88                 XREF_KEY2 = p_Key2 AND
89                 XREF_KEY3 = p_Key3 AND
90                 XREF_CATEGORY_CODE = p_Category AND
91                 XREF_EXT_VALUE1    = p_Ext_val1 AND
92 		(DIRECTION = 'IN' or DIRECTION = 'BOTH') AND
93                 NVL(XREF_EXT_VALUE2,FND_API.G_MISS_CHAR) = NVL(p_Ext_val2, FND_API.G_MISS_CHAR) AND
94                 NVL(XREF_EXT_VALUE3,FND_API.G_MISS_CHAR) = NVL(p_Ext_val3, FND_API.G_MISS_CHAR) AND
95                 NVL(XREF_EXT_VALUE4,FND_API.G_MISS_CHAR) = NVL(p_Ext_val4, FND_API.G_MISS_CHAR) AND
96                 NVL(XREF_EXT_VALUE5,FND_API.G_MISS_CHAR) = NVL(p_Ext_val5, FND_API.G_MISS_CHAR);
97 
98 CURSOR match_2 IS
99 	SELECT	XREF_INT_VALUE
100 	FROM	ECE_XREF_DATA
101 	WHERE	XREF_KEY1 IS NOT NULL AND
102                 XREF_KEY2 IS NOT NULL AND
103                 XREF_KEY3 IS NULL AND
104                 XREF_KEY4 IS NULL AND
105                 XREF_KEY5 IS NULL AND
106                 XREF_KEY1 = p_Key1 AND
107                 XREF_KEY2 = p_Key2 AND
108                 XREF_CATEGORY_CODE = p_Category AND
109                 XREF_EXT_VALUE1    = p_Ext_val1 AND
110 		(DIRECTION = 'IN' or DIRECTION = 'BOTH') AND
111                 NVL(XREF_EXT_VALUE2,FND_API.G_MISS_CHAR) = NVL(p_Ext_val2, FND_API.G_MISS_CHAR) AND
112                 NVL(XREF_EXT_VALUE3,FND_API.G_MISS_CHAR) = NVL(p_Ext_val3, FND_API.G_MISS_CHAR) AND
113                 NVL(XREF_EXT_VALUE4,FND_API.G_MISS_CHAR) = NVL(p_Ext_val4, FND_API.G_MISS_CHAR) AND
114                 NVL(XREF_EXT_VALUE5,FND_API.G_MISS_CHAR) = NVL(p_Ext_val5, FND_API.G_MISS_CHAR);
115 
116 CURSOR match_1 IS
117 	SELECT	XREF_INT_VALUE
118 	FROM	ECE_XREF_DATA
119 	WHERE	XREF_KEY1 IS NOT NULL AND
120                 XREF_KEY2 IS NULL AND
121                 XREF_KEY3 IS NULL AND
122                 XREF_KEY4 IS NULL AND
123                 XREF_KEY5 IS NULL AND
124                 XREF_KEY1 = p_Key1 AND
125                 XREF_CATEGORY_CODE = p_Category AND
126                 XREF_EXT_VALUE1    = p_Ext_val1 AND
127 		(DIRECTION = 'IN' or DIRECTION = 'BOTH') AND
128                 NVL(XREF_EXT_VALUE2,FND_API.G_MISS_CHAR) = NVL(p_Ext_val2, FND_API.G_MISS_CHAR) AND
129                 NVL(XREF_EXT_VALUE3,FND_API.G_MISS_CHAR) = NVL(p_Ext_val3, FND_API.G_MISS_CHAR) AND
130                 NVL(XREF_EXT_VALUE4,FND_API.G_MISS_CHAR) = NVL(p_Ext_val4, FND_API.G_MISS_CHAR) AND
131                 NVL(XREF_EXT_VALUE5,FND_API.G_MISS_CHAR) = NVL(p_Ext_val5, FND_API.G_MISS_CHAR);
132 
133 CURSOR match_global IS
134 	SELECT	XREF_INT_VALUE
135 	FROM	ECE_XREF_DATA
136 	WHERE	XREF_KEY1 IS NULL AND
137                 XREF_KEY2 IS NULL AND
138                 XREF_KEY3 IS NULL AND
139                 XREF_KEY4 IS NULL AND
140                 XREF_KEY5 IS NULL AND
141                 XREF_CATEGORY_CODE = p_Category AND
142                 XREF_EXT_VALUE1    = p_Ext_val1 AND
143 		(DIRECTION = 'IN' or DIRECTION = 'BOTH') AND
144                 NVL(XREF_EXT_VALUE2,FND_API.G_MISS_CHAR) = NVL(p_Ext_val2, FND_API.G_MISS_CHAR) AND
145                 NVL(XREF_EXT_VALUE3,FND_API.G_MISS_CHAR) = NVL(p_Ext_val3, FND_API.G_MISS_CHAR) AND
146                 NVL(XREF_EXT_VALUE4,FND_API.G_MISS_CHAR) = NVL(p_Ext_val4, FND_API.G_MISS_CHAR) AND
147                 NVL(XREF_EXT_VALUE5,FND_API.G_MISS_CHAR) = NVL(p_Ext_val5, FND_API.G_MISS_CHAR);
148 
149 BEGIN
150   if EC_DEBUG.G_debug_level >= 2 then
151    EC_DEBUG.PUSH('EC_Code_Conversion_PVT.Convert_from_ext_to_int');
152    EC_DEBUG.PL(3, 'API version : ',p_api_version_number);
153    EC_DEBUG.PL(3, 'p_init_msg_list: ',p_init_msg_list);
154    EC_DEBUG.PL(3, 'p_simulate: ',p_simulate);
155    EC_DEBUG.PL(3, 'p_commit: ',p_commit);
156    EC_DEBUG.PL(3, 'p_validation_level: ',p_validation_level);
157    EC_DEBUG.PL(3, 'p_Category: ',p_Category);
158    EC_DEBUG.PL(3, 'p_Key1: ',p_Key1);
159    EC_DEBUG.PL(3, 'p_Key2: ',p_Key2);
160    EC_DEBUG.PL(3, 'p_Key3: ',p_Key3);
161    EC_DEBUG.PL(3, 'p_Key4: ',p_Key4);
162    EC_DEBUG.PL(3, 'p_Key5: ',p_Key5);
163    EC_DEBUG.PL(3, 'p_Ext_val1: ',p_Ext_val1);
164    EC_DEBUG.PL(3, 'p_Ext_val2: ',p_Ext_val2);
165    EC_DEBUG.PL(3, 'p_Ext_val3: ',p_Ext_val3);
166    EC_DEBUG.PL(3, 'p_Ext_val4: ',p_Ext_val4);
167    EC_DEBUG.PL(3, 'p_Ext_val5: ',p_Ext_val5);
168    end if;
169       -- Standard Start of API savepoint
170       --      SAVEPOINT Convert_from_ext_to_int_PVT;
171 
172       -- Standard call to check for call compatibility.
173       IF NOT FND_API.Compatible_API_Call
174        (l_api_version_number,
175         p_api_version_number,
176         l_api_name, G_PKG_NAME) THEN
177         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
178       END IF;
179 
180       -- Initialize message list if p_init_msg_list is set to TRUE.
181       IF FND_API.to_Boolean(p_init_msg_list) THEN
182         FND_MSG_PUB.initialize;
183       END IF;
184 
185       -- Initialize API return status to success
186       p_return_status := FND_API.G_RET_STS_SUCCESS;
187 
188       -- *******************************************************
189       -- first validate the input key1-5
190       --  The input has to be one of the following
191       --  1. key1, key2, key3, key4, key5 all not null
192       --  2. key1, key2, key3, key4   all not null
193       --  3. key1, key2, key3     all not null
194       --  4. key1, key2     all not null
195       --  5. key1       all not null
196       --  6. All null
197       -- *******************************************************
198       IF (((p_Key1 IS NOT NULL) AND (p_Key2 IS NOT NULL) AND (p_Key3 IS NOT NULL) AND
199            (p_Key4 IS NOT NULL) AND (p_Key5 IS NOT NULL))
200        OR ((p_Key1 IS NOT NULL) AND (p_Key2 IS NOT NULL) AND (p_Key3 IS NOT NULL) AND
201            (p_Key4 IS NOT NULL) AND (p_Key5 IS NULL))
202        OR ((p_Key1 IS NOT NULL) AND (p_Key2 IS NOT NULL) AND (p_Key3 IS NOT NULL) AND
203            (p_Key4 IS NULL) AND (p_Key5 IS NULL))
204        OR ((p_Key1 IS NOT NULL) AND (p_Key2 IS NOT NULL) AND (p_Key3 IS NULL) AND
205            (p_Key4 IS NULL) AND (p_Key5 IS NULL))
206        OR ((p_Key1 IS NOT NULL) AND (p_Key2 IS NULL) AND (p_Key3 IS NULL) AND
207            (p_Key4 IS  NULL) AND (p_Key5 IS NULL))) THEN
208 
209         -- *******************************************************
210         -- Start with matching all five keys
211         --  if no 5-key matches  ->  search to match 4 keys
212         --  if no 4-key matches  ->  search to match 3 keys
213         --  if no 3-key matches  ->  search to match 2 keys
214         --  if no 2-key matches  ->  search to match 1 keys
215         --  if no 1-key matches  ->  search for generic match
216         -- *******************************************************
217 
218         -- *******************************************************
219         -- All 5 keys are supplied
220         -- *******************************************************
221         IF (NOT((p_Key1 IS NULL) OR (p_Key2 IS NULL) OR (p_Key3 IS NULL) OR
222            (p_Key4 IS NULL) OR (p_Key5 IS NULL))) THEN
223           OPEN match_5;
224           FETCH match_5 INTO l_Int_val;
225           IF match_5%NOTFOUND THEN
226             OPEN match_4;
227             FETCH match_4 INTO l_Int_val;
228             IF match_4%NOTFOUND THEN
229               OPEN match_3;
230               FETCH match_3 INTO l_Int_val;
231               IF match_3%NOTFOUND THEN
232                 OPEN match_2;
233                 FETCH match_2 INTO l_Int_val;
234                 IF match_2%NOTFOUND THEN
235                   OPEN match_1;
236                   FETCH match_1 INTO l_Int_val;
237                   IF match_1%NOTFOUND THEN
238                     OPEN match_global;
239                     FETCH match_global INTO l_Int_val;
240                     CLOSE match_global;
241                   END IF;
242                   CLOSE match_1;
243                 END IF;
244                 CLOSE match_2;
245               END IF;
246               CLOSE match_3;
247             END IF;
248             CLOSE match_4;
249       		END IF;
250       		CLOSE match_5;
251 
252 				-- *******************************************************
253 				-- Four (4) keys are supplied
254 				-- *******************************************************
255         ELSIF (NOT((p_Key1 IS NULL) OR (p_Key2 IS NULL) OR
256               (p_Key3 IS NULL) OR (p_Key4 IS NULL))) THEN
257           OPEN match_4;
258           FETCH match_4 INTO l_Int_val;
259           IF match_4%NOTFOUND THEN
260             OPEN match_3;
261             FETCH match_3 INTO l_Int_val;
262             IF match_3%NOTFOUND THEN
263               OPEN match_2;
264               FETCH match_2 INTO l_Int_val;
265               IF match_2%NOTFOUND THEN
266                 OPEN match_1;
267                 FETCH match_1 INTO l_Int_val;
268                 IF match_1%NOTFOUND THEN
269                   OPEN match_global;
270                   FETCH match_global INTO l_Int_val;
271                   CLOSE match_global;
272                 END IF;
273                 CLOSE match_1;
274               END IF;
275               CLOSE match_2;
276             END IF;
277             CLOSE match_3;
278           END IF;
279           CLOSE match_4;
280 
281 				-- *******************************************************
282 				-- Three (3) keys are supplied
283 				-- *******************************************************
284         ELSIF (NOT((p_Key1 IS NULL) OR (p_Key2 IS NULL) OR
285               (p_Key3 IS NULL))) THEN
286           OPEN match_3;
287           FETCH match_3 INTO l_Int_val;
288           IF match_3%NOTFOUND THEN
289             OPEN match_2;
290             FETCH match_2 INTO l_Int_val;
291             IF match_2%NOTFOUND THEN
292               OPEN match_1;
293               FETCH match_1 INTO l_Int_val;
294               IF match_1%NOTFOUND THEN
295                 OPEN match_global;
296                 FETCH match_global INTO l_Int_val;
297                 CLOSE match_global;
298               END IF;
299               CLOSE match_1;
300             END IF;
301             CLOSE match_2;
302           END IF;
303           CLOSE match_3;
304           if EC_DEBUG.G_debug_level >= 3 then
305           EC_DEBUG.PL(3, 'l_Int_val :', l_Int_val);
306           end if;
307         -- *******************************************************
308         -- Two (2) keys are supplied
309         -- *******************************************************
310         ELSIF (NOT((p_Key1 IS NULL) OR (p_Key2 IS NULL))) THEN
311           OPEN match_2;
312           FETCH match_2 INTO l_Int_val;
313           IF match_2%NOTFOUND THEN
314             OPEN match_1;
315             FETCH match_1 INTO l_Int_val;
316             IF match_1%NOTFOUND THEN
317               OPEN match_global;
318               FETCH match_global INTO l_Int_val;
319               CLOSE match_global;
320             END IF;
321             CLOSE match_1;
322           END IF;
323           CLOSE match_2;
324 
325 				-- *******************************************************
326 				-- One (1) key is supplied
327 				-- *******************************************************
328         ELSIF (p_Key1 IS NOT NULL) THEN
329           OPEN match_1;
330           FETCH match_1 INTO l_Int_val;
331           IF match_1%NOTFOUND THEN
332             OPEN match_global;
333             FETCH match_global INTO l_Int_val;
334             CLOSE match_global;
335           END IF;
336           CLOSE match_1;
337         END IF;
338       ELSE
339 
340         -- *******************************
341         -- all keys (1-5) are NULLs
342         -- *******************************
343         OPEN match_global;
344         FETCH match_global INTO l_Int_val;
345         CLOSE match_global;
346       END IF;
347 
348       -- *******************************************************
349       -- Standard check of p_simulate and p_commit parameters
350       -- *******************************************************
351 /*
352       IF FND_API.To_Boolean(p_simulate) THEN
353         ROLLBACK TO Convert_from_ext_to_int_PVT;
354       ELSIF FND_API.To_Boolean(p_commit) THEN
355         COMMIT WORK;
356       END IF;
357 */
358       if l_Int_val is null
359       then
360       /* p_return_status := EC_Code_Conversion_PVT.G_XREF_NOT_FOUND;
361          fnd_message.set_name('EC','ECE_XREF_NOT_FOUND');
365          -- We change the behavior of the code conversion.
362          fnd_message.set_token('DATA', p_Ext_val1);
363          p_msg_data := fnd_message.get; */
364 
366          -- If it can't find the value, then simply copy the external
367          -- value1 to internal value instead of giving out an error message.
368          p_Int_val := p_Ext_val1;
369       else
370          if EC_DEBUG.G_debug_level = 3 then
371          EC_DEBUG.PL(3, 'l_Int_val :', l_Int_val);
372          end if;
373          p_Int_val := l_Int_val;
374 
375       end if;
376 
377 
378       -- Standard call to get message count and if count is 1, get message info.
379       FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
380 				p_data  => p_msg_data);
381 
382  if EC_DEBUG.G_debug_level >= 2 then
383    EC_DEBUG.POP('EC_Code_Conversion_PVT.Convert_from_ext_to_int');
384  end if;
385     EXCEPTION
386 WHEN FND_API.G_EXC_ERROR THEN
387 --				ROLLBACK TO Convert_from_ext_to_int_PVT;
388 	p_return_status := FND_API.G_RET_STS_ERROR;
389         FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
390 				 p_data => p_msg_data);
391 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
392 --				ROLLBACK TO Convert_from_ext_to_int_PVT;
393 	p_return_status := FND_API.G_RET_STS_ERROR;
394         FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
395 				 p_data => p_msg_data);
396 WHEN OTHERS THEN
397          EC_DEBUG.PL(0,'EC','ECE_ERROR_CODE','ERROR_CODE',SQLCODE);
398          EC_DEBUG.PL(0,'EC','ECE_ERROR_MESSAGE','ERROR_MESSAGE',SQLERRM);
399 --				ROLLBACK TO Convert_from_ext_to_int_PVT;
400 	p_return_status := FND_API.G_RET_STS_ERROR;
401         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
402 		FND_MSG_PUB.Add_Exc_Msg(G_FILE_NAME, G_PKG_NAME, l_api_name);
403         END IF;
404 	FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
405 				 p_data	=> p_msg_data);
406 END Convert_from_ext_to_int;
407 
408   PROCEDURE Convert_from_int_to_ext
409    (p_api_version_number  IN    NUMBER,
410     p_init_msg_list       IN    VARCHAR2  := FND_API.G_FALSE,
411     p_simulate            IN    VARCHAR2  := FND_API.G_FALSE,
412     p_commit              IN    VARCHAR2  := FND_API.G_FALSE,
413     p_validation_level    IN    NUMBER    := FND_API.G_VALID_LEVEL_FULL,
414     p_return_status       OUT NOCOPY  VARCHAR2,
415     p_msg_count           OUT NOCOPY  NUMBER,
416     p_msg_data            OUT NOCOPY  VARCHAR2,
417     p_Category            IN    VARCHAR2,
418     p_Key1                IN    VARCHAR2  := NULL,
419     p_Key2                IN    VARCHAR2  := NULL,
420     p_Key3                IN    VARCHAR2  := NULL,
421     p_Key4                IN    VARCHAR2  := NULL,
422     p_Key5                IN    VARCHAR2  := NULL,
423     p_Int_val             IN    VARCHAR2,
424     p_Ext_val1            OUT NOCOPY  VARCHAR2,
425     p_Ext_val2            OUT NOCOPY  VARCHAR2,
426     p_Ext_val3            OUT NOCOPY  VARCHAR2,
427     p_Ext_val4            OUT NOCOPY  VARCHAR2,
428     p_Ext_val5            OUT NOCOPY  VARCHAR2) IS
429 
430     l_api_name            CONSTANT  VARCHAR2(30)  := 'Convert_from_int_to_ext';
431     l_api_version_number  CONSTANT  NUMBER        :=  1.0;
432 
433 /* bug 5865153
434     l_Ext_val1		varchar2(500) := NULL;
435     l_Ext_val2		varchar2(500) := NULL;
436     l_Ext_val3		varchar2(500) := NULL;
437     l_Ext_val4		varchar2(500) := NULL;
438     l_Ext_val5		varchar2(500) := NULL; */
439 
440     l_Ext_val1          ece_xref_data.xref_ext_value1%TYPE := NULL;
441     l_Ext_val2          ece_xref_data.xref_ext_value2%TYPE := NULL;
442     l_Ext_val3          ece_xref_data.xref_ext_value3%TYPE := NULL;
443     l_Ext_val4          ece_xref_data.xref_ext_value4%TYPE := NULL;
444     l_Ext_val5          ece_xref_data.xref_ext_value5%TYPE := NULL;
445 
446 
447     CURSOR match_5 IS
448       SELECT  XREF_EXT_VALUE1,
449               XREF_EXT_VALUE2,
450               XREF_EXT_VALUE3,
451               XREF_EXT_VALUE4,
452               XREF_EXT_VALUE5
453       FROM    ECE_XREF_DATA
454       WHERE   XREF_KEY1 IS NOT NULL AND
455               XREF_KEY2 IS NOT NULL AND
456               XREF_KEY3 IS NOT NULL AND
457               XREF_KEY4 IS NOT NULL AND
458               XREF_KEY5 IS NOT NULL AND
459               XREF_KEY1 = p_Key1 AND
460               XREF_KEY2 = p_Key2 AND
461               XREF_KEY3 = p_Key3 AND
462               XREF_KEY4 = p_Key4 AND
463               XREF_KEY5 = p_Key5 AND
464               XREF_INT_VALUE     = p_Int_val AND
465               XREF_CATEGORY_CODE = p_Category AND
466               (DIRECTION = 'OUT' or DIRECTION = 'BOTH');
467 
468     CURSOR match_4 IS
469       SELECT  XREF_EXT_VALUE1,
470               XREF_EXT_VALUE2,
471               XREF_EXT_VALUE3,
472               XREF_EXT_VALUE4,
473               XREF_EXT_VALUE5
474       FROM    ECE_XREF_DATA
475       WHERE   XREF_KEY1 IS NOT NULL AND
476               XREF_KEY2 IS NOT NULL AND
477               XREF_KEY3 IS NOT NULL AND
478               XREF_KEY4 IS NOT NULL AND
479               XREF_KEY5 IS NULL AND
480               XREF_KEY1 = p_Key1 AND
481               XREF_KEY2 = p_Key2 AND
482               XREF_KEY3 = p_Key3 AND
483               XREF_KEY4 = p_Key4 AND
484               XREF_INT_VALUE     = p_Int_val AND
485               XREF_CATEGORY_CODE = p_Category AND
489       SELECT  XREF_EXT_VALUE1,
486               (DIRECTION = 'OUT' or DIRECTION = 'BOTH');
487 
488     CURSOR match_3 IS
490               XREF_EXT_VALUE2,
491               XREF_EXT_VALUE3,
492               XREF_EXT_VALUE4,
493               XREF_EXT_VALUE5
494       FROM    ECE_XREF_DATA
495       WHERE   XREF_KEY1 IS NOT NULL AND
496               XREF_KEY2 IS NOT NULL AND
497               XREF_KEY3 IS NOT NULL AND
498               XREF_KEY4 IS NULL AND
499               XREF_KEY5 IS NULL AND
500               XREF_KEY1 = p_Key1 AND
501               XREF_KEY2 = p_Key2 AND
502               XREF_KEY3 = p_Key3 AND
503               XREF_INT_VALUE     = p_Int_val AND
504               XREF_CATEGORY_CODE = p_Category AND
505               (DIRECTION = 'OUT' or DIRECTION = 'BOTH');
506 
507     CURSOR match_2 IS
508       SELECT  XREF_EXT_VALUE1,
509               XREF_EXT_VALUE2,
510               XREF_EXT_VALUE3,
511               XREF_EXT_VALUE4,
512               XREF_EXT_VALUE5
513       FROM    ECE_XREF_DATA
514       WHERE   XREF_KEY1 IS NOT NULL AND
515               XREF_KEY2 IS NOT NULL AND
516               XREF_KEY3 IS NULL AND
517               XREF_KEY4 IS NULL AND
518               XREF_KEY5 IS NULL AND
519               XREF_KEY1 = p_Key1 AND
520               XREF_KEY2 = p_Key2 AND
521               XREF_INT_VALUE = p_Int_val AND
522               XREF_CATEGORY_CODE = p_Category AND
523               (DIRECTION = 'OUT' or DIRECTION = 'BOTH');
524 
525     CURSOR match_1 IS
526       SELECT  XREF_EXT_VALUE1,
527               XREF_EXT_VALUE2,
528               XREF_EXT_VALUE3,
529               XREF_EXT_VALUE4,
530               XREF_EXT_VALUE5
531       FROM    ECE_XREF_DATA
532       WHERE   XREF_KEY1 IS NOT NULL AND
533               XREF_KEY2 IS NULL AND
534               XREF_KEY3 IS NULL AND
535               XREF_KEY4 IS NULL AND
536               XREF_KEY5 IS NULL AND
537               XREF_KEY1 = p_Key1 AND
538               XREF_INT_VALUE     = p_Int_val AND
539               XREF_CATEGORY_CODE = p_Category AND
540               (DIRECTION = 'OUT' or DIRECTION = 'BOTH');
541 
542     CURSOR match_global IS
543       SELECT  XREF_EXT_VALUE1,
544               XREF_EXT_VALUE2,
545               XREF_EXT_VALUE3,
546               XREF_EXT_VALUE4,
547               XREF_EXT_VALUE5
548       FROM    ECE_XREF_DATA
549       WHERE   XREF_KEY1 IS NULL AND
550               XREF_KEY2 IS NULL AND
551               XREF_KEY3 IS NULL AND
552               XREF_KEY4 IS NULL AND
553               XREF_KEY5 IS NULL AND
554               XREF_INT_VALUE     = p_Int_val AND
555               XREF_CATEGORY_CODE = p_Category AND
556               (DIRECTION = 'OUT' or DIRECTION = 'BOTH');
557 
558     BEGIN
559 
560  if EC_DEBUG.G_debug_level >= 2 then
561    EC_DEBUG.PUSH('EC_Code_Conversion_PVT.Convert_from_int_to_ext');
562    EC_DEBUG.PL(3, 'API version : ',p_api_version_number);
563    EC_DEBUG.PL(3, 'p_init_msg_list: ',p_init_msg_list);
564    EC_DEBUG.PL(3, 'p_simulate: ',p_simulate);
565    EC_DEBUG.PL(3, 'p_commit: ',p_commit);
566    EC_DEBUG.PL(3, 'p_validation_level: ',p_validation_level);
567    EC_DEBUG.PL(3, 'p_Category: ',p_Category);
568    EC_DEBUG.PL(3, 'p_Key1: ',p_Key1);
569    EC_DEBUG.PL(3, 'p_Key2: ',p_Key2);
570    EC_DEBUG.PL(3, 'p_Key3: ',p_Key3);
571    EC_DEBUG.PL(3, 'p_Key4: ',p_Key4);
572    EC_DEBUG.PL(3, 'p_Key5: ',p_Key5);
573    EC_DEBUG.PL(3, 'p_Int_val: ',p_Int_val);
574    end if;
575       -- Standard Start of API savepoint
576 --      SAVEPOINT Convert_from_int_to_ext_PVT;
577 
578       -- Standard call to check for call compatibility.
579       IF NOT FND_API.Compatible_API_Call
580        (l_api_version_number,
581         p_api_version_number,
582         l_api_name,
583         G_PKG_NAME) THEN
584         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
585       END IF;
586 
587       -- Initialize message list if p_init_msg_list is set to TRUE.
588       IF FND_API.to_Boolean(p_init_msg_list) THEN
589         FND_MSG_PUB.initialize;
590       END IF;
591 
592       -- Initialize API return status to success
593       p_return_status := FND_API.G_RET_STS_SUCCESS;
594 
595       -- *******************************************************
596       -- first validate the input key1-5
597       --  The input has to be one of the following
598       --  1. key1, key2, key3, key4, key5 all not null
599       --  2. key1, key2, key3, key4   all not null
600       --  3. key1, key2, key3     all not null
601       --  4. key1, key2     all not null
602       --  5. key1       all not null
603       --   6. All null
604       -- *******************************************************
605       IF (((p_Key1 IS NOT NULL) AND (p_Key2 IS NOT NULL)  AND (p_Key3 IS NOT NULL) AND
606            (p_Key4 IS NOT NULL) AND (p_Key5 IS NOT NULL)) OR ((p_Key1 IS NOT NULL) AND
607            (p_Key2 IS NOT NULL) AND (p_Key3 IS NOT NULL)  AND (p_Key4 IS NOT NULL) AND
608            (p_Key5 IS NULL))    OR ((p_Key1 IS NOT NULL)  AND (p_Key2 IS NOT NULL) AND
609            (p_Key3 IS NOT NULL) AND (p_Key4 IS NULL)      AND (p_Key5 IS NULL))    OR
610           ((p_Key1 IS NOT NULL) AND (p_Key2 IS NOT NULL)  AND (p_Key3 IS NULL)     AND
611            (p_Key4 IS NULL)     AND (p_Key5 IS NULL))     OR ((p_Key1 IS NOT NULL) AND
615         -- *******************************************************
612            (p_Key2 IS NULL)     AND (p_Key3 IS NULL)      AND (p_Key4 IS NULL)     AND
613            (p_Key5 IS NULL)))
614       THEN
616         -- Start with matching all five keys
617         --  if no 5-key matches  ->  search to match 4 keys
618         --  if no 4-key matches  ->  search to match 3 keys
619         --  if no 3-key matches  ->  search to match 2 keys
620         --  if no 2-key matches  ->  search to match 1 keys
621         --  if no 1-key matches  ->  search for generic match
622         -- *******************************************************
623 
624         -- *******************************************************
625         -- All 5 keys are supplied
626         -- *******************************************************
627         IF (NOT((p_Key1 IS NULL) OR (p_Key2 IS NULL) OR (p_Key3 IS NULL) OR
628            (p_Key4 IS NULL) OR (p_Key5 IS NULL))) THEN
629           OPEN match_5;
630           FETCH match_5 INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
631                              l_Ext_val4,l_Ext_val5;
632           IF match_5%NOTFOUND THEN
633             OPEN match_4;
634             FETCH match_4 INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
635                                l_Ext_val4,l_Ext_val5;
636             IF match_4%NOTFOUND THEN
637               OPEN match_3;
638               FETCH match_3 INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
639                                  l_Ext_val4,l_Ext_val5;
640               IF match_3%NOTFOUND THEN
641                 OPEN match_2;
642                 FETCH match_2 INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
643                                    l_Ext_val4,l_Ext_val5;
644                 IF match_2%NOTFOUND THEN
645                   OPEN match_1;
646                   FETCH match_1 INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
647                                      l_Ext_val4,l_Ext_val5;
648                   IF match_1%NOTFOUND THEN
649                     OPEN match_global;
650                     FETCH match_global INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
651                                             l_Ext_val4,l_Ext_val5;
652                     CLOSE match_global;
653                   END IF;
654                   CLOSE match_1;
655                 END IF;
656                 CLOSE match_2;
657               END IF;
658               CLOSE match_3;
659             END IF;
660             CLOSE match_4;
661           END IF;
662           CLOSE match_5;
663 
664         -- *******************************************************
665         -- Four (4) keys are supplied
666         -- *******************************************************
667         ELSIF (NOT((p_Key1 IS NULL) OR (p_Key2 IS NULL) OR
668                    (p_Key3 IS NULL) OR (p_Key4 IS NULL))) THEN
669           OPEN match_4;
670           FETCH match_4 INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
671                              l_Ext_val4,l_Ext_val5;
672           IF match_4%NOTFOUND THEN
673             OPEN match_3;
674             FETCH match_3 INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
675                                l_Ext_val4,l_Ext_val5;
676             IF match_3%NOTFOUND THEN
677               OPEN match_2;
678               FETCH match_2 INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
679                                  l_Ext_val4,l_Ext_val5;
680               IF match_2%NOTFOUND THEN
681                 OPEN match_1;
682                 FETCH match_1 INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
683                                    l_Ext_val4,l_Ext_val5;
684                 IF match_1%NOTFOUND THEN
685                   OPEN match_global;
686                   FETCH match_global INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
687                                           l_Ext_val4,l_Ext_val5;
688                   CLOSE match_global;
689                 END IF;
690                 CLOSE match_1;
691               END IF;
692               CLOSE match_2;
693             END IF;
694             CLOSE match_3;
695           END IF;
696           CLOSE match_4;
697 
698         -- *******************************************************
699         -- Three (3) keys are supplied
700         -- *******************************************************
701         ELSIF (NOT((p_Key1 IS NULL) OR (p_Key2 IS NULL) OR (p_Key3 IS NULL))) THEN
702           OPEN match_3;
703           FETCH match_3 INTO l_Ext_val1,l_Ext_val2,
704                              l_Ext_val3,l_Ext_val4,l_Ext_val5;
705           IF match_3%NOTFOUND THEN
706             OPEN match_2;
707             FETCH match_2 INTO l_Ext_val1,l_Ext_val2,
708                                l_Ext_val3,l_Ext_val4,l_Ext_val5;
709             IF match_2%NOTFOUND THEN
710               OPEN match_1;
711               FETCH match_1 INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
712                                  l_Ext_val4,l_Ext_val5;
713               IF match_1%NOTFOUND THEN
714                 OPEN match_global;
715                 FETCH match_global INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
716                                         l_Ext_val4,l_Ext_val5;
717                 CLOSE match_global;
718               END IF;
719               CLOSE match_1;
720             END IF;
721             CLOSE match_2;
722           END IF;
723           CLOSE match_3;
724 
725         -- *******************************************************
726         -- Two (2) keys are supplied
730           FETCH match_2 INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
727         -- *******************************************************
728         ELSIF (NOT((p_Key1 IS NULL) OR (p_Key2 IS NULL))) THEN
729           OPEN match_2;
731                              l_Ext_val4,l_Ext_val5;
732           IF match_2%NOTFOUND THEN
733             OPEN match_1;
734             FETCH match_1 INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
735                                l_Ext_val4,l_Ext_val5;
736             IF match_1%NOTFOUND THEN
737               OPEN match_global;
738               FETCH match_global INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
739                                       l_Ext_val4,l_Ext_val5;
740               CLOSE match_global;
741             END IF;
742             CLOSE match_1;
743           END IF;
744           CLOSE match_2;
745 
746         -- *******************************************************
747         -- One (1) key is supplied
748         -- *******************************************************
749         ELSIF (p_Key1 IS NOT NULL) THEN
750           OPEN match_1;
751           FETCH match_1 INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
752                              l_Ext_val4,l_Ext_val5;
753           IF match_1%NOTFOUND THEN
754             OPEN match_global;
755             FETCH match_global INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
756                                     l_Ext_val4,l_Ext_val5;
757             CLOSE match_global;
758           END IF;
759           CLOSE match_1;
760         END IF;
761 
762       ELSE
763 
764         -- *******************************
765         -- all keys (1-5) are NULLs
766         -- *******************************
767         OPEN match_global;
768         FETCH match_global INTO l_Ext_val1,l_Ext_val2,l_Ext_val3,
769                                 l_Ext_val4,l_Ext_val5;
770         CLOSE match_global;
771       END IF;
772 
773       if  l_Ext_val1 is null
774       and l_Ext_val2 is null
775       and l_Ext_val3 is null
776       and l_Ext_val4 is null
777       and l_Ext_val5 is null
778       then
779       /* p_return_status := EC_Code_Conversion_PVT.G_XREF_NOT_FOUND;
780          fnd_message.set_name('EC','ECE_XREF_NOT_FOUND');
781          fnd_message.set_token('DATA', p_Int_val);
782          p_msg_data := fnd_message.get; */
783 
784          -- We change the behavior of the code conversion.
785          -- If it can't find the value, then simply copy the internal
786          -- value to external value1 instead of giving out an error message.
787          p_Ext_val1 := p_Int_val;
788       else
789          p_Ext_val1 := l_Ext_val1;
790          p_Ext_val2 := l_Ext_val2;
791          p_Ext_val3 := l_Ext_val3;
792          p_Ext_val4 := l_Ext_val4;
793          p_Ext_val5 := l_Ext_val5;
794          if EC_DEBUG.G_debug_level = 3 then
795          EC_DEBUG.PL(3, 'l_Ext_val1: ',l_Ext_val1);
796          EC_DEBUG.PL(3, 'l_Ext_val2: ',l_Ext_val2);
797          EC_DEBUG.PL(3, 'l_Ext_val3: ',l_Ext_val3);
798          EC_DEBUG.PL(3, 'l_Ext_val4: ',l_Ext_val4);
799          EC_DEBUG.PL(3, 'l_Ext_val5: ',l_Ext_val5);
800          end if;
801       end if;
802 
803       -- *******************************************************
804       -- Standard check of p_simulate and p_commit parameters
805       -- *******************************************************
806 /*
807       IF FND_API.To_Boolean(p_simulate) THEN
808         ROLLBACK TO Convert_from_int_to_ext_PVT;
809       ELSIF FND_API.To_Boolean(p_commit) THEN
810         COMMIT WORK;
811       END IF;
812 */
813       -- Standard call to get message count and if count is 1, get message info.
814       FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,p_data => p_msg_data);
815 
816  if EC_DEBUG.G_debug_level >= 2 then
817    EC_DEBUG.POP('EC_Code_Conversion_PVT.Convert_from_int_to_ext');
818  end if;
819 EXCEPTION
820  WHEN FND_API.G_EXC_ERROR THEN
821 --        ROLLBACK TO Convert_from_int_to_ext_PVT;
822         p_return_status := FND_API.G_RET_STS_ERROR;
823         FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
824 				  p_data => p_msg_data);
825  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
826 --        ROLLBACK TO Convert_from_int_to_ext_PVT;
827         p_return_status := FND_API.G_RET_STS_ERROR;
828         FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
829 				  p_data => p_msg_data);
830  WHEN OTHERS THEN
831          EC_DEBUG.PL(0,'EC','ECE_ERROR_CODE','ERROR_CODE',SQLCODE);
832          EC_DEBUG.PL(0,'EC','ECE_ERROR_MESSAGE','ERROR_MESSAGE',SQLERRM);
833 --        ROLLBACK TO Convert_from_int_to_ext_PVT;
834         p_return_status := FND_API.G_RET_STS_ERROR;
835         IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
836           FND_MSG_PUB.Add_Exc_Msg(G_FILE_NAME, G_PKG_NAME, l_api_name);
837         END IF;
838         FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
839 				  p_data => p_msg_data);
840 
841 END Convert_from_int_to_ext;
842 
843 PROCEDURE populate_plsql_tbl_with_extval
844    (p_api_version_number  IN      NUMBER,
845     p_init_msg_list       IN      VARCHAR2  := FND_API.G_FALSE,
846     p_simulate            IN      VARCHAR2  := FND_API.G_FALSE,
847     p_commit              IN      VARCHAR2  := FND_API.G_FALSE,
848     p_validation_level    IN      NUMBER    := FND_API.G_VALID_LEVEL_FULL,
852     p_key_tbl             IN      ece_flatfile_pvt.Interface_tbl_type,
849     p_return_status       OUT NOCOPY    VARCHAR2,
850     p_msg_count           OUT NOCOPY    NUMBER,
851     p_msg_data            OUT NOCOPY    VARCHAR2,
853     p_tbl                 IN OUT  NOCOPY ece_flatfile_pvt.Interface_tbl_type) IS
854 
855     l_api_name            CONSTANT VARCHAR2(30) := 'populate_plsql_tbl_with_extval';
856     l_api_version_number  CONSTANT NUMBER       :=  1.0;
857 
858     ckey1_used_flag       VARCHAR2(1);
859     ckey2_used_flag       VARCHAR2(1);
860     ckey3_used_flag       VARCHAR2(1);
861     ckey4_used_flag       VARCHAR2(1);
862     ckey5_used_flag       VARCHAR2(1);
863 
864     ckey1_used_table      VARCHAR2(80);
865     ckey2_used_table      VARCHAR2(80);
866     ckey3_used_table      VARCHAR2(80);
867     ckey4_used_table      VARCHAR2(80);
868     ckey5_used_table      VARCHAR2(80);
869 
870     ckey1_used_column     VARCHAR2(80);
871     ckey2_used_column     VARCHAR2(80);
872     ckey3_used_column     VARCHAR2(80);
873     ckey4_used_column     VARCHAR2(80);
874     ckey5_used_column     VARCHAR2(80);
875 
876     cxref_category_code   VARCHAR2(30);
877 
878     key1                  VARCHAR2(500);  -- 4011384
879     key2                  VARCHAR2(500);
880     key3                  VARCHAR2(500);
881     key4                  VARCHAR2(500);
882     key5                  VARCHAR2(500);
883 
884     ext1                  VARCHAR2(500);
885     ext2                  VARCHAR2(500);
886     ext3                  VARCHAR2(500);
887     ext4                  VARCHAR2(500);
888     ext5                  VARCHAR2(500);
889 
890     return_code           NUMBER;
891     icount                NUMBER;
892     l_return_status       VARCHAR2(2000);
893     l_msg_count           NUMBER;
894     l_msg_data            VARCHAR2(2000);
895 
896     i                     INTEGER;
897     j                     INTEGER;
898     l_ext_pos		  NUMBER;
899     b_xref_data_found     BOOLEAN;
900 
901 	BEGIN
902 
903   if EC_DEBUG.G_debug_level >= 2 then
904    EC_DEBUG.PUSH('EC_Code_Conversion_PVT.populate_plsql_tbl_with_extval');
905    EC_DEBUG.PL(3, 'API version : ',p_api_version_number);
906    EC_DEBUG.PL(3, 'p_init_msg_list: ',p_init_msg_list);
907    EC_DEBUG.PL(3, 'p_simulate: ',p_simulate);
908    EC_DEBUG.PL(3, 'p_commit: ',p_commit);
909    EC_DEBUG.PL(3, 'p_validation_level: ',p_validation_level);
910    end if;
911 	-- Standard Start of API savepoint
912 	SAVEPOINT populate_plsql_tbl_PVT;
913 
914 	-- Standard call to check for call compatibility.
915       IF NOT FND_API.Compatible_API_Call
916        (l_api_version_number,
917         p_api_version_number,
918         l_api_name,
919         G_PKG_NAME) THEN
920 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
921       END IF;
922 
923 	-- Initialize message list if p_init_msg_list is set to TRUE.
924       IF FND_API.to_Boolean(p_init_msg_list) THEN
925 				FND_MSG_PUB.initialize;
926       END IF;
927 
928 	-- Initialize API return status to success
929 	p_return_status := FND_API.G_RET_STS_SUCCESS;
930 
931 	-- *******************************************************
932 	-- work on each row in the p_tbl pl/sql
933 	-- table to fill in the ext1-5 value
934 	-- *******************************************************
935 	icount := p_tbl.COUNT;
936 
937       FOR i IN 1..icount LOOP
938         IF (p_tbl(i).xref_category_id IS NOT NULL) THEN
939 	-- use this xref_id, go to ece_xref_category to find out all the
940 	-- enabled keys
941 	SELECT	  key1_used_flag, key2_used_flag, key3_used_flag,
942                   key4_used_flag, key5_used_flag,
943                   key1_used_table, key2_used_table, key3_used_table,
944                   key4_used_table, key5_used_table,
945                   key1_used_column, key2_used_column, key3_used_column,
946                   key4_used_column, key5_used_column,
947                   xref_category_code
948 	INTO	  ckey1_used_flag, ckey2_used_flag, ckey3_used_flag,
949                   ckey4_used_flag, ckey5_used_flag,
950                   ckey1_used_table, ckey2_used_table, ckey3_used_table,
951                   ckey4_used_table, ckey5_used_table,
952                   ckey1_used_column, ckey2_used_column, ckey3_used_column,
953                   ckey4_used_column, ckey5_used_column,
954                   cxref_category_code
955 	FROM	  ece_xref_categories
956 	WHERE	  ece_xref_categories.xref_category_id = p_tbl(i).xref_category_id;
957 
958           IF ckey1_used_flag = 'Y' AND
959              p_tbl(i).xref_key1_source_column IS NOT NULL THEN
960             FOR j IN 1..p_key_tbl.count LOOP
961               IF p_tbl(i).xref_key1_source_column =
962                  p_key_tbl(j).interface_column_name THEN
963                 key1 := p_key_tbl(j).value;
964                 if EC_DEBUG.G_debug_level >= 3 then
965                 EC_DEBUG.PL(3, 'key1 :', key1);
966                 end if;
967 		EXIT;
968 	      END IF;
969 	    END LOOP;
970 		-- we assume all the key can be found in the pl/sql table
971 	  END IF;
972 
973           IF ckey2_used_flag = 'Y' AND
974              p_tbl(i).xref_key2_source_column IS NOT NULL THEN
975             FOR j IN 1..p_key_tbl.count LOOP
976               IF p_tbl(i).xref_key2_source_column =
980                 EC_DEBUG.PL(3, 'key2 :', key2);
977                  p_key_tbl(j).interface_column_name THEN
978                 key2 := p_key_tbl(j).value;
979                 if EC_DEBUG.G_debug_level >= 3 then
981                 end if;
982 		EXIT;
983 	      END IF;
984 	    END LOOP;
985 	  END IF;
986 
987           IF ckey3_used_flag = 'Y' AND
988              p_tbl(i).xref_key3_source_column IS NOT NULL THEN
989             FOR j in 1..p_key_tbl.count LOOP
990               IF p_tbl(i).xref_key3_source_column =
991                  p_key_tbl(j).interface_column_name THEN
992                 key3 := p_key_tbl(j).value;
993                 if EC_DEBUG.G_debug_level >= 3 then
994                 EC_DEBUG.PL(3, 'key3 :', key3);
995                 end if;
996 		EXIT;
997 	      END IF;
998 	    END LOOP;
999 	  END IF;
1000 
1001           IF ckey4_used_flag = 'Y' AND
1002              p_tbl(i).xref_key4_source_column IS NOT NULL THEN
1003             FOR j IN 1..p_key_tbl.count LOOP
1004               IF p_tbl(i).xref_key4_source_column =
1005                  p_key_tbl(j).interface_column_name THEN
1006 		key4 := p_key_tbl(j).value;
1007                 if EC_DEBUG.G_debug_level >= 3 then
1008                 EC_DEBUG.PL(3, 'key4 :', key4);
1009                 end if;
1010 		EXIT;
1011 	      END IF;
1012 	    END LOOP;
1013 	END IF;
1014 
1015           IF ckey5_used_flag = 'Y' AND
1016              p_tbl(i).xref_key5_source_column IS NOT NULL THEN
1017             FOR j IN 1..p_key_tbl.count LOOP
1018               IF p_tbl(i).xref_key5_source_column =
1019                  p_key_tbl(j).interface_column_name THEN
1020 		key5 := p_key_tbl(j).value;
1021                 if EC_DEBUG.G_debug_level >= 3 then
1022                 EC_DEBUG.PL(3, 'key5 :', key5);
1023                 end if;
1024 		EXIT;
1025               END IF;
1026 	    END LOOP;
1027 	END IF;
1028 
1029 	-- Now we know the int_value, the actual value of the key1-5,
1030 	-- so we just need to call int_2_ext APIs to get the
1031 	-- the ext1-5 value
1032           EC_Code_Conversion_PVT.Convert_from_int_to_ext
1033            (p_api_version_number  => 1.0,
1034             p_return_status       => l_return_status,
1035             p_msg_count           => l_msg_count,
1036             p_msg_data            => l_msg_data,
1037             p_Category            => cxref_category_code,
1038             p_Key1                => key1,
1039             p_Key2                => key2,
1040             p_Key3                => key3,
1041             p_Key4                => key4,
1042             p_Key5                => key5,
1043             p_Int_val             => p_tbl(i).value,
1044             p_Ext_val1            => ext1,
1045             p_Ext_val2            => ext2,
1046             p_Ext_val3            => ext3,
1047             p_Ext_val4            => ext4,
1048             p_Ext_val5            => ext5);
1049 
1050             p_tbl(i).ext_val1 := ext1;
1051             p_tbl(i).ext_val2 := ext2;
1052             p_tbl(i).ext_val3 := ext3;
1053             p_tbl(i).ext_val4 := ext4;
1054             p_tbl(i).ext_val5 := ext5;
1055 
1056             key1 := NULL;
1057             key2 := NULL;
1058             key3 := NULL;
1059             key4 := NULL;
1060             key5 := NULL;
1061 
1062            -- ******************************
1063            -- Need to populate the value column
1064            -- of all the corresponding external
1065            -- values, e.g. UOM_CODE_EXT1
1066            -- ******************************
1067 
1068            IF ext1 is NOT NULL
1069            THEN
1070              if EC_DEBUG.G_debug_level = 3 then
1071              EC_DEBUG.PL(3, 'ext1 :', ext1);
1072              end if;
1073             b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1074              (p_gateway_tbl       => p_tbl,
1075               p_conversion_group  => p_tbl(i).conversion_group_id,
1076               p_sequence_num      => 1,
1077               p_Pos               => l_ext_pos);
1078 
1079               IF b_xref_data_found THEN
1080                  p_tbl(l_ext_pos).value := ext1;
1081               END IF;
1082            END IF;
1083 
1084            IF ext2 is NOT NULL
1085            THEN
1086              if EC_DEBUG.G_debug_level = 3 then
1087              EC_DEBUG.PL(3, 'ext2 :', ext2);
1088              end if;
1089              b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1090              (p_gateway_tbl       => p_tbl,
1091               p_conversion_group  => p_tbl(i).conversion_group_id,
1092               p_sequence_num      => 2,
1093               p_Pos               => l_ext_pos);
1094 
1095               IF b_xref_data_found THEN
1096                  p_tbl(l_ext_pos).value := ext2;
1097               END IF;
1098            END IF;
1099 
1100            IF ext3 is NOT NULL
1101            THEN
1102              if EC_DEBUG.G_debug_level = 3 then
1103              EC_DEBUG.PL(3, 'ext3 :', ext3);
1104              end if;
1105              b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1106              (p_gateway_tbl       => p_tbl,
1107               p_conversion_group  => p_tbl(i).conversion_group_id,
1108               p_sequence_num      => 3,
1109               p_Pos               => l_ext_pos);
1110 
1114            END IF;
1111               IF b_xref_data_found THEN
1112                  p_tbl(l_ext_pos).value := ext3;
1113               END IF;
1115 
1116            IF ext4 is NOT NULL
1117            THEN
1118              if EC_DEBUG.G_debug_level = 3 then
1119              EC_DEBUG.PL(3, 'ext4 :', ext4);
1120              end if;
1121              b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1122              (p_gateway_tbl       => p_tbl,
1123               p_conversion_group  => p_tbl(i).conversion_group_id,
1124               p_sequence_num      => 4,
1125               p_Pos               => l_ext_pos);
1126 
1127               IF b_xref_data_found THEN
1128                  p_tbl(l_ext_pos).value := ext4;
1129               END IF;
1130            END IF;
1131 
1132            IF ext5 is NOT NULL
1133            THEN
1134              if EC_DEBUG.G_debug_level = 3 then
1135              EC_DEBUG.PL(3, 'ext5 :', ext5);
1136              end if;
1137              b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1138              (p_gateway_tbl       => p_tbl,
1139               p_conversion_group  => p_tbl(i).conversion_group_id,
1140               p_sequence_num      => 5,
1141               p_Pos               => l_ext_pos);
1142 
1143               IF b_xref_data_found THEN
1144                  p_tbl(l_ext_pos).value := ext5;
1145               END IF;
1146            END IF;
1147 
1148         -- This is to copy the internal value to external value if
1149         -- there is no category code assigned to the interface column and
1150         -- the external value1 is null.
1151 
1152         ELSIF (p_tbl(i).conversion_seq = 0) THEN
1153            b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1154           (p_gateway_tbl       => p_tbl,
1155            p_conversion_group  => p_tbl(i).conversion_group_id,
1156            p_sequence_num      => 1,
1157            p_Pos               => l_ext_pos);
1158 
1159            IF b_xref_data_found THEN
1160               p_tbl(l_ext_pos).value := p_tbl(i).value;
1161               p_tbl(i).ext_val1 := p_tbl(i).value;
1162            END IF;
1163 
1164         END IF;
1165       END LOOP;
1166 
1167 	-- *******************************************************
1168 	-- Standard check of p_simulate and p_commit parameters
1169 	-- *******************************************************
1170       IF FND_API.To_Boolean(p_simulate) THEN
1171 				ROLLBACK TO populate_plsql_tbl_PVT;
1172       ELSIF FND_API.To_Boolean(p_commit) THEN
1173 				COMMIT WORK;
1174 	END IF;
1175 
1176       -- Standard call to get message count and if count is 1, get message info.
1177 	FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
1178 				  p_data  => p_msg_data);
1179 
1180       if l_return_status = EC_Code_Conversion_PVT.G_XREF_NOT_FOUND
1181       then
1182          p_return_status := EC_Code_Conversion_PVT.G_XREF_NOT_FOUND;
1183       end if;
1184 
1185  if EC_DEBUG.G_debug_level >= 2 then
1186    EC_DEBUG.POP('EC_Code_Conversion_PVT.populate_plsql_tbl_with_extval');
1187  end if;
1188 EXCEPTION
1189       WHEN FND_API.G_EXC_ERROR THEN
1190 			ROLLBACK TO populate_plsql_tbl_PVT;
1191 			p_return_status := FND_API.G_RET_STS_ERROR;
1192         FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
1193 				  p_data  => p_msg_data);
1194       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1195 				ROLLBACK TO populate_plsql_tbl_PVT;
1196 				p_return_status := FND_API.G_RET_STS_ERROR;
1197         FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
1198 				  p_data  => p_msg_data);
1199       WHEN OTHERS THEN
1200          EC_DEBUG.PL(0,'EC','ECE_ERROR_CODE','ERROR_CODE',SQLCODE);
1201          EC_DEBUG.PL(0,'EC','ECE_ERROR_MESSAGE','ERROR_MESSAGE',SQLERRM);
1202 	ROLLBACK TO populate_plsql_tbl_PVT;
1203 	p_return_status := FND_API.G_RET_STS_ERROR;
1204         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1205 					FND_MSG_PUB.Add_Exc_Msg(G_FILE_NAME, G_PKG_NAME, l_api_name);
1206 	END IF;
1207         FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
1208 				  p_data  => p_msg_data);
1209 
1210 END populate_plsql_tbl_with_extval;
1211 
1212 PROCEDURE populate_plsql_tbl_with_extval
1213    (p_api_version_number  IN      	NUMBER,
1214     p_init_msg_list       IN      	VARCHAR2  := FND_API.G_FALSE,
1215     p_simulate            IN      	VARCHAR2  := FND_API.G_FALSE,
1216     p_commit              IN      	VARCHAR2  := FND_API.G_FALSE,
1217     p_validation_level    IN      	NUMBER    := FND_API.G_VALID_LEVEL_FULL,
1218     p_return_status       OUT  NOCOPY  	VARCHAR2,
1219     p_msg_count           OUT  NOCOPY  	NUMBER,
1220     p_msg_data            OUT  NOCOPY   VARCHAR2,
1221     p_tbl            	  IN OUT NOCOPY ec_utils.mapping_tbl,
1222     p_level               IN 		NUMBER) IS
1223 
1224     l_api_name            CONSTANT VARCHAR2(30) := 'populate_plsql_tbl_with_extval';
1225     l_api_version_number  CONSTANT NUMBER       :=  1.0;
1226 
1227     ckey1_used_flag       VARCHAR2(1);
1228     ckey2_used_flag       VARCHAR2(1);
1229     ckey3_used_flag       VARCHAR2(1);
1230     ckey4_used_flag       VARCHAR2(1);
1231     ckey5_used_flag       VARCHAR2(1);
1232 
1233     ckey1_used_table      VARCHAR2(80);
1234     ckey2_used_table      VARCHAR2(80);
1235     ckey3_used_table      VARCHAR2(80);
1236     ckey4_used_table      VARCHAR2(80);
1237     ckey5_used_table      VARCHAR2(80);
1241     ckey3_used_column     VARCHAR2(80);
1238 
1239     ckey1_used_column     VARCHAR2(80);
1240     ckey2_used_column     VARCHAR2(80);
1242     ckey4_used_column     VARCHAR2(80);
1243     ckey5_used_column     VARCHAR2(80);
1244 
1245     cxref_category_code   VARCHAR2(30);
1246 
1247     key1                  VARCHAR2(500);  --4011384
1248     key2                  VARCHAR2(500);
1249     key3                  VARCHAR2(500);
1250     key4                  VARCHAR2(500);
1251     key5                  VARCHAR2(500);
1252 
1253     ext1                  VARCHAR2(500);
1254     ext2                  VARCHAR2(500);
1255     ext3                  VARCHAR2(500);
1256     ext4                  VARCHAR2(500);
1257     ext5                  VARCHAR2(500);
1258 
1259     return_code           pls_integer;
1260     icount                pls_integer;
1261     l_return_status       VARCHAR2(2000);
1262     l_msg_count           pls_integer;
1263     l_msg_data            VARCHAR2(2000);
1264 
1265     i                     pls_integer;
1266     j                     pls_integer;
1267     l_ext_pos		  pls_integer;
1268     b_xref_data_found     BOOLEAN;
1269 
1270 	BEGIN
1271 
1272   if EC_DEBUG.G_debug_level >= 2 then
1273    EC_DEBUG.PUSH('EC_Code_Conversion_PVT.populate_plsql_tbl_with_extval');
1274    EC_DEBUG.PL(3, 'API version : ',p_api_version_number);
1275    EC_DEBUG.PL(3, 'p_init_msg_list: ',p_init_msg_list);
1276    EC_DEBUG.PL(3, 'p_simulate: ',p_simulate);
1277    EC_DEBUG.PL(3, 'p_commit: ',p_commit);
1278    EC_DEBUG.PL(3, 'p_validation_level: ',p_validation_level);
1279    end if;
1280 	-- Standard Start of API savepoint
1281 	SAVEPOINT populate_plsql_tbl_PVT;
1282 
1283 	-- Standard call to check for call compatibility.
1284       IF NOT FND_API.Compatible_API_Call
1285        (l_api_version_number,
1286         p_api_version_number,
1287         l_api_name,
1288         G_PKG_NAME) THEN
1289 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1290       END IF;
1291 
1292 	-- Initialize message list if p_init_msg_list is set to TRUE.
1293       IF FND_API.to_Boolean(p_init_msg_list) THEN
1294 				FND_MSG_PUB.initialize;
1295       END IF;
1296 
1297 	-- Initialize API return status to success
1298 	p_return_status := FND_API.G_RET_STS_SUCCESS;
1299 
1300 	-- *******************************************************
1301 	-- work on each row in the p_tbl pl/sql
1302 	-- table to fill in the ext1-5 value
1303 	-- *******************************************************
1304 	icount := p_tbl.COUNT;
1305 
1306 FOR i IN ec_utils.g_int_levels(p_level).file_start_pos..ec_utils.g_int_levels(p_level).file_end_pos
1307 LOOP
1308         IF (p_tbl(i).xref_category_id IS NOT NULL) THEN
1309 	-- use this xref_id, go to ece_xref_category to find out all the
1310 	-- enabled keys
1311 	SELECT	  key1_used_flag, key2_used_flag, key3_used_flag,
1312                   key4_used_flag, key5_used_flag,
1313                   key1_used_table, key2_used_table, key3_used_table,
1314                   key4_used_table, key5_used_table,
1315                   key1_used_column, key2_used_column, key3_used_column,
1316                   key4_used_column, key5_used_column,
1317                   xref_category_code
1318 	INTO	  ckey1_used_flag, ckey2_used_flag, ckey3_used_flag,
1319                   ckey4_used_flag, ckey5_used_flag,
1320                   ckey1_used_table, ckey2_used_table, ckey3_used_table,
1321                   ckey4_used_table, ckey5_used_table,
1322                   ckey1_used_column, ckey2_used_column, ckey3_used_column,
1323                   ckey4_used_column, ckey5_used_column,
1324                   cxref_category_code
1325 	FROM	  ece_xref_categories
1326 	WHERE	  ece_xref_categories.xref_category_id = p_tbl(i).xref_category_id;
1327 
1328 	-- Bug 2828072
1329           IF ckey1_used_flag = 'Y' AND
1330              p_tbl(i).xref_key1_source_column IS NOT NULL THEN
1331             FOR j IN REVERSE 1..p_level LOOP
1332               FOR k IN ec_utils.g_int_levels(j).file_start_pos..ec_utils.g_int_levels(j).file_end_pos
1333               LOOP
1334                 IF p_tbl(i).xref_key1_source_column =
1335                  p_tbl(k).interface_column_name THEN
1336                 	key1 := p_tbl(k).value;
1337 			EXIT;
1338                 END IF;
1339               END LOOP;
1340               IF key1 IS NOT NULL THEN
1341                 EXIT;
1342               END IF;
1343 	    END LOOP;
1344 		-- we assume all the key can be found in the pl/sql table
1345 	  END IF;
1346 
1347           IF ckey2_used_flag = 'Y' AND
1348              p_tbl(i).xref_key2_source_column IS NOT NULL THEN
1349             FOR j IN REVERSE 1..p_level LOOP
1350               FOR k IN ec_utils.g_int_levels(j).file_start_pos..ec_utils.g_int_levels(j).file_end_pos
1351               LOOP
1352                 IF p_tbl(i).xref_key2_source_column =
1353                  p_tbl(k).interface_column_name THEN
1354                 	key2 := p_tbl(k).value;
1355     			EXIT;
1356                 END IF;
1357               END LOOP;
1358               IF key2 IS NOT NULL THEN
1359                 EXIT;
1360 	      END IF;
1361 	    END LOOP;
1362 	  END IF;
1363 
1364           IF ckey3_used_flag = 'Y' AND
1365             p_tbl(i).xref_key3_source_column IS NOT NULL THEN
1366             FOR j IN REVERSE 1..p_level LOOP
1370                  p_tbl(k).interface_column_name THEN
1367               FOR k IN ec_utils.g_int_levels(j).file_start_pos..ec_utils.g_int_levels(j).file_end_pos
1368               LOOP
1369                 IF p_tbl(i).xref_key3_source_column =
1371                		 key3 := p_tbl(k).value;
1372                   	 EXIT;
1373 	        END IF;
1374               END LOOP;
1375               IF key3 IS NOT NULL THEN
1376                 EXIT;
1377 	      END IF;
1378 	    END LOOP;
1379 	  END IF;
1380 
1381           IF ckey4_used_flag = 'Y' AND
1382              p_tbl(i).xref_key4_source_column IS NOT NULL THEN
1383             FOR j IN REVERSE 1..p_level LOOP
1384               FOR k IN ec_utils.g_int_levels(j).file_start_pos..ec_utils.g_int_levels(j).file_end_pos
1385               LOOP
1386                 IF p_tbl(i).xref_key4_source_column =
1387                  p_tbl(k).interface_column_name THEN
1388 			key4 := p_tbl(k).value;
1389   			EXIT;
1390 	        END IF;
1391               END LOOP;
1392               IF key4 IS NOT NULL THEN
1393                 EXIT;
1394 	      END IF;
1395 	    END LOOP;
1396 	END IF;
1397 
1398           IF ckey5_used_flag = 'Y' AND
1399              p_tbl(i).xref_key5_source_column IS NOT NULL THEN
1400             FOR j IN REVERSE 1..p_level LOOP
1401               FOR k IN ec_utils.g_int_levels(j).file_start_pos..ec_utils.g_int_levels(j).file_end_pos
1402               LOOP
1403                 IF p_tbl(i).xref_key5_source_column =
1404                  p_tbl(k).interface_column_name THEN
1405 			key5 := p_tbl(k).value;
1406 			EXIT;
1407                 END IF;
1408               END LOOP;
1409               IF key5 IS NOT NULL THEN
1410                 EXIT;
1411 	      END IF;
1412 	    END LOOP;
1413 	END IF;
1414 
1415 	IF EC_DEBUG.G_debug_level = 3 then
1416              	EC_DEBUG.PL(3, 'key1 :', key1);
1417              	EC_DEBUG.PL(3, 'key2 :', key2);
1418              	EC_DEBUG.PL(3, 'key3 :', key3);
1419              	EC_DEBUG.PL(3, 'key4 :', key4);
1420              	EC_DEBUG.PL(3, 'key5 :', key5);
1421         END IF;
1422 	-- Now we know the int_value, the actual value of the key1-5,
1423 	-- so we just need to call int_2_ext APIs to get the
1424 	-- the ext1-5 value
1425           EC_Code_Conversion_PVT.Convert_from_int_to_ext
1426            (p_api_version_number  => 1.0,
1427             p_return_status       => l_return_status,
1428             p_msg_count           => l_msg_count,
1429             p_msg_data            => l_msg_data,
1430             p_Category            => cxref_category_code,
1431             p_Key1                => key1,
1432             p_Key2                => key2,
1433             p_Key3                => key3,
1434             p_Key4                => key4,
1435             p_Key5                => key5,
1436             p_Int_val             => p_tbl(i).value,
1437             p_Ext_val1            => ext1,
1438             p_Ext_val2            => ext2,
1439             p_Ext_val3            => ext3,
1440             p_Ext_val4            => ext4,
1441             p_Ext_val5            => ext5);
1442 
1443             p_tbl(i).ext_val1 := ext1;
1444             p_tbl(i).ext_val2 := ext2;
1445             p_tbl(i).ext_val3 := ext3;
1446             p_tbl(i).ext_val4 := ext4;
1447             p_tbl(i).ext_val5 := ext5;
1448 
1449             key1 := NULL;
1450             key2 := NULL;
1451             key3 := NULL;
1452             key4 := NULL;
1453             key5 := NULL;
1454 
1455            -- ******************************
1456            -- Need to populate the value column
1457            -- of all the corresponding external
1458            -- values, e.g. UOM_CODE_EXT1
1459            -- ******************************
1460 
1461            IF ext1 is NOT NULL
1462            THEN
1463              if EC_DEBUG.G_debug_level = 3 then
1464              EC_DEBUG.PL(3, 'ext1 :', ext1);
1465              end if;
1466              b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1467              (p_level       	=> p_level,
1468               p_conversion_group  => p_tbl(i).conversion_group_id,
1469               p_sequence_num      => 1,
1470               p_Pos               => l_ext_pos);
1471 
1472               IF b_xref_data_found THEN
1473                  p_tbl(l_ext_pos).value := ext1;
1474               END IF;
1475            END IF;
1476 
1477            IF ext2 is NOT NULL
1478            THEN
1479              if EC_DEBUG.G_debug_level = 3 then
1480              EC_DEBUG.PL(3, 'ext2 :', ext2);
1481              end if;
1482              b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1483              (p_level       => p_level,
1484               p_conversion_group  => p_tbl(i).conversion_group_id,
1485               p_sequence_num      => 2,
1486               p_Pos               => l_ext_pos);
1487 
1488               IF b_xref_data_found THEN
1489                  p_tbl(l_ext_pos).value := ext2;
1490               END IF;
1491            END IF;
1492 
1493            IF ext3 is NOT NULL
1494            THEN
1495              if EC_DEBUG.G_debug_level = 3 then
1496              EC_DEBUG.PL(3, 'ext3 :', ext3);
1497              end if;
1498              b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1499              (p_level       => p_level,
1503 
1500               p_conversion_group  => p_tbl(i).conversion_group_id,
1501               p_sequence_num      => 3,
1502               p_Pos               => l_ext_pos);
1504               IF b_xref_data_found THEN
1505                  p_tbl(l_ext_pos).value := ext3;
1506               END IF;
1507            END IF;
1508 
1509            IF ext4 is NOT NULL
1510            THEN
1511              if EC_DEBUG.G_debug_level = 3 then
1512              EC_DEBUG.PL(3, 'ext4 :', ext4);
1513              end if;
1514              b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1515              (p_level       => p_level,
1516               p_conversion_group  => p_tbl(i).conversion_group_id,
1517               p_sequence_num      => 4,
1518               p_Pos               => l_ext_pos);
1519 
1520               IF b_xref_data_found THEN
1521                  p_tbl(l_ext_pos).value := ext4;
1522               END IF;
1523            END IF;
1524 
1525            IF ext5 is NOT NULL
1526            THEN
1527              if EC_DEBUG.G_debug_level = 3 then
1528              EC_DEBUG.PL(3, 'ext5 :', ext5);
1529              end if;
1530              b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1531              (p_level       => p_level,
1532               p_conversion_group  => p_tbl(i).conversion_group_id,
1533               p_sequence_num      => 5,
1534               p_Pos               => l_ext_pos);
1535 
1536               IF b_xref_data_found THEN
1537                  p_tbl(l_ext_pos).value := ext5;
1538               END IF;
1539            END IF;
1540 
1541         -- This is to copy the internal value to external value if
1542         -- there is no category code assigned to the interface column and
1543         -- the external value1 is null.
1544 
1545         ELSIF (p_tbl(i).conversion_sequence = 0) THEN
1546            b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1547           (p_level       => p_level,
1548            p_conversion_group  => p_tbl(i).conversion_group_id,
1549            p_sequence_num      => 1,
1550            p_Pos               => l_ext_pos);
1551 
1552            IF b_xref_data_found THEN
1553               p_tbl(l_ext_pos).value := p_tbl(i).value;
1554               p_tbl(i).ext_val1 := p_tbl(i).value;
1555            END IF;
1556 
1557         END IF;
1558       END LOOP;
1559 
1560 	-- *******************************************************
1561 	-- Standard check of p_simulate and p_commit parameters
1562 	-- *******************************************************
1563       IF FND_API.To_Boolean(p_simulate) THEN
1564 				ROLLBACK TO populate_plsql_tbl_PVT;
1565       ELSIF FND_API.To_Boolean(p_commit) THEN
1566 				COMMIT WORK;
1567 	END IF;
1568 
1569       -- Standard call to get message count and if count is 1, get message info.
1570 	FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
1571 				  p_data  => p_msg_data);
1572 
1573       if l_return_status = EC_Code_Conversion_PVT.G_XREF_NOT_FOUND
1574       then
1575          p_return_status := EC_Code_Conversion_PVT.G_XREF_NOT_FOUND;
1576       end if;
1577 
1578   if EC_DEBUG.G_debug_level >= 2 then
1579    EC_DEBUG.POP('EC_Code_Conversion_PVT.populate_plsql_tbl_with_extval');
1580   end if;
1581 EXCEPTION
1582       WHEN FND_API.G_EXC_ERROR THEN
1583 			ROLLBACK TO populate_plsql_tbl_PVT;
1584 			p_return_status := FND_API.G_RET_STS_ERROR;
1585         FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
1586 				  p_data  => p_msg_data);
1587       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1588 				ROLLBACK TO populate_plsql_tbl_PVT;
1589 				p_return_status := FND_API.G_RET_STS_ERROR;
1590         FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
1591 				  p_data  => p_msg_data);
1592       WHEN OTHERS THEN
1593          EC_DEBUG.PL(0,'EC','ECE_ERROR_CODE','ERROR_CODE',SQLCODE);
1594          EC_DEBUG.PL(0,'EC','ECE_ERROR_MESSAGE','ERROR_MESSAGE',SQLERRM);
1595 	ROLLBACK TO populate_plsql_tbl_PVT;
1596 	p_return_status := FND_API.G_RET_STS_ERROR;
1597         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1598 					FND_MSG_PUB.Add_Exc_Msg(G_FILE_NAME, G_PKG_NAME, l_api_name);
1599 	END IF;
1600         FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
1601 				  p_data  => p_msg_data);
1602 
1603 END populate_plsql_tbl_with_extval;
1604 
1605   PROCEDURE populate_plsql_tbl_with_intval
1606    (p_api_version_number  IN        NUMBER,
1607     p_init_msg_list       IN        VARCHAR2      := FND_API.G_FALSE,
1608     p_simulate            IN        VARCHAR2      := FND_API.G_FALSE,
1609     p_commit              IN        VARCHAR2      := FND_API.G_FALSE,
1610     p_validation_level    IN        NUMBER        := FND_API.G_VALID_LEVEL_FULL,
1611     p_return_status       OUT NOCOPY  VARCHAR2,
1612     p_msg_count           OUT NOCOPY  NUMBER,
1613     p_msg_data            OUT NOCOPY      VARCHAR2,
1614     p_key_tbl             IN OUT NOCOPY   ece_flatfile_pvt.Interface_tbl_type,
1615     p_apps_tbl            IN OUT NOCOPY   ece_flatfile_pvt.Interface_tbl_type) IS
1616 
1617     l_api_name            CONSTANT  VARCHAR2(30)  := 'populate_plsql_tbl_with_intval';
1618     l_api_version_number  CONSTANT  NUMBER        := 1.0;
1619 
1620     ckey1_used_flag                 VARCHAR2(1);
1621     ckey2_used_flag                 VARCHAR2(1);
1622     ckey3_used_flag                 VARCHAR2(1);
1623     ckey4_used_flag                 VARCHAR2(1);
1627     ckey2_used_table                VARCHAR2(80);
1624     ckey5_used_flag                 VARCHAR2(1);
1625 
1626     ckey1_used_table                VARCHAR2(80);
1628     ckey3_used_table                VARCHAR2(80);
1629     ckey4_used_table                VARCHAR2(80);
1630     ckey5_used_table                VARCHAR2(80);
1631 
1632     ckey1_used_column               VARCHAR2(80);
1633     ckey2_used_column               VARCHAR2(80);
1634     ckey3_used_column               VARCHAR2(80);
1635     ckey4_used_column               VARCHAR2(80);
1636     ckey5_used_column               VARCHAR2(80);
1637 
1638     cxref_category_code             VARCHAR2(30);
1639 
1640     key1                            VARCHAR2(500); -- 4011384
1641     key2                            VARCHAR2(500);
1642     key3                            VARCHAR2(500);
1643     key4                            VARCHAR2(500);
1644     key5                            VARCHAR2(500);
1645 
1646     int_val                         VARCHAR2(500);
1647     c_ext_value1                    VARCHAR2(500);
1648     c_ext_value2                    VARCHAR2(500);
1649     c_ext_value3                    VARCHAR2(500);
1650     c_ext_value4                    VARCHAR2(500);
1651     c_ext_value5                    VARCHAR2(500);
1652 
1653     l_int_data_loc_pos              NUMBER;
1654     l_key_data_loc_pos              NUMBER;
1655 
1656     return_code                     NUMBER;
1657     icount                          NUMBER;
1658     l_return_status                 VARCHAR2(2000);
1659     l_msg_count                     NUMBER;
1660     l_msg_data                      VARCHAR2(2000);
1661 
1662     b_xref_data_found               BOOLEAN       := FALSE;
1663 
1664     j                               INTEGER       := 1;
1665     k                               INTEGER;
1666 
1667 		BEGIN
1668    if EC_DEBUG.G_debug_level >= 2 then
1669    EC_DEBUG.PUSH('EC_Code_Conversion_PVT.populate_plsql_tbl_with_intval');
1670    EC_DEBUG.PL(3, 'API version : ',p_api_version_number);
1671    EC_DEBUG.PL(3, 'p_init_msg_list: ',p_init_msg_list);
1672    EC_DEBUG.PL(3, 'p_simulate: ',p_simulate);
1673    EC_DEBUG.PL(3, 'p_commit: ',p_commit);
1674    EC_DEBUG.PL(3, 'p_validation_level: ',p_validation_level);
1675    end if;
1676       -- Standard Start of API savepoint
1677 			SAVEPOINT populate_plsql_tbl_PVT;
1678 
1679 			-- Standard call to check for call compatibility.
1680       IF NOT FND_API.Compatible_API_Call
1681        (l_api_version_number,
1682 	p_api_version_number,
1683 	l_api_name,
1684         G_PKG_NAME) THEN
1685 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1686       END IF;
1687 
1688 			-- Initialize message list if p_init_msg_list is set to TRUE.
1689       IF FND_API.to_Boolean(p_init_msg_list) THEN
1690 	FND_MSG_PUB.initialize;
1691       END IF;
1692 
1693 	-- Initialize API return status to success
1694 	p_return_status := FND_API.G_RET_STS_SUCCESS;
1695 
1696 	-- *******************************************************
1697 	-- Move data from interface to source PL/SQL table
1698 	-- These are data that do not need xref.
1699 	-- *******************************************************
1700       WHILE j <= p_apps_tbl.count LOOP
1701 
1702           /* Debugging Code: DO NOT DELETE! */
1703 	/*
1704 	BEGIN
1705         INSERT INTO ece_error(run_id, line_id, text)
1706 			VALUES(
1707 				81,
1708 				ece_error_s.nextval,
1709 				'Rec =' || p_apps_tbl(j).record_num ||
1710 				'- Pos= ' || p_apps_tbl(j).Position ||
1711 				'- Val=' || p_apps_tbl(j).extvalue ||
1712 				' Width= ' || p_apps_tbl(j).data_length ||
1713 				' Int Col= '|| p_apps_tbl(j).interface_column_name ||
1714 				'- Apps col= ' || p_apps_tbl(j).base_column_name ||
1715 				'- val= '|| p_apps_tbl(j).value);
1716 	EXCEPTION
1717         WHEN OTHERS THEN
1718          EC_DEBUG.PL(0,'EC','ECE_ERROR_CODE','ERROR_CODE',SQLCODE);
1719          EC_DEBUG.PL(0,'EC','ECE_ERROR_MESSAGE','ERROR_MESSAGE',SQLERRM);
1720         END;
1721 	*/
1722 
1723 	-- *******************************************************
1724 	-- If the data need xref to convert to internal value
1725 	-- *******************************************************
1726         IF p_apps_tbl(j).xref_category_id IS NOT NULL AND
1727            p_apps_tbl(j).conversion_seq = 0 THEN
1728 
1729           -- *******************************************************
1730           -- These are data that need xref.
1731           -- First find all external values for xref.
1732           -- *******************************************************
1733 
1734           -- If the value is NOT NULL, the flat file already supplied
1735           -- the internal value and no XREF work needs to be done... (apark)
1736           IF p_apps_tbl(j).value IS NULL THEN
1737 
1738             -- We're going to go through each of the Conversion Seqs and
1739             -- see if they exist or not.
1740 
1741             -- 1
1742             b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1743              (p_gateway_tbl       => p_apps_tbl,
1744               p_conversion_group  => p_apps_tbl(j).conversion_group_id,
1745               p_sequence_num      => 1,
1746               p_Pos               => l_int_data_loc_pos);
1747 
1748             IF b_xref_data_found THEN
1749               c_ext_value1 := p_apps_tbl(l_int_data_loc_pos).value;
1750               if EC_DEBUG.G_debug_level >= 3 then
1754 
1751               EC_DEBUG.PL(3, 'c_ext_value1 :', c_ext_value1);
1752               end if;
1753             END IF;
1755             -- 2
1756             b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1757              (p_gateway_tbl       => p_apps_tbl,
1758               p_conversion_group  => p_apps_tbl(j).conversion_group_id,
1759               p_sequence_num      => 2,
1760               p_Pos               => l_int_data_loc_pos);
1761 
1762             IF b_xref_data_found THEN
1763               c_ext_value2 := p_apps_tbl(l_int_data_loc_pos).value;
1764               if EC_DEBUG.G_debug_level >= 3 then
1765               EC_DEBUG.PL(3, 'c_ext_value2 :', c_ext_value2);
1766               end if;
1767             END IF;
1768 
1769             -- 3
1770             b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1771              (p_gateway_tbl       => p_apps_tbl,
1772               p_conversion_group  => p_apps_tbl(j).conversion_group_id,
1773               p_sequence_num      => 3,
1774               p_Pos               => l_int_data_loc_pos);
1775 
1776             IF b_xref_data_found THEN
1777               c_ext_value3 := p_apps_tbl(l_int_data_loc_pos).value;
1778               if EC_DEBUG.G_debug_level >= 3 then
1779               EC_DEBUG.PL(3, 'c_ext_value3 :', c_ext_value3);
1780               end if;
1781             END IF;
1782 
1783             -- 4
1784             b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1785              (p_gateway_tbl       => p_apps_tbl,
1786               p_conversion_group  => p_apps_tbl(j).conversion_group_id,
1787               p_sequence_num      => 4,
1788               p_Pos               => l_int_data_loc_pos);
1789 
1790             IF b_xref_data_found THEN
1791               c_ext_value4 := p_apps_tbl(l_int_data_loc_pos).value;
1792               if EC_DEBUG.G_debug_level >= 3 then
1793               EC_DEBUG.PL(3, 'c_ext_value4 :', c_ext_value4);
1794               end if;
1795             END IF;
1796 
1797             -- 5
1798             b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1799              (p_gateway_tbl       => p_apps_tbl,
1800               p_conversion_group  => p_apps_tbl(j).conversion_group_id,
1801               p_sequence_num      => 5,
1802               p_Pos               => l_int_data_loc_pos);
1803 
1804             IF b_xref_data_found THEN
1805               c_ext_value5 := p_apps_tbl(l_int_data_loc_pos).value;
1806               if EC_DEBUG.G_debug_level >= 3 then
1807               EC_DEBUG.PL(3, 'c_ext_value5 :', c_ext_value5);
1808               end if;
1809             END IF;
1810 
1811             -- ***************************************
1812             --
1813             --  Find out what is the xref catergory code
1814             --  The code is in the apps pl/sql table
1815             --  therefore, need to find the matching
1816             --  data loc id in apps pl/sql table
1817             --
1818             -- ***************************************
1819 
1820             -- use this xref_id, go to ece_xref_category to find out all the
1821             -- enabled keys
1822             SELECT  key1_used_flag, key2_used_flag, key3_used_flag,
1823                     key4_used_flag, key5_used_flag,
1824                     key1_used_table, key2_used_table, key3_used_table,
1825                     key4_used_table, key5_used_table,
1826                     key1_used_column, key2_used_column, key3_used_column,
1827                     key4_used_column, key5_used_column,
1828                     xref_category_code
1829             INTO    ckey1_used_flag, ckey2_used_flag, ckey3_used_flag,
1830                     ckey4_used_flag, ckey5_used_flag,
1831                     ckey1_used_table, ckey2_used_table, ckey3_used_table,
1832                     ckey4_used_table, ckey5_used_table,
1833                     ckey1_used_column, ckey2_used_column, ckey3_used_column,
1834                     ckey4_used_column, ckey5_used_column,
1835                     cxref_category_code
1836             FROM    ece_xref_categories
1837             WHERE   ece_xref_categories.xref_category_id = p_apps_tbl(j).xref_category_id;
1838 
1839             IF ckey1_used_flag = 'Y' AND
1840                p_apps_tbl(j).xref_key1_source_column IS NOT NULL THEN
1841               FOR k IN 1..p_key_tbl.count LOOP
1842                 IF p_apps_tbl(j).xref_key1_source_column =
1843                    p_key_tbl(k).interface_column_name THEN
1844                   key1 := p_key_tbl(k).value;
1845                   if EC_DEBUG.G_debug_level >= 3 then
1846                   EC_DEBUG.PL(3, 'key1 :', key1);
1847                   end if;
1848                   EXIT;
1849                 END IF;
1850               END LOOP;
1851               -- we assume all the key can be found in the pl/sql table
1852             END IF;
1853 
1854             -- 2
1855             IF ckey2_used_flag = 'Y' AND
1856                p_apps_tbl(j).xref_key2_source_column IS NOT NULL THEN
1857               FOR k IN 1..p_key_tbl.count LOOP
1858                 IF p_apps_tbl(j).xref_key2_source_column =
1859                    p_key_tbl(k).interface_column_name THEN
1860                   key2 := p_key_tbl(k).value;
1861                   if EC_DEBUG.G_debug_level >= 3 then
1862                   EC_DEBUG.PL(3, 'key2 :', key2);
1863                   end if;
1864                   EXIT;
1865                 END IF;
1866               END LOOP;
1867             END IF;
1868 
1869             -- 3
1873                 IF p_apps_tbl(j).xref_key3_source_column =
1870             IF ckey3_used_flag = 'Y' AND
1871                p_apps_tbl(j).xref_key3_source_column IS NOT NULL THEN
1872               FOR k IN 1..p_key_tbl.count LOOP
1874                    p_key_tbl(k).interface_column_name THEN
1875                   key3 := p_key_tbl(k).value;
1876                   if EC_DEBUG.G_debug_level >= 3 then
1877                   EC_DEBUG.PL(3, 'key3 :', key3);
1878                   end if;
1879                   EXIT;
1880                 END IF;
1881               END LOOP;
1882             END IF;
1883 
1884             -- 4
1885             IF ckey4_used_flag = 'Y' AND
1886                p_apps_tbl(j).xref_key4_source_column IS NOT NULL THEN
1887               FOR k IN 1..p_key_tbl.count LOOP
1888                 IF p_apps_tbl(j).xref_key4_source_column =
1889                    p_key_tbl(k).interface_column_name THEN
1890                   key4 := p_key_tbl(k).value;
1891                   if EC_DEBUG.G_debug_level >= 3 then
1892                   EC_DEBUG.PL(3, 'key4 :', key4);
1893                   end if;
1894                   EXIT;
1895                 END IF;
1896               END LOOP;
1897             END IF;
1898 
1899             -- 5
1900             IF ckey5_used_flag = 'Y' AND
1901                p_apps_tbl(j).xref_key5_source_column IS NOT NULL THEN
1902               FOR k IN 1..p_key_tbl.count LOOP
1903                 IF p_apps_tbl(j).xref_key5_source_column =
1904                    p_key_tbl(k).interface_column_name THEN
1905                   key5 := p_key_tbl(k).value;
1906                   if EC_DEBUG.G_debug_level >= 3 then
1907                   EC_DEBUG.PL(3, 'key5 :', key5);
1908                   end if;
1909                   EXIT;
1910                 END IF;
1911               END LOOP;
1912             END IF;
1913 
1914             /* Debugging Code: DO NOT DELETE! */
1915             /*
1916             IF (debug_mode_on_int) THEN
1917               INSERT INTO ece_error VALUES (431, ece_error_s.nextval, 'xref code =' || cxref_category_code);
1918               INSERT INTO ece_error VALUES (431, ece_error_s.nextval, 'column =' || p_apps_tbl(j).interface_column_name);
1919               INSERT INTO ece_error VALUES (431, ece_error_s.nextval, 'key 1 =' || key1);
1920               INSERT INTO ece_error VALUES (431, ece_error_s.nextval, 'key 2 =' || key2);
1921               INSERT INTO ece_error VALUES (431, ece_error_s.nextval, 'key 3 =' || key3);
1922               INSERT INTO ece_error VALUES (431, ece_error_s.nextval, 'key 4 =' || key4);
1923               INSERT INTO ece_error VALUES (431, ece_error_s.nextval, 'key 5 =' || key5);
1924               INSERT INTO ece_error VALUES (431, ece_error_s.nextval, 'ext 1 =' || c_ext_value1);
1925               INSERT INTO ece_error VALUES (431, ece_error_s.nextval, 'ext 2 =' || c_ext_value2);
1926               INSERT INTO ece_error VALUES (431, ece_error_s.nextval, 'ext 3 =' || c_ext_value3);
1927               INSERT INTO ece_error VALUES (431, ece_error_s.nextval, 'ext 4 =' || c_ext_value4);
1928               INSERT INTO ece_error VALUES (431, ece_error_s.nextval, 'ext 5 =' || c_ext_value5);
1929               COMMIT;
1930             END IF;
1931             */
1932 
1933             -- Now we know the int_value, the actual value of the key1-5,
1934             -- so we just need to call int_2_ext APIs to get the
1935             -- the ext1-5 value
1936             EC_Code_Conversion_PVT.Convert_from_ext_to_int
1937              (p_api_version_number  => 1.0,
1938               p_return_status       => l_return_status,
1939               p_msg_count           => l_msg_count,
1940               p_msg_data            => l_msg_data,
1941               p_Category            => cxref_category_code,
1942               p_Key1                => key1,
1943               p_Key2                => key2,
1944               p_Key3                => key3,
1945               p_Key4                => key4,
1946               p_Key5                => key5,
1947               p_Ext_val1            => c_ext_value1,
1948               p_Ext_val2            => c_ext_value2,
1949               p_Ext_val3            => c_ext_value3,
1950               p_Ext_val4            => c_ext_value4,
1951               p_Ext_val5            => c_ext_value5,
1952               p_Int_val             => int_val);
1953 
1954             p_apps_tbl(j).value := int_val;
1955             if EC_DEBUG.G_debug_level >= 3 then
1956             EC_DEBUG.PL(3, 'int_val :', int_val);
1957             end if;
1958             key1 := NULL;
1959             key2 := NULL;
1960             key3 := NULL;
1961             key4 := NULL;
1962             key5 := NULL;
1963 
1964             c_ext_value1 := NULL;
1965             c_ext_value2 := NULL;
1966             c_ext_value3 := NULL;
1967             c_ext_value4 := NULL;
1968             c_ext_value5 := NULL;
1969           END IF; -- IF p_apps_tbl(j).value IS NULL THEN
1970 
1971         -- This is to copy the external value1 to internal value if
1972         -- there is no category code assigned to the interface column and
1973         -- the internal value is null.
1974         ELSIF (p_apps_tbl(j).xref_category_id is NULL AND
1975                p_apps_tbl(j).conversion_seq = 0 AND
1976                p_apps_tbl(j).value is NULL) THEN
1977 
1978             b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
1979        	      	(
1980 		p_gateway_tbl		=> p_apps_tbl,
1981               	p_conversion_group  	=> p_apps_tbl(j).conversion_group_id,
1985 
1982               	p_sequence_num      	=> 1,
1983               	p_Pos               	=> l_int_data_loc_pos
1984 		);
1986             IF b_xref_data_found THEN
1987               c_ext_value1 := p_apps_tbl(l_int_data_loc_pos).value;
1988               if (c_ext_value1 is not null) then
1989                  if EC_DEBUG.G_debug_level >= 3 then
1990                  EC_DEBUG.PL(3, 'c_ext_value1 :', c_ext_value1);
1991                  end if;
1992               p_apps_tbl(j).value := c_ext_value1;
1993               end if;
1994             END IF;
1995 
1996         END IF; -- IF p_apps_tbl(j).xref_category_id IS NOT NULL AND p_apps_tbl(j).conversion_seq = 0 THEN
1997         j := j + 1;
1998       END LOOP; --WHILE j <= p_apps_tbl.count LOOP
1999 
2000 	-- *******************************************************
2001 	-- Standard check of p_simulate and p_commit parameters
2002 	-- *******************************************************
2003       IF FND_API.To_Boolean(p_simulate) THEN
2004         ROLLBACK TO populate_plsql_tbl_PVT;
2005       ELSIF FND_API.To_Boolean(p_commit) THEN
2006 	COMMIT WORK;
2007       END IF;
2008 
2009 	-- Standard call to get message count and if count is 1, get message info.
2010 	FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
2011 				  p_data  => p_msg_data);
2012 
2013       if l_return_status = EC_Code_Conversion_PVT.G_XREF_NOT_FOUND
2014       then
2015          p_return_status := EC_Code_Conversion_PVT.G_XREF_NOT_FOUND;
2016       end if;
2017 
2018     if EC_DEBUG.G_debug_level >= 2 then
2019       EC_DEBUG.POP('EC_Code_Conversion_PVT.populate_plsql_tbl_with_intval');
2020     end if;
2021     EXCEPTION
2022       WHEN FND_API.G_EXC_ERROR THEN
2023 		ROLLBACK TO populate_plsql_tbl_PVT;
2024 		p_return_status := FND_API.G_RET_STS_ERROR;
2025 		FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
2026 					  p_data  => p_msg_data);
2027       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2028 		ROLLBACK TO populate_plsql_tbl_PVT;
2029 		p_return_status := FND_API.G_RET_STS_ERROR;
2030 		FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
2031 					  p_data  => p_msg_data);
2032       WHEN OTHERS THEN
2033          EC_DEBUG.PL(0,'EC','ECE_ERROR_CODE','ERROR_CODE',SQLCODE);
2034          EC_DEBUG.PL(0,'EC','ECE_ERROR_MESSAGE','ERROR_MESSAGE',SQLERRM);
2035 		ROLLBACK TO populate_plsql_tbl_PVT;
2036 		p_return_status := FND_API.G_RET_STS_ERROR;
2037         IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2038 					FND_MSG_PUB.Add_Exc_Msg(G_FILE_NAME, G_PKG_NAME, l_api_name);
2039 	END IF;
2040 		FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
2041 					  p_data  => p_msg_data);
2042 	END populate_plsql_tbl_with_intval;
2043 
2044 PROCEDURE populate_plsql_tbl_with_intval
2045    	(
2046 	p_api_version_number  	IN        	NUMBER,
2047 	p_init_msg_list       	IN        	VARCHAR2      := FND_API.G_FALSE,
2048 	p_simulate            	IN        	VARCHAR2      := FND_API.G_FALSE,
2049 	p_commit              	IN        	VARCHAR2      := FND_API.G_FALSE,
2050 	p_validation_level    	IN        	NUMBER        := FND_API.G_VALID_LEVEL_FULL,
2051 	p_return_status       	OUT  NOCOPY      	VARCHAR2,
2052 	p_msg_count           	OUT  NOCOPY     	NUMBER,
2053 	p_msg_data            	OUT  NOCOPY     	VARCHAR2,
2054 	p_apps_tbl            	IN OUT NOCOPY 	ec_utils.mapping_tbl,
2055 	p_level			IN		NUMBER
2056 	) IS
2057 
2058 
2059     l_api_name            CONSTANT  VARCHAR2(30)  := 'populate_plsql_tbl_with_intval';
2060     l_api_version_number  CONSTANT  NUMBER        := 1.0;
2061 
2062     ckey1_used_flag                 VARCHAR2(1);
2063     ckey2_used_flag                 VARCHAR2(1);
2064     ckey3_used_flag                 VARCHAR2(1);
2065     ckey4_used_flag                 VARCHAR2(1);
2066     ckey5_used_flag                 VARCHAR2(1);
2067 
2068     ckey1_used_table                VARCHAR2(80);
2069     ckey2_used_table                VARCHAR2(80);
2070     ckey3_used_table                VARCHAR2(80);
2071     ckey4_used_table                VARCHAR2(80);
2072     ckey5_used_table                VARCHAR2(80);
2073 
2074     ckey1_used_column               VARCHAR2(80);
2075     ckey2_used_column               VARCHAR2(80);
2076     ckey3_used_column               VARCHAR2(80);
2077     ckey4_used_column               VARCHAR2(80);
2078     ckey5_used_column               VARCHAR2(80);
2079 
2080     cxref_category_code             VARCHAR2(30);
2081 
2082     key1                            VARCHAR2(500); -- 4011384
2083     key2                            VARCHAR2(500);
2084     key3                            VARCHAR2(500);
2085     key4                            VARCHAR2(500);
2086     key5                            VARCHAR2(500);
2087 
2088     int_val                         VARCHAR2(500);
2089     c_ext_value1                    VARCHAR2(500);
2090     c_ext_value2                    VARCHAR2(500);
2091     c_ext_value3                    VARCHAR2(500);
2092     c_ext_value4                    VARCHAR2(500);
2093     c_ext_value5                    VARCHAR2(500);
2094 
2095     l_int_data_loc_pos              NUMBER;
2096     l_key_data_loc_pos              NUMBER;
2097 
2098     return_code                     NUMBER;
2099     icount                          NUMBER;
2100     l_return_status                 VARCHAR2(2000);
2101     l_msg_count                     NUMBER;
2102     l_msg_data                      VARCHAR2(2000);
2103 
2107 
2104     b_xref_data_found               BOOLEAN       := FALSE;
2105 
2106     k                               INTEGER;
2108 BEGIN
2109 if EC_DEBUG.G_debug_level >= 2 then
2110 EC_DEBUG.PUSH('EC_Code_Conversion_PVT.populate_plsql_tbl_with_intval');
2111 EC_DEBUG.PL(3, 'API version : ',p_api_version_number);
2112 EC_DEBUG.PL(3, 'p_init_msg_list: ',p_init_msg_list);
2113 EC_DEBUG.PL(3, 'p_simulate: ',p_simulate);
2114 EC_DEBUG.PL(3, 'p_commit: ',p_commit);
2115 EC_DEBUG.PL(3, 'p_validation_level: ',p_validation_level);
2116 EC_DEBUG.PL(3, 'p_level',p_level);
2117 end if;
2118       -- Standard Start of API savepoint
2119 			SAVEPOINT populate_plsql_tbl_PVT;
2120 
2121 			-- Standard call to check for call compatibility.
2122       IF NOT FND_API.Compatible_API_Call
2123        (l_api_version_number,
2124 	p_api_version_number,
2125 	l_api_name,
2126         G_PKG_NAME) THEN
2127 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2128       END IF;
2129 
2130 			-- Initialize message list if p_init_msg_list is set to TRUE.
2131       IF FND_API.to_Boolean(p_init_msg_list) THEN
2132 	FND_MSG_PUB.initialize;
2133       END IF;
2134 
2135 	-- Initialize API return status to success
2136 	p_return_status := FND_API.G_RET_STS_SUCCESS;
2137 
2138 	-- *******************************************************
2139 	-- Move data from interface to source PL/SQL table
2140 	-- These are data that do not need xref.
2141 	-- *******************************************************
2142 for j in ec_utils.g_ext_levels(p_level).file_start_pos..ec_utils.g_ext_levels(p_level).file_end_pos
2143 LOOP
2144 
2145         -- This is to copy the external value1 to internal value if
2146         -- there is no category code assigned to the interface column and
2147         -- the internal value is null.
2148 	-- Bug 2708573
2149 	-- Moved the ELSIF to the begin of IF, as less time is consumed
2150 	-- for IS NULL check as compared to IS NOT NULL.
2151         IF p_apps_tbl(j).xref_category_id is NULL THEN
2152 
2153           IF p_apps_tbl(j).conversion_sequence = 0 AND
2154                p_apps_tbl(j).value is NULL THEN
2155 
2156             b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
2157                 (
2158                 p_level                 => p_level,
2159                 p_conversion_group      => p_apps_tbl(j).conversion_group_id,
2160                 p_sequence_num          => 1,
2161                 p_Pos                   => l_int_data_loc_pos
2162                 );
2163 
2164             IF b_xref_data_found THEN
2165               c_ext_value1 := p_apps_tbl(l_int_data_loc_pos).value;
2166               if (c_ext_value1 is not null) then
2167                  p_apps_tbl(j).value := c_ext_value1;
2168               end if;
2169             END IF;
2170             if EC_DEBUG.G_debug_level >= 3 then
2171             	ec_debug.pl(3,'Interface Column Name ',p_apps_tbl(j).Interface_Column_Name);
2172             	ec_debug.pl(3,'Internal Value ',p_apps_tbl(j).value);
2173                 EC_DEBUG.PL(3, 'c_ext_value1 :', c_ext_value1);
2174             end if;
2175 	  END IF;
2176 
2177 	-- *******************************************************
2178 	-- If the data need xref to convert to internal value
2179 	-- *******************************************************
2180         ELSE
2181 	   -- Bug 2708573
2182 	   -- Removed p_apps_tbl(j).xref_category_id IS NOT NULL check
2183 	   -- in the condition below.
2184 
2185 	   IF p_apps_tbl(j).conversion_sequence = 0 AND
2186               p_apps_tbl(j).value IS NULL THEN
2187 
2188             if EC_DEBUG.G_debug_level >= 3 then
2189 	      ec_debug.pl(3,'Interface Column Name ',p_apps_tbl(j).Interface_Column_Name);
2190 	      ec_debug.pl(3,'Internal Value ',p_apps_tbl(j).value);
2191             end if;
2192             -- *******************************************************
2193             -- These are data that need xref.
2194             -- First find all external values for xref.
2195             -- *******************************************************
2196 
2197             -- If the value is NOT NULL, the flat file already supplied
2198             -- the internal value and no XREF work needs to be done... (apark)
2199             -- IF p_apps_tbl(j).value IS NULL THEN : Bug 2708573
2200 
2201             -- We're going to go through each of the Conversion Seqs and
2202             -- see if they exist or not.
2203 
2204             -- 1
2205             b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
2206        	      	(
2207 		p_level			=> p_level ,
2208               	p_conversion_group  	=> p_apps_tbl(j).conversion_group_id,
2209               	p_sequence_num      	=> 1,
2210               	p_Pos               	=> l_int_data_loc_pos
2211 		);
2212 
2213             IF b_xref_data_found THEN
2214               c_ext_value1 := p_apps_tbl(l_int_data_loc_pos).value;
2215             END IF;
2216 
2217             -- 2
2218             b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
2219        	      	(
2220 		p_level			=> p_level ,
2221               	p_conversion_group  	=> p_apps_tbl(j).conversion_group_id,
2222               	p_sequence_num      	=> 2,
2223               	p_Pos               	=> l_int_data_loc_pos
2224 		);
2225 
2226             IF b_xref_data_found THEN
2227               c_ext_value2 := p_apps_tbl(l_int_data_loc_pos).value;
2231             b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
2228             END IF;
2229 
2230             -- 3
2232        	      	(
2233 		p_level			=> p_level ,
2234               	p_conversion_group  	=> p_apps_tbl(j).conversion_group_id,
2235               	p_sequence_num      	=> 3,
2236               	p_Pos               	=> l_int_data_loc_pos
2237 		);
2238 
2239             IF b_xref_data_found THEN
2240               c_ext_value3 := p_apps_tbl(l_int_data_loc_pos).value;
2241             END IF;
2242 
2243             -- 4
2244             b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
2245        	      	(
2246 		p_level			=> p_level ,
2247               	p_conversion_group  	=> p_apps_tbl(j).conversion_group_id,
2248               	p_sequence_num      	=> 4,
2249               	p_Pos               	=> l_int_data_loc_pos
2250 		);
2251 
2252             IF b_xref_data_found THEN
2253               c_ext_value4 := p_apps_tbl(l_int_data_loc_pos).value;
2254             END IF;
2255 
2256             -- 5
2257             b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
2258        	      	(
2259 		p_level			=> p_level ,
2260               	p_conversion_group  	=> p_apps_tbl(j).conversion_group_id,
2261               	p_sequence_num      	=> 5,
2262               	p_Pos               	=> l_int_data_loc_pos
2263 		);
2264 
2265             IF b_xref_data_found THEN
2266               c_ext_value5 := p_apps_tbl(l_int_data_loc_pos).value;
2267             END IF;
2268 
2269               if EC_DEBUG.G_debug_level >= 3 then
2270               EC_DEBUG.PL(3, 'c_ext_value1 :', c_ext_value1);
2271               EC_DEBUG.PL(3, 'c_ext_value2 :', c_ext_value2);
2272               EC_DEBUG.PL(3, 'c_ext_value3 :', c_ext_value3);
2273               EC_DEBUG.PL(3, 'c_ext_value4 :', c_ext_value4);
2274               EC_DEBUG.PL(3, 'c_ext_value5 :', c_ext_value5);
2275               end if;
2276             -- ***************************************
2277             --
2278             --  Find out what is the xref catergory code
2279             --  The code is in the apps pl/sql table
2280             --  therefore, need to find the matching
2281             --  data loc id in apps pl/sql table
2282             --
2283             -- ***************************************
2284 
2285             -- use this xref_id, go to ece_xref_category to find out all the
2286             -- enabled keys
2287             SELECT  key1_used_flag, key2_used_flag, key3_used_flag,
2288                     key4_used_flag, key5_used_flag,
2289                     key1_used_table, key2_used_table, key3_used_table,
2290                     key4_used_table, key5_used_table,
2291                     key1_used_column, key2_used_column, key3_used_column,
2292                     key4_used_column, key5_used_column,
2293                     xref_category_code
2294             INTO    ckey1_used_flag, ckey2_used_flag, ckey3_used_flag,
2295                     ckey4_used_flag, ckey5_used_flag,
2296                     ckey1_used_table, ckey2_used_table, ckey3_used_table,
2297                     ckey4_used_table, ckey5_used_table,
2298                     ckey1_used_column, ckey2_used_column, ckey3_used_column,
2299                     ckey4_used_column, ckey5_used_column,
2300                     cxref_category_code
2301             FROM    ece_xref_categories
2302             WHERE   ece_xref_categories.xref_category_id = p_apps_tbl(j).xref_category_id;
2303                if EC_DEBUG.G_debug_level >= 3 then
2304             	ec_debug.pl(3,'xref_category_id',p_apps_tbl(j).xref_category_id);
2305 		ec_debug.pl(3,'cxref_category_code',cxref_category_code);
2306                end if;
2307 
2308 	   -- Bug 2828072
2309             IF ckey1_used_flag = 'Y' AND
2310                p_apps_tbl(j).xref_key1_source_column IS NOT NULL THEN
2311               FOR k IN REVERSE 1..p_level LOOP
2312 	        FOR i in ec_utils.g_ext_levels(k).file_start_pos..ec_utils.g_ext_levels(k).file_end_pos
2313 		LOOP
2314                   IF p_apps_tbl(j).xref_key1_source_column =
2315                    p_apps_tbl(i).interface_column_name THEN
2316                  	 key1 := p_apps_tbl(i).value;
2317                   	 EXIT;
2318                   END IF;
2319 		END LOOP;
2320 		IF key1 IS NOT NULL THEN
2321                   EXIT;
2322                 END IF;
2323               END LOOP;
2324               -- we assume all the key can be found in the pl/sql table
2325             END IF;
2326 
2327             -- 2
2328             IF ckey2_used_flag = 'Y' AND
2329                p_apps_tbl(j).xref_key2_source_column IS NOT NULL THEN
2330               FOR k IN REVERSE 1..p_level LOOP
2331 	        FOR i in ec_utils.g_ext_levels(k).file_start_pos..ec_utils.g_ext_levels(k).file_end_pos
2332 		LOOP
2333                  IF p_apps_tbl(j).xref_key2_source_column =
2334                    p_apps_tbl(i).interface_column_name THEN
2335                   	key2 := p_apps_tbl(i).value;
2336 			EXIT;
2337                   END IF;
2338 		END LOOP;
2339 		IF key2 IS NOT NULL THEN
2340                   EXIT;
2341                 END IF;
2342               END LOOP;
2343             END IF;
2344 
2345             -- 3
2346             IF ckey3_used_flag = 'Y' AND
2347                p_apps_tbl(j).xref_key3_source_column IS NOT NULL THEN
2348               FOR k IN REVERSE 1..p_level LOOP
2349 	        FOR i in ec_utils.g_ext_levels(k).file_start_pos..ec_utils.g_ext_levels(k).file_end_pos
2350 		LOOP
2354                   	EXIT;
2351                   IF p_apps_tbl(j).xref_key3_source_column =
2352                    p_apps_tbl(i).interface_column_name THEN  --bug 4136922
2353                   	key3 := p_apps_tbl(i).value;
2355                   END IF;
2356 		END LOOP;
2357 		IF key3 IS NOT NULL THEN
2358                   EXIT;
2359                 END IF;
2360               END LOOP;
2361             END IF;
2362 
2363             -- 4
2364             IF ckey4_used_flag = 'Y' AND
2365                p_apps_tbl(j).xref_key4_source_column IS NOT NULL THEN
2366               FOR k IN REVERSE 1..p_level LOOP
2367 	        FOR i in ec_utils.g_ext_levels(k).file_start_pos..ec_utils.g_ext_levels(k).file_end_pos
2368 		LOOP
2369                   IF p_apps_tbl(j).xref_key4_source_column =
2370                    p_apps_tbl(i).interface_column_name THEN
2371                   	key4 := p_apps_tbl(i).value;
2372                   	EXIT;
2373                   END IF;
2374 		END LOOP;
2375 		IF key4 IS NOT NULL THEN
2376                   EXIT;
2377                 END IF;
2378               END LOOP;
2379             END IF;
2380 
2381             -- 5
2382             IF ckey5_used_flag = 'Y' AND
2383                p_apps_tbl(j).xref_key5_source_column IS NOT NULL THEN
2384               FOR k IN REVERSE 1..p_level LOOP
2385 	        FOR i in ec_utils.g_ext_levels(k).file_start_pos..ec_utils.g_ext_levels(k).file_end_pos
2386 		LOOP
2387                   IF p_apps_tbl(j).xref_key5_source_column =
2388                    p_apps_tbl(i).interface_column_name THEN
2389                   	key5 := p_apps_tbl(i).value;
2390                   	EXIT;
2391                   END IF;
2392 		END LOOP;
2393 		IF key5 IS NOT NULL THEN
2394                   EXIT;
2395                 END IF;
2396               END LOOP;
2397             END IF;
2398 
2399             IF EC_DEBUG.G_debug_level = 3 THEN
2400               EC_DEBUG.PL(3, 'key1 :', key1);
2401               EC_DEBUG.PL(3, 'key2 :', key2);
2402               EC_DEBUG.PL(3, 'key3 :', key3);
2403               EC_DEBUG.PL(3, 'key4 :', key4);
2404               EC_DEBUG.PL(3, 'key5 :', key5);
2405 	    END IF;
2406 
2407             -- Now we know the int_value, the actual value of the key1-5,
2408             -- so we just need to call int_2_ext APIs to get the
2409             -- the ext1-5 value
2410             EC_Code_Conversion_PVT.Convert_from_ext_to_int
2411              (p_api_version_number  => 1.0,
2412               p_return_status       => l_return_status,
2413               p_msg_count           => l_msg_count,
2414               p_msg_data            => l_msg_data,
2415               p_Category            => cxref_category_code,
2416               p_Key1                => key1,
2417               p_Key2                => key2,
2418               p_Key3                => key3,
2419               p_Key4                => key4,
2420               p_Key5                => key5,
2421               p_Ext_val1            => c_ext_value1,
2422               p_Ext_val2            => c_ext_value2,
2423               p_Ext_val3            => c_ext_value3,
2424               p_Ext_val4            => c_ext_value4,
2425               p_Ext_val5            => c_ext_value5,
2426               p_Int_val             => int_val);
2427 
2428             p_apps_tbl(j).value := int_val;
2429             if EC_DEBUG.G_debug_level >= 3 then
2430             EC_DEBUG.PL(3, 'Internal value after code conversion:', int_val);
2431             end if;
2432             key1 := NULL;
2433             key2 := NULL;
2434             key3 := NULL;
2435             key4 := NULL;
2436             key5 := NULL;
2437 
2438             c_ext_value1 := NULL;
2439             c_ext_value2 := NULL;
2440             c_ext_value3 := NULL;
2441             c_ext_value4 := NULL;
2442             c_ext_value5 := NULL;
2443           END IF; -- IF p_apps_tbl(j).value IS NULL THEN
2444 
2445          -- This is to copy the external value1 to internal value if
2446          -- there is no category code assigned to the interface column and
2447          -- the internal value is null.
2448 	 /* Bug 2708573
2449           ELSIF (p_apps_tbl(j).xref_category_id is NULL AND
2450                p_apps_tbl(j).conversion_sequence = 0 AND
2451                p_apps_tbl(j).value is NULL) THEN
2452             if EC_DEBUG.G_debug_level >= 3 then
2453 	    ec_debug.pl(3,'Interface Column Name ',p_apps_tbl(j).Interface_Column_Name);
2454 	    ec_debug.pl(3,'Internal Value ',p_apps_tbl(j).value);
2455             end if;
2456             b_xref_data_found := ece_flatfile_pvt.match_xref_conv_seq
2457        	      	(
2458 		p_level			=> p_level,
2459               	p_conversion_group  	=> p_apps_tbl(j).conversion_group_id,
2460               	p_sequence_num      	=> 1,
2461               	p_Pos               	=> l_int_data_loc_pos
2462 		);
2463 
2464             IF b_xref_data_found THEN
2465               c_ext_value1 := p_apps_tbl(l_int_data_loc_pos).value;
2466               if (c_ext_value1 is not null) then
2467                  if EC_DEBUG.G_debug_level >= 3 then
2468                  EC_DEBUG.PL(3, 'c_ext_value1 :', c_ext_value1);
2469                  end if;
2470                  p_apps_tbl(j).value := c_ext_value1;
2471               end if;
2472             END IF;
2473 	 */
2474         END IF; -- IF p_apps_tbl(j).xref_category_id IS NOT NULL AND p_apps_tbl(j).conversion_sequence = 0 THEN
2475 
2476 END LOOP;
2477 
2478 	-- *******************************************************
2479 	-- Standard check of p_simulate and p_commit parameters
2480 	-- *******************************************************
2481       IF FND_API.To_Boolean(p_simulate) THEN
2482         ROLLBACK TO populate_plsql_tbl_PVT;
2483       ELSIF FND_API.To_Boolean(p_commit) THEN
2484 	COMMIT WORK;
2485       END IF;
2486 
2487 	-- Standard call to get message count and if count is 1, get message info.
2488 	FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
2489 				  p_data  => p_msg_data);
2490 
2491       if l_return_status = EC_Code_Conversion_PVT.G_XREF_NOT_FOUND
2492       then
2493          p_return_status := EC_Code_Conversion_PVT.G_XREF_NOT_FOUND;
2494       end if;
2495 
2496 if EC_DEBUG.G_debug_level >= 2 then
2497 EC_DEBUG.POP('EC_Code_Conversion_PVT.populate_plsql_tbl_with_intval');
2498 end if;
2499 EXCEPTION
2500 WHEN FND_API.G_EXC_ERROR THEN
2501 		ROLLBACK TO populate_plsql_tbl_PVT;
2502 		p_return_status := FND_API.G_RET_STS_ERROR;
2503 		FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
2504 					  p_data  => p_msg_data);
2505 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2506 		ROLLBACK TO populate_plsql_tbl_PVT;
2507 		p_return_status := FND_API.G_RET_STS_ERROR;
2508 		FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
2509 					  p_data  => p_msg_data);
2510 WHEN OTHERS THEN
2511          EC_DEBUG.PL(0,'EC','ECE_ERROR_CODE','ERROR_CODE',SQLCODE);
2512          EC_DEBUG.PL(0,'EC','ECE_ERROR_MESSAGE','ERROR_MESSAGE',SQLERRM);
2513 		ROLLBACK TO populate_plsql_tbl_PVT;
2514 		p_return_status := FND_API.G_RET_STS_ERROR;
2515         IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2516 					FND_MSG_PUB.Add_Exc_Msg(G_FILE_NAME, G_PKG_NAME, l_api_name);
2517 	END IF;
2518 		FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
2519 					  p_data  => p_msg_data);
2520 END populate_plsql_tbl_with_intval;
2521 
2522 END EC_Code_Conversion_PVT;