DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_DM_BINVALUES_PVT

Source


1 PACKAGE BODY AMS_Dm_Binvalues_PVT as
2 /* $Header: amsvdbvb.pls 115.5 2003/05/07 08:23:10 rosharma ship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 --          AMS_Dm_Binvalues_PVT
7 -- Purpose
8 --
9 -- History
10 -- 07-May-2003 rosharma Bug # 2943269
11 --
12 -- NOTE
13 --
14 -- End of Comments
15 -- ===============================================================
16 
17 
18 G_PKG_NAME CONSTANT VARCHAR2(30):= 'AMS_Dm_Binvalues_PVT';
19 G_FILE_NAME CONSTANT VARCHAR2(12) := 'amsvdbvb.pls';
20 
21 G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
22 G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
23 
24 AMS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
25 AMS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
26 AMS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
27 
28 PROCEDURE Complete_dm_binvalues_Rec (
29    p_dm_binvalues_rec IN dm_binvalues_rec_type,
30    x_complete_rec OUT NOCOPY dm_binvalues_rec_type
31 );
32 
33 
34 -- Hint: Primary key needs to be returned.
35 PROCEDURE Create_Dm_Binvalues(
36     p_api_version_number         IN   NUMBER,
37     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
38     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
39     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
40 
41     x_return_status              OUT NOCOPY  VARCHAR2,
42     x_msg_count                  OUT NOCOPY  NUMBER,
43     x_msg_data                   OUT NOCOPY  VARCHAR2,
44 
45     p_dm_binvalues_rec           IN   dm_binvalues_rec_type  := g_miss_dm_binvalues_rec,
46     x_bin_value_id               OUT NOCOPY  NUMBER
47 )
48 
49 IS
50    L_API_NAME                  CONSTANT VARCHAR2(30)  := 'Create_Dm_Binvalues';
51    L_API_VERSION_NUMBER        CONSTANT NUMBER        := 1.0;
52    l_return_status_full        VARCHAR2(1);
53    l_object_version_number     NUMBER                 := 1;
54    l_org_id                    NUMBER                 := FND_API.G_MISS_NUM;
55    l_BIN_VALUE_ID              NUMBER;
56    l_dummy                     NUMBER;
57    l_dm_binvalues_rec          AMS_Dm_Binvalues_PVT.dm_binvalues_rec_type:= p_dm_binvalues_rec;
58 
59    CURSOR c_id IS
60       SELECT AMS_DM_BIN_VALUES_s.NEXTVAL
61       FROM dual;
62 
63    CURSOR c_id_exists (l_id IN NUMBER) IS
64       SELECT 1
65       FROM AMS_DM_BIN_VALUES
66       WHERE BIN_VALUE_ID = l_id;
67 
68 BEGIN
69       -- Standard Start of API savepoint
70       SAVEPOINT CREATE_Dm_Binvalues_PVT;
71 
72       -- Standard call to check for call compatibility.
73       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
74                                            p_api_version_number,
75                                            l_api_name,
76                                            G_PKG_NAME)
77       THEN
78           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
79       END IF;
80 
81       -- Initialize message list if p_init_msg_list is set to TRUE.
82       IF FND_API.to_Boolean( p_init_msg_list )
83       THEN
84          FND_MSG_PUB.initialize;
85       END IF;
86 
87       -- Debug Message
88       IF (AMS_DEBUG_HIGH_ON) THEN
89 
90       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
91       END IF;
92 
93 
94       -- Initialize API return status to SUCCESS
95       x_return_status := FND_API.G_RET_STS_SUCCESS;
96 
97      -- Local variable initialization
98       IF l_dm_binvalues_rec.BIN_VALUE_ID IS NULL OR l_dm_binvalues_rec.BIN_VALUE_ID = FND_API.g_miss_num THEN
99          LOOP
100             l_dummy := NULL;
101             OPEN c_id;
102             FETCH c_id INTO l_dm_binvalues_rec.BIN_VALUE_ID;
103             CLOSE c_id;
104 
105             OPEN c_id_exists(l_dm_binvalues_rec.BIN_VALUE_ID);
106             FETCH c_id_exists INTO l_dummy;
107             CLOSE c_id_exists;
108 
109             EXIT WHEN l_dummy IS NULL;
110         END LOOP;
111    END IF;
112 
113    IF (AMS_DEBUG_HIGH_ON) THEN
114 
115 
116 
117    AMS_UTILITY_PVT.debug_message( l_api_name || ' New Bin Value ID to Insert = ' || l_dm_binvalues_rec.BIN_VALUE_ID);
118 
119    END IF;
120 
121    -- =========================================================================
122    -- Validate Environment
123    -- =========================================================================
124 
125    IF FND_GLOBAL.User_Id IS NULL
126    THEN
127       AMS_Utility_PVT.Error_Message(p_message_name => 'USER_PROFILE_MISSING');
128       RAISE FND_API.G_EXC_ERROR;
129    END IF;
130 
131    IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
132    THEN
133        -- Debug message
134        IF (AMS_DEBUG_HIGH_ON) THEN
135 
136        AMS_UTILITY_PVT.debug_message('Private API: Calling Validate_Dm_Binvalues');
137        END IF;
138 
139        -- Invoke validation procedures
140        Validate_dm_binvalues(
141          p_api_version_number     => 1.0,
142          p_init_msg_list          => FND_API.G_FALSE,
143          p_validation_level       => p_validation_level,
144          p_validation_mode        => JTF_PLSQL_API.g_create,
145          p_dm_binvalues_rec       => l_dm_binvalues_rec,
146          x_return_status          => x_return_status,
147          x_msg_count              => x_msg_count,
148          x_msg_data               => x_msg_data);
149    END IF;
150 
151    IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
152        RAISE FND_API.G_EXC_ERROR;
153    END IF;
154 
155 
156    -- Debug Message
157    IF (AMS_DEBUG_HIGH_ON) THEN
158 
159    AMS_UTILITY_PVT.debug_message( 'Private API: Calling create table handler');
160    END IF;
161 
162    -- Invoke table handler(AMS_DM_BIN_VALUES_PKG.Insert_Row)
163    AMS_DM_BIN_VALUES_PKG.Insert_Row(
164        px_bin_value_id		      => l_dm_binvalues_rec.bin_value_id,
165        p_last_update_date		   => SYSDATE,
166        p_last_updated_by		   => G_USER_ID,
167        p_creation_date		      => SYSDATE,
168        p_created_by			      => G_USER_ID,
169        p_last_update_login		   => G_LOGIN_ID,
170        px_object_version_number	=> l_object_version_number,
171        p_source_field_id		   => l_dm_binvalues_rec.source_field_id,
172        p_bucket			         => l_dm_binvalues_rec.bucket,
173        p_bin_value			      => l_dm_binvalues_rec.bin_value,
174        p_start_value			      => l_dm_binvalues_rec.start_value,
175        p_end_value			      => l_dm_binvalues_rec.end_value);
176 
177    -- Set the return value for the new bin value id
178    x_bin_value_id := l_dm_binvalues_rec.bin_value_id;
179 
180    IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
181        RAISE FND_API.G_EXC_ERROR;
182    END IF;
183 
184    --
185    -- End of API body
186    --
187 
188    -- Standard check for p_commit
189    IF FND_API.to_Boolean( p_commit ) THEN
190       COMMIT WORK;
191    END IF;
192 
193    -- Debug Message
194    IF (AMS_DEBUG_HIGH_ON) THEN
195 
196    AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
197    END IF;
198 
199    -- Standard call to get message count and if count is 1, get message info.
200    FND_MSG_PUB.Count_And_Get
201      (p_count          =>   x_msg_count,
202       p_data           =>   x_msg_data
203    );
204 
205 EXCEPTION
206 
207    WHEN AMS_Utility_PVT.resource_locked THEN
208       x_return_status := FND_API.g_ret_sts_error;
209       AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
210 
211    WHEN FND_API.G_EXC_ERROR THEN
212       ROLLBACK TO CREATE_Dm_Binvalues_PVT;
213       x_return_status := FND_API.G_RET_STS_ERROR;
214       -- Standard call to get message count and if count=1, get the message
215       FND_MSG_PUB.Count_And_Get (
216             p_encoded => FND_API.G_FALSE,
217             p_count   => x_msg_count,
218             p_data    => x_msg_data
219       );
220 
221    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
222       ROLLBACK TO CREATE_Dm_Binvalues_PVT;
223       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
224       -- Standard call to get message count and if count=1, get the message
225       FND_MSG_PUB.Count_And_Get (
226             p_encoded => FND_API.G_FALSE,
227             p_count => x_msg_count,
228             p_data  => x_msg_data
229       );
230 
231    WHEN OTHERS THEN
232       ROLLBACK TO CREATE_Dm_Binvalues_PVT;
233       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
234       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
235       THEN
236         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
237       END IF;
238       -- Standard call to get message count and if count=1, get the message
239       FND_MSG_PUB.Count_And_Get (
240             p_encoded => FND_API.G_FALSE,
241             p_count => x_msg_count,
242             p_data  => x_msg_data
243      );
244 End Create_Dm_Binvalues;
245 
246 
247 PROCEDURE Update_Dm_Binvalues(
248     p_api_version_number         IN   NUMBER,
249     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
250     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
251     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
252 
253     x_return_status              OUT NOCOPY  VARCHAR2,
254     x_msg_count                  OUT NOCOPY  NUMBER,
255     x_msg_data                   OUT NOCOPY  VARCHAR2,
256 
257     p_dm_binvalues_rec           IN   dm_binvalues_rec_type,
258     x_object_version_number      OUT NOCOPY  NUMBER
259     )
260 
261 IS
262 
263 
264    CURSOR c_get_dm_binvalues(bin_value_id NUMBER) IS
265    SELECT *
266    FROM AMS_DM_BIN_VALUES
267    WHERE bin_value_id = bin_value_id;
268 
269 
270 	L_API_NAME                  CONSTANT VARCHAR2(30)  := 'Update_Dm_Binvalues';
271 	L_API_VERSION_NUMBER        CONSTANT NUMBER        := 1.0;
272 
273 	-- Local Variables
274 	l_object_version_number     NUMBER;
275 	l_BIN_VALUE_ID              NUMBER;
276 	l_ref_dm_binvalues_rec      c_get_Dm_Binvalues%ROWTYPE ;
277 	l_tar_dm_binvalues_rec      AMS_Dm_Binvalues_PVT.dm_binvalues_rec_type := P_dm_binvalues_rec;
278 	l_rowid  ROWID;
279 
280  BEGIN
281       -- Standard Start of API savepoint
282       SAVEPOINT UPDATE_Dm_Binvalues_PVT;
283 
284       -- Standard call to check for call compatibility.
285       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
286                                            p_api_version_number,
287                                            l_api_name,
288                                            G_PKG_NAME)
289       THEN
290           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
291       END IF;
292 
293       -- Initialize message list if p_init_msg_list is set to TRUE.
294       IF FND_API.to_Boolean( p_init_msg_list )
295       THEN
296          FND_MSG_PUB.initialize;
297       END IF;
298 
299       -- Debug Message
300       IF (AMS_DEBUG_HIGH_ON) THEN
301 
302       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
303       END IF;
304 
305 
306       -- Initialize API return status to SUCCESS
307       x_return_status := FND_API.G_RET_STS_SUCCESS;
308 
309        -- Debug Message
313       END IF;
310       IF (AMS_DEBUG_HIGH_ON) THEN
311 
312       AMS_UTILITY_PVT.debug_message('Private API: - Going to Complete Record');
314 
315 
316       -- Complete missing entries in the record before updating
317       Complete_dm_binvalues_Rec(
318          p_dm_binvalues_rec  => p_dm_binvalues_rec,
319          x_complete_rec      => l_tar_dm_binvalues_rec
320       );
321 
322       -- Debug Message
323       IF (AMS_DEBUG_HIGH_ON) THEN
324 
325       AMS_UTILITY_PVT.debug_message('Private API: - Open Cursor to Select');
326       END IF;
327 
328 
329       -- get the reference bin value, which contains
330       -- data before the update operation.
331       OPEN c_get_Dm_Binvalues( l_tar_dm_binvalues_rec.bin_value_id);
332       FETCH c_get_Dm_Binvalues INTO l_ref_dm_binvalues_rec  ;
333 
334        If ( c_get_Dm_Binvalues%NOTFOUND) THEN
335            AMS_Utility_PVT.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET',
336                                          p_token_name   => 'INFO',
337                                          p_token_value  => 'Dm_Binvalues') ;
338            RAISE FND_API.G_EXC_ERROR;
339        END IF;
340 
341        -- Debug Message
342        IF (AMS_DEBUG_HIGH_ON) THEN
343 
344        AMS_UTILITY_PVT.debug_message('Private API: - Close Cursor');
345        END IF;
346        CLOSE     c_get_Dm_Binvalues;
347 
348 
349       If (l_tar_dm_binvalues_rec.object_version_number is NULL or
350           l_tar_dm_binvalues_rec.object_version_number = FND_API.G_MISS_NUM ) Then
351           AMS_Utility_PVT.Error_Message(p_message_name => 'API_VERSION_MISSING',
352                                         p_token_name   => 'COLUMN',
353                                         p_token_value  => 'Last_Update_Date') ;
354           raise FND_API.G_EXC_ERROR;
355       End if;
356       -- Check Whether record has been changed by someone else
357       If (l_tar_dm_binvalues_rec.object_version_number <> l_ref_dm_binvalues_rec.object_version_number) Then
358           AMS_Utility_PVT.Error_Message(p_message_name => 'API_RECORD_CHANGED',
359                                         p_token_name   => 'INFO',
360                                         p_token_value  => 'Dm_Binvalues') ;
361           raise FND_API.G_EXC_ERROR;
362       End if;
363 
364       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
365       THEN
366           -- Debug message
367           IF (AMS_DEBUG_HIGH_ON) THEN
368 
369           AMS_UTILITY_PVT.debug_message('Private API: Calling Validate_Dm_Binvalues');
370           END IF;
371 
372           IF (AMS_DEBUG_HIGH_ON) THEN
373 
374 
375 
376           AMS_UTILITY_PVT.debug_message('bin_value_id = ' || l_tar_dm_binvalues_rec.bin_value_id);
377 
378           END IF;
379           IF (AMS_DEBUG_HIGH_ON) THEN
380 
381           AMS_UTILITY_PVT.debug_message('object_version_number = ' || l_tar_dm_binvalues_rec.object_version_number);
382           END IF;
383           IF (AMS_DEBUG_HIGH_ON) THEN
384 
385           AMS_UTILITY_PVT.debug_message('source_field_id = ' || l_tar_dm_binvalues_rec.source_field_id);
386           END IF;
387           IF (AMS_DEBUG_HIGH_ON) THEN
388 
389           AMS_UTILITY_PVT.debug_message('bucket = ' || l_tar_dm_binvalues_rec.bucket);
390           END IF;
391           IF (AMS_DEBUG_HIGH_ON) THEN
392 
393           AMS_UTILITY_PVT.debug_message('bin_value = ' || l_tar_dm_binvalues_rec.bin_value);
394           END IF;
395           IF (AMS_DEBUG_HIGH_ON) THEN
396 
397           AMS_UTILITY_PVT.debug_message('start_value = ' || l_tar_dm_binvalues_rec.start_value);
398           END IF;
399           IF (AMS_DEBUG_HIGH_ON) THEN
400 
401           AMS_UTILITY_PVT.debug_message('end_value = ' || l_tar_dm_binvalues_rec.end_value);
402           END IF;
403 
404           -- Invoke validation procedures
405           Validate_dm_binvalues(
406             p_api_version_number	=> 1.0,
407             p_init_msg_list		=> FND_API.G_FALSE,
408             p_validation_level	=> p_validation_level,
409             p_validation_mode		=> JTF_PLSQL_API.g_update,
410             p_dm_binvalues_rec	=> l_tar_dm_binvalues_rec,
411             x_return_status		=> x_return_status,
412             x_msg_count			   => x_msg_count,
413             x_msg_data			   => x_msg_data);
414       END IF;
415 
416       IF (AMS_DEBUG_HIGH_ON) THEN
417 
418 
419 
420       AMS_UTILITY_PVT.debug_message('Private API: AFTER Calling Validate_Dm_Binvalues');
421 
422       END IF;
423 
424       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
425           IF (AMS_DEBUG_HIGH_ON) THEN
426 
427           AMS_UTILITY_PVT.debug_message('Error while validating ---------');
428           END IF;
429          RAISE FND_API.G_EXC_ERROR;
430       END IF;
431 
432 
433       -- Debug Message
434       IF (AMS_DEBUG_HIGH_ON) THEN
435 
436       AMS_UTILITY_PVT.debug_message('Private API: Calling update table handler');
437       END IF;
438 
439       -- Invoke table handler(AMS_DM_BIN_VALUES_PKG.Update_Row)
440       AMS_DM_BIN_VALUES_PKG.Update_Row(
441           p_bin_value_id		      => l_tar_dm_binvalues_rec.bin_value_id,
445           p_created_by			      => G_USER_ID,
442           p_last_update_date		   => SYSDATE,
443           p_last_updated_by		   => G_USER_ID,
444           p_creation_date		      => SYSDATE,
446           p_last_update_login		   => G_LOGIN_ID,
447           p_object_version_number	=> l_tar_dm_binvalues_rec.object_version_number,
448           p_source_field_id		   => l_tar_dm_binvalues_rec.source_field_id,
449           p_bucket			         => l_tar_dm_binvalues_rec.bucket,
450           p_bin_value			      => l_tar_dm_binvalues_rec.bin_value,
451           p_start_value			      => l_tar_dm_binvalues_rec.start_value,
452           p_end_value			      => l_tar_dm_binvalues_rec.end_value);
453 
454       -- Set the resulting object version number
455       x_object_version_number := l_tar_dm_binvalues_rec.object_version_number + 1;
456 
457       --
458       -- End of API body.
459       --
460 
461       -- Standard check for p_commit
462       IF FND_API.to_Boolean( p_commit )
463       THEN
464          COMMIT WORK;
465       END IF;
466 
467 
468       -- Debug Message
469       IF (AMS_DEBUG_HIGH_ON) THEN
470 
471       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
472       END IF;
473 
474       -- Standard call to get message count and if count is 1, get message info.
475       FND_MSG_PUB.Count_And_Get
476         (p_count          =>   x_msg_count,
477          p_data           =>   x_msg_data
478       );
479 EXCEPTION
480 
481    WHEN AMS_Utility_PVT.resource_locked THEN
482       x_return_status := FND_API.g_ret_sts_error;
483       AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
484 
485    WHEN FND_API.G_EXC_ERROR THEN
486       ROLLBACK TO UPDATE_Dm_Binvalues_PVT;
487       x_return_status := FND_API.G_RET_STS_ERROR;
488       -- Standard call to get message count and if count=1, get the message
489       FND_MSG_PUB.Count_And_Get (
490             p_encoded => FND_API.G_FALSE,
491             p_count   => x_msg_count,
492             p_data    => x_msg_data
493       );
494 
495    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
496       ROLLBACK TO UPDATE_Dm_Binvalues_PVT;
497       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
498       -- Standard call to get message count and if count=1, get the message
499       FND_MSG_PUB.Count_And_Get (
500             p_encoded => FND_API.G_FALSE,
501             p_count => x_msg_count,
502             p_data  => x_msg_data
503       );
504 
505    WHEN OTHERS THEN
506       ROLLBACK TO UPDATE_Dm_Binvalues_PVT;
507       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
508       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
509       THEN
510          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
511       END IF;
512       -- Standard call to get message count and if count=1, get the message
513       FND_MSG_PUB.Count_And_Get (
514          p_encoded => FND_API.G_FALSE,
515          p_count => x_msg_count,
516          p_data  => x_msg_data
517       );
518 
519 End Update_Dm_Binvalues;
520 
521 PROCEDURE Delete_Dm_Binvalues_For_Field(
522    p_datasource_field_id        IN  NUMBER
523 )
524 IS
525    L_API_NAME                  CONSTANT VARCHAR2(30) := 'Delete_Dm_Binvalues_For_Field';
526 
527 BEGIN
528    -- Standard Start of API savepoint
529    SAVEPOINT Delete_Dm_Binvalues_For_Field;
530 
531    -- Debug Message
532    IF (AMS_DEBUG_HIGH_ON) THEN
533 
534    AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
535    END IF;
536 
537    --
538    -- Api body
539    --
540    DELETE FROM AMS_DM_BIN_VALUES
541     WHERE source_field_id = p_datasource_field_id;
542 
543    --
544    -- End of API body
545    --
546 
547    -- Debug Message
548    IF (AMS_DEBUG_HIGH_ON) THEN
549 
550    AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
551    END IF;
552 
553 EXCEPTION
554 
555    WHEN AMS_Utility_PVT.resource_locked THEN
556      AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
557 
558    WHEN FND_API.G_EXC_ERROR THEN
559      ROLLBACK TO Delete_TgtValues_For_Target;
560 
561    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
562      ROLLBACK TO Delete_TgtValues_For_Target;
563 
564    WHEN OTHERS THEN
565      ROLLBACK TO Delete_TgtValues_For_Target;
566 
567 End Delete_Dm_Binvalues_For_Field;
568 
569 
570 
571 PROCEDURE Delete_Dm_Binvalues(
572    p_api_version_number         IN   NUMBER,
573    p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
574    p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
575    p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
576    x_return_status              OUT NOCOPY  VARCHAR2,
577    x_msg_count                  OUT NOCOPY  NUMBER,
578    x_msg_data                   OUT NOCOPY  VARCHAR2,
579    p_bin_value_id               IN   NUMBER,
580    p_object_version_number      IN   NUMBER
581 )
582 IS
583    L_API_NAME                  CONSTANT VARCHAR2(30) := 'Delete_Dm_Binvalues';
584    L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
588    -- Standard Start of API savepoint
585    l_object_version_number     NUMBER;
586 
587 BEGIN
589    SAVEPOINT DELETE_Dm_Binvalues_PVT;
590 
591    -- Standard call to check for call compatibility.
592    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
593                                         p_api_version_number,
594                                         l_api_name,
595                                         G_PKG_NAME)
596    THEN
597        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
598    END IF;
599 
600    -- Initialize message list if p_init_msg_list is set to TRUE.
601    IF FND_API.to_Boolean( p_init_msg_list )
602    THEN
603       FND_MSG_PUB.initialize;
604    END IF;
605 
606    -- Debug Message
607    IF (AMS_DEBUG_HIGH_ON) THEN
608 
609    AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
610    END IF;
611 
612 
613    -- Initialize API return status to SUCCESS
614    x_return_status := FND_API.G_RET_STS_SUCCESS;
615 
616    --
617    -- Api body
618    --
619    -- Debug Message
620    IF (AMS_DEBUG_HIGH_ON) THEN
621 
622    AMS_UTILITY_PVT.debug_message( 'Private API: Calling delete table handler');
623    END IF;
624 
625    -- Invoke table handler(AMS_DM_BIN_VALUES_PKG.Delete_Row)
626    AMS_DM_BIN_VALUES_PKG.Delete_Row(
627        p_BIN_VALUE_ID  => p_BIN_VALUE_ID);
628    --
629    -- End of API body
630    --
631 
632    -- Standard check for p_commit
633    IF FND_API.to_Boolean( p_commit )
634    THEN
635       COMMIT WORK;
636    END IF;
637 
638 
639    -- Debug Message
640    IF (AMS_DEBUG_HIGH_ON) THEN
641 
642    AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
643    END IF;
644 
645    -- Standard call to get message count and if count is 1, get message info.
646    FND_MSG_PUB.Count_And_Get
647      (p_count          =>   x_msg_count,
648       p_data           =>   x_msg_data
649    );
650 
651 EXCEPTION
652 
653    WHEN AMS_Utility_PVT.resource_locked THEN
654       x_return_status := FND_API.g_ret_sts_error;
655       AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
656 
657    WHEN FND_API.G_EXC_ERROR THEN
658       ROLLBACK TO DELETE_Dm_Binvalues_PVT;
659       x_return_status := FND_API.G_RET_STS_ERROR;
660       -- Standard call to get message count and if count=1, get the message
661       FND_MSG_PUB.Count_And_Get (
662          p_encoded => FND_API.G_FALSE,
663          p_count   => x_msg_count,
664          p_data    => x_msg_data
665       );
666 
667    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
668       ROLLBACK TO DELETE_Dm_Binvalues_PVT;
669       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
670       -- Standard call to get message count and if count=1, get the message
671       FND_MSG_PUB.Count_And_Get (
672          p_encoded => FND_API.G_FALSE,
673          p_count => x_msg_count,
674          p_data  => x_msg_data
675       );
676 
677    WHEN OTHERS THEN
678       ROLLBACK TO DELETE_Dm_Binvalues_PVT;
679       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
680       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
681       THEN
682       FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
683       END IF;
684       -- Standard call to get message count and if count=1, get the message
685       FND_MSG_PUB.Count_And_Get (
686          p_encoded => FND_API.G_FALSE,
687          p_count => x_msg_count,
688          p_data  => x_msg_data
689       );
690 End Delete_Dm_Binvalues;
691 
692 
693 
694 -- Hint: Primary key needs to be returned.
695 PROCEDURE Lock_Dm_Binvalues(
696    p_api_version_number         IN   NUMBER,
697    p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
698 
699    x_return_status              OUT NOCOPY  VARCHAR2,
700    x_msg_count                  OUT NOCOPY  NUMBER,
701    x_msg_data                   OUT NOCOPY  VARCHAR2,
702 
703    p_bin_value_id               IN   NUMBER,
704    p_object_version             IN   NUMBER
705 )
706 IS
707    L_API_NAME                  CONSTANT VARCHAR2(30)  := 'Lock_Dm_Binvalues';
708    L_API_VERSION_NUMBER        CONSTANT NUMBER        := 1.0;
709    L_FULL_NAME                 CONSTANT VARCHAR2(60)  := g_pkg_name ||'.'|| l_api_name;
710    l_BIN_VALUE_ID              NUMBER;
711 
712    CURSOR c_Dm_Binvalues IS
713       SELECT BIN_VALUE_ID
714         FROM AMS_DM_BIN_VALUES
715        WHERE BIN_VALUE_ID = p_BIN_VALUE_ID
716          AND object_version_number = p_object_version
717          FOR UPDATE NOWAIT;
718 
719 BEGIN
720 
721    -- Debug Message
722    IF (AMS_DEBUG_HIGH_ON) THEN
723 
724    AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
725    END IF;
726 
727    -- Initialize message list if p_init_msg_list is set to TRUE.
728    IF FND_API.to_Boolean( p_init_msg_list )
729    THEN
730       FND_MSG_PUB.initialize;
731    END IF;
732 
733    -- Standard call to check for call compatibility.
737                                         G_PKG_NAME)
734    IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
735                                         p_api_version_number,
736                                         l_api_name,
738    THEN
739        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
740    END IF;
741 
742 
743    -- Initialize API return status to SUCCESS
744    x_return_status := FND_API.G_RET_STS_SUCCESS;
745 
746 
747    ------------------------ lock -------------------------
748 
749    IF (AMS_DEBUG_HIGH_ON) THEN
750 
751 
752 
753    AMS_Utility_PVT.debug_message(l_full_name||': start');
754 
755    END IF;
756    OPEN c_Dm_Binvalues;
757 
758    FETCH c_Dm_Binvalues INTO l_BIN_VALUE_ID;
759 
760    IF (c_Dm_Binvalues%NOTFOUND) THEN
761       CLOSE c_Dm_Binvalues;
762       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
763          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
764          FND_MSG_PUB.add;
765       END IF;
766       RAISE FND_API.g_exc_error;
767    END IF;
768 
769    CLOSE c_Dm_Binvalues;
770 
771    -------------------- finish --------------------------
772    FND_MSG_PUB.count_and_get(
773       p_encoded => FND_API.g_false,
774       p_count   => x_msg_count,
775       p_data    => x_msg_data);
776    IF (AMS_DEBUG_HIGH_ON) THEN
777 
778    AMS_Utility_PVT.debug_message(l_full_name ||': end');
779    END IF;
780 
781 EXCEPTION
782 
783    WHEN AMS_Utility_PVT.resource_locked THEN
784       x_return_status := FND_API.g_ret_sts_error;
785       AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
786 
787    WHEN FND_API.G_EXC_ERROR THEN
788       ROLLBACK TO LOCK_Dm_Binvalues_PVT;
789       x_return_status := FND_API.G_RET_STS_ERROR;
790       -- Standard call to get message count and if count=1, get the message
791       FND_MSG_PUB.Count_And_Get (
792          p_encoded => FND_API.G_FALSE,
793          p_count   => x_msg_count,
794          p_data    => x_msg_data
795       );
796 
797    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
798       ROLLBACK TO LOCK_Dm_Binvalues_PVT;
799       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
800       -- Standard call to get message count and if count=1, get the message
801       FND_MSG_PUB.Count_And_Get (
802          p_encoded => FND_API.G_FALSE,
803          p_count => x_msg_count,
804          p_data  => x_msg_data
805       );
806 
807    WHEN OTHERS THEN
808       ROLLBACK TO LOCK_Dm_Binvalues_PVT;
809       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
810       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
811       THEN
812       FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
813       END IF;
814       -- Standard call to get message count and if count=1, get the message
815       FND_MSG_PUB.Count_And_Get (
816          p_encoded => FND_API.G_FALSE,
817          p_count => x_msg_count,
818          p_data  => x_msg_data
819       );
820 End Lock_Dm_Binvalues;
821 
822 
823 PROCEDURE check_uk_items(
824    p_dm_binvalues_rec               IN   dm_binvalues_rec_type,
825    p_validation_mode                IN  VARCHAR2 := JTF_PLSQL_API.g_create,
826    x_return_status                  OUT NOCOPY VARCHAR2)
827 IS
828 
829    l_valid_flag  VARCHAR2(1);
830 
831 BEGIN
832 
833    x_return_status := FND_API.g_ret_sts_success;
834    IF p_validation_mode = JTF_PLSQL_API.g_create THEN
835       l_valid_flag := AMS_Utility_PVT.check_uniqueness(
836       'AMS_DM_BIN_VALUES',
837       'BIN_VALUE_ID = ''' || p_dm_binvalues_rec.BIN_VALUE_ID ||''''
838       );
839    ELSE
840       l_valid_flag := AMS_Utility_PVT.check_uniqueness(
841       'AMS_DM_BIN_VALUES',
842       'BIN_VALUE_ID = ''' || p_dm_binvalues_rec.BIN_VALUE_ID ||
843       ''' AND BIN_VALUE_ID <> ' || p_dm_binvalues_rec.BIN_VALUE_ID
844       );
845    END IF;
846 
847    IF l_valid_flag = FND_API.g_false THEN
848       AMS_Utility_PVT.Error_Message('AMS_API_DUPLICATE_ID', 'ID_FIELD','BIN_VALUE_ID');
849       x_return_status := FND_API.g_ret_sts_error;
850       RETURN;
851    END IF;
852 
853 END check_uk_items;
854 
855 PROCEDURE check_req_items(
856    p_dm_binvalues_rec               IN  dm_binvalues_rec_type,
857    p_validation_mode                IN VARCHAR2 := JTF_PLSQL_API.g_create,
858    x_return_status	               OUT NOCOPY VARCHAR2
859 )
860 IS
861 BEGIN
862 
863    x_return_status := FND_API.g_ret_sts_success;
864 
865    IF p_validation_mode = JTF_PLSQL_API.g_create THEN
866       IF (AMS_DEBUG_HIGH_ON) THEN
867 
868       ams_utility_pvt.debug_message('Private API:check_req_items for CREATE');
869       END IF;
870 
871       IF p_dm_binvalues_rec.bin_value_id = FND_API.g_miss_num OR p_dm_binvalues_rec.bin_value_id IS NULL THEN
872          AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','BIN_VALUE_ID');
873          x_return_status := FND_API.g_ret_sts_error;
874       END IF;
875       IF p_dm_binvalues_rec.source_field_id = FND_API.g_miss_num OR p_dm_binvalues_rec.source_field_id IS NULL THEN
879       IF p_dm_binvalues_rec.bucket = FND_API.g_miss_num OR p_dm_binvalues_rec.bucket IS NULL THEN
876          AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','SOURCE_FIELD_ID');
877          x_return_status := FND_API.g_ret_sts_error;
878       END IF;
880          --changed rosharma 07-may-2003 Bug # 2943269
881          --AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','BUCKET');
882          AMS_Utility_PVT.Error_Message('AMS_DM_NO_BUCKET');
883          x_return_status := FND_API.g_ret_sts_error;
884       END IF;
885    ELSE
886       IF (AMS_DEBUG_HIGH_ON) THEN
887 
888       ams_utility_pvt.debug_message('Private API:check_req_items for UPDATE');
889       END IF;
890 
891       IF p_dm_binvalues_rec.bin_value_id IS NULL THEN
892          AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','BIN_VALUE_ID');
893          x_return_status := FND_API.g_ret_sts_error;
894       END IF;
895       IF p_dm_binvalues_rec.last_update_date IS NULL THEN
896          AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','LAST_UPDATE_DATE');
897          x_return_status := FND_API.g_ret_sts_error;
898       END IF;
899       IF p_dm_binvalues_rec.last_updated_by IS NULL THEN
900          AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','LAST_UPDATED_BY');
901          x_return_status := FND_API.g_ret_sts_error;
902       END IF;
903       IF p_dm_binvalues_rec.creation_date IS NULL THEN
904          AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','CREATION_DATE');
905          x_return_status := FND_API.g_ret_sts_error;
906       END IF;
907       IF p_dm_binvalues_rec.created_by IS NULL THEN
908          AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','CREATED_BY');
909          x_return_status := FND_API.g_ret_sts_error;
910       END IF;
911       IF p_dm_binvalues_rec.source_field_id IS NULL THEN
912          AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','SOURCE_FIELD_ID');
913          x_return_status := FND_API.g_ret_sts_error;
914       END IF;
915       IF p_dm_binvalues_rec.bucket IS NULL THEN
916          --changed rosharma 07-may-2003 Bug # 2943269
917          --AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','BUCKET');
918          AMS_Utility_PVT.Error_Message('AMS_DM_NO_BUCKET');
919          --end change rosharma 07-may-2003 Bug # 2943269
920          x_return_status := FND_API.g_ret_sts_error;
921       END IF;
922    END IF;
923 
924 END check_req_items;
925 
926 PROCEDURE check_FK_items(
927    p_dm_binvalues_rec IN dm_binvalues_rec_type,
928    x_return_status OUT NOCOPY VARCHAR2
929 )
930 IS
931 BEGIN
932    x_return_status := FND_API.g_ret_sts_success;
933 
934    --------------------source_field_id---------------------------
935    IF p_dm_binvalues_rec.source_field_id <> FND_API.g_miss_num THEN
936       IF AMS_Utility_PVT.check_fk_exists(
937             'ams_list_src_fields',
938             'list_source_field_id',
939             p_dm_binvalues_rec.source_field_id
940          ) = FND_API.g_false
941       THEN
942          AMS_Utility_PVT.error_message ('AMS_API_INVALID_FK', 'COLUMN_NAME', 'SOURCE_FIELD_ID');
943          x_return_status := FND_API.g_ret_sts_error;
944       END IF;
945    END IF;
946 
947 END check_FK_items;
948 
949 PROCEDURE check_Lookup_items(
950     p_dm_binvalues_rec IN dm_binvalues_rec_type,
951     x_return_status OUT NOCOPY VARCHAR2
952 )
953 IS
954 BEGIN
955    x_return_status := FND_API.g_ret_sts_success;
956 
957    -- No lookups to validate
958 
959 END check_Lookup_items;
960 
961 PROCEDURE Check_dm_binvalues_Items (
962     P_dm_binvalues_rec     IN    dm_binvalues_rec_type,
963     p_validation_mode  IN    VARCHAR2,
964     x_return_status    OUT NOCOPY   VARCHAR2
965     )
966 IS
967 BEGIN
968 
969    -- Check Items Uniqueness API calls
970 
971    check_uk_items(
972       p_dm_binvalues_rec => p_dm_binvalues_rec,
973       p_validation_mode => p_validation_mode,
974       x_return_status => x_return_status);
975    IF x_return_status <> FND_API.g_ret_sts_success THEN
976       RETURN;
977    END IF;
978 
979    -- Check Items Required/NOT NULL API calls
980    check_req_items(
981       p_dm_binvalues_rec => p_dm_binvalues_rec,
982       p_validation_mode => p_validation_mode,
983       x_return_status => x_return_status);
984    IF x_return_status <> FND_API.g_ret_sts_success THEN
985       RETURN;
986    END IF;
987 
988    -- Check Items Foreign Keys API calls
989    check_FK_items(
990       p_dm_binvalues_rec => p_dm_binvalues_rec,
991       x_return_status => x_return_status);
992    IF x_return_status <> FND_API.g_ret_sts_success THEN
993       RETURN;
994    END IF;
995 
996    -- Check Items Lookups
997    check_Lookup_items(
998       p_dm_binvalues_rec => p_dm_binvalues_rec,
999       x_return_status => x_return_status);
1000    IF x_return_status <> FND_API.g_ret_sts_success THEN
1001       RETURN;
1002    END IF;
1003 
1004 END Check_dm_binvalues_Items;
1005 
1006 
1007 
1008 PROCEDURE Complete_dm_binvalues_Rec (
1009    p_dm_binvalues_rec IN dm_binvalues_rec_type,
1013 
1010    x_complete_rec OUT NOCOPY dm_binvalues_rec_type)
1011 IS
1012    l_return_status  VARCHAR2(1);
1014    CURSOR c_complete IS
1015       SELECT *
1016       FROM ams_dm_bin_values
1017       WHERE bin_value_id = p_dm_binvalues_rec.bin_value_id;
1018    l_dm_binvalues_rec c_complete%ROWTYPE;
1019 BEGIN
1020 
1021    x_complete_rec := p_dm_binvalues_rec;
1022 
1023 
1024    OPEN c_complete;
1025    FETCH c_complete INTO l_dm_binvalues_rec;
1026    CLOSE c_complete;
1027 
1028    -- bin_value_id
1029    IF p_dm_binvalues_rec.bin_value_id = FND_API.g_miss_num THEN
1030       x_complete_rec.bin_value_id := l_dm_binvalues_rec.bin_value_id;
1031    END IF;
1032 
1033    -- last_update_date
1034    IF p_dm_binvalues_rec.last_update_date = FND_API.g_miss_date THEN
1035       x_complete_rec.last_update_date := l_dm_binvalues_rec.last_update_date;
1036    END IF;
1037 
1038    -- last_updated_by
1039    IF p_dm_binvalues_rec.last_updated_by = FND_API.g_miss_num THEN
1040       x_complete_rec.last_updated_by := l_dm_binvalues_rec.last_updated_by;
1041    END IF;
1042 
1043    -- creation_date
1044    IF p_dm_binvalues_rec.creation_date = FND_API.g_miss_date THEN
1045       x_complete_rec.creation_date := l_dm_binvalues_rec.creation_date;
1046    END IF;
1047 
1048    -- created_by
1049    IF p_dm_binvalues_rec.created_by = FND_API.g_miss_num THEN
1050       x_complete_rec.created_by := l_dm_binvalues_rec.created_by;
1051    END IF;
1052 
1053    -- last_update_login
1054    IF p_dm_binvalues_rec.last_update_login = FND_API.g_miss_num THEN
1055       x_complete_rec.last_update_login := l_dm_binvalues_rec.last_update_login;
1056    END IF;
1057 
1058    -- object_version_number
1059    IF p_dm_binvalues_rec.object_version_number = FND_API.g_miss_num THEN
1060       x_complete_rec.object_version_number := l_dm_binvalues_rec.object_version_number;
1061    END IF;
1062 
1063    -- source_field_id
1064    IF p_dm_binvalues_rec.source_field_id = FND_API.g_miss_num THEN
1065       x_complete_rec.source_field_id := l_dm_binvalues_rec.source_field_id;
1066    END IF;
1067 
1068    -- bucket
1069    IF p_dm_binvalues_rec.bucket = FND_API.g_miss_num THEN
1070       x_complete_rec.bucket := l_dm_binvalues_rec.bucket;
1071    END IF;
1072 
1073    -- bin_value
1074    IF p_dm_binvalues_rec.bin_value = FND_API.g_miss_char THEN
1075       x_complete_rec.bin_value := l_dm_binvalues_rec.bin_value;
1076    END IF;
1077 
1078    -- start_value
1079    IF p_dm_binvalues_rec.start_value = FND_API.g_miss_num THEN
1080       x_complete_rec.start_value := l_dm_binvalues_rec.start_value;
1081    END IF;
1082 
1083    -- end_value
1084    IF p_dm_binvalues_rec.end_value = FND_API.g_miss_num THEN
1085       x_complete_rec.end_value := l_dm_binvalues_rec.end_value;
1086    END IF;
1087    -- Note: Developers need to modify the procedure
1088    -- to handle any business specific requirements.
1089 END Complete_dm_binvalues_Rec;
1090 
1091 PROCEDURE Validate_dm_binvalues(
1092     p_api_version_number         IN   NUMBER,
1093     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1094     p_validation_level           IN   NUMBER	   := FND_API.G_VALID_LEVEL_FULL,
1095     p_dm_binvalues_rec           IN   dm_binvalues_rec_type,
1096     p_validation_mode            IN   VARCHAR2,
1097     x_return_status              OUT NOCOPY  VARCHAR2,
1098     x_msg_count                  OUT NOCOPY  NUMBER,
1099     x_msg_data                   OUT NOCOPY  VARCHAR2
1100     )
1101  IS
1102 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Validate_Dm_Binvalues';
1103 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1104 l_object_version_number     NUMBER;
1105 l_dm_binvalues_rec	    AMS_Dm_Binvalues_PVT.dm_binvalues_rec_type;
1106 
1107  BEGIN
1108       -- Standard Start of API savepoint
1109       SAVEPOINT VALIDATE_Dm_Binvalues_;
1110 
1111        -- Debug Message
1112       IF (AMS_DEBUG_HIGH_ON) THEN
1113 
1114       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || ' start');
1115       END IF;
1116 
1117       -- Standard call to check for call compatibility.
1118       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1119                                            p_api_version_number,
1120                                            l_api_name,
1121                                            G_PKG_NAME)
1122       THEN
1123           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1124       END IF;
1125 
1126       -- Initialize message list if p_init_msg_list is set to TRUE.
1127       IF FND_API.to_Boolean( p_init_msg_list )
1128       THEN
1129          FND_MSG_PUB.initialize;
1130       END IF;
1131       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1132               Check_dm_binvalues_Items(
1133                  p_dm_binvalues_rec        => p_dm_binvalues_rec,
1134                  p_validation_mode	   => p_validation_mode,
1135                  x_return_status	   => x_return_status
1136               );
1137 
1138               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1139                   RAISE FND_API.G_EXC_ERROR;
1140               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1141                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1142               END IF;
1146          Validate_dm_binvalues_Rec(
1143       END IF;
1144 
1145       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1147            p_api_version_number     => 1.0,
1148            p_init_msg_list          => FND_API.G_FALSE,
1149            x_return_status          => x_return_status,
1150            x_msg_count              => x_msg_count,
1151            x_msg_data               => x_msg_data,
1152            p_dm_binvalues_rec       => p_dm_binvalues_rec);
1153 
1154          IF (AMS_DEBUG_HIGH_ON) THEN
1155 
1156 
1157 
1158          AMS_UTILITY_PVT.debug_message('After Validate_dm_binvalues_Rec   return status = ' || x_return_status);
1159 
1160          END IF;
1161 
1162          IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1163             RAISE FND_API.G_EXC_ERROR;
1164          ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1165             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1166          END IF;
1167       END IF;
1168 
1169       IF (AMS_DEBUG_HIGH_ON) THEN
1170 
1171 
1172 
1173       AMS_UTILITY_PVT.debug_message('After Validate_dm_binvalues_Rec   return status = ' || x_return_status);
1174 
1175       END IF;
1176 
1177       -- Initialize API return status to SUCCESS
1178       x_return_status := FND_API.G_RET_STS_SUCCESS;
1179 
1180 
1181       -- Debug Message
1182       IF (AMS_DEBUG_HIGH_ON) THEN
1183 
1184       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || ' return status = ' || x_return_status);
1185       END IF;
1186 
1187       -- Standard call to get message count and if count is 1, get message info.
1188       FND_MSG_PUB.Count_And_Get
1189         (p_count          =>   x_msg_count,
1190          p_data           =>   x_msg_data
1191       );
1192 EXCEPTION
1193 
1194    WHEN AMS_Utility_PVT.resource_locked THEN
1195      x_return_status := FND_API.g_ret_sts_error;
1196  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
1197 
1198    WHEN FND_API.G_EXC_ERROR THEN
1199      ROLLBACK TO VALIDATE_Dm_Binvalues_;
1200      x_return_status := FND_API.G_RET_STS_ERROR;
1201      -- Standard call to get message count and if count=1, get the message
1202      FND_MSG_PUB.Count_And_Get (
1203             p_encoded => FND_API.G_FALSE,
1204             p_count   => x_msg_count,
1205             p_data    => x_msg_data
1206      );
1207 
1208    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1209      ROLLBACK TO VALIDATE_Dm_Binvalues_;
1210      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1211      -- Standard call to get message count and if count=1, get the message
1212      FND_MSG_PUB.Count_And_Get (
1213             p_encoded => FND_API.G_FALSE,
1214             p_count => x_msg_count,
1215             p_data  => x_msg_data
1216      );
1217 
1218    WHEN OTHERS THEN
1219      ROLLBACK TO VALIDATE_Dm_Binvalues_;
1220      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1221      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1222      THEN
1223         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1224      END IF;
1225      -- Standard call to get message count and if count=1, get the message
1226      FND_MSG_PUB.Count_And_Get (
1227             p_encoded => FND_API.G_FALSE,
1228             p_count => x_msg_count,
1229             p_data  => x_msg_data
1230      );
1231 End Validate_Dm_Binvalues;
1232 
1233 
1234 PROCEDURE Validate_dm_binvalues_rec(
1235     p_api_version_number         IN   NUMBER,
1236     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1237     x_return_status              OUT NOCOPY  VARCHAR2,
1238     x_msg_count                  OUT NOCOPY  NUMBER,
1239     x_msg_data                   OUT NOCOPY  VARCHAR2,
1240     p_dm_binvalues_rec           IN   dm_binvalues_rec_type
1241     )
1242 IS
1243 BEGIN
1244    -- Debug Message
1245    IF (AMS_DEBUG_HIGH_ON) THEN
1246 
1247    AMS_UTILITY_PVT.debug_message('Private API: Validate_dm_binvalues_rec start');
1248    END IF;
1249 
1250    -- Initialize message list if p_init_msg_list is set to TRUE.
1251    IF FND_API.to_Boolean( p_init_msg_list )
1252    THEN
1253       FND_MSG_PUB.initialize;
1254    END IF;
1255 
1256    -- Initialize API return status to SUCCESS
1257    x_return_status := FND_API.G_RET_STS_SUCCESS;
1258 
1259    -- Hint: Validate data
1260    -- If data not valid
1261    -- THEN
1262    -- x_return_status := FND_API.G_RET_STS_ERROR;
1263 
1264    -- Standard call to get message count and if count is 1, get message info.
1265    FND_MSG_PUB.Count_And_Get
1266       (p_count          =>   x_msg_count,
1267       p_data           =>   x_msg_data
1268    );
1269 
1270    -- Debug Message
1271    IF (AMS_DEBUG_HIGH_ON) THEN
1272 
1273    AMS_UTILITY_PVT.debug_message('Private API: Validate_dm_binvalues_rec end  status = ' || x_return_status);
1274    END IF;
1275 
1276 END Validate_dm_binvalues_Rec;
1277 
1278 END AMS_Dm_Binvalues_PVT;