1 PACKAGE BODY PO_MESSAGE_S AS
2 -- $Header: PO_MESSAGE_S.plb 120.5 2006/01/12 11:29:16 arusingh noship $
3
4 -- Read the profile option that enables/disables the debug log
5 g_debug_unexp BOOLEAN := PO_DEBUG.is_debug_unexp_on;
6
7
8 --------------------------------------------------------------------------------
9 --Start of Comments
10 --Name: sql_error
11 --Pre-reqs:
12 -- N/A
13 --Modifies:
14 -- FND_LOG_MESSAGES
15 -- FND Message Stack
16 --Locks:
17 -- N/A
18 --Function:
19 -- This procedure sets a message describing a SQL error onto the
20 -- server-side FND message stack
21 -- Additionally, if debug logging is enabled, a message is also
22 -- recorded in the FND_LOG_MESSAGES table
23 --Parameters:
24 --IN:
25 --routine
26 -- The name of the calling procedure
27 -- Used to identify the FND log record
28 --location
29 -- The location within the calling procedure at which the SQL error occured
30 -- Used to identify the FND log record
31 --error_code
32 -- The ORA code associated with a particular SQL exception
33 --Testing:
34 --
35 --End of Comments
36 -------------------------------------------------------------------------------
37 PROCEDURE SQL_ERROR(routine IN varchar2 ,
38 location IN varchar2,
39 error_code IN number) IS
40 BEGIN
41
42 --<ENCUMBRANCE FPJ: refactored this procedure to call new sig of SQL_ERROR>
43 SQL_ERROR(
44 p_package => 'po_message_s'
45 , p_routine => routine
46 , p_location => location
47 , p_sqlcode => error_code
48 , p_sqlerrm => SQLERRM(error_code)
49 );
50
51 EXCEPTION
52 WHEN OTHERS THEN RAISE;
53 END SQL_ERROR;
54
55
56 --------------------------------------------------------------------------------
57 --Start of Comments
58 --Name: sql_error
59 --Pre-reqs:
60 -- N/A
61 --Modifies:
62 -- FND_LOG_MESSAGES
63 -- FND Message Stack
64 --Locks:
65 -- N/A
66 --Function:
67 -- This procedure sets a message describing a SQL error onto the
68 -- server-side FND message stack
69 -- Additionally, if debug logging is enabled, a message is also
70 -- recorded in the FND_LOG_MESSAGES table
71 --Parameters:
72 --IN:
73 --p_package
74 -- The name of the calling package
75 -- Used to identify the FND log record
76 --p_procedure
77 -- The name of the calling procedure
78 -- Used to identify the FND log record
79 --p_location
80 -- The location within the calling procedure at which the SQL error occured
81 -- Used to identify the FND log record
82 --p_sqlcode
83 -- The ORA code associated with a particular SQL exception
84 --p_sqlerrm
85 -- The standard description associated with a particular SQL exception
86 --Testing:
87 --
88 --End of Comments
89 -------------------------------------------------------------------------------
90 PROCEDURE SQL_ERROR(
91 p_package IN varchar2
92 , p_routine IN varchar2
93 , p_location IN varchar2
94 , p_sqlcode IN number
95 , p_sqlerrm IN varchar
96 --<ENCUMBRANCE FPJ: created new, overloaded sig for this procedure>
97 )
98 IS
99 l_log_head VARCHAR2(240) := substrb('po.plsql.' || p_package
100 || '.' || p_routine
101 , 1, 240);
102 l_error_msg VARCHAR2(240) := substrb(SQLERRM, 1, 240);
103 BEGIN
104
105 IF (g_routine is NULL) THEN
106
107 g_routine := p_routine;
108 g_location := p_location;
109
110 FND_MESSAGE.set_name('PO', PO_ALL_SQL_ERROR);
111 FND_MESSAGE.set_token(c_ROUTINE_token, p_routine);
112 FND_MESSAGE.set_token(c_ERR_NUMBER_token, p_location);
113 FND_MESSAGE.set_token(c_SQL_ERR_token, l_error_msg);
114 FND_MESSAGE.set_token(c_LSQL_ERR_token, SQLERRM);
115
116 END IF;
117
118 IF g_debug_unexp THEN
119 PO_DEBUG.debug_exc(l_log_head, p_location);
120 END IF;
121
122 EXCEPTION
123 WHEN OTHERS THEN RAISE;
124 END SQL_ERROR;
125
126
127 PROCEDURE APP_ERROR(error_name IN varchar2) IS
128 BEGIN
129 IF (g_routine is NULL) THEN
130 g_routine := 'ERROR';
131 FND_MESSAGE.set_name('PO',error_name);
132 APP_EXCEPTION.RAISE_EXCEPTION;
133 END IF;
134
135 EXCEPTION
136 WHEN OTHERS THEN RAISE;
137 END APP_ERROR;
138
139 PROCEDURE APP_ERROR(error_name IN varchar2,
140 token1 IN varchar2,
141 value1 IN varchar2) IS
142 BEGIN
143 IF (g_routine is NULL) THEN
144 g_routine := 'ERROR';
145
146 FND_MESSAGE.set_name('PO',error_name);
147
148 IF (token1 is not NULL and value1 is not null) THEN
149 FND_MESSAGE.SET_TOKEN(token1,value1);
150 END IF;
151
152 APP_EXCEPTION.RAISE_EXCEPTION;
153 END IF;
154
155 EXCEPTION
156 WHEN OTHERS THEN RAISE;
157 END APP_ERROR;
158
159 PROCEDURE APP_ERROR(error_name IN varchar2,
160 token1 IN varchar2,
161 value1 IN varchar2,
162 token2 IN varchar2,
163 value2 IN varchar2) IS
164 BEGIN
165 IF (g_routine is NULL) THEN
166 g_routine := 'ERROR';
167
168 FND_MESSAGE.set_name('PO',error_name);
169
170 IF (token1 is not NULL and value1 is not null) THEN
171 FND_MESSAGE.SET_TOKEN(token1,value1);
172 END IF;
173
174 IF (token2 is not NULL and value2 is not null) THEN
175 FND_MESSAGE.SET_TOKEN(token2,value2);
176 END IF;
177
178 APP_EXCEPTION.RAISE_EXCEPTION;
179 END IF;
180
181 EXCEPTION
182 WHEN OTHERS THEN RAISE;
183 END APP_ERROR;
184
185 PROCEDURE APP_ERROR(error_name IN varchar2,
186 token1 IN varchar2,
187 value1 IN varchar2,
188 token2 IN varchar2,
189 value2 IN varchar2,
190 token3 IN varchar2,
191 value3 IN varchar2) IS
192 BEGIN
193 IF (g_routine is NULL) THEN
194 g_routine := 'ERROR';
195
196 FND_MESSAGE.set_name('PO',error_name);
197
198 IF (token1 is not NULL and value1 is not null) THEN
199 FND_MESSAGE.SET_TOKEN(token1,value1);
200 END IF;
201
202 IF (token2 is not NULL and value2 is not null) THEN
203 FND_MESSAGE.SET_TOKEN(token2,value2);
204 END IF;
205
206 IF (token3 is not NULL and value3 is not null) THEN
207 FND_MESSAGE.SET_TOKEN(token3,value3);
208 END IF;
209
210 APP_EXCEPTION.RAISE_EXCEPTION;
211 END IF;
212
213 EXCEPTION
214 WHEN OTHERS THEN RAISE;
215 END APP_ERROR;
216
217 PROCEDURE APP_ERROR(error_name IN varchar2,
218 token1 IN varchar2,
219 value1 IN varchar2,
220 token2 IN varchar2,
221 value2 IN varchar2,
222 token3 IN varchar2,
223 value3 IN varchar2,
224 token4 IN varchar2,
225 value4 IN varchar2) IS
226 BEGIN
227 IF (g_routine is NULL) THEN
228 g_routine := 'ERROR';
229
230 FND_MESSAGE.set_name('PO',error_name);
231
232 IF (token1 is not NULL and value1 is not null) THEN
233 FND_MESSAGE.SET_TOKEN(token1,value1);
234 END IF;
235
236 IF (token2 is not NULL and value2 is not null) THEN
237 FND_MESSAGE.SET_TOKEN(token2,value2);
238 END IF;
239
240 IF (token3 is not NULL and value3 is not null) THEN
241 FND_MESSAGE.SET_TOKEN(token3,value3);
242 END IF;
243
244 IF (token4 is not NULL and value4 is not null) THEN
245 FND_MESSAGE.SET_TOKEN(token4,value4);
246 END IF;
247
248 APP_EXCEPTION.RAISE_EXCEPTION;
249 END IF;
250
251 EXCEPTION
252 WHEN OTHERS THEN RAISE;
253 END APP_ERROR;
254
255 PROCEDURE APP_SET_NAME(error_name IN varchar2) IS
256 BEGIN
257 IF (g_routine is null) THEN
258 g_routine := 'ERROR';
259 FND_MESSAGE.set_name('PO',error_name);
260 END IF;
261
262 EXCEPTION
263 WHEN OTHERS THEN RAISE;
264 END APP_SET_NAME;
265
266 PROCEDURE clear IS
267 BEGIN
268 g_routine := NULL;
269 g_location := NULL;
270
271 EXCEPTION
272 WHEN OTHERS THEN RAISE;
273 END CLEAR;
274
275 PROCEDURE SQL_SHOW_ERROR IS
276 BEGIN
277 NULL;
278 /*
279 dbms_output.put_line ('Error Occured in routine : ' ||
280 g_routine || ' - Location : ' || g_location);
281 */
282 EXCEPTION
283 WHEN OTHERS THEN RAISE;
284 END SQL_SHOW_ERROR;
285
286
287 -- Bug 3516763: created function get_fnd_msg_pub_last
288 --------------------------------------------------------------------------------
289 --Start of Comments
290 --Name: get_fnd_msg_pub_last
291 --Pre-reqs:
292 -- N/A
293 --Modifies:
294 -- N/A
295 --Locks:
296 -- N/A
297 --Function:
298 -- This function gets the string value of the last message on the
299 -- API message list [fnd_msg_pub].
300 --Parameters:
301 --IN:
302 -- N/A
303 --Testing:
304 --
305 --End of Comments
306 -------------------------------------------------------------------------------
307 FUNCTION GET_FND_MSG_PUB_LAST RETURN varchar2
308 IS
309 BEGIN
310 return FND_MSG_PUB.get( p_encoded => FND_API.G_FALSE
311 , p_msg_index => FND_MSG_PUB.G_LAST
312 );
313 EXCEPTION
314 WHEN OTHERS THEN RAISE;
315 END GET_FND_MSG_PUB_LAST;
316
317
318
319 --------------------------------------------------------------------------------
320 --Start of Comments
321 --Name: add_exc_msg
322 --Pre-reqs:
323 -- N/A
324 --Modifies:
325 -- N/A
326 --Locks:
327 -- N/A
328 --Function:
329 -- Wrapper to FND_MSG_PUB.add_exc_msg. This procedure logs the same msg
330 -- we are putting to FND msg stack
331 --Parameters:
332 --IN:
333 --p_pkg_name
334 -- package name that logs this msg
335 --p_procedure_name
336 -- procedure name that logs this msg
337 --p_error_text
338 -- Error description
339 --Testing:
340 --
341 --End of Comments
342 -------------------------------------------------------------------------------
343 PROCEDURE add_exc_msg
344 ( p_pkg_name IN VARCHAR2,
345 p_procedure_name IN VARCHAR2,
346 p_error_text IN VARCHAR2
347 ) IS
348
349 d_module VARCHAR2(100) := p_pkg_name || '.' || p_procedure_name;
350
351 l_msg FND_NEW_MESSAGES.message_text%TYPE;
352
353 BEGIN
354
355 FND_MSG_PUB.add_exc_msg
356 ( p_pkg_name => p_pkg_name
357 , p_procedure_name => p_procedure_name
358 , p_error_text => p_error_text
359 );
360
361 -- get the message just inserted
362 l_msg := FND_MSG_PUB.get
363 ( p_msg_index => FND_MSG_PUB.count_msg
364 , p_encoded => FND_API.G_FALSE
365 );
366
367 -- no need to specify progress because d_module should have included it
368 PO_LOG.exc(d_module, NULL, l_msg);
369
370
371 END add_exc_msg;
372
373
374 -- <PDOI Rewrite R12 START>
375 --------------------------------------------------------------------------------
376 --Start of Comments
377 --Name: concat_fnd_messages_in_stack
378 --Pre-reqs:
379 -- N/A
380 --Modifies:
381 -- N/A
382 --Locks:
383 -- N/A
384 --Function:
385 -- Concatenates all messages in FND_MSG_PUB stack with the max size specified
386 -- as parameter
387 --Parameters:
388 --IN:
389 --p_max_size
390 -- maximum size alloweded for the returning concatenated message text
391 --OUT:
392 -- result string to be returned
393 --Testing:
394 --
395 --End of Comments
396 -------------------------------------------------------------------------------
397 PROCEDURE concat_fnd_messages_in_stack
398 ( p_max_size IN NUMBER,
399 x_message_text OUT NOCOPY VARCHAR2
400 ) IS
401
402 l_msg_temp VARCHAR2(2000);
403
404 BEGIN
405 FOR i IN 1..FND_MSG_PUB.count_msg LOOP
406 l_msg_temp := FND_MSG_PUB.get
407 ( p_msg_index => i,
408 p_encoded => 'F'
409 );
410
411 x_message_text := SUBSTRB(x_message_text || l_msg_temp || ' ',
412 p_max_size);
413 END LOOP;
414 END concat_fnd_messages_in_stack;
415 -- <PDOI Rewrite R12 START>
416
417 END PO_MESSAGE_S;