DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMO_INSTRUCTION_GRP

Source


1 PACKAGE BODY GMO_INSTRUCTION_GRP AS
2 /*$Header: GMOGINTB.pls 120.3 2006/07/12 04:51:18 rahugupt noship $*/
3 
4 PROCEDURE CREATE_DEFN_CONTEXT
5 (
6     P_API_VERSION           IN NUMBER,
7     P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
8     P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
9     X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
10     X_MSG_COUNT             OUT NOCOPY NUMBER,
11     X_MSG_DATA              OUT NOCOPY VARCHAR2,
12     P_CURR_INSTR_PROCESS_ID IN NUMBER DEFAULT NULL,
13     P_ENTITY_NAME           IN FND_TABLE_OF_VARCHAR2_255,
14     P_ENTITY_KEY            IN FND_TABLE_OF_VARCHAR2_255,
15     P_ENTITY_DISPLAYNAME    IN FND_TABLE_OF_VARCHAR2_255,
16     P_INSTRUCTION_TYPE      IN FND_TABLE_OF_VARCHAR2_255,
17     P_MODE                  IN VARCHAR2 DEFAULT GMO_CONSTANTS_GRP.G_INSTR_DEFN_MODE_UPDATE,
18     P_CONTEXT_PARAMETERS    IN GMO_DATATYPES_GRP.GMO_DEFINITION_PARAM_TBL_TYPE,
19     X_INSTRUCTION_PROCESS_ID OUT NOCOPY NUMBER
20 
21 ) IS PRAGMA AUTONOMOUS_TRANSACTION;
22 
23 l_api_name      CONSTANT VARCHAR2(30)   := 'CREATE_DEFN_CONTEXT';
24 l_api_version   CONSTANT NUMBER         := 1.0;
25 
26 BEGIN
27 
28       -- Standard call to check for call compatibility.
29       IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
30              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
31       END IF;
32 
33       -- Initialize message list if p_init_msg_list is set to TRUE.
34       IF FND_API.to_Boolean( p_init_msg_list ) THEN
35              FND_MSG_PUB.initialize;
36       END IF;
37 
38       --  Initialize API return status to success
39       X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
40 
41       -- CALL CORRESPONDING PRIVATE API
42       GMO_INSTRUCTION_PVT.CREATE_DEFN_CONTEXT
43       (
44           P_CURR_INSTR_PROCESS_ID => P_CURR_INSTR_PROCESS_ID,
45           P_ENTITY_NAME           => P_ENTITY_NAME,
46           P_ENTITY_KEY            => P_ENTITY_KEY,
47           P_ENTITY_DISPLAYNAME    => P_ENTITY_DISPLAYNAME,
48           P_INSTRUCTION_TYPE      => P_INSTRUCTION_TYPE,
49           P_MODE                  => P_MODE,
50           P_CONTEXT_PARAMETERS    => P_CONTEXT_PARAMETERS,
51           X_INSTRUCTION_PROCESS_ID => X_INSTRUCTION_PROCESS_ID,
52           X_RETURN_STATUS          => X_RETURN_STATUS,
53           X_MSG_COUNT              => X_MSG_COUNT,
54           X_MSG_DATA               => X_MSG_DATA
55       );
56 
57       IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
58           COMMIT  ;
59       ELSE
60           RAISE FND_API.G_EXC_ERROR;
61       END IF;
62 
63       -- Standard call to get message count and if count is 1, get message info.
64       FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
65 
66 EXCEPTION
67      WHEN FND_API.G_EXC_ERROR THEN
68                 ROLLBACK;
69                 x_return_status := FND_API.G_RET_STS_ERROR;
70 
71 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
72                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
73                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.create_defn_context', FALSE);
74                 end if;
75 
76     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
77                 ROLLBACK;
78                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
79 
80 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
81                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
82                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.create_defn_context', FALSE);
83                 end if;
84 
85     WHEN OTHERS THEN
86                 ROLLBACK;
87                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
88 
89 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
90                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
91                 END IF;
92 
93                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
94                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
95                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.create_defn_context', FALSE);
96                 end if;
97 
98 END CREATE_DEFN_CONTEXT;
99 
100 PROCEDURE CREATE_DEFN_CONTEXT
101 (
102     P_API_VERSION           IN NUMBER,
103     P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
104     P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
105     X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
106     X_MSG_COUNT             OUT NOCOPY NUMBER,
107     X_MSG_DATA              OUT NOCOPY VARCHAR2,
108 
109     P_CURR_INSTR_PROCESS_ID IN NUMBER DEFAULT NULL,
110     P_ENTITY_NAME           IN GMO_DATATYPES_GRP.GMO_TABLE_OF_VARCHAR2_255,
111     P_ENTITY_KEY            IN GMO_DATATYPES_GRP.GMO_TABLE_OF_VARCHAR2_255,
112     P_ENTITY_DISPLAYNAME    IN GMO_DATATYPES_GRP.GMO_TABLE_OF_VARCHAR2_255,
113     P_INSTRUCTION_TYPE      IN GMO_DATATYPES_GRP.GMO_TABLE_OF_VARCHAR2_255,
114     P_MODE                  IN VARCHAR2 DEFAULT GMO_CONSTANTS_GRP.G_INSTR_DEFN_MODE_UPDATE,
115     P_CONTEXT_PARAMETERS    IN GMO_DATATYPES_GRP.GMO_DEFINITION_PARAM_TBL_TYPE,
116     X_INSTRUCTION_PROCESS_ID OUT NOCOPY NUMBER
117 )
118 IS PRAGMA AUTONOMOUS_TRANSACTION;
119 
120     l_api_name      CONSTANT VARCHAR2(30)   := 'CREATE_DEFN_CONTEXT';
121     l_api_version   CONSTANT NUMBER         := 1.0;
122 
123     L_ENTITY_NAME FND_TABLE_OF_VARCHAR2_255;
124     L_ENTITY_KEY FND_TABLE_OF_VARCHAR2_255;
125     L_ENTITY_DISPLAYNAME FND_TABLE_OF_VARCHAR2_255;
126     L_INSTRUCTION_TYPE FND_TABLE_OF_VARCHAR2_255;
127 
128 BEGIN
129 
130    -- Standard call to check for call compatibility.
131    IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
132         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
133    END IF;
134 
135    -- Initialize message list if p_init_msg_list is set to TRUE.
136    IF FND_API.to_Boolean( p_init_msg_list ) THEN
137           FND_MSG_PUB.initialize;
138    END IF;
139 
140    --  Initialize API return status to success
141    X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
142 
143   L_ENTITY_NAME := FND_TABLE_OF_VARCHAR2_255();
144   L_ENTITY_KEY := FND_TABLE_OF_VARCHAR2_255();
145   L_ENTITY_DISPLAYNAME := FND_TABLE_OF_VARCHAR2_255();
146   L_INSTRUCTION_TYPE := FND_TABLE_OF_VARCHAR2_255();
147 
148   FOR J IN 1..P_INSTRUCTION_TYPE.count LOOP
149       L_INSTRUCTION_TYPE.EXTEND;
150       L_INSTRUCTION_TYPE(J) := P_INSTRUCTION_TYPE(J);
151   END LOOP;
152 
153   FOR I IN 1..P_ENTITY_NAME.COUNT LOOP
154     L_ENTITY_NAME.EXTEND;
155     L_ENTITY_KEY.EXTEND;
156     L_ENTITY_DISPLAYNAME.EXTEND;
157 
158     L_ENTITY_NAME(I) := P_ENTITY_NAME(I);
159     L_ENTITY_KEY(I) := P_ENTITY_KEY(I);
160     L_ENTITY_DISPLAYNAME(I) := P_ENTITY_DISPLAYNAME(I);
161   END LOOP;
162 
163   BEGIN
164 
165         GMO_INSTRUCTION_PVT.CREATE_DEFN_CONTEXT
166         (
167             P_CURR_INSTR_PROCESS_ID => P_CURR_INSTR_PROCESS_ID,
168             P_ENTITY_NAME => L_ENTITY_NAME,
169             P_ENTITY_KEY => L_ENTITY_KEY,
170             P_ENTITY_DISPLAYNAME => L_ENTITY_DISPLAYNAME,
171             P_INSTRUCTION_TYPE => L_INSTRUCTION_TYPE,
172             P_MODE => P_MODE,
173             P_CONTEXT_PARAMETERS => P_CONTEXT_PARAMETERS,
174             X_INSTRUCTION_PROCESS_ID => X_INSTRUCTION_PROCESS_ID,
175             X_RETURN_STATUS => X_RETURN_STATUS,
176             X_MSG_COUNT => X_MSG_COUNT,
177             X_MSG_DATA => X_MSG_DATA
178         );
179 
180   END;
181 
182   IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
183         COMMIT;
184   ELSE
185        RAISE FND_API.G_EXC_ERROR;
186   END IF;
187 
188   -- Standard call to get message count and if count is 1, get message info.
189   FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
190 
191 EXCEPTION
192      WHEN FND_API.G_EXC_ERROR THEN
193                 ROLLBACK;
194                 x_return_status := FND_API.G_RET_STS_ERROR;
195 
196 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
197                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
198                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.create_defn_context', FALSE);
199                 end if;
200 
201     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
202                 ROLLBACK;
203                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
204 
205 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
206                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
207                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.create_defn_context', FALSE);
208                 end if;
209 
210     WHEN OTHERS THEN
211                 ROLLBACK;
212                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
213 
214 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
215                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
216                 END IF;
217 
218                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
219                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
220                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.create_defn_context', FALSE);
221                 end if;
222 END CREATE_DEFN_CONTEXT;
223 
224 
225 PROCEDURE DELETE_ENTITY_FOR_PROCESS
226 (
227        P_API_VERSION           IN NUMBER,
228        P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
229        P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
230        X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
231        X_MSG_COUNT             OUT NOCOPY NUMBER,
232        X_MSG_DATA              OUT NOCOPY VARCHAR2,
233 
234        P_CURR_INSTR_PROCESS_ID   IN NUMBER,
235        P_ENTITY_NAME             IN GMO_DATATYPES_GRP.GMO_TABLE_OF_VARCHAR2_255,
236        P_ENTITY_KEY              IN GMO_DATATYPES_GRP.GMO_TABLE_OF_VARCHAR2_255,
237        X_INSTRUCTION_PROCESS_ID  OUT NOCOPY NUMBER
238 
239 )IS PRAGMA AUTONOMOUS_TRANSACTION;
240     l_api_name      CONSTANT VARCHAR2(30)   := 'DELETE_ENTITY_FOR_PROCESS';
241     l_api_version   CONSTANT NUMBER         := 1.0;
242 
243 BEGIN
244 
245    -- Standard call to check for call compatibility.
246    IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
247         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
248    END IF;
249 
250    -- Initialize message list if p_init_msg_list is set to TRUE.
251    IF FND_API.to_Boolean( p_init_msg_list ) THEN
252           FND_MSG_PUB.initialize;
253    END IF;
254 
255   --  Initialize API return status to success
256   X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
257 
258   BEGIN
259 
260         GMO_INSTRUCTION_PVT.DELETE_ENTITY_FOR_PROCESS
261         (
262             P_CURR_INSTR_PROCESS_ID => P_CURR_INSTR_PROCESS_ID,
263             P_ENTITY_NAME => P_ENTITY_NAME,
264             P_ENTITY_KEY => P_ENTITY_KEY,
265             X_INSTRUCTION_PROCESS_ID => X_INSTRUCTION_PROCESS_ID,
266             X_RETURN_STATUS => X_RETURN_STATUS,
267             X_MSG_COUNT => X_MSG_COUNT,
268             X_MSG_DATA => X_MSG_DATA
269         );
270 
271   END;
272 
273   IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
274         COMMIT;
275   ELSE
276        RAISE FND_API.G_EXC_ERROR;
277   END IF;
278 
279   -- Standard call to get message count and if count is 1, get message info.
280   FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
281 
282 EXCEPTION
283      WHEN FND_API.G_EXC_ERROR THEN
284                 ROLLBACK;
285                 x_return_status := FND_API.G_RET_STS_ERROR;
286 
287 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
288                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
289                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.delete_entity_for_process', FALSE);
290                 end if;
291 
292     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
293                 ROLLBACK;
294                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
295 
296 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
297                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
298                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.delete_entity_for_process', FALSE);
299                 end if;
300 
301     WHEN OTHERS THEN
302                 ROLLBACK;
303                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
304 
305 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
306                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
307                 END IF;
308 
309                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
310                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
311                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.delete_entity_for_process', FALSE);
312                 end if;
313 END DELETE_ENTITY_FOR_PROCESS;
314 
315 
316 PROCEDURE CREATE_DEFN_CONTEXT
317 (
318     P_API_VERSION           IN NUMBER,
319     P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
320     P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
321     X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
322     X_MSG_COUNT             OUT NOCOPY NUMBER,
323     X_MSG_DATA              OUT NOCOPY VARCHAR2,
324 
325     P_CURR_INSTR_PROCESS_ID IN NUMBER DEFAULT NULL,
326     P_ENTITY_NAME           IN VARCHAR2,
327     P_ENTITY_KEY            IN VARCHAR2,
328     P_ENTITY_DISPLAYNAME    IN VARCHAR2,
329     P_INSTRUCTION_TYPE      IN VARCHAR2,
330     P_MODE                  IN VARCHAR2 DEFAULT GMO_CONSTANTS_GRP.G_INSTR_DEFN_MODE_UPDATE,
331     P_CONTEXT_PARAMETERS    IN GMO_DATATYPES_GRP.GMO_DEFINITION_PARAM_TBL_TYPE,
332     X_INSTRUCTION_PROCESS_ID OUT NOCOPY NUMBER
333 
334 ) IS PRAGMA AUTONOMOUS_TRANSACTION;
335 
336     l_api_name      CONSTANT VARCHAR2(30)   := 'CREATE_DEFN_CONTEXT';
337     l_api_version   CONSTANT NUMBER         := 1.0;
338 
339     L_ENTITY_NAME FND_TABLE_OF_VARCHAR2_255;
340     L_ENTITY_KEY FND_TABLE_OF_VARCHAR2_255;
341     L_ENTITY_DISPLAYNAME FND_TABLE_OF_VARCHAR2_255;
342     L_INSTRUCTION_TYPE FND_TABLE_OF_VARCHAR2_255;
343 
344 BEGIN
345      -- Standard call to check for call compatibility.
346      IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
347          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
348      END IF;
349 
350      -- Initialize message list if p_init_msg_list is set to TRUE.
351      IF FND_API.to_Boolean( p_init_msg_list ) THEN
352         FND_MSG_PUB.initialize;
353      END IF;
354 
355     --  Initialize API return status to success
356     X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
357 
358     L_ENTITY_NAME := FND_TABLE_OF_VARCHAR2_255();
359     L_ENTITY_KEY := FND_TABLE_OF_VARCHAR2_255();
360     L_ENTITY_DISPLAYNAME := FND_TABLE_OF_VARCHAR2_255();
361     L_INSTRUCTION_TYPE := FND_TABLE_OF_VARCHAR2_255();
362 
363     L_ENTITY_NAME.EXTEND;
364     L_ENTITY_KEY.EXTEND;
365     L_ENTITY_DISPLAYNAME.EXTEND;
366     L_INSTRUCTION_TYPE.EXTEND;
367 
368     L_ENTITY_NAME(1) := P_ENTITY_NAME;
369     L_ENTITY_KEY(1) := P_ENTITY_KEY;
370     L_ENTITY_DISPLAYNAME(1) := P_ENTITY_DISPLAYNAME;
371     L_INSTRUCTION_TYPE(1) := P_INSTRUCTION_TYPE;
372 
373     BEGIN
374 
375 	GMO_INSTRUCTION_PVT.CREATE_DEFN_CONTEXT
376         (
377             P_CURR_INSTR_PROCESS_ID => P_CURR_INSTR_PROCESS_ID,
378             P_ENTITY_NAME => L_ENTITY_NAME,
379             P_ENTITY_KEY => L_ENTITY_KEY,
380             P_ENTITY_DISPLAYNAME => L_ENTITY_DISPLAYNAME,
381             P_INSTRUCTION_TYPE => L_INSTRUCTION_TYPE,
382             P_MODE => P_MODE,
383             P_CONTEXT_PARAMETERS => P_CONTEXT_PARAMETERS,
384             X_INSTRUCTION_PROCESS_ID => X_INSTRUCTION_PROCESS_ID,
385             X_RETURN_STATUS => X_RETURN_STATUS,
386             X_MSG_COUNT => X_MSG_COUNT,
387             X_MSG_DATA => X_MSG_DATA
388         );
389 
390     END;
391 
392     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
393         COMMIT  ;
394     ELSE
395        RAISE FND_API.G_EXC_ERROR;
396     END IF;
397 
398     -- Standard call to get message count and if count is 1, get message info.
399     FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
400 
401 EXCEPTION
402     WHEN FND_API.G_EXC_ERROR THEN
403                 ROLLBACK;
404                 x_return_status := FND_API.G_RET_STS_ERROR;
405 
406 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
407                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
408                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.create_defn_context', FALSE);
409                 end if;
410 
411     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
412                 ROLLBACK;
413                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
414 
415 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
416                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
417                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.create_defn_context', FALSE);
418                 end if;
419 
420     WHEN OTHERS THEN
421                 ROLLBACK;
422                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
423 
424 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
425                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
426                 END IF;
427 
428                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
429                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
430                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.create_defn_context', FALSE);
431                 end if;
432 
433 END CREATE_DEFN_CONTEXT;
434 
435 PROCEDURE CREATE_DEFN_FROM_DEFN
436 (
437     P_API_VERSION           IN NUMBER,
438     P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
439     P_COMMIT                IN  VARCHAR2 DEFAULT FND_API.G_FALSE,
440     P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
441     X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
442     X_MSG_COUNT             OUT NOCOPY NUMBER,
443     X_MSG_DATA              OUT NOCOPY VARCHAR2,
444 
445     P_SOURCE_ENTITY_NAME   IN VARCHAR2,
446     P_SOURCE_ENTITY_KEY    IN VARCHAR2,
447     P_TARGET_ENTITY_NAME   IN VARCHAR2,
448     P_TARGET_ENTITY_KEY    IN VARCHAR2,
449     P_INSTRUCTION_TYPE      IN VARCHAR2,
450     X_INSTRUCTION_SET_ID    OUT NOCOPY NUMBER
451 
452 )
453 IS
454     l_api_name      CONSTANT VARCHAR2(30)   := 'CREATE_DEFN_FROM_DEFN';
455     l_api_version   CONSTANT NUMBER         := 1.0;
456 
457 BEGIN
458 
459      -- Standard call to check for call compatibility.
460      IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
461          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
462      END IF;
463 
464      -- Initialize message list if p_init_msg_list is set to TRUE.
465      IF FND_API.to_Boolean( p_init_msg_list ) THEN
466         FND_MSG_PUB.initialize;
467      END IF;
468 
469     --  Initialize API return status to success
470     X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
471 
472     GMO_INSTRUCTION_PVT.CREATE_DEFN_FROM_DEFN
473     (
474         P_SOURCE_ENTITY_NAME => P_SOURCE_ENTITY_NAME,
475 	P_SOURCE_ENTITY_KEY => P_SOURCE_ENTITY_KEY,
476 	P_TARGET_ENTITY_NAME => P_TARGET_ENTITY_NAME,
477 	P_TARGET_ENTITY_KEY => P_TARGET_ENTITY_KEY,
478 	P_INSTRUCTION_TYPE => P_INSTRUCTION_TYPE,
479 	X_INSTRUCTION_SET_ID => X_INSTRUCTION_SET_ID,
480 	X_RETURN_STATUS => X_RETURN_STATUS,
481 	X_MSG_COUNT => X_MSG_COUNT,
482 	X_MSG_DATA => X_MSG_DATA
483     );
484 
485 
486     -- Standard call to get message count and if count is 1, get message info.
487     FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
488 
489     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
490         IF FND_API.To_Boolean( p_commit ) THEN
491              COMMIT  ;
492         END IF;
493     ELSE
494          RAISE FND_API.G_EXC_ERROR;
495     END IF;
496 
497     -- Standard call to get message count and if count is 1, get message info.
498     FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
499 
500 EXCEPTION
501      WHEN FND_API.G_EXC_ERROR THEN
502 
503                 x_return_status := FND_API.G_RET_STS_ERROR;
504 
505 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
506                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
507                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.create_defn_from_defn', FALSE);
508                 end if;
509 
510     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
511 
512                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
513 
514 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
515                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
516                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.create_defn_from_defn', FALSE);
517                 end if;
518 
519     WHEN OTHERS THEN
520 
521                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
522 
523 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
524                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
525                 END IF;
526 
527                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
528                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
529                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.create_defn_from_defn', FALSE);
530                 end if;
531 
532 END CREATE_DEFN_FROM_DEFN;
533 
534 PROCEDURE SEND_DEFN_ACKN
535 (
536     P_API_VERSION           IN NUMBER,
537     P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
538     P_COMMIT                IN  VARCHAR2 DEFAULT FND_API.G_FALSE,
539     P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
540     X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
541     X_MSG_COUNT             OUT NOCOPY NUMBER,
542     X_MSG_DATA              OUT NOCOPY VARCHAR2,
543 
544     P_INSTRUCTION_PROCESS_ID    IN NUMBER,
545     P_ENTITY_NAME               IN VARCHAR2,
546     P_SOURCE_ENTITY_KEY         IN VARCHAR2,
547     P_TARGET_ENTITY_KEY         IN VARCHAR2
548 )
549 
550 IS
551 
552     l_api_name      CONSTANT VARCHAR2(30)   := 'SEND_DEFN_ACKN';
553     l_api_version   CONSTANT NUMBER         := 1.0;
554 
555     L_ENTITY_NAME FND_TABLE_OF_VARCHAR2_255;
556     L_SOURCE_ENTITY_KEY FND_TABLE_OF_VARCHAR2_255;
557     L_TARGET_ENTITY_KEY FND_TABLE_OF_VARCHAR2_255;
558 
559 BEGIN
560       -- Standard call to check for call compatibility.
561      IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
562          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
563      END IF;
564 
565      -- Initialize message list if p_init_msg_list is set to TRUE.
566      IF FND_API.to_Boolean( p_init_msg_list ) THEN
567         FND_MSG_PUB.initialize;
568      END IF;
569 
570      --  Initialize API return status to success
571      X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
572 
573      L_ENTITY_NAME := FND_TABLE_OF_VARCHAR2_255();
574      L_SOURCE_ENTITY_KEY := FND_TABLE_OF_VARCHAR2_255();
575      L_TARGET_ENTITY_KEY := FND_TABLE_OF_VARCHAR2_255();
576 
577      L_ENTITY_NAME.EXTEND;
578      L_SOURCE_ENTITY_KEY.EXTEND;
579      L_TARGET_ENTITY_KEY.EXTEND;
580 
581      L_ENTITY_NAME(1) := P_ENTITY_NAME;
582      L_SOURCE_ENTITY_KEY(1) := P_SOURCE_ENTITY_KEY;
583      L_TARGET_ENTITY_KEY(1) := P_TARGET_ENTITY_KEY;
584 
585      GMO_INSTRUCTION_PVT.SEND_DEFN_ACKN
586      (
587              P_INSTRUCTION_PROCESS_ID => P_INSTRUCTION_PROCESS_ID,
588              P_ENTITY_NAME => L_ENTITY_NAME,
589              P_SOURCE_ENTITY_KEY => L_SOURCE_ENTITY_KEY,
590              P_TARGET_ENTITY_KEY => L_TARGET_ENTITY_KEY,
591              X_RETURN_STATUS => X_RETURN_STATUS,
592              X_MSG_COUNT => X_MSG_COUNT,
593              X_MSG_DATA => X_MSG_DATA
594     );
595 
596     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
597         IF FND_API.To_Boolean( p_commit ) THEN
598             COMMIT  ;
599         END IF;
600     ELSE
601         RAISE FND_API.G_EXC_ERROR;
602     END IF;
603 
604     -- Standard call to get message count and if count is 1, get message info.
605     FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
606 
607 EXCEPTION
608      WHEN FND_API.G_EXC_ERROR THEN
609                 x_return_status := FND_API.G_RET_STS_ERROR;
610 
611 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
612                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
613                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.send_defn_ackn', FALSE);
614                 end if;
615 
616     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
617                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
618 
619 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
620                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
621                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.send_defn_ackn', FALSE);
622                 end if;
623 
624     WHEN OTHERS THEN
625                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
626 
627 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
628                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
629                 END IF;
630 
631                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
632                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
633                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.send_defn_ackn', FALSE);
634                 end if;
635 
636 END SEND_DEFN_ACKN;
637 
638 /* This procedure copies the data from temporary tables back to
639    permenant tables, and also checks if there was any modification to
640    permenant tables, before copying the data back to permentant tables
641    and marks the instruction set as acknowledged */
642 
643 PROCEDURE SEND_DEFN_ACKN
644 (
645     P_API_VERSION           IN NUMBER,
646     P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
647     P_COMMIT                IN  VARCHAR2 DEFAULT FND_API.G_FALSE,
648     P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
649     X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
650     X_MSG_COUNT             OUT NOCOPY NUMBER,
651     X_MSG_DATA              OUT NOCOPY VARCHAR2,
652 
653     P_INSTRUCTION_PROCESS_ID    IN NUMBER,
654     P_ENTITY_NAME               IN FND_TABLE_OF_VARCHAR2_255,
655     P_SOURCE_ENTITY_KEY         IN FND_TABLE_OF_VARCHAR2_255,
656     P_TARGET_ENTITY_KEY         IN FND_TABLE_OF_VARCHAR2_255
657 )
658 
659 IS
660 
661   l_api_name      CONSTANT VARCHAR2(30)   := 'SEND_DEFN_ACKN';
662   l_api_version   CONSTANT NUMBER         := 1.0;
663 
664 BEGIN
665 
666    -- Standard call to check for call compatibility.
667    IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
668        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
669    END IF;
670 
671    -- Initialize message list if p_init_msg_list is set to TRUE.
672    IF FND_API.to_Boolean( p_init_msg_list ) THEN
673       FND_MSG_PUB.initialize;
674    END IF;
675 
676    --  Initialize API return status to success
677    X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
678 
679    GMO_INSTRUCTION_PVT.SEND_DEFN_ACKN
680    (
681            P_INSTRUCTION_PROCESS_ID => P_INSTRUCTION_PROCESS_ID,
682 	   P_ENTITY_NAME => P_ENTITY_NAME,
683 	   P_SOURCE_ENTITY_KEY => P_SOURCE_ENTITY_KEY,
684 	   P_TARGET_ENTITY_KEY => P_SOURCE_ENTITY_KEY,
685 	   X_RETURN_STATUS => X_RETURN_STATUS,
686 	   X_MSG_COUNT => X_MSG_COUNT,
687 	   X_MSG_DATA => X_MSG_DATA
688    );
689 
690     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
691         IF FND_API.To_Boolean( p_commit ) THEN
692             COMMIT  ;
693         END IF;
694     ELSE
695         RAISE FND_API.G_EXC_ERROR;
696     END IF;
697 
698    -- Standard call to get message count and if count is 1, get message info.
699    FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
700 
701 EXCEPTION
702      WHEN FND_API.G_EXC_ERROR THEN
703                 x_return_status := FND_API.G_RET_STS_ERROR;
704 
705 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
706                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
707                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.send_defn_ackn', FALSE);
708                 end if;
709 
710     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
711                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
712 
713 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
714                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
715                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.send_defn_ackn', FALSE);
716                 end if;
717 
718     WHEN OTHERS THEN
719                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
720 
721 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
722                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
723                 END IF;
724 
725                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
726                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
727                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.send_defn_ackn', FALSE);
728                 end if;
729 END SEND_DEFN_ACKN;
730 
731 PROCEDURE SEND_DEFN_ACKN
732 (
733     P_API_VERSION           IN NUMBER,
734     P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
735     P_COMMIT                IN  VARCHAR2 DEFAULT FND_API.G_FALSE,
736     P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
737     X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
738     X_MSG_COUNT             OUT NOCOPY NUMBER,
739     X_MSG_DATA              OUT NOCOPY VARCHAR2,
740 
741     P_INSTRUCTION_PROCESS_ID    IN NUMBER,
742     P_ENTITY_NAME               IN GMO_DATATYPES_GRP.GMO_TABLE_OF_VARCHAR2_255,
743     P_SOURCE_ENTITY_KEY         IN GMO_DATATYPES_GRP.GMO_TABLE_OF_VARCHAR2_255,
744     P_TARGET_ENTITY_KEY         IN GMO_DATATYPES_GRP.GMO_TABLE_OF_VARCHAR2_255
745 
746 )
747 IS
748 
749   l_api_name      CONSTANT VARCHAR2(30)   := 'SEND_DEFN_ACKN';
750   l_api_version   CONSTANT NUMBER         := 1.0;
751 
752 BEGIN
753 
754    -- Standard call to check for call compatibility.
755    IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
756        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
757    END IF;
758 
759    -- Initialize message list if p_init_msg_list is set to TRUE.
760    IF FND_API.to_Boolean( p_init_msg_list ) THEN
761       FND_MSG_PUB.initialize;
762    END IF;
763 
764    --  Initialize API return status to success
765    X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
766 
767    GMO_INSTRUCTION_PVT.SEND_DEFN_ACKN
768    (
769            P_INSTRUCTION_PROCESS_ID => P_INSTRUCTION_PROCESS_ID,
770 	   P_ENTITY_NAME => P_ENTITY_NAME,
771 	   P_SOURCE_ENTITY_KEY => P_SOURCE_ENTITY_KEY,
772 	   P_TARGET_ENTITY_KEY => P_TARGET_ENTITY_KEY,
773 	   X_RETURN_STATUS => X_RETURN_STATUS,
774 	   X_MSG_COUNT => X_MSG_COUNT,
775 	   X_MSG_DATA => X_MSG_DATA
776    );
777 
778     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
779         IF FND_API.To_Boolean( p_commit ) THEN
780             COMMIT  ;
781         END IF;
782     ELSE
783         RAISE FND_API.G_EXC_ERROR;
784     END IF;
785 
786    -- Standard call to get message count and if count is 1, get message info.
787    FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
788 
789 EXCEPTION
790      WHEN FND_API.G_EXC_ERROR THEN
791                 x_return_status := FND_API.G_RET_STS_ERROR;
792 
793 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
794                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
795                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.send_defn_ackn', FALSE);
796                 end if;
797 
798     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
799                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
800 
801 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
802                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
803                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.send_defn_ackn', FALSE);
804                 end if;
805 
806     WHEN OTHERS THEN
807                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
808 
809 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
810                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
811                 END IF;
812 
813                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
814                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
815                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.send_defn_ackn', FALSE);
816                 end if;
817 
818 END SEND_DEFN_ACKN;
819 
820 
821 PROCEDURE GET_DEFN_STATUS
822 (
823     P_API_VERSION           IN NUMBER,
824     P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
825     P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
826     X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
827     X_MSG_COUNT             OUT NOCOPY NUMBER,
828     X_MSG_DATA              OUT NOCOPY VARCHAR2,
829 
830     P_INSTRUCTION_PROCESS_ID IN NUMBER,
831     X_DEFINITION_STATUS OUT NOCOPY VARCHAR2
832 
833 )
834 IS
835 
836   l_api_name      CONSTANT VARCHAR2(30)   := 'GET_DEFN_STATUS';
837   l_api_version   CONSTANT NUMBER         := 1.0;
838 
839 
840 BEGIN
841   -- Standard Start of API savepoint
842    SAVEPOINT  GET_DEFN_STATUS_GRP;
843 
844    -- Standard call to check for call compatibility.
845    IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
846        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
847    END IF;
848 
849    -- Initialize message list if p_init_msg_list is set to TRUE.
850    IF FND_API.to_Boolean( p_init_msg_list ) THEN
851       FND_MSG_PUB.initialize;
852    END IF;
853 
854    --  Initialize API return status to success
855    X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
856 
857    SELECT ATTRIBUTE_VALUE INTO X_DEFINITION_STATUS
858    FROM GMO_INSTR_ATTRIBUTES_T
859    WHERE ATTRIBUTE_NAME  = 'DEFINITION_STATUS'
860    AND INSTRUCTION_PROCESS_ID = P_INSTRUCTION_PROCESS_ID;
861 
862 
863 
864    -- Standard call to get message count and if count is 1, get message info.
865    FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
866 
867 EXCEPTION
868     WHEN FND_API.G_EXC_ERROR THEN
869                 ROLLBACK TO GET_DEFN_STATUS_GRP;
870                 x_return_status := FND_API.G_RET_STS_ERROR;
871 
872 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
873                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
874                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.get_defn_status', FALSE);
875                 end if;
876 
877     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
878                 ROLLBACK TO GET_DEFN_STATUS_GRP;
879                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
880 
881 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
882                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
883                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.get_defn_status', FALSE);
884                 end if;
885 
886     WHEN OTHERS THEN
887                 ROLLBACK TO GET_DEFN_STATUS_GRP;
888                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
889 
890 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
891                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
892                 END IF;
893 
894                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
895                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
896                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.get_defn_status', FALSE);
897                 end if;
898 
899 END GET_DEFN_STATUS;
900 
901 -- This procedure is used to fetch the instruction set and related
902 -- instruction details in XML format
903 
904 PROCEDURE GET_INSTR_XML
905 (
906     P_API_VERSION           IN NUMBER,
907     P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
908     P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
909     X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
910     X_MSG_COUNT             OUT NOCOPY NUMBER,
911     X_MSG_DATA              OUT NOCOPY VARCHAR2,
912 
913 
914     P_INSTRUCTION_PROCESS_ID IN NUMBER,
915     X_OUTPUT_XML  OUT NOCOPY CLOB
916 )
917 IS
918 
919   l_api_name      CONSTANT VARCHAR2(30)   := 'GET_INSTR_XML';
920   l_api_version   CONSTANT NUMBER         := 1.0;
921 
922   --This variable would hold the XML details in XMLType format.
923   L_INSTR_XML XMLTYPE;
924 
925 BEGIN
926      -- Standard Start of API savepoint
927      SAVEPOINT  GET_INSTR_XML_GRP;
928 
929      -- Standard call to check for call compatibility.
930      IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
931         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
932      END IF;
933 
934      -- Initialize message list if p_init_msg_list is set to TRUE.
935      IF FND_API.to_Boolean( p_init_msg_list ) THEN
936         FND_MSG_PUB.initialize;
937      END IF;
938 
939      --  Initialize API return status to success
940      X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
941 
942      --Call Private API , which will return the XML Clob
943      GMO_INSTRUCTION_PVT.GET_INSTR_XML
944      (
945           P_INSTRUCTION_PROCESS_ID => P_INSTRUCTION_PROCESS_ID,
946 	  X_OUTPUT_XML => X_OUTPUT_XML
947      );
948 
949      -- Standard call to get message count and if count is 1, get message info.
950      FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
951 
952 EXCEPTION
953      WHEN FND_API.G_EXC_ERROR THEN
954                 ROLLBACK TO GET_INSTR_XML_GRP;
955                 x_return_status := FND_API.G_RET_STS_ERROR;
956 
957 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
958                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
959                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.GET_INSTR_XML', FALSE);
960                 end if;
961 
962     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
963                 ROLLBACK TO GET_INSTR_XML_GRP;
964                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
965 
966 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
967                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
968                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.GET_INSTR_XML', FALSE);
969                 end if;
970 
971     WHEN OTHERS THEN
972                 ROLLBACK TO GET_INSTR_XML_GRP;
973                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
974 
975 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
976                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
977                 END IF;
978 
979                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
980                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
981                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.GET_INSTR_XML', FALSE);
982                 end if;
983 
984 END GET_INSTR_XML;
985 
986 -- This procedure is used to fetch the instruction instance details
987 -- in XML format
988 
989 PROCEDURE GET_INSTR_INSTANCE_XML
990 (
991     P_API_VERSION           IN NUMBER,
992     P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
993     P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
994     X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
995     X_MSG_COUNT             OUT NOCOPY NUMBER,
996     X_MSG_DATA              OUT NOCOPY VARCHAR2,
997 
998 
999     P_INSTRUCTION_PROCESS_ID IN NUMBER,
1000     X_OUTPUT_XML  OUT NOCOPY CLOB
1001 )
1002 IS
1003 
1004   l_api_name      CONSTANT VARCHAR2(30)   := 'GET_INSTR_XML';
1005   l_api_version   CONSTANT NUMBER         := 1.0;
1006 
1007   --This variable would hold the XML details in XMLType format.
1008   L_INSTR_XML XMLTYPE;
1009 
1010 BEGIN
1011      -- Standard Start of API savepoint
1012      SAVEPOINT  GET_INSTR_XML_GRP;
1013 
1014      -- Standard call to check for call compatibility.
1015      IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
1016         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1017      END IF;
1018 
1019      -- Initialize message list if p_init_msg_list is set to TRUE.
1020      IF FND_API.to_Boolean( p_init_msg_list ) THEN
1021         FND_MSG_PUB.initialize;
1022      END IF;
1023 
1024      --  Initialize API return status to success
1025      X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
1026 
1027      --Call Private API , which will return the XML Clob
1028      GMO_INSTRUCTION_PVT.GET_INSTR_INSTANCE_XML
1029      (
1030           P_INSTRUCTION_PROCESS_ID => P_INSTRUCTION_PROCESS_ID,
1031           X_OUTPUT_XML => X_OUTPUT_XML
1032      );
1033 
1034      -- Standard call to get message count and if count is 1, get message info.
1035      FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1036 
1037 EXCEPTION
1038      WHEN FND_API.G_EXC_ERROR THEN
1039                 ROLLBACK TO GET_INSTR_XML_GRP;
1040                 x_return_status := FND_API.G_RET_STS_ERROR;
1041 
1042                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1043                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1044                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.GET_INSTR_INSTANCE_XML', FALSE);
1045                 end if;
1046 
1047     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1048                 ROLLBACK TO GET_INSTR_XML_GRP;
1049                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1050 
1051                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1052                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1053                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.GET_INSTR_INSTANCE_XML', FALSE);
1054                 end if;
1055 
1056     WHEN OTHERS THEN
1057                 ROLLBACK TO GET_INSTR_XML_GRP;
1058                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1059 
1060                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1061                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
1062                 END IF;
1063 
1064                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1065                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1066                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.GET_INSTR_INSTANCE_XML', FALSE);
1067                 end if;
1068 
1069 END GET_INSTR_INSTANCE_XML;
1070 
1071 PROCEDURE CREATE_INSTANCE_FROM_DEFN
1072 (
1073     P_API_VERSION           IN NUMBER,
1074     P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
1075     P_COMMIT                IN  VARCHAR2 DEFAULT FND_API.G_FALSE,
1076     P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
1077     X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
1078     X_MSG_COUNT             OUT NOCOPY NUMBER,
1079     X_MSG_DATA              OUT NOCOPY VARCHAR2,
1080 
1081     P_DEFINITION_ENTITY_NAME    IN VARCHAR2,
1082     P_DEFINITION_ENTITY_KEY     IN VARCHAR2,
1083     P_INSTANCE_ENTITY_NAME      IN VARCHAR2,
1084     P_INSTANCE_ENTITY_KEY       IN VARCHAR2,
1085     P_INSTRUCTION_TYPE          IN VARCHAR2,
1086     X_INSTRUCTION_SET_ID        OUT NOCOPY NUMBER
1087 
1088 ) IS
1089 
1090   l_api_name      CONSTANT VARCHAR2(30)   := 'CREATE_INSTANCE_FROM_DEFN';
1091   l_api_version   CONSTANT NUMBER         := 1.0;
1092 
1093 BEGIN
1094      -- Standard Start of API savepoint
1095      SAVEPOINT  CREATE_INSTANCE_FROM_DEFN_GRP;
1096 
1097      -- Standard call to check for call compatibility.
1098      IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
1099         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1100      END IF;
1101 
1102      -- Initialize message list if p_init_msg_list is set to TRUE.
1103      IF FND_API.to_Boolean( p_init_msg_list ) THEN
1104         FND_MSG_PUB.initialize;
1105      END IF;
1106 
1107      --  Initialize API return status to success
1108      X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
1109 
1110      GMO_INSTRUCTION_PVT.CREATE_INSTANCE_FROM_DEFN
1111      (
1112           P_DEFINITION_ENTITY_NAME => P_DEFINITION_ENTITY_NAME,
1113 	  P_DEFINITION_ENTITY_KEY => P_DEFINITION_ENTITY_KEY,
1114 	  P_INSTANCE_ENTITY_NAME => P_INSTANCE_ENTITY_NAME,
1115           P_INSTANCE_ENTITY_KEY => P_INSTANCE_ENTITY_KEY,
1116           P_INSTRUCTION_TYPE => P_INSTRUCTION_TYPE,
1117 	  X_INSTRUCTION_SET_ID => X_INSTRUCTION_SET_ID,
1118 	  X_RETURN_STATUS => X_RETURN_STATUS,
1119           X_MSG_COUNT => X_MSG_COUNT,
1120           X_MSG_DATA => X_MSG_DATA
1121      );
1122 
1123      IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1124             RAISE FND_API.G_EXC_ERROR;
1125      END IF;
1126 
1127      -- Standard call to get message count and if count is 1, get message info.
1128      FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1129 
1130      IF FND_API.To_Boolean( p_commit ) THEN
1131             COMMIT  ;
1132      END IF;
1133 
1134 EXCEPTION
1135      WHEN FND_API.G_EXC_ERROR THEN
1136                 ROLLBACK TO CREATE_INSTANCE_FROM_DEFN_GRP;
1137 		x_return_status := FND_API.G_RET_STS_ERROR;
1138 
1139 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1140                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1141                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.CREATE_INSTANCE_FROM_DEFN', FALSE);
1142                 end if;
1143     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1144                 ROLLBACK TO CREATE_INSTANCE_FROM_DEFN_GRP;
1145 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1146 
1147 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1148                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1149                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.CREATE_INSTANCE_FROM_DEFN', FALSE);
1150                 end if;
1151 
1152     WHEN OTHERS THEN
1153                 ROLLBACK TO CREATE_INSTANCE_FROM_DEFN_GRP;
1154 		x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1155 
1156 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1157                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
1158                 END IF;
1159 
1160                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1161                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1162                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.CREATE_INSTANCE_FROM_DEFN', FALSE);
1163                 end if;
1164 
1165 END CREATE_INSTANCE_FROM_DEFN;
1166 
1167 
1168 PROCEDURE CREATE_INSTANCE_FROM_INSTANCE
1169 (
1170 
1171     P_API_VERSION           IN NUMBER,
1172     P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
1173     P_COMMIT                IN  VARCHAR2 DEFAULT FND_API.G_FALSE,
1174     P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
1175     X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
1176     X_MSG_COUNT             OUT NOCOPY NUMBER,
1177     X_MSG_DATA              OUT NOCOPY VARCHAR2,
1178 
1179     P_SOURCE_ENTITY_NAME        IN VARCHAR2,
1180     P_SOURCE_ENTITY_KEY         IN VARCHAR2,
1181     P_TARGET_ENTITY_KEY         IN VARCHAR2,
1182     P_INSTRUCTION_TYPE          IN VARCHAR2,
1183     X_INSTRUCTION_SET_ID        OUT NOCOPY NUMBER
1184 
1185 ) IS
1186 
1187   l_api_name      CONSTANT VARCHAR2(30)   := 'CREATE_INSTANCE_FROM_INSTANCE';
1188   l_api_version   CONSTANT NUMBER         := 1.0;
1189 
1190 BEGIN
1191      SAVEPOINT  CREATE_INST_FRM_INST_SV;
1192      -- Standard call to check for call compatibility.
1193      IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
1194         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1195      END IF;
1196 
1197      -- Initialize message list if p_init_msg_list is set to TRUE.
1198      IF FND_API.to_Boolean( p_init_msg_list ) THEN
1199         FND_MSG_PUB.initialize;
1200      END IF;
1201 
1202      --  Initialize API return status to success
1203      X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
1204 
1205      GMO_INSTRUCTION_PVT.CREATE_INSTANCE_FROM_INSTANCE
1206      (
1207          P_SOURCE_ENTITY_NAME => P_SOURCE_ENTITY_NAME,
1208 	 P_SOURCE_ENTITY_KEY => P_SOURCE_ENTITY_KEY,
1209          P_TARGET_ENTITY_KEY => P_TARGET_ENTITY_KEY,
1210          P_INSTRUCTION_TYPE => P_INSTRUCTION_TYPE,
1211 	 X_INSTRUCTION_SET_ID => X_INSTRUCTION_SET_ID,
1212 	 X_RETURN_STATUS => X_RETURN_STATUS,
1213          X_MSG_COUNT => X_MSG_COUNT,
1214          X_MSG_DATA => X_MSG_DATA
1215      );
1216 
1217      IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1218             RAISE FND_API.G_EXC_ERROR;
1219      ELSE
1220          IF FND_API.To_Boolean( p_commit ) THEN
1221             COMMIT  ;
1222          END IF;
1223      END IF;
1224 
1225      -- Standard call to get message count and if count is 1, get message info.
1226      FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1227 
1228 EXCEPTION
1229      WHEN FND_API.G_EXC_ERROR THEN
1230                 ROLLBACK TO CREATE_INST_FRM_INST_SV;
1231                 x_return_status := FND_API.G_RET_STS_ERROR;
1232 
1233 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1234                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1235                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.CREATE_INSTANCE_FROM_INSTANCE', FALSE);
1236                 end if;
1237 
1238     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1239                 ROLLBACK TO CREATE_INST_FRM_INST_SV;
1240                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1241 
1242 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1243                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1244                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.CREATE_INSTANCE_FROM_INSTANCE', FALSE);
1245                 end if;
1246 
1247     WHEN OTHERS THEN
1248                 ROLLBACK TO CREATE_INST_FRM_INST_SV;
1249                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1250 
1251 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1252                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
1253                 END IF;
1254 
1255                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1256                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1257                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.CREATE_INSTANCE_FROM_INSTANCE', FALSE);
1258                 end if;
1259 
1260 END CREATE_INSTANCE_FROM_INSTANCE;
1261 
1262 PROCEDURE SEND_TASK_ACKN
1263 (
1264     P_API_VERSION           IN NUMBER,
1265     P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
1266     P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
1267     X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
1268     X_MSG_COUNT             OUT NOCOPY NUMBER,
1269     X_MSG_DATA              OUT NOCOPY VARCHAR2,
1270 
1271     P_INSTRUCTION_ID IN NUMBER,
1272     P_INSTRUCTION_PROCESS_ID IN NUMBER,
1273     P_ENTITY_KEY IN VARCHAR2 DEFAULT NULL,
1274     P_TASK_ERECORD_ID  IN FND_TABLE_OF_VARCHAR2_255,
1275     P_TASK_IDENTIFIER IN FND_TABLE_OF_VARCHAR2_255,
1276     P_TASK_VALUE IN FND_TABLE_OF_VARCHAR2_255,
1277     P_DISABLE_TASK IN VARCHAR2 DEFAULT 'N'
1278 )
1279 IS PRAGMA AUTONOMOUS_TRANSACTION;
1280 
1281   l_api_name      CONSTANT VARCHAR2(30)   := 'SEND_TASK_ACKN';
1282   l_api_version   CONSTANT NUMBER         := 1.0;
1283 
1284 BEGIN
1285 
1286      -- Standard call to check for call compatibility.
1287      IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
1288         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1289      END IF;
1290 
1291      -- Initialize message list if p_init_msg_list is set to TRUE.
1292      IF FND_API.to_Boolean( p_init_msg_list ) THEN
1293         FND_MSG_PUB.initialize;
1294      END IF;
1295 
1296      --  Initialize API return status to success
1297      X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
1298 
1299      -- Call Private API
1300      GMO_INSTRUCTION_PVT.SEND_TASK_ACKN
1301      (
1302           P_INSTRUCTION_ID => P_INSTRUCTION_ID,
1303           P_INSTRUCTION_PROCESS_ID => P_INSTRUCTION_PROCESS_ID,
1304           P_ENTITY_KEY => P_ENTITY_KEY,
1305           P_TASK_ERECORD_ID => P_TASK_ERECORD_ID,
1306           P_TASK_IDENTIFIER => P_TASK_IDENTIFIER,
1307           P_TASK_VALUE => P_TASK_VALUE,
1308           P_DISABLE_TASK => P_DISABLE_TASK,
1309           X_RETURN_STATUS => X_RETURN_STATUS,
1310           X_MSG_COUNT => X_MSG_COUNT,
1311           X_MSG_DATA => X_MSG_DATA
1312      );
1313 
1314      IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1315             RAISE FND_API.G_EXC_ERROR;
1316      ELSE
1317             COMMIT;
1318      END IF;
1319 
1320      -- Standard call to get message count and if count is 1, get message info.
1321      FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1322 
1323 EXCEPTION
1324      WHEN FND_API.G_EXC_ERROR THEN
1325                 ROLLBACK;
1326                 x_return_status := FND_API.G_RET_STS_ERROR;
1327 
1328 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1329                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1330                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.SEND_TASK_ACKN', FALSE);
1331                 end if;
1332 
1333     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1334                 ROLLBACK;
1335                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1336 
1337 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1338                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1339                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.SEND_TASK_ACKN', FALSE);
1340                 end if;
1341 
1342     WHEN OTHERS THEN
1343                 ROLLBACK;
1344                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1345 
1346 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1347                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
1348                 END IF;
1349 
1350                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1351                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1352                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.SEND_TASK_ACKN', FALSE);
1353                 end if;
1354 
1355 END SEND_TASK_ACKN;
1356 
1357 PROCEDURE NULLIFY_INSTR_FOR_ENTITY
1358 (
1359 
1360     P_API_VERSION           IN NUMBER,
1361     P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
1362     P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
1363     X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
1364     X_MSG_COUNT             OUT NOCOPY NUMBER,
1365     X_MSG_DATA              OUT NOCOPY VARCHAR2,
1366 
1367     P_ENTITY_NAME IN VARCHAR2,
1368     P_ENTITY_KEY IN VARCHAR2,
1369     P_INSTRUCTION_TYPE IN VARCHAR2
1370 
1371 )
1372 IS PRAGMA AUTONOMOUS_TRANSACTION;
1373 
1374   l_api_name      CONSTANT VARCHAR2(30)   := 'NULLIFY_INSTR_FOR_ENTITY';
1375   l_api_version   CONSTANT NUMBER         := 1.0;
1376 
1377 BEGIN
1378 
1379      -- Standard call to check for call compatibility.
1380      IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
1381         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1382      END IF;
1383 
1384      -- Initialize message list if p_init_msg_list is set to TRUE.
1385      IF FND_API.to_Boolean( p_init_msg_list ) THEN
1386         FND_MSG_PUB.initialize;
1387      END IF;
1388 
1389      --  Initialize API return status to success
1390      X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
1391 
1392      -- Call Private API
1393      GMO_INSTRUCTION_PVT.NULLIFY_INSTR_FOR_ENTITY
1394      (
1395          P_ENTITY_NAME => P_ENTITY_NAME,
1396 	 P_ENTITY_KEY => P_ENTITY_KEY,
1397          P_INSTRUCTION_TYPE => P_INSTRUCTION_TYPE,
1398          X_RETURN_STATUS => X_RETURN_STATUS,
1399          X_MSG_COUNT => X_MSG_COUNT,
1400          X_MSG_DATA => X_MSG_DATA
1401      );
1402 
1403      IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1404             RAISE FND_API.G_EXC_ERROR;
1405      ELSE
1406             COMMIT;
1407      END IF;
1408 
1409      -- Standard call to get message count and if count is 1, get message info.
1410      FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1411 
1412 EXCEPTION
1413      WHEN FND_API.G_EXC_ERROR THEN
1414                 ROLLBACK;
1415                 x_return_status := FND_API.G_RET_STS_ERROR;
1416 
1417 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1418                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1419                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.NULLIFY_INSTR_FOR_ENTITY', FALSE);
1420                 end if;
1421 
1422     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1423                 ROLLBACK;
1424                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1425 
1426 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1427                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1428                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.NULLIFY_INSTR_FOR_ENTITY', FALSE);
1429                 end if;
1430 
1431     WHEN OTHERS THEN
1432                 ROLLBACK;
1433                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1434 
1435 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1436                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
1437                 END IF;
1438 
1439                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1440                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1441                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.NULLIFY_INSTR_FOR_ENTITY', FALSE);
1442                 end if;
1443 
1444 END NULLIFY_INSTR_FOR_ENTITY;
1445 
1446 
1447 PROCEDURE GET_TASK_PARAMETER
1448 (
1449   P_API_VERSION           IN NUMBER,
1450   P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
1451   P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
1452   X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
1453   X_MSG_COUNT             OUT NOCOPY NUMBER,
1454   X_MSG_DATA              OUT NOCOPY VARCHAR2,
1455 
1456   P_INSTRUCTION_PROCESS_ID IN NUMBER,
1457   P_ATTRIBUTE_NAME IN VARCHAR2,
1458   X_ATTRIBUTE_VALUE OUT NOCOPY VARCHAR2
1459 
1460 )
1461 IS
1462    l_api_name      CONSTANT VARCHAR2(30)   := 'GET_TASK_PARAMETER';
1463    l_api_version   CONSTANT NUMBER         := 1.0;
1464    L_TASK_PARAM_VALUE VARCHAR2(1000);
1465 
1466 BEGIN
1467     -- Standard Start of API savepoint
1468     SAVEPOINT  GET_TASK_PARAMETER_GRP;
1469 
1470     -- Standard call to check for call compatibility.
1471     IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
1472         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1473     END IF;
1474 
1475     -- Initialize message list if p_init_msg_list is set to TRUE.
1476     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1477         FND_MSG_PUB.initialize;
1478     END IF;
1479 
1480      --  Initialize API return status to success
1481      X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
1482 
1483      -- Call the Private API to get the task value
1484      L_TASK_PARAM_VALUE := GMO_INSTRUCTION_PVT.GET_TASK_PARAMETER( P_INSTRUCTION_PROCESS_ID,
1485                                                                    P_ATTRIBUTE_NAME
1486 								  );
1487      X_ATTRIBUTE_VALUE := L_TASK_PARAM_VALUE;
1488      X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
1489 
1490      -- Standard call to get message count and if count is 1, get message info.
1491      FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1492 
1493 EXCEPTION
1494      WHEN FND_API.G_EXC_ERROR THEN
1495                 ROLLBACK TO GET_TASK_PARAMETER_GRP;
1496                 x_return_status := FND_API.G_RET_STS_ERROR;
1497 
1498 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1499                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1500                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.GET_TASK_PARAMETER', FALSE);
1501                 end if;
1502 
1503     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1504                 ROLLBACK TO GET_TASK_PARAMETER_GRP;
1505                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1506 
1507 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1508                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1509                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.GET_TASK_PARAMETER', FALSE);
1510                 end if;
1511 
1512     WHEN OTHERS THEN
1513                 ROLLBACK TO GET_TASK_PARAMETER_GRP;
1514                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1515 
1516 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1517                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
1518                 END IF;
1519 
1520                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1521                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1522                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.GET_TASK_PARAMETER', FALSE);
1523                 end if;
1524 
1525 END GET_TASK_PARAMETER;
1526 
1527 --Bug 5383022: start
1528 
1529 -- Start of comments
1530 -- API name             : is_task_attribute_used
1531 -- Type                 : Group API
1532 -- Function             : This procedure is used to check if the task attribute is used
1533 -- Pre-reqs             : None
1534 --
1535 -- IN                   : P_API_VERSION           API Version
1536 --                        P_INIT_MSG_LIST         Initialize message list default = FALSE
1537 --                        P_VALIDATION_LEVEL      Default validation level = FULL
1538 --                        P_INSTRUCTION_PROCESS_ID - The instruction process ID
1539 --                        p_attribute_name - attribute name
1540 --                        p_attribute_key - attribute key
1541 -- OUT                  : x_used_flag - used flag
1542 --                        x_return_status - return status
1543 --                        x_msg_count - message count
1544 --                        x_msg_data - message data
1545 --End of comments
1546 
1547 procedure is_task_attribute_used
1548 (
1549 	P_API_VERSION		IN NUMBER,
1550 	P_INIT_MSG_LIST         IN VARCHAR2 DEFAULT FND_API.G_FALSE,
1551 	P_VALIDATION_LEVEL      IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL,
1552 	X_RETURN_STATUS         OUT NOCOPY VARCHAR2,
1553 	X_MSG_COUNT             OUT NOCOPY NUMBER,
1554 	X_MSG_DATA              OUT NOCOPY VARCHAR2,
1555 
1556 	p_instruction_process_id IN number,
1557 	p_attribute_name IN varchar2,
1558 	p_attribute_key IN varchar2,
1559 	x_used_flag OUT NOCOPY varchar2
1560 )
1561 
1562 IS
1563    l_api_name      CONSTANT VARCHAR2(30)   := 'IS_TASK_ATTRIBUTE_USED';
1564    l_api_version   CONSTANT NUMBER         := 1.0;
1565 
1566 BEGIN
1567     -- Standard Start of API savepoint
1568     SAVEPOINT  IS_TASK_ATTRIBUTE_USED_GRP;
1569 
1570     -- Standard call to check for call compatibility.
1571     IF NOT FND_API.Compatible_API_Call (l_api_version, p_api_version,l_api_name,G_PKG_NAME) THEN
1572         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1573     END IF;
1574 
1575     -- Initialize message list if p_init_msg_list is set to TRUE.
1576     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1577         FND_MSG_PUB.initialize;
1578     END IF;
1579 
1580      --  Initialize API return status to success
1581      X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
1582 
1583      -- Call the Private API to get the task value
1584      GMO_INSTRUCTION_PVT.is_task_attribute_used(
1585 	P_INSTRUCTION_PROCESS_ID => p_instruction_process_id,
1586 	p_attribute_name => p_attribute_name,
1587 	p_attribute_key => p_attribute_key,
1588 	x_used_flag => x_used_flag,
1589 	X_RETURN_STATUS => X_RETURN_STATUS,
1590 	X_MSG_COUNT => X_MSG_COUNT,
1591 	X_MSG_DATA => X_MSG_DATA
1592      );
1593 
1594      -- Standard call to get message count and if count is 1, get message info.
1595      FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1596 
1597 EXCEPTION
1598      WHEN FND_API.G_EXC_ERROR THEN
1599                 ROLLBACK TO IS_TASK_ATTRIBUTE_USED_GRP;
1600                 x_return_status := FND_API.G_RET_STS_ERROR;
1601 
1602 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1603                 if (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1604                         FND_LOG.MESSAGE(FND_LOG.LEVEL_EXCEPTION,'gmo.plsql.gmo_instruction_grp.IS_TASK_ATTRIBUTE_USED', FALSE);
1605                 end if;
1606 
1607     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1608                 ROLLBACK TO IS_TASK_ATTRIBUTE_USED_GRP;
1609                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1610 
1611 		FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1612                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1613                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.IS_TASK_ATTRIBUTE_USED', FALSE);
1614                 end if;
1615 
1616     WHEN OTHERS THEN
1617                 ROLLBACK TO IS_TASK_ATTRIBUTE_USED_GRP;
1618                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1619 
1620 		IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1621                         FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
1622                 END IF;
1623 
1624                 FND_MSG_PUB.Count_And_Get (p_count => x_msg_count, p_data => x_msg_data);
1625                 if (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) then
1626                         FND_LOG.MESSAGE(FND_LOG.LEVEL_UNEXPECTED,'gmo.plsql.gmo_instruction_grp.IS_TASK_ATTRIBUTE_USED', FALSE);
1627                 end if;
1628 
1629 END IS_TASK_ATTRIBUTE_USED;
1630 
1631 --Bug 5383022: end
1632 
1633 END GMO_INSTRUCTION_GRP;