DBA Data[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;