DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMS_ERROR_PKG

Source


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;