DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_CELL_INTEGRATE_PVT

Source


1 PACKAGE BODY AMS_CELL_INTEGRATE_PVT  AS
2 /* $Header: amsvceib.pls 115.6 2002/11/22 19:26:32 jieli ship $ */
3 
4 g_pkg_name   CONSTANT VARCHAR2(30):='AMS_CELL_INTEGRATE_PVT';
5 ---------------------------------------------------------------------
6 -- PROCEDURE
7 --    create_segment_list
8 -- PURPOSE
9 --    This procedure will create a list header which will include the
10 --    segment id.
11 --
12 -- HISTORY
13 --    09/06/01  yxliu  Created.
14 --    04/03/02  yxliu  check if sql is empty before call list generation
15 --                     API to avoid endless loop
16 ---------------------------------------------------------------------
17 
18 AMS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
19 AMS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
20 AMS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
21 
22 PROCEDURE create_segment_list
23 ( p_api_version            IN    NUMBER,
24   p_init_msg_list          IN    VARCHAR2   := FND_API.G_TRUE,
25   p_commit                 IN    VARCHAR2   := FND_API.G_FALSE,
26   p_validation_level       IN    NUMBER     := FND_API.G_VALID_LEVEL_FULL,
27   p_owner_user_id          IN    NUMBER,
28   p_cell_id                IN    NUMBER,
29   x_return_status          OUT NOCOPY   VARCHAR2,
30   x_msg_count              OUT NOCOPY   NUMBER,
31   x_msg_data               OUT NOCOPY   VARCHAR2,
32   x_list_header_id         OUT NOCOPY   NUMBER,
33   x_list_source_type       OUT NOCOPY   VARCHAR2,
34   p_list_name              in    VARCHAR2    --DEFAULT NULL
35 )
36 is
37    l_list_header_rec   AMS_ListHeader_PVT.list_header_rec_type;
38    l_init_msg_list     VARCHAR2(2000) := FND_API.G_FALSE;
39    l_api_version       NUMBER         := 1.0;
40    l_api_name          CONSTANT VARCHAR2(30) := 'Create_segment_List';
41    l_action_rec        AMS_ListAction_PVT.action_rec_type ;
42    l_action_id         NUMBER;
43    l_cell_list_name    VARCHAR2(200);
44 
45    l_found                     VARCHAR2(1) := 'N';
46    l_master_type               VARCHAR2(80);
47    l_master_type_id            NUMBER;
48    l_source_object_name        VARCHAR2(80);
49    l_source_object_pk_field    VARCHAR2(80);
50    l_from_position             NUMBER;
51    l_from_counter              NUMBER;
52    l_end_position              NUMBER;
53    l_end_counter               NUMBER;
54    l_sql_string                VARCHAR2(32767);
55    l_return_status             VARCHAR2(1);
56 
57    l_count                     NUMBER;
58    l_string_copy               VARCHAR2(32767);
59    l_sql_string_tbl            AMS_ListGeneration_PKG.sql_string;
60    l_length                    NUMBER;
61 
62    CURSOR c_chk_name IS
63    SELECT  'x'
64      FROM ams_list_headers_vl
65     WHERE list_name = p_list_name;
66 
67    CURSOR c_get_cell_name IS
68    SELECT cell_name
69      FROM ams_cells_vl
70     WHERE cell_id = p_cell_id;
71 
72    l_source_type varchar2(100);
73    l_var  varchar2(1);
74 
75 BEGIN
76 
77    --------------------- get new list name -----------------------
78    IF (AMS_DEBUG_HIGH_ON) THEN
79 
80    AMS_Utility_PVT.debug_message(l_api_name||': get list name');
81    END IF;
82    OPEN c_get_cell_name ;
83    FETCH c_get_cell_name into l_cell_list_name;
84    CLOSE c_get_cell_name;
85 
86    IF p_list_name IS NOT NULL THEN
87       OPEN c_chk_name ;
88       FETCH c_chk_name INTO l_var   ;
89       CLOSE c_chk_name ;
90    ELSE
91       l_var := 'x';
92    END IF;
93 
94    IF l_var IS NOT NULL THEN
95       SELECT l_cell_list_name|| ' -:'|| to_char(sysdate,'DD-MON-YY HH:MM:SS')
96         INTO l_cell_list_name
97         FROM ams_cells_vl
98        WHERE cell_id = p_cell_id;
99    ELSE
100       l_cell_list_name := p_list_name ;
101    END IF;
102 
103    IF NOT FND_API.Compatible_API_Call ( l_api_version,
104                                        p_api_version,
105                                        l_api_name,
106                                        G_PKG_NAME) THEN
107       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
108    END IF;
109 
110    -- Initialize message list IF p_init_msg_list is set to TRUE.
111    IF FND_API.to_Boolean( p_init_msg_list ) THEN
112       FND_MSG_PUB.initialize;
113    END IF;
114 
115    -- Debug Message
116    IF (AMS_DEBUG_HIGH_ON) THEN
117       FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
118       FND_MESSAGE.Set_Token('ROW',
119                           'AMS_ListGeneration_PKG.create_segemnt_list: Start',
120                           TRUE);
121       FND_MSG_PUB.Add;
122    END IF;
123 
124    --------------------- find source type -----------------------
125    IF (AMS_DEBUG_HIGH_ON) THEN
126 
127    AMS_Utility_PVT.debug_message(l_api_name ||': get sql string for cell');
128    END IF;
129    AMS_CELL_PVT.get_single_sql(
130       p_api_version        => p_api_version,
131       p_init_msg_list      => p_init_msg_list,
132       p_validation_level   => p_validation_level,
133       x_return_status      => l_return_status,
134       x_msg_count          => x_msg_count,
135       x_msg_data           => x_msg_data,
136       p_cell_id            => p_cell_id,
137       x_sql_string         => l_sql_string
138    );
139    IF l_return_status = FND_API.g_ret_sts_error THEN
140       RAISE FND_API.g_exc_error;
141    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
142       RAISE FND_API.g_exc_unexpected_error;
143    END IF;
144 
145    IF l_sql_string IS NULL OR
146       l_sql_string = ''
147    THEN
148       IF (AMS_DEBUG_HIGH_ON) THEN
149 
150       AMS_Utility_PVT.debug_message(l_api_name ||': empty sql string');
151       END IF;
152       RAISE FND_API.G_EXC_ERROR;
153    ELSE
154       --l_sql_string := UPPER(l_sql_string);
155       --dbms_output.put_line('sql_string: ' || l_sql_string);
156 
157       IF (AMS_DEBUG_HIGH_ON) THEN
158 
159 
160 
161       AMS_Utility_PVT.debug_message(l_api_name ||': put sql string into table');
162 
163       END IF;
164       l_count := 0;
165       l_string_copy := l_sql_string;
166       l_length := length(l_string_copy);
167 
168       LOOP
169          l_count := l_count + 1;
170          IF l_length < 1999 THEN
171             l_sql_string_tbl(l_count) := l_string_copy;
172             EXIT;
173          ELSE
174             l_sql_string_tbl(l_count) := substr(l_string_copy, 1, 2000);
175             l_string_copy := substr(l_string_copy, 2000);
176          END IF;
177          l_length := length(l_string_copy);
178       END LOOP;
179 
180       IF (AMS_DEBUG_HIGH_ON) THEN
181 
182 
183 
184       AMS_Utility_PVT.debug_message(l_api_name||': validate sql string');
185 
186       END IF;
187       l_found := 'N';
188       AMS_ListGeneration_PKG.validate_sql_string(
189                       p_sql_string    => l_sql_string_tbl ,
190                       p_search_string => 'FROM',
191                       p_comma_valid   => 'N',
192                       x_found         => l_found,
193                       x_position      => l_from_position,
194                       x_counter       => l_from_counter) ;
195 
196       IF l_found = 'N' THEN
197          FND_MESSAGE.set_name('AMS', 'AMS_LIST_FROM_NOT_FOUND');
198          FND_MSG_PUB.Add;
199          RAISE FND_API.G_EXC_ERROR;
200       END IF;
201 
202       IF (AMS_DEBUG_HIGH_ON) THEN
203 
204 
205 
206       AMS_Utility_PVT.debug_message(l_api_name||': get master type');
207 
208       END IF;
209       l_found := 'N';
210 
211       AMS_ListGeneration_PKG.get_master_types (
212                     p_sql_string => l_sql_string_tbl,
213                     p_start_length => 1,
214                     p_start_counter => 1,
215                     p_end_length => l_from_position,
216                     p_end_counter => l_from_counter,
217                     x_master_type_id=> l_master_type_id,
218                     x_master_type=> l_master_type,
219                     x_found=> l_found,
220                     x_source_object_name => l_source_object_name,
221                     x_source_object_pk_field  => l_source_object_pk_field);
222 
223       IF l_found = 'N' THEN
224          FND_MESSAGE.set_name('AMS', 'AMS_LIST_NO_MASTER_TYPE');
225          FND_MSG_PUB.Add;
226          RAISE FND_API.G_EXC_ERROR;
227       END IF;
228       IF (AMS_DEBUG_HIGH_ON) THEN
229 
230       AMS_Utility_PVT.debug_message(l_api_name ||': master_type = '||l_master_type);
231       END IF;
232       --dbms_output.put_line('master_type :' || l_master_type);
233       x_list_source_type := l_master_type;
234 
235       -------------------- create_listheader -----------------
236       --  Initialize API return status to success
237       x_return_status := FND_API.G_RET_STS_SUCCESS;
238 
239       -- Perform the database operation
240       IF (AMS_DEBUG_HIGH_ON) THEN
241 
242       AMS_Utility_PVT.debug_message(l_api_name ||': create_listheader');
243       END IF;
244 
245       -- ams_listheader_pvt.init_listheader_rec(l_list_header_rec);
246       l_list_header_rec.list_name :=  l_cell_list_name  ;
247       l_list_header_rec.list_type :=  'STANDARD';
248       l_list_header_rec.list_source_type :=  l_master_type;
249       l_list_header_rec.owner_user_id :=  p_owner_user_id;
250 
251       AMS_ListHeader_PVT.Create_Listheader (
252                         p_api_version             => 1.0,
253                         p_init_msg_list           => l_init_msg_list,
254                         p_commit                  => p_commit,
255                         p_validation_level        => p_validation_level ,
256                         x_return_status           => x_return_status,
257                         x_msg_count               => x_msg_count,
258                         x_msg_data                => x_msg_data,
259                         p_listheader_rec          => l_list_header_rec,
260                         x_listheader_id           => x_list_header_id
261                         );
262 
263       IF x_return_status <> FND_API.g_ret_sts_success  THEN
264          RAISE FND_API.G_EXC_ERROR;
265       END IF;
266       IF (AMS_DEBUG_HIGH_ON) THEN
267 
268       AMS_Utility_PVT.debug_message(l_api_name ||'listheader_id = '||x_list_header_id);
269       END IF;
270 
271       -------------------- Create_ListAction ----------------
272       IF (AMS_DEBUG_HIGH_ON) THEN
273 
274       AMS_Utility_PVT.debug_message(l_api_name ||': create_listAction');
275       END IF;
276 
277       l_action_rec.arc_action_used_by := 'LIST';
278       l_action_rec.action_used_by_id := x_list_header_id;
279       l_action_rec.order_number := 1 ;
280       l_action_rec.list_action_type := 'INCLUDE';
281       l_action_rec.arc_incl_object_from := 'CELL';
282       l_action_rec.incl_object_id := p_cell_id;
283       l_action_rec.rank := 1;
284 
285       AMS_ListAction_PVT.Create_ListAction
286                       ( p_api_version           => 1.0,
287                         p_init_msg_list         => l_init_msg_list,
288                         p_commit                => p_commit,
289                         p_validation_level      => p_validation_level,
290                         x_return_status         => x_return_status,
291                         x_msg_count             => x_msg_count,
292                         x_msg_data              => x_msg_data,
293                         p_action_rec            => l_action_rec,
294                         x_action_id             => l_action_id
295                        ) ;
296       FND_MESSAGE.set_name('AMS','after list action->'|| l_action_id|| '<-');
297       FND_MSG_PUB.Add;
298 
299       IF x_return_status <> FND_API.g_ret_sts_success  THEN
300          RAISE FND_API.G_EXC_ERROR;
301       END IF;
302 
303       -- Standard check of p_commit.
304 
305       IF FND_API.To_Boolean(p_commit)
306       THEN
307          COMMIT WORK;
308       END IF;
309 
310       -- Success Message
311       -- MMSG
312       --IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
313       --THEN
314       FND_MESSAGE.Set_Name('AMS', 'API_SUCCESS');
315       FND_MESSAGE.Set_Token('ROW', 'AMS_CELL_PVT.create_segment_list: ');
316       FND_MSG_PUB.Add;
317       --END IF;
318 
319 
320       --IF (AMS_DEBUG_HIGH_ON) THEN
321       --THEN
322       FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
323       FND_MESSAGE.Set_Token('ROW', 'AMS_ListGeneration_PKG.create_segment_list: END');
324       FND_MSG_PUB.Add;
325       --END IF;
326 
327       FND_MSG_PUB.count_and_get(
328             p_encoded => FND_API.g_false,
329             p_count   => x_msg_count,
330             p_data    => x_msg_data
331       );
332    END IF;
333 
334 EXCEPTION
335    WHEN FND_API.G_EXC_ERROR THEN
336       FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
337       FND_MESSAGE.Set_Token('ROW', sqlerrm||' '||sqlcode);
338       FND_MSG_PUB.Add;
339       -- Check if reset of the status is required
340       x_return_status := FND_API.G_RET_STS_ERROR ;
341       FND_MSG_PUB.count_and_get(
342             p_encoded => FND_API.g_false,
343             p_count   => x_msg_count,
344             p_data    => x_msg_data);
345 
346    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
350       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
347       FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
348       FND_MESSAGE.Set_Token('ROW', sqlerrm||' '||sqlcode);
349       FND_MSG_PUB.Add;
351       FND_MSG_PUB.count_and_get(
352             p_encoded => FND_API.g_false,
353             p_count   => x_msg_count,
354             p_data    => x_msg_data);
355 
356    WHEN OTHERS THEN
357       FND_MESSAGE.set_name('AMS', 'API_DEBUG_MESSAGE');
358       FND_MESSAGE.Set_Token('ROW', sqlerrm||' '||sqlcode);
359       FND_MSG_PUB.Add;
360       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
361       FND_MSG_PUB.count_and_get(
362             p_encoded => FND_API.g_false,
363             p_count   => x_msg_count,
364             p_data    => x_msg_data);
365 END CREATE_Segment_LIST;
366 
367 END AMS_CEll_INTEGRATE_PVT;