[Home] [Help]
PACKAGE BODY: APPS.AZ_FLEX_COMPILER
Source
1 PACKAGE BODY AZ_FLEX_COMPILER AS
2 /*$Header: azfcompb.pls 115.3 2003/03/10 22:20:25 jke noship $*/
3
4 request_submission_failure EXCEPTION;
5 invalid_flexfield_error EXCEPTION;
6
7
8 PROCEDURE wait_for_completion(p_request_id IN NUMBER,
9 p_flex_name IN VARCHAR2) IS
10 l_debug_info VARCHAR2(100);
11 l_current_calling_sequence VARCHAR2(2000);
12 l_errbuf VARCHAR2(200);
13
14 l_result BOOLEAN;
15 l_status VARCHAR2(80);
16 l_dev_status VARCHAR2(30);
17 l_dev_phase VARCHAR2(30) := 'PENDING';
18 l_phase VARCHAR2(80);
19 l_message VARCHAR2(240);
20 l_msg VARCHAR2(2000);
21
22 c_interval CONSTANT NUMBER := 10;
23 c_wait CONSTANT NUMBER := 0;
24 c_limit CONSTANT NUMBER := 600; --timeout for waiting for requests
25 l_timeout NUMBER := 1;
26 l_counter NUMBER := 1;
27
28
29 BEGIN
30 l_debug_info := 'Start wait for request';
31
32 --request submitted successfully
33 IF(p_request_id <> 0) THEN
34 l_dev_phase := 'PENDING';
35 l_counter := 1;
36
37 WHILE ( (l_dev_phase = 'RUNNING' OR l_dev_phase = 'PENDING') AND l_counter < l_timeout) LOOP
38 l_debug_info := 'Wait for concurrent request';
39 l_result := fnd_concurrent.wait_for_request(p_request_id,
40 c_interval,
41 c_wait,
42 l_phase,
43 l_status,
44 l_dev_phase,
45 l_dev_status,
46 l_message);
47
48 l_debug_info := 'Check dev phases';
49 IF (l_dev_phase = 'INACTIVE') then
50 l_errbuf := 'Request ' ||p_request_id || ' is Inactive. Status: ' || l_dev_status;
51 FND_FILE.PUT_LINE(FND_FILE.LOG, l_errbuf || '. ' || l_message);
52 ELSIF (l_dev_phase = 'COMPLETE') THEN
53 IF (l_dev_status = 'NORMAL' OR l_dev_status = 'WARNING') THEN
54 l_errbuf := 'Request ' || p_request_id || ' completed with status ' || l_dev_status;
55 FND_FILE.PUT_LINE(FND_FILE.LOG, l_errbuf || '. ' || l_message);
56 ELSIF (l_dev_status = 'ERROR') THEN
57 raise Request_Submission_Failure;
58 ELSE
59 l_errbuf := 'Request ' || p_request_id || ' not completed successfully. Status: ' || l_dev_status;
60 FND_FILE.PUT_LINE(FND_FILE.LOG, l_errbuf ||'. ' || l_message);
61 END IF;
62 END IF;
63 l_counter := l_counter + 1;
64 END LOOP;
65
66 ELSE
67 RAISE Request_Submission_Failure;
68 END IF;
69 EXCEPTION
70 WHEN request_submission_failure THEN
71 l_msg := FND_MESSAGE.GET;
72 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
73 FND_MESSAGE.SET_TOKEN('ERROR',l_msg);
74 FND_MESSAGE.SET_TOKEN('PARAMETERS',
75 ',P_FLEX_NAME='||P_FLEX_NAME);
76 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_current_calling_sequence);
77 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
78
79 l_errbuf := 'Request Submission Failed for request ' || p_request_id;
80 FND_FILE.PUT_LINE(FND_FILE.LOG, l_errbuf || ' Message: ' || l_msg);
81 RETURN;
82 WHEN OTHERS then
83 IF (SQLCODE <> -20001 ) THEN
84 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
85 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
86 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_current_calling_sequence);
87 FND_MESSAGE.SET_TOKEN('PARAMETERS','Request ID = '||TO_CHAR(p_request_id));
88 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
89 l_errbuf := 'Exception occurred for request ' || p_request_id;
90 FND_FILE.PUT_LINE(FND_FILE.LOG, l_errbuf);
91 END IF;
92
93 APP_EXCEPTION.RAISE_EXCEPTION;
94
95 END wait_for_completion;
96
97 -- Procedure to submit a concurrent program to compile key and descriptive.
98 -- flexfields
99 PROCEDURE submit(
100 p_mode IN VARCHAR2,
101 p_app_short_name IN VARCHAR2,
102 P_FLEX_NAME IN VARCHAR2) IS
103 l_current_calling_sequence VARCHAR2(2000);
104 l_debug_info VARCHAR2(100);
105 l_errbuf VARCHAR2(200);
106 l_request_id NUMBER := 0;
107 l_msg VARCHAR2(2000);
108
109 l_flex_name fnd_descriptive_flexs_vl.descriptive_flexfield_name%TYPE;
110 l_id_flex_code fnd_id_flexs.id_flex_code%TYPE;
111 l_id_flex_struct_num fnd_id_flex_structures_vl.id_flex_num%TYPE;
112
113 CURSOR flex_num_cursor IS
114 SELECT fifs.id_flex_num
115 FROM fnd_application fa, fnd_id_flex_structures_vl fifs
116 WHERE fa.application_short_name = p_app_short_name
117 AND fa.application_id = fifs.application_id
118 AND fifs.id_flex_code = l_id_flex_code;
119
120 l_message VARCHAR2(240);
121
122 c_interval CONSTANT NUMBER := 10;
123 c_wait CONSTANT NUMBER := 0;
124 c_limit CONSTANT NUMBER := 600; --timeout for waiting for requests
125 l_timeout NUMBER := 1;
126 l_counter NUMBER := 1;
127
128 BEGIN
129 -- Update the calling sequence
130 l_current_calling_sequence := 'AZ_FLEX_COMPILER.submit';
131
132 l_timeout := ROUND(c_limit/c_interval);
133
134 IF (p_mode = 'K') THEN
135 BEGIN
136 l_debug_info := 'Select Key Flex: ' || p_app_short_name || ':' || p_flex_name;
137 SELECT fif.id_flex_code
138 INTO l_id_flex_code
139 FROM fnd_application fa, fnd_id_flexs fif
140 WHERE fa.application_short_name = p_app_short_name
141 AND fa.application_id = fif.application_id
142 AND fif.id_flex_name = p_flex_name;
143
144 EXCEPTION
145 WHEN NO_DATA_FOUND THEN
146 RAISE INVALID_FLEXFIELD_ERROR;
147 END;
148 ELSIF (p_mode = 'D') THEN
149 BEGIN
150 l_debug_info := 'Select Descriptive Flex: ' || p_app_short_name || ':' || p_flex_name;
151
152 select fdf.descriptive_flexfield_name
153 into l_flex_name
154 from fnd_application fa, fnd_descriptive_flexs_vl fdf
155 where fa.application_short_name = p_app_short_name
156 and fa.application_id = fdf.application_id
157 and fdf.title = p_flex_name;
158
159 EXCEPTION
160 WHEN NO_DATA_FOUND THEN
161 RAISE INVALID_FLEXFIELD_ERROR;
162 END;
163 END IF;
164
165 --fnd_global.apps_initialize(7,21345,190,590); --WIZARD
166 IF (p_mode = 'K') THEN
167 l_debug_info := 'Select Flex Num: ' || p_app_short_name || ', code: ' || l_id_flex_code;
168 OPEN flex_num_cursor;
169
170 LOOP
171 FETCH flex_num_cursor
172 INTO l_id_flex_struct_num;
173 EXIT WHEN flex_num_cursor%NOTFOUND;
174
175 l_debug_info := 'Select Flex Num: ' || p_app_short_name || ', code: ' || l_id_flex_code;
176 l_request_id := 0;
177
178 l_request_id := fnd_request.submit_request(
179 'FND',
180 'FDFCMPK',
181 'Compile Key Flexfield',
182 NULL, --start_time (varchar2)
183 FALSE, --sub_request
184 p_mode,
185 p_app_short_name,
186 l_id_flex_code,
187 l_id_flex_struct_num,
188 chr(0), '', '', '', '', '',
189 '', '', '', '', '', '', '', '', '', '',
190 '', '', '', '', '', '', '', '', '', '',
191 '', '', '', '', '', '', '', '', '', '',
192 '', '', '', '', '', '', '', '', '', '',
193 '', '', '', '', '', '', '', '', '', '',
194 '', '', '', '', '', '', '', '', '', '',
195 '', '', '', '', '', '', '', '', '', '',
196 '', '', '', '', '', '', '', '', '', '',
197 '', '', '', '', '', '', '', '', '', '');
198 wait_for_completion(l_request_id, l_id_flex_code || ':' || l_id_flex_struct_num);
199
200 END LOOP;
201 CLOSE flex_num_cursor;
202 ELSIF (p_mode = 'D') THEN
203 l_request_id := fnd_request.submit_request(
204 'FND',
205 'FDFCMPD',
206 'Compile Descriptive Flexfield',
207 NULL, --start_time (varchar2)
208 FALSE, --sub_request
209 p_mode,
210 p_app_short_name,
211 l_flex_name,
212 chr(0), '', '', '', '', '', '',
213 '', '', '', '', '', '', '', '', '', '',
214 '', '', '', '', '', '', '', '', '', '',
215 '', '', '', '', '', '', '', '', '', '',
216 '', '', '', '', '', '', '', '', '', '',
217 '', '', '', '', '', '', '', '', '', '',
218 '', '', '', '', '', '', '', '', '', '',
219 '', '', '', '', '', '', '', '', '', '',
220 '', '', '', '', '', '', '', '', '', '',
221 '', '', '', '', '', '', '', '', '', '');
222 wait_for_completion(l_request_id, l_flex_name);
223 END IF;
224
225 EXCEPTION
226 WHEN invalid_flexfield_error THEN
227 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
228 FND_MESSAGE.SET_TOKEN('ERROR',l_msg);
229 FND_MESSAGE.SET_TOKEN('PARAMETERS',
230 ',P_FLEX_NAME='||P_FLEX_NAME);
231 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_current_calling_sequence);
232 return;
233
234 WHEN OTHERS then
235 IF (SQLCODE <> -20001 ) THEN
236 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
237 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
238 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',l_current_calling_sequence);
239 FND_MESSAGE.SET_TOKEN('PARAMETERS','Request ID = '||TO_CHAR(l_request_id));
240 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_debug_info);
241 l_errbuf := 'Exception occurred for request ' || l_request_id;
242 FND_FILE.PUT_LINE(FND_FILE.LOG, l_errbuf);
243 END IF;
244
245 APP_EXCEPTION.RAISE_EXCEPTION;
246
247 END submit;
248
249 END AZ_FLEX_COMPILER;