1 package body GMS_ERROR_PKG as
2 /* $Header: gmserhnb.pls 120.3 2006/03/17 05:09:54 appldev ship $ */
3
4 G_EXEC_TYPE VARCHAR2(1) := NULL;
5
6 --=================================================================================
7 -- This procedure is used set a message into the message stack. The message
8 -- returns x_err_code and x_err_buff which could be used by the caller of
9 -- this procedure for further error handling.
10 --================================================================================
11
12 PROCEDURE gms_message ( x_err_name IN VARCHAR2,
13 x_token_name1 IN VARCHAR2 default NULL,
14 x_token_val1 IN VARCHAR2 default NULL,
15 x_token_name2 IN VARCHAR2 default NULL,
16 x_token_val2 IN VARCHAR2 default NULL,
17 x_token_name3 IN VARCHAR2 default NULL,
18 x_token_val3 IN VARCHAR2 default NULL,
19 x_token_name4 IN VARCHAR2 default NULL,
20 x_token_val4 IN VARCHAR2 default NULL,
21 x_token_name5 IN VARCHAR2 default NULL,
22 x_token_val5 IN VARCHAR2 default NULL,
23 x_exec_type IN VARCHAR2 default NULL,
24 x_err_code IN OUT NOCOPY NUMBER,
25 x_err_buff IN OUT NOCOPY VARCHAR2)
26 IS
27
28 x_err_buff_1 varchar2(2000);
29 l_log_level NUMBER DEFAULT FND_LOG.LEVEL_PROCEDURE; --For bug 3269365
30 BEGIN
31 x_err_code := 0; -- Initialize the value to 0 (Success)
32
33 if x_err_name = 'GMS_UNEXPECTED_ERROR'
34 then
35 fnd_message.set_name('GMS', 'GMS_UNEXPECTED_ERROR');
36 fnd_message.set_token(x_token_name1, x_token_val1);
37 fnd_message.set_token(x_token_name2, x_token_val2);
38
39 -- x_token_name5 is used for the Program Name.
40
41 if x_token_name5 IS NOT NULL THEN
42 fnd_message.set_token(x_token_name5, x_token_val5);
43 end if;
44
45 x_err_code := 1; -- Unexpected Error
46 l_log_level := FND_LOG.LEVEL_EXCEPTION; --For bug 3269365
47 else
48 fnd_message.set_name('GMS', x_err_name);
49 IF x_token_name1 IS NOT NULL THEN
50 fnd_message.set_token(x_token_name1, x_token_val1);
51 END IF;
52 IF x_token_name2 IS NOT NULL THEN
53 fnd_message.set_token(x_token_name2, x_token_val2);
54 END IF;
55 IF x_token_name3 IS NOT NULL THEN
56 fnd_message.set_token(x_token_name3, x_token_val3);
57 END IF;
58 IF x_token_name4 IS NOT NULL THEN
59 fnd_message.set_token(x_token_name4, x_token_val4);
60 END IF;
61 IF x_token_name5 IS NOT NULL THEN
62 fnd_message.set_token(x_token_name5, x_token_val5);
63 END IF;
64
65 x_err_code := 2; -- Expected Error
66
67 end if;
68 --For bug 3269365: Common logging
69 IF l_log_level >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
70 FND_LOG.MESSAGE(l_log_level,'gms.plsql.gms',FALSE);
71 END IF;
72 --End of bug 3269365
73
74 if G_EXEC_TYPE = 'C'
75 then
76 x_err_buff_1 := fnd_message.get; -- Added for Bug: 1780253
77 fnd_file.put_line(FND_FILE.LOG, x_err_buff_1); -- Added for Bug: 1780253
78 If x_err_buff IS NOT NULL THEN -- Bug 2587078 : To prevent blank line getting printed in the log file.
79 fnd_file.put_line(FND_FILE.LOG, x_err_buff);
80 End If;
81 x_err_buff := x_err_buff_1; -- Added for Bug: 1780253
82 end if;
83 end gms_message;
84
85 --======================================================================================
86 -- This procedure can be used from PL/SQL programs to show debug messages in the
87 -- conurrent process log. If the PL/SQL program is not called from a concurrent
88 -- process then the message will be added to the global message table.
89 --======================================================================================
90
91 PROCEDURE gms_debug (x_debug_msg IN VARCHAR2
92 ,x_exec_type IN VARCHAR2)
93 IS
94
95 l_time_stamp varchar2(30) := 'Time: '||to_char(SYSDATE, 'DD-MON-YYYY HH:MI:SS');
96 --Bug Fix 2178027 Changed the width of variable l_debug_msg from 255 to 4030
97 --Bug Fix 2178027 . 05-FEB-02 Changed the width of variable l_debug_msg to 255
98 l_debug_msg varchar2(255) := SUBSTR((l_time_stamp||'::'||x_debug_msg),1,255);
99
100 BEGIN
101
102 if (fnd_profile.value('GMS_ENABLE_DEBUG_MODE') = 'Y')
103 then
104 if G_EXEC_TYPE = 'C'
105 then
106 fnd_file.put_line(FND_FILE.LOG, l_debug_msg);
107
108 -- Bug 2587078 : If the procedure is not called from a concurrent request (G_EXEC_TYPE <> 'C')
109 -- then a blank message is getting added to the message stack as the control
110 -- goes to else part.Modified the code such that the debug message will be
111 -- added to message stack only if the Parameter X_EXEC_TYPE <> 'C'.
112 --
113 elsif X_EXEC_TYPE <> 'C' then -- Bug 2587078
114 fnd_msg_pub.add;
115 end if;
116 end if;
117
118 ---FOR bug 3269365-Introduced the check for Common logging for ATG projects. When the AFLOG_LEVEL is set to
119 --any level greater than PROCEDURE and GMS DEBUG profile is ON then the following code
120 -- shall log messages into fnd_log_messages
121
122 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then
123 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, 'gms.plsql.gms',l_debug_msg);
124 END IF;
125 --End of bug 3269365
126
127 END gms_debug;
128 --=====================================================================================
129
130 PROCEDURE gms_print
131 IS
132 BEGIN
133 fnd_msg_pub.dump_list;
134 END gms_print;
135
136 -- Added for Bug 1744641: To Generate errors when an exception occurs
137 -- during the process of generation of invoice/Revenue.
138
139 FUNCTION gms_lookup_values(p_lookup_type IN VARCHAR2,
140 p_lookup_code IN VARCHAR2)
141 RETURN VARCHAR2
142 IS
143 l_meaning varchar2(80);
144
145 BEGIN
146 select meaning
147 into l_meaning
148 from gms_lookups
149 where lookup_type =p_lookup_type
150 and lookup_code =p_lookup_code;
151
152 RETURN l_meaning;
153 EXCEPTION
154 WHEN OTHERS THEN
155 RETURN null;
156 END gms_lookup_values;
157
158 --=========================================================================
159
160 PROCEDURE Gms_Exception_Head_Proc(x_calling_Process IN VARCHAR2)
161
162 IS
163 l_prompt_name varchar2(240);
164 l_prompt_award_name varchar2(240);
165 l_prompt_award_number varchar2(240);
166
167 Begin
168
169
170 fnd_file.put_line(FND_FILE.OUTPUT,' ');
171 fnd_file.put_line(FND_FILE.OUTPUT,' ');
172 l_prompt_name := gms_lookup_values('DYNAMIC_PROMPTS','DATE');
173
174 fnd_file.put_line(FND_FILE.OUTPUT,'
175 ' || l_prompt_name||' '||TO_CHAR(sysdate,'DD-Mon-YYYY HH:MI'));
176
177 IF x_calling_process = 'Invoice' THEN
178 l_prompt_name := gms_lookup_values('DYNAMIC_PROMPTS','INVOICE_GENERATION');
179 fnd_file.put_line(FND_FILE.OUTPUT,'
180 ' ||l_prompt_name);
181 ELSE
182 l_prompt_name := gms_lookup_values('DYNAMIC_PROMPTS','REVENUE_GENERATION');
183 fnd_file.put_line(FND_FILE.OUTPUT,' '||l_prompt_name);
184
185
186 END IF ;
187
188 l_prompt_name := gms_lookup_values('DYNAMIC_PROMPTS','EXCEPTION_REPORT');
189 fnd_file.put_line(FND_FILE.OUTPUT,' '||l_prompt_name);
190 fnd_file.put_line(FND_FILE.OUTPUT,' ');
191 fnd_file.put_line(FND_FILE.OUTPUT,' ');
192 fnd_file.put_line(FND_FILE.OUTPUT,' ');
193 fnd_file.put_line(FND_FILE.OUTPUT,'------------------------------------------------------------------------------------------------------------------------------------');
194
195
196 l_prompt_award_number := gms_lookup_values('DYNAMIC_PROMPTS','AWARD_NUMBER');
197 l_prompt_award_name := gms_lookup_values('DYNAMIC_PROMPTS','AWARD_NAME');
198 l_prompt_name := gms_lookup_values('DYNAMIC_PROMPTS','REJECTION_REASON');
199 fnd_file.put_line(FND_FILE.OUTPUT,l_prompt_award_number||' '||l_prompt_award_name||' ' ||l_prompt_name);
200 fnd_file.put_line(FND_FILE.OUTPUT,'------------------------------------------------------------------------------------------------------------------------------------');
201
202
203 END Gms_Exception_Head_Proc ;
204 --======================================================================================
205
206 PROCEDURE Gms_Exception_Lines_Proc(
207 x_exception_msg IN VARCHAR2,
208 x_token_1 IN VARCHAR2,
209 x_calling_place IN VARCHAR2,
210 x_project_id IN NUMBER DEFAULT NULL ,
211 x_award_number IN VARCHAR2 DEFAULT NULL ,
212 x_award_name IN VARCHAR2 DEFAULT NULL,
213 x_sql_code IN VARCHAR2 DEFAULT NULL,
214 x_sql_message IN VARCHAR2 DEFAULT NULL)
215
216 IS
217 x_err_buff_1 VARCHAR2(2000) ;
218 Begin
219 fnd_message.set_name('GMS', x_exception_msg);
220
221 IF x_exception_msg = 'GMS_UNEXPECTED_ERROR' THEN
222 fnd_message.set_token('SQLCODE',x_sql_code) ;
223 fnd_message.set_token('SQLERRM',x_sql_message) ;
224 fnd_message.set_token('PROGRAM_NAME',x_calling_place) ;
225 END IF;
226
227
228 if x_token_1 = 'PROJECT_ID' THEN
229 fnd_message.set_token('project_id',x_project_id) ;
230 ELSIF x_token_1 = 'PRJ' THEN
231 fnd_message.set_token('PRJ',x_project_id) ;
232 END IF;
233
234 x_err_buff_1 := fnd_message.get;
235 if x_award_number IS NULL Then
236 fnd_file.put_line(FND_FILE.OUTPUT,' '||x_err_buff_1);
237 else
238 fnd_file.put_line(FND_FILE.OUTPUT,x_award_number||' '||x_award_name ||' '||x_err_buff_1);
239 end if;
240 gms_debug('X_calling_place'||x_calling_place,'C');
241
242 END Gms_exception_lines_proc;
243 -- End of the code added for bug 1744641
244
245 --=========================================================================
246 -- This procedure is used to set the Debug Context so that debug messages
247 -- can be written into the Concurrent Log file.
248 --
249 -- NOTE: It is sufficient to call this procedure ONCE in a PL/SQL program
250 -- and the context will be set for all the other PL/SQL program being
251 -- called from the enclosing PL/SQL program.
252 --=========================================================================
253 -- Added for Bug: 2510024
254
255 PROCEDURE set_debug_context
256 IS
257
258 BEGIN
259
260 If NVL(fnd_global.conc_request_id,-1) > 0 THEN
261
262 G_EXEC_TYPE := 'C';
263
264 End If;
265
266 END set_debug_context;
267
268 --=========================================================================
269 -- This procedure can be used to write a line of text to the Concurrent
270 -- process output.
271 --=========================================================================
272
273 PROCEDURE gms_output( x_output IN VARCHAR2)
274 IS
275
276 Begin
277
278 If G_EXEC_TYPE = 'C' THEN
279
280 FND_FILE.put_line(FND_FILE.OUTPUT, x_output);
281
282 END IF;
283 End gms_output;
284
285 --=========================================================================
286 Begin /* Bug 5061139*/
287 gms_error_pkg.set_debug_context;
288 END GMS_ERROR_PKG;