DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_ST_ASSOC_PVT

Source


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