[Home] [Help]
PACKAGE BODY: APPS.MSD_SPF_COLLECT_HISTORY_DATA
Source
1 PACKAGE BODY MSD_SPF_COLLECT_HISTORY_DATA AS
2 /* $Header: msdspfchdb.pls 120.49.12020000.6 2012/11/22 13:33:08 nallkuma ship $ */
3
4 /*** DATA TYPES ***/
5
6 TYPE REQ_REC IS RECORD (
7 request_id NUMBER,
8 description VARCHAR2(100),
9 is_complete BOOLEAN,
10 status NUMBER);
11
12 TYPE REQ_TABLE IS TABLE OF REQ_REC INDEX BY BINARY_INTEGER;
13
14 /*** GLOBAL VARIABLES ***/
15 g_dblink VARCHAR2(50) DEFAULT NULL;
16 g_collection_method NUMBER DEFAULT NULL;
17 g_req_table REQ_TABLE;
18
19 /*** PRIVATE FUNCTIONS ***/
20
21
22 /*** PRIVATE PROCEDURES ***/
23
24 /*
25 * This procedure given the series id, gets the
26 * data from the source instance and inserts into the
27 * sales staging table.
28 */
29 PROCEDURE COLLECT_SERIES_DATA (
30 errbuf OUT NOCOPY VARCHAR2,
31 retcode OUT NOCOPY VARCHAR2,
32 p_series_id IN NUMBER,
33 p_dest_table IN VARCHAR2,
34 p_sr_instance_id IN NUMBER,
35 p_collection_method IN NUMBER,
36 p_from_date IN DATE,
37 p_to_date IN DATE,
38 p_sim_plan_name IN VARCHAR2 DEFAULT '')
39 IS
40
41 /*** CURSORS ***/
42 CURSOR c_get_series_info
43 IS
44 SELECT
45 series_name, identifier, stg_series_col_name, custom_view_name
46 FROM msd_dem_series
47 WHERE series_id = p_series_id AND series_type = 1;
48
49 /*** LOCAL VARIABLES ***/
50 x_errbuf VARCHAR2(200) := NULL;
51 x_errbuf1 VARCHAR2(200) := NULL;
52 x_retcode VARCHAR2(100) := NULL;
53 x_retcode1 VARCHAR2(100) := NULL;
54
55 x_large_sql VARCHAR2(32000) := NULL;
56 x_key_values VARCHAR2(4000) := NULL;
57 x_is_custom NUMBER := NULL;
58
59 l_series_name varchar2(100) := null;
60 l_identifier varchar2(30) := NULL;
61 l_stg_series_col_name varchar2(100) := NULL;
62 l_custom_view_name varchar2(100) := NULL;
63
64 x_dm_time_level VARCHAR2(10) := NULL;
65
66 c_cdl_source_date_col varchar2(100) := null;
67 c_mmt_source_date_col varchar2(100) := null;
68 c_ssh_source_date_col varchar2(100) := null; -- bug#12675064
69
70 x_cdl_time_clause varchar2(200) := null;
71 x_mmt_time_clause varchar2(200) := null;
72 x_ssh_time_clause varchar2(200) := null; -- bug#12675064
73
74
75 BEGIN
76
77 msd_dem_common_utilities.log_debug ('Entering: MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SERIES_DATA - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
78
79 OPEN c_get_series_info;
80 FETCH c_get_series_info INTO l_series_name, l_identifier, l_stg_series_col_name, l_custom_view_name;
81 CLOSE c_get_series_info;
82
83 IF (l_identifier IS NULL) THEN
84 retcode := -1;
85 errbuf := 'Unable to get the query identifier.';
86 msd_dem_common_utilities.log_message ('Error(1): MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SERIES_DATA - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
87 msd_dem_common_utilities.log_message (errbuf);
88 RETURN;
89 END IF;
90
91 msd_dem_common_utilities.log_debug ('Begin collection of data for - ' || l_series_name || ' - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
92
93 -- key-value common for seeded/custom view
94 x_key_values := '$C_DEST_TABLE#' || p_dest_table;
95
96 /* Check for custom view */
97 IF (l_custom_view_name IS NULL) THEN
98 x_is_custom := 0;
99
100 x_dm_time_level := msd_dem_common_utilities.dm_time_level;
101 x_key_values := x_key_values || '$C_DEM_TIME_LEVEL#' || x_dm_time_level;
102
103 -- date col from csf_debrief_lines
104 c_cdl_source_date_col := 'NVL(TRUNC(cdl.service_date,''dd''), to_date(''1000/01/01'', ''yyyy/mm/dd''))';
105 -- date col from mtl_material_transactions
106 c_mmt_source_date_col := 'NVL(TRUNC(mmt.transaction_date,''dd''), to_date(''1000/01/01'', ''yyyy/mm/dd''))';
107 -- date col for spare shipments -- bug#12675064
108 c_ssh_source_date_col := 'TRUNC(oola.actual_shipment_date, ''dd'')';
109
110 -- add filter for net change collection
111 IF (p_collection_method <> G_COLL_COMPLETE) THEN
112 x_cdl_time_clause := ' AND ' || c_cdl_source_date_col ||' between' ||
113 ' to_date(''' || to_char(p_from_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') and to_date(''' || to_char(p_to_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') ';
114 x_mmt_time_clause := ' AND ' || c_mmt_source_date_col ||' between' ||
115 ' to_date(''' || to_char(p_from_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') and to_date(''' || to_char(p_to_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') ';
116 END IF;
117
118 -- bug#12675064
119 x_ssh_time_clause := ' AND ' || c_ssh_source_date_col ||' between' ||
120 ' to_date(''' || to_char(p_from_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') and to_date(''' || to_char(p_to_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') ';
121
122 --constants for CMRO/Fleet collection
123 x_key_values := x_key_values || '$C_COLL_FROM_DATE#' || 'to_date(''' || to_char(p_from_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') ';
124 x_key_values := x_key_values || '$C_COLL_UNTIL_DATE#' || 'to_date(''' || to_char(p_to_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') ';
125 x_key_values := x_key_values || '$C_DEST_SYSDATE#' || 'to_date(''' || to_char(SYSDATE, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') ';
126 x_key_values := x_key_values || '$C_FORECAST_SIM_PLAN#' || '''' || p_sim_plan_name || '''';
127
128 if( lower(x_dm_time_level) = 'day' ) then
129 x_key_values := x_key_values || '$C_DEM_DEST_DATES#' || '' ||
130 '$C_CDL_DEST_DATE#' || c_cdl_source_date_col ||
131 '$C_MMT_DEST_DATE#' || c_mmt_source_date_col ||
132 '$C_CDL_TIME_CLAUSE#' || x_cdl_time_clause ||
133 '$C_MMT_TIME_CLAUSE#' || x_mmt_time_clause ||
134 '$C_SSH_DEST_DATE#' || c_ssh_source_date_col || -- bug#12675064
135 '$C_SSH_TIME_CLAUSE#' || x_ssh_time_clause ; -- bug#12675064
136 else
137 x_key_values := x_key_values || '$C_DEM_DEST_DATES#' || ', msd_dem_dates inp ' ||
138 '$C_CDL_DEST_DATE#' || 'inp.start_date' ||
139 '$C_MMT_DEST_DATE#' || 'inp.start_date' ||
140 '$C_CDL_TIME_CLAUSE#' || x_cdl_time_clause || ' AND ' || c_cdl_source_date_col || ' between inp.start_date and inp.end_date ' ||
141 '$C_MMT_TIME_CLAUSE#' || x_mmt_time_clause || ' AND ' || c_mmt_source_date_col || ' between inp.start_date and inp.end_date ' ||
142 '$C_SSH_DEST_DATE#' || 'inp.datet' || -- bug#12675064, 13505442
143 '$C_SSH_TIME_CLAUSE#' || x_ssh_time_clause || ' AND ' || c_ssh_source_date_col || ' between inp.start_date and inp.end_date ' ; -- bug#12675064
144 end if;
145 ELSE
146 x_is_custom := 1;
147 END IF;
148
149 /* In case custom view is used for collection and net change collection method is specified
150 * its not possible for the custom view to filter out sales records for unwanted dates, as the existing view is used and not built dynamically.
151 * Adding a time clause to the merge query in this case to bring in data for the specified date range.
152 */
153 if( x_is_custom = 1 and p_collection_method <> G_COLL_COMPLETE) then
154 x_key_values := x_key_values || '$C_MERGE_TIME_CLAUSE#' || ' WHERE SDATE BETWEEN '
155 || 'to_date(''' || to_char(p_from_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') '
156 || ' AND '
157 || 'to_date(''' || to_char(p_to_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') ';
158 else
159 x_key_values := x_key_values || '$C_MERGE_TIME_CLAUSE#' || '';
160 end if;
161
162 x_key_values := x_key_values || '$';
163
164 /* Get the query */
165 msd_dem_query_utilities.get_query2 (
166 x_retcode1,
167 x_large_sql,
168 l_identifier,
169 p_sr_instance_id,
170 x_key_values,
171 x_is_custom,
172 l_custom_view_name);
173
174 IF ( x_retcode1 = '-1' OR x_large_sql IS NULL) THEN
175 retcode := -1;
176 errbuf := 'Unable to get the query.';
177 msd_dem_common_utilities.log_message ('Error(2): MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SERIES_DATA - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
178 msd_dem_common_utilities.log_message (errbuf);
179 RETURN;
180 END IF;
181
182 x_large_sql := replace(x_large_sql, 'C_SR_INSTANCE_ID', p_sr_instance_id);
183 msd_dem_common_utilities.log_debug ('Query - ');
184 msd_dem_common_utilities.log_debug (x_large_sql);
185
186 msd_dem_common_utilities.log_debug ('Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
187
188 BEGIN
189 /* Insert history data into staging table */
190 EXECUTE IMMEDIATE x_large_sql;
191 COMMIT;
192 EXCEPTION
193 WHEN OTHERS THEN
194 retcode := -1 ;
195 errbuf := substr(SQLERRM,1,150);
196 msd_dem_common_utilities.log_message ('Exception(1): MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SERIES_DATA - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
197 msd_dem_common_utilities.log_message (errbuf);
198 msd_dem_common_utilities.log_debug ('Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
199 RETURN;
200 END;
201
202 msd_dem_common_utilities.log_debug ('Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
203 msd_dem_common_utilities.log_debug ('End collection of data for - ' || l_series_name || ' - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
204 msd_dem_common_utilities.log_debug ('Exiting: MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SERIES_DATA - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
205
206 EXCEPTION
207 WHEN OTHERS THEN
208 retcode := -1 ;
209 errbuf := substr(SQLERRM,1,150);
210 msd_dem_common_utilities.log_message ('Exception(3): MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SERIES_DATA - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
211 msd_dem_common_utilities.log_message (errbuf);
212 RETURN;
213
214 END COLLECT_SERIES_DATA;
215
216 /* This procedure will set purge option for selected series and date range in the purge data profiles */
217 PROCEDURE SET_PURGE_PROFILES(
218 errbuf OUT NOCOPY VARCHAR2,
219 retcode OUT NOCOPY VARCHAR2,
220 p_usage_data IN NUMBER,
221 p_install_base IN NUMBER,
222 p_shipment_data IN NUMBER,
223 p_from_date IN DATE,
224 p_to_date IN DATE,
225 p_ff_load IN NUMBER
226 )
227 IS
228 x_profile_id number;
229 x_sql varchar2(500) := null;
230 x_query_name varchar2(200) := null;
231 x_table_name varchar2(30) := null;
232 x_srs_ib_id number;
233 x_srs_uh_id number;
234 x_srs_sh_id number;
235 x_lvl_org_id number;
236 x_org_filter_id number;
237 x_from_date date;
238 x_to_date date;
239 x_errbuf1 varchar2(200) := null;
240 x_retcode1 varchar2(100) := null;
241 BEGIN
242 msd_dem_common_utilities.log_debug ('Entering: MSD_SPF_COLLECT_HISTORY_DATA.SET_PURGE_PROFILES - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
243
244 x_sql := 'select datet from '|| g_schema ||'.inputs where datet >= :1 and rownum = 1 order by datet asc';
245 execute immediate x_sql into x_from_date using p_from_date;
246
247 x_sql := 'select datet from '|| g_schema ||'.inputs where datet <= :1 and rownum = 1 order by datet desc';
248 execute immediate x_sql into x_to_date using p_to_date;
249
250 if (x_from_date > x_to_date) then
251 x_to_date := x_from_date;
252 end if;
253
254 msd_dem_common_utilities.log_message ('For the selected series, the old data will be purged from ''' || x_from_date ||''' to '''||x_to_date ||'''');
255 msd_dem_common_utilities.log_debug ('For the selected series, the old data will be purged from ''' || x_from_date ||''' to '''||x_to_date ||'''');
256
257 -- reset purge install base history profile to no load, no purge
258 x_profile_id := to_number(msd_dem_common_utilities.get_app_id_text (
259 'MSD_DEM_DEMANTRA_OBJECT_ID',
260 'PROFILE_PURGE_IB_HISTORY',
261 1,
262 'id'));
263 x_sql := 'select query_name, table_name from '|| g_schema || '.transfer_query where id = ' || x_profile_id;
264 msd_dem_common_utilities.log_debug(x_sql);
265 execute immediate x_sql into x_query_name, x_table_name;
266 msd_dem_common_utilities.log_debug('Refreshing profile - ' || x_query_name);
267 msd_dem_common_utilities.REFRESH_PURGE_SERIES(x_errbuf1, x_retcode1, x_profile_id, g_schema);
268
269 IF (x_retcode1 = -1) THEN
270 retcode := 1;
271 errbuf := 'Error refreshing profile - ' || x_query_name ||'. ';
272 msd_dem_common_utilities.log_debug('Error Refreshing profile -' || x_query_name || ' : ' || x_errbuf1);
273 END IF;
274
275 IF (p_install_base = G_YES) THEN
276 --set series to Load-Override, Purge-All dates without new data within profile's date range
277 msd_dem_common_utilities.log_debug('Set purge for install base');
278 x_srs_ib_id := to_number(msd_dem_common_utilities.get_app_id_text (
279 'MSD_DEM_DEMANTRA_OBJECT_ID',
280 'SERIES_SPF_INSTALL_BASE',
281 1,
282 'forecast_type_id'));
283 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_ATTR('||x_profile_id||', '|| x_srs_ib_id||', 0, 2); end;';
284 msd_dem_common_utilities.log_debug(x_sql);
285 execute immediate x_sql;
286
287 --set date range
288 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_FDATE('||x_profile_id||', '''|| x_from_date||''' , '''||x_to_date||'''); end;';
289 msd_dem_common_utilities.log_debug(x_sql);
290 execute immediate x_sql;
291
292 --populate orgs in staging table
293 x_sql := 'insert into '|| g_schema ||'.'||x_table_name||'(sdate, level1)'||
294 ' select '''||x_from_date||''', teo.organization from '|| g_schema||'.t_ep_organization teo '||
295 ' where teo.organization in ' ||
296 ' (SELECT distinct organization_code FROM
297 MSD_DEM_APP_INSTANCE_ORGS)';
298 msd_dem_common_utilities.log_debug(x_sql);
299 execute immediate x_sql;
300
301 --notify app server
302 x_sql := 'begin ' || g_schema|| '.API_NOTIFY_APS_INTEGRATION('||x_profile_id ||'); end;';
303 msd_dem_common_utilities.log_debug(x_sql);
304 execute immediate x_sql;
305 END IF;
306
307 -- reset purge spare history profile to no load, no purge
308 x_profile_id := to_number(msd_dem_common_utilities.get_app_id_text (
309 'MSD_DEM_DEMANTRA_OBJECT_ID',
310 'PROFILE_PURGE_SPARE_HISTORY',
311 1,
312 'id'));
313 x_sql := 'select query_name, table_name from '|| g_schema || '.transfer_query where id = ' || x_profile_id;
314 msd_dem_common_utilities.log_debug(x_sql);
315 execute immediate x_sql into x_query_name, x_table_name;
316 msd_dem_common_utilities.log_debug('Refreshing profile - ' || x_query_name);
317 msd_dem_common_utilities.REFRESH_PURGE_SERIES(x_errbuf1, x_retcode1, x_profile_id, g_schema);
318
319 IF (x_retcode1 = -1) THEN
320 retcode := 1;
321 errbuf := errbuf || 'Error refreshing profile - ' || x_query_name ||'. ';
322 msd_dem_common_utilities.log_debug('Error Refreshing profile -' || x_query_name || ' : ' || x_errbuf1);
323 END IF;
324
325 IF (p_usage_data = G_YES OR p_shipment_data = G_YES) THEN
326 IF (p_usage_data = G_YES) THEN
327 --set series to Load-Override, Purge-All dates without new data within profile's date range
328 msd_dem_common_utilities.log_debug('Set purge for usage history');
329 x_srs_ib_id := to_number(msd_dem_common_utilities.get_app_id_text (
330 'MSD_DEM_DEMANTRA_OBJECT_ID',
331 'SERIES_SPF_USAGE_HIST',
332 1,
333 'forecast_type_id'));
334 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_ATTR('||x_profile_id||', '|| x_srs_ib_id||', 0, 2); end;';
335 msd_dem_common_utilities.log_debug(x_sql);
336 execute immediate x_sql;
337 END IF;
338
339 IF (p_shipment_data = G_YES) THEN
340 --set series to Load-Override, Purge-All dates without new data within profile's date range
341 msd_dem_common_utilities.log_debug('Set purge for shipment history');
342 x_srs_ib_id := to_number(msd_dem_common_utilities.get_app_id_text (
343 'MSD_DEM_DEMANTRA_OBJECT_ID',
344 'SERIES_SPF_SHIPMENT_HIST',
345 1,
346 'forecast_type_id'));
347 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_ATTR('||x_profile_id||', '|| x_srs_ib_id||', 0, 2); end;';
348 msd_dem_common_utilities.log_debug(x_sql);
349 execute immediate x_sql;
350 END IF;
351
352 --set date range
353 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_FDATE('||x_profile_id||', '''|| x_from_date||''' , '''||x_to_date||'''); end;';
354 execute immediate x_sql;
355
356 --populate base model(s) in staging table
357 x_sql := 'insert into '|| g_schema ||'.'||x_table_name||'(sdate, level1)'||
358 ' select '''||x_from_date||''', tesbm.t_ep_spf_base_model_code from '|| g_schema||'.t_ep_spf_base_model tesbm '||
359 ' where tesbm.t_ep_spf_base_model_code in ' ||
360 ' (SELECT distinct ebs_base_model_code FROM MSD_SPF_MODEL_ORGS)';
361 msd_dem_common_utilities.log_debug(x_sql);
362 execute immediate x_sql;
363
364 --populate filters for org
365 x_lvl_org_id := to_number(msd_dem_common_utilities.get_app_id_text (
366 'MSD_DEM_DEMANTRA_OBJECT_ID',
367 'LEVEL_ORGANIZATION',
368 1,
369 'group_table_id'));
370 x_sql := 'select filter_id from ' || g_schema || '.transfer_query_filters ' ||
371 ' where id = ' || x_profile_id || ' and level_id = ' || x_lvl_org_id || '';
372 msd_dem_common_utilities.log_debug(x_sql);
373 execute immediate x_sql into x_org_filter_id;
374
375 x_sql := 'delete from ' || g_schema || '.transfer_query_filter_m where filter_id = ' || x_org_filter_id;
376 msd_dem_common_utilities.log_debug(x_sql);
377 execute immediate x_sql;
378
379 x_sql := 'insert into '||g_schema|| '.transfer_query_filter_m (filter_id, member_id) ' ||
380 ' select ' ||x_org_filter_id|| ', teo.t_ep_organization_ep_id from ' ||g_schema||'.t_ep_organization teo ' ||
381 ' where teo.organization in ';
382
383 --bug#10253936 - in case of usage flat file load include only those orgs from data collected in the filter
384 if p_ff_load = G_YES then
385 x_sql := x_sql || ' (select distinct dm_org_code from MSD_SPF_ST_SPARE_USAGE)';
386 else
387 x_sql := x_sql || ' (select distinct organization_code from MSD_DEM_APP_INSTANCE_ORGS)';
388 end if;
389
390 msd_dem_common_utilities.log_debug(x_sql);
391 execute immediate x_sql;
392
393 --notify app server
394 x_sql := 'begin ' || g_schema|| '.API_NOTIFY_APS_INTEGRATION('||x_profile_id ||'); end;';
395 msd_dem_common_utilities.log_debug(x_sql);
396 execute immediate x_sql;
397 END IF;
398
399 msd_dem_common_utilities.log_debug ('Exiting: MSD_SPF_COLLECT_HISTORY_DATA.SET_PURGE_PROFILES - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
400 EXCEPTION WHEN OTHERS THEN
401 retcode := 1 ;
402 errbuf := errbuf || substr(SQLERRM,1,150);
403 msd_dem_common_utilities.log_message ('Warning: MSD_SPF_COLLECT_HISTORY_DATA.SET_PURGE_PROFILES - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
404 msd_dem_common_utilities.log_debug (errbuf);
405 msd_dem_common_utilities.log_debug ('Exiting: MSD_SPF_COLLECT_HISTORY_DATA.SET_PURGE_PROFILES - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
406 RETURN;
407 END SET_PURGE_PROFILES;
408
409 PROCEDURE CHECK_REQUESTS_COMPLETION (
410 errbuf OUT NOCOPY VARCHAR2,
411 retcode OUT NOCOPY VARCHAR2,
412 p_num_requests IN NUMBER,
413 p_run_time IN DATE,
414 p_req_table IN OUT NOCOPY REQ_TABLE,
415 p_check_interval IN NUMBER DEFAULT 60,
416 p_time_out IN NUMBER DEFAULT 86400,
417 p_db_link IN VARCHAR2 DEFAULT '')
418
419 IS
420
421 var_sql VARCHAR2(2000) DEFAULT NULL;
422 var_num_complete NUMBER DEFAULT 0;
423 var_num_success NUMBER DEFAULT 0;
424 var_num_error NUMBER DEFAULT 0;
425 var_num_warning NUMBER DEFAULT 0;
426 var_phase_code VARCHAR2(1) DEFAULT NULL;
427 var_status_code VARCHAR2(1) DEFAULT NULL;
428 var_stat_message VARCHAR2(50) DEFAULT NULL;
429 var_start_date NUMBER DEFAULT NULL;
430 var_start_date_seconds NUMBER DEFAULT NULL;
431 var_curr_time DATE DEFAULT NULL;
432 var_curr_date NUMBER DEFAULT NULL;
433 var_curr_date_seconds NUMBER DEFAULT NULL;
434 var_elapsed_seconds NUMBER DEFAULT NULL;
435
436 BEGIN
437
438 msd_dem_common_utilities.log_debug ('Entering msd_spf_collect_history_data.check_requests_completion...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
439
440 var_start_date := TO_NUMBER(TO_CHAR(p_run_time, 'J'));
441 var_start_date_seconds := TO_NUMBER(TO_CHAR(p_run_time, 'SSSSS'));
442
443 var_sql := 'SELECT phase_code, status_code FROM fnd_concurrent_requests' || p_db_link || ' WHERE request_id = :req_id';
444
445 /* Check the status of each request in a loop */
446 WHILE (var_num_complete <> p_num_requests)
447 LOOP
448
449 FOR I IN p_req_table.FIRST..p_req_table.LAST
450 LOOP
451
452 var_phase_code := NULL;
453 var_status_code := NULL;
454
455 IF (p_req_table(I).is_complete)
456 THEN
457 goto end_for_loop;
458 END IF;
459
460 EXECUTE IMMEDIATE var_sql
461 INTO var_phase_code, var_status_code
462 USING p_req_table(I).request_id;
463
464 IF (var_phase_code = 'C')
465 THEN
466
467 var_num_complete := var_num_complete + 1;
468 p_req_table(I).is_complete := TRUE;
469
470 IF (var_status_code IN ('R', 'I', 'C')) -- Completed Normal
471 THEN
472 p_req_table(I).status := 0;
473 var_num_success := var_num_success + 1;
474 var_stat_message := 'normally.';
475 ELSIF (var_status_code IN ('G')) -- Completed with Warnings
476 THEN
477 p_req_table(I).status := 1;
478 var_num_warning := var_num_warning + 1;
479 var_stat_message := 'with warnings.';
480 ELSIF (var_status_code IN ('E')) -- Completed with errors
481 THEN
482 p_req_table(I).status := -1;
483 var_num_error := var_num_error + 1;
484 var_stat_message := 'with errors.';
485 ELSE -- Anything else
486 p_req_table(I).status := -5;
487 var_stat_message := 'unknown status.';
488 END IF;
489
490 msd_dem_common_utilities.log_message('Concurrent Request - ' || to_char(p_req_table(I).request_id) || ' completed ' || var_stat_message);
491
492 END IF;
493
494 <<end_for_loop>>
495 null;
496
497 END LOOP;
498
499 var_curr_time := systimestamp;
500 var_curr_date := TO_NUMBER(TO_CHAR(var_curr_time, 'J'));
501 var_curr_date_seconds := TO_NUMBER(TO_CHAR(var_curr_time, 'SSSSS'));
502 var_elapsed_seconds := (((var_curr_date - var_start_date) * 86400) + (var_curr_date_seconds - var_start_date_seconds));
503
504 IF (var_elapsed_seconds >= p_time_out)
505 THEN
506
507 retcode := -1;
508 errbuf := 'Timeout occured while waiting for requests to finish.';
509 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.check_requests_completion - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
510 msd_dem_common_utilities.log_message (errbuf);
511 RETURN;
512
513 END IF;
514
515 END LOOP;
516
517 IF (var_num_warning > 0)
518 THEN
519 retcode := 1;
520 errbuf := 'Some requests completed with warnings';
521 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.check_requests_completion - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
522 msd_dem_common_utilities.log_message (errbuf);
523 END IF;
524
525 IF (var_num_error > 0)
526 THEN
527 retcode := -1;
528 errbuf := 'Some requests completed with errors';
529 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.check_requests_completion - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
530 msd_dem_common_utilities.log_message (errbuf);
531 END IF;
532
533 IF (var_num_complete <> (var_num_success + var_num_warning + var_num_error))
534 THEN
535 retcode := -1;
536 errbuf := 'Some requests completed with unknown status';
537 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.check_requests_completion - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
538 msd_dem_common_utilities.log_message (errbuf);
539 END IF;
540
541 msd_dem_common_utilities.log_debug ('Exiting msd_spf_collect_history_data.check_requests_completion...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
542
543 EXCEPTION
544 WHEN OTHERS THEN
545 retcode := -1;
546 errbuf := substr(SQLERRM,1,150);
547 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.check_requests_completion - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
548 msd_dem_common_utilities.log_message (errbuf);
549 RETURN;
550
551 END CHECK_REQUESTS_COMPLETION;
552
553
554 PROCEDURE LAUNCH_SPF_DATA_COLLECTION (
555 errbuf OUT NOCOPY VARCHAR2,
556 retcode OUT NOCOPY VARCHAR2,
557 p_run_time IN DATE,
558 p_sr_instance_id IN NUMBER,
559 p_collection_group IN VARCHAR2,
560 p_collection_method IN NUMBER,
561 p_date_range_type IN NUMBER,
562 p_collection_window IN NUMBER,
563 p_char_from_date IN VARCHAR2,
564 p_char_to_date IN VARCHAR2,
565 p_from_date IN DATE,
566 p_to_date IN DATE,
567 p_shipment_data IN NUMBER,
568 p_usage_data IN NUMBER,
569 p_install_base IN NUMBER,
570 p_sales_forecast IN NUMBER,
571 p_auto_run_download IN NUMBER,
572 p_usage_flat_file IN NUMBER DEFAULT G_NO,
573 p_file_separator IN VARCHAR2 DEFAULT NULL,
574 p_control_file_path IN VARCHAR2 DEFAULT NULL,
575 p_data_file_path IN VARCHAR2 DEFAULT NULL,
576 p_data_file_name IN VARCHAR2 DEFAULT NULL,
577 p_check_interval IN NUMBER DEFAULT 60,
578 p_time_out IN NUMBER DEFAULT 86400,
579 p_synchronous IN NUMBER DEFAULT G_NO,
580 p_custom_usage_hist_view IN VARCHAR2 DEFAULT NULL,
581 p_custom_ibuc_hist_view IN VARCHAR2 DEFAULT NULL,
582 p_custom_sales_fcst_view IN VARCHAR2 DEFAULT NULL,
583 p_custom_download_workflow IN VARCHAR2 DEFAULT NULL )
584 IS
585
586 var_errbuf VARCHAR2(2000) DEFAULT NULL;
587 var_retcode VARCHAR2(100) DEFAULT 0;
588
589 var_request_id NUMBER DEFAULT NULL;
590 var_request_num NUMBER DEFAULT NULL;
591
592 var_sql varchar2(300) := NULL;
593 var_usage_ff_start_date date := NULL;
594 var_usage_ff_until_date date := NULL;
595
596 x_version NUMBER := NULL;
597 x_sql VARCHAR2(2000) := NULL;
598 x_dem_schema VARCHAR2(100) := fnd_profile.value('MSD_DEM_SCHEMA');
599
600 -- Bug#12675064
601 x_profile_id number := null;
602 x_srs_id number := null;
603 x_count number := null;
604
605
606 BEGIN
607
608 msd_dem_common_utilities.log_debug ('Entering msd_spf_collect_history_data.launch_spf_data_collection...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
609
610 /* STAGE I - Push Setup Parameters *** BEGIN *** */
611 msd_dem_common_utilities.log_message('--------------------------------Stage I - Begin---------------------------------------');
612 var_request_num := 0;
613
614 /* Launch Push Setup Parameters */
615 BEGIN
616 var_request_id := null;
617 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMPSP', NULL, NULL, FALSE,
618 p_sr_instance_id, p_collection_group, G_YES);
619 EXCEPTION
620 WHEN OTHERS THEN
621 retcode := -1;
622 errbuf := substr(SQLERRM,1,150);
623 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
624 msd_dem_common_utilities.log_message ('Error while submitting request for push setup parameters');
625 msd_dem_common_utilities.log_message (errbuf);
626 RETURN;
627 END;
628
629 IF (g_req_table.COUNT <> 0)
630 THEN
631 g_req_table.DELETE;
632 END IF;
633
634 var_request_num := var_request_num + 1;
635 g_req_table(var_request_num).REQUEST_ID := var_request_id;
636 g_req_table(var_request_num).DESCRIPTION := 'SPF Push Setup Parameters';
637 g_req_table(var_request_num).IS_COMPLETE := FALSE;
638 g_req_table(var_request_num).status := 1;
639
640 COMMIT;
641
642 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
643 msd_dem_common_utilities.log_message ('');
644 msd_dem_common_utilities.log_message ('');
645
646 /* Launch Flat File Loads */
647 IF (p_usage_data = G_YES AND p_usage_flat_file = G_YES)
648 THEN
649
650 /* Usage */
651 BEGIN
652 var_request_id := null;
653 var_request_id := fnd_request.submit_request ('MSD', 'MSDSRPLD', NULL, NULL, FALSE,
654 p_sr_instance_id, 1440, p_file_separator, p_control_file_path, p_data_file_path, 3,
655 null, null, null, null, null, null, null, null, null, null, null, null,
656 null, null, null, null, null, null, null, null, null, null, null, null,
657 null, null, null, null, null, 1, null, null, null, null, null, null,
658 null, p_data_file_name);
659 EXCEPTION
660 WHEN OTHERS THEN
661 retcode := -1;
662 errbuf := substr(SQLERRM,1,150);
663 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
664 msd_dem_common_utilities.log_message ('Error while submitting request for Usage Flat File Load');
665 msd_dem_common_utilities.log_message (errbuf);
666 RETURN;
667 END;
668
669 var_request_num := var_request_num + 1;
670 g_req_table(var_request_num).REQUEST_ID := var_request_id;
671 g_req_table(var_request_num).DESCRIPTION := 'SPF Usage Flat File Load';
672 g_req_table(var_request_num).IS_COMPLETE := FALSE;
673 g_req_table(var_request_num).status := 1;
674
675 COMMIT;
676
677 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
678 msd_dem_common_utilities.log_message ('');
679 msd_dem_common_utilities.log_message ('');
680
681 END IF;
682
683 /* Launch Shipment Flat File Load */ -- Bug#12675064
684 IF (p_shipment_data = G_YES AND p_usage_flat_file = G_YES) THEN
685 BEGIN
686 var_request_id := null;
687 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMLD', NULL, NULL, FALSE,
688 p_sr_instance_id, 1440, p_file_separator, p_control_file_path, p_data_file_path, 3, null,
689 null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
690 null, null, null, null, null, null, null, null, null, null, p_data_file_name, p_auto_run_download);
691 EXCEPTION
692 WHEN OTHERS THEN
693 retcode := -1;
694 errbuf := substr(SQLERRM,1,150);
695 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
696 msd_dem_common_utilities.log_message ('Error while submitting request for Shipment Flat File Load');
697 msd_dem_common_utilities.log_message (errbuf);
698 RETURN;
699 END;
700
701 var_request_num := var_request_num + 1;
702 g_req_table(var_request_num).REQUEST_ID := var_request_id;
703 g_req_table(var_request_num).DESCRIPTION := 'SPF Shipment Flat File Load';
704 g_req_table(var_request_num).IS_COMPLETE := FALSE;
705 g_req_table(var_request_num).status := 1;
706
707 COMMIT;
708
709 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
710 msd_dem_common_utilities.log_message ('');
711 msd_dem_common_utilities.log_message ('');
712 END IF;
713
714
715 check_requests_completion(var_errbuf, var_retcode, g_req_table.LAST, p_run_time, g_req_table, p_check_interval, p_time_out);
716 IF (var_retcode = -1)
717 THEN
718 retcode := -1;
719 errbuf := var_errbuf;
720 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
721 msd_dem_common_utilities.log_message ('Error while waiting for requests for Stage I to complete.');
722 msd_dem_common_utilities.log_message (errbuf);
723 RETURN;
724 END IF;
725 IF (var_retcode = 1)
726 THEN
727 retcode := 1;
728 errbuf := var_errbuf;
729 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
730 msd_dem_common_utilities.log_message ('One or more requests in Stage I completed with warnings.');
731 msd_dem_common_utilities.log_message (errbuf);
732 END IF;
733
734 msd_dem_common_utilities.log_message('--------------------------------Stage I - End-----------------------------------------');
735 msd_dem_common_utilities.log_message ('');
736 msd_dem_common_utilities.log_message ('');
737 /* STAGE I - Push Setup Parameters *** END *** */
738
739
740 /* STAGE II *** BEGIN *** */
741 msd_dem_common_utilities.log_message('--------------------------------Stage II - Begin--------------------------------------');
742 var_request_num := 0;
743
744 IF (g_req_table.COUNT <> 0)
745 THEN
746 g_req_table.DELETE;
747 END IF;
748
749 /* Launch Load Consensus Forecast to SPF Concurrent Program */
750 IF (p_sales_forecast = G_YES)
751 THEN
752
753 BEGIN
754 var_request_id := null;
755 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFLCF', NULL, NULL, FALSE, G_YES);
756 EXCEPTION
757 WHEN OTHERS THEN
758 retcode := -1;
759 errbuf := substr(SQLERRM,1,150);
760 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
761 msd_dem_common_utilities.log_message ('Error while submitting request for loading consensus forecast to spf');
762 msd_dem_common_utilities.log_message (errbuf);
763 RETURN;
764 END;
765
766 var_request_num := var_request_num + 1;
767 g_req_table(var_request_num).REQUEST_ID := var_request_id;
768 g_req_table(var_request_num).DESCRIPTION := 'SPF Load Consensus Forecast to SPF';
769 g_req_table(var_request_num).IS_COMPLETE := FALSE;
770 g_req_table(var_request_num).status := 1;
771
772 COMMIT;
773
774 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
775 msd_dem_common_utilities.log_message ('');
776 msd_dem_common_utilities.log_message ('');
777
778 END IF;
779
780 /* Launch Spare Shipment History Concurrent Program */
781 IF (p_shipment_data = G_YES AND p_usage_flat_file = G_NO)
782 THEN
783
784 BEGIN
785 var_request_id := null;
786 -- Bug#12675064
787 /*var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMCHD', NULL, NULL, FALSE,
788 p_sr_instance_id, p_collection_group, p_collection_method, null, p_date_range_type, p_collection_window, p_char_from_date, p_char_to_date,
789 G_NO, G_NO, G_NO, G_NO, G_YES, G_NO, G_NO, G_NO, G_NO, G_YES, null, null, p_auto_run_download, G_YES);*/
790 var_request_id := fnd_request.submit_request('MSD', 'MSDSPFCSSH', NULL, NULL, FALSE,
791 p_sr_instance_id, p_collection_method, fnd_date.date_to_canonical(p_from_date), fnd_date.date_to_canonical(p_to_date));
792 EXCEPTION
793 WHEN OTHERS THEN
794 retcode := -1;
795 errbuf := substr(SQLERRM,1,150);
796 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
797 msd_dem_common_utilities.log_message ('Error while submitting request for collecting shipment history');
798 msd_dem_common_utilities.log_message (errbuf);
799 RETURN;
800 END;
801
802 var_request_num := var_request_num + 1;
803 g_req_table(var_request_num).REQUEST_ID := var_request_id;
804 g_req_table(var_request_num).DESCRIPTION := 'SPF Collect Spare Shipment History';
805 g_req_table(var_request_num).IS_COMPLETE := FALSE;
806 g_req_table(var_request_num).status := 1;
807
808 COMMIT;
809
810 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
811 msd_dem_common_utilities.log_message ('');
812 msd_dem_common_utilities.log_message ('');
813
814 END IF;
815
816 /* Launch Collect Usage History Concurrent Program - ERP */
817 IF (p_usage_data = G_YES AND p_usage_flat_file = G_NO)
818 THEN
819
820 /* Usage */
821 BEGIN
822 var_request_id := null;
823 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFCSUH', NULL, NULL, FALSE,
824 p_sr_instance_id, p_collection_method, fnd_date.date_to_canonical(p_from_date), fnd_date.date_to_canonical(p_to_date), G_YES);
825 EXCEPTION
826 WHEN OTHERS THEN
827 retcode := -1;
828 errbuf := substr(SQLERRM,1,150);
829 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
830 msd_dem_common_utilities.log_message ('Error while submitting request for collecting spare usage');
831 msd_dem_common_utilities.log_message (errbuf);
832 RETURN;
833 END;
834
835 var_request_num := var_request_num + 1;
836 g_req_table(var_request_num).REQUEST_ID := var_request_id;
837 g_req_table(var_request_num).DESCRIPTION := 'SPF Collect Spare Usage';
838 g_req_table(var_request_num).IS_COMPLETE := FALSE;
839 g_req_table(var_request_num).status := 1;
840
841 COMMIT;
842
843 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
844 msd_dem_common_utilities.log_message ('');
845 msd_dem_common_utilities.log_message ('');
846
847 END IF;
848
849 /* Launch Usage History Flat File - Pre Process */ -- Bug#12675064
850 IF ((p_usage_data = G_YES or p_shipment_data = G_YES) AND p_usage_flat_file = G_YES)
851 THEN
852 -- in case of shipment flat file load, move data from sales st to usage st table
853 IF (p_shipment_data = G_YES) THEN
854 x_sql := 'INSERT /*+ APPEND */ INTO ' || C_SPARE_USAGE_HISTORY_TABLE || ' NOLOGGING '
855 || ' (USAGE_HIST_TYPE, EBS_BASE_MODEL_SR_PK, EBS_BASE_MODEL_CODE, DM_ITEM_SR_PK, DM_ITEM_CODE, '
856 || ' DM_ORG_SR_PK, DM_ORG_CODE, USAGE_DATE, QUANTITY, '
857 || ' LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATION_DATE, CREATED_BY ) '
858 || ' SELECT ''SHIPMENTS'', -23453, tsst.ebs_base_model_code, -23453, tsst.dm_item_code, -23453, tsst.dm_org_code, '
859 || ' tsst.sales_date, tsst.ebs_ship_hist_ship_qty_sd, sysdate, -1, sysdate, -1 '
860 || ' FROM ' || g_schema || '.t_src_sales_tmpl tsst ';
861 msd_dem_common_utilities.log_debug ('Shipment Data move sql - ');
862 msd_dem_common_utilities.log_debug (x_sql);
863
864 msd_dem_common_utilities.log_message ('Moving shipment data from T_SRC_SALES_TMPL to ' || C_SPARE_USAGE_HISTORY_TABLE);
865 msd_dem_common_utilities.log_debug ('Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
866 EXECUTE IMMEDIATE x_sql;
867 x_count := SQL%ROWCOUNT;
868 COMMIT;
869
870 msd_dem_common_utilities.log_debug ('Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
871 msd_dem_common_utilities.log_message ('Rows Moved - ' || to_char(x_count));
872
873 /* Truncate the sales staging table */
874 msd_dem_common_utilities.log_message ('Truncate sales staging table...');
875 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || g_schema || '.T_SRC_SALES_TMPL';
876 END IF;
877
878 /* Pre-Process data in msd_spf_st_spare_usage */
879 BEGIN
880 var_request_id := null;
881 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFUPP', NULL, NULL, FALSE, p_sr_instance_id);
882 EXCEPTION
883 WHEN OTHERS THEN
884 retcode := -1;
885 errbuf := substr(SQLERRM,1,150);
886 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
887 msd_dem_common_utilities.log_message ('Error while submitting request for Usage History Pre Process');
888 msd_dem_common_utilities.log_message (errbuf);
889 RETURN;
890 END;
891
892 var_request_num := var_request_num + 1;
893 g_req_table(var_request_num).REQUEST_ID := var_request_id;
894 g_req_table(var_request_num).DESCRIPTION := 'SPF Flat File History Pre Process ';
895 g_req_table(var_request_num).IS_COMPLETE := FALSE;
896 g_req_table(var_request_num).status := 1;
897
898 COMMIT;
899
900 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
901 msd_dem_common_utilities.log_message ('');
902 msd_dem_common_utilities.log_message ('');
903
904 END IF;
905
906 /* Launch Derive Supersession Chain Concurrent Program */
907 IF (p_usage_data = G_YES OR p_install_base = G_YES or p_shipment_data = G_YES) -- Bug#12675064
908 THEN
909
910 /* Supersession Chain */
911 BEGIN
912 var_request_id := null;
913 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFDSC', NULL, NULL, FALSE, p_sr_instance_id);
914 EXCEPTION
915 WHEN OTHERS THEN
916 retcode := -1;
917 errbuf := substr(SQLERRM,1,150);
918 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
919 msd_dem_common_utilities.log_message ('Error while submitting request for deriving supersession chain');
920 msd_dem_common_utilities.log_message (errbuf);
921 RETURN;
922 END;
923
924 var_request_num := var_request_num + 1;
925 g_req_table(var_request_num).REQUEST_ID := var_request_id;
926 g_req_table(var_request_num).DESCRIPTION := 'SPF Derive Supersession Chain';
927 g_req_table(var_request_num).IS_COMPLETE := FALSE;
928 g_req_table(var_request_num).status := 1;
929
930 COMMIT;
931
932 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
933 msd_dem_common_utilities.log_message ('');
934 msd_dem_common_utilities.log_message ('');
935
936 END IF;
937
938 IF (var_request_num > 0)
939 THEN
940
941 check_requests_completion(var_errbuf, var_retcode, g_req_table.LAST, p_run_time, g_req_table, p_check_interval, p_time_out);
942 IF (var_retcode = -1)
943 THEN
944 retcode := -1;
945 errbuf := var_errbuf;
946 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
947 msd_dem_common_utilities.log_message ('Error while waiting for requests for Stage II to complete.');
948 msd_dem_common_utilities.log_message (errbuf);
949 RETURN;
950 END IF;
951 IF (var_retcode = 1)
952 THEN
953 retcode := 1;
954 errbuf := var_errbuf;
955 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
956 msd_dem_common_utilities.log_message ('One or more requests in Stage II completed with warnings.');
957 msd_dem_common_utilities.log_message (errbuf);
958 END IF;
959
960 END IF;
961
962 /* Analyze Staging Table */ -- Bug#12675064
963 msd_dem_common_utilities.log_message ('Analyzing staging table ' || C_SPARE_USAGE_HISTORY_TABLE);
964 msd_dem_common_utilities.log_debug ('Begin Analyze staging table ' || C_SPARE_USAGE_HISTORY_TABLE || ' - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
965
966 msd_dem_collect_history_data.analyze_table (
967 var_errbuf,
968 var_retcode,
969 C_SPARE_USAGE_HISTORY_TABLE);
970
971 msd_dem_common_utilities.log_debug ('End Analyze staging table ' || C_SPARE_USAGE_HISTORY_TABLE || ' - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
972
973 IF (var_retcode = 1) THEN
974 retcode := 1;
975 errbuf := var_errbuf;
976 msd_dem_common_utilities.log_message ('Warning: MSD_SPF_COLLECT_HISTORY_DATA.LAUNCH_SPF_DATA_COLLECTION - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
977 msd_dem_common_utilities.log_message ('Error while analyzing staging table');
978 END IF;
979
980 msd_dem_common_utilities.log_message('--------------------------------Stage II - End----------------------------------------');
981 msd_dem_common_utilities.log_message ('');
982 msd_dem_common_utilities.log_message ('');
983 /* STAGE II *** END *** */
984
985
986 /* STAGE III *** BEGIN *** */
987 msd_dem_common_utilities.log_message('--------------------------------Stage III - Begin-------------------------------------');
988 var_request_num := 0;
989
990 IF (g_req_table.COUNT <> 0)
991 THEN
992 g_req_table.DELETE;
993 END IF;
994
995 /* Launch Collect Install Base under Contracts Concurrent Program */
996 IF (p_install_base = G_YES)
997 THEN
998 BEGIN
999 var_request_id := null;
1000 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFCID', NULL, NULL, FALSE,
1001 p_sr_instance_id, p_collection_method, fnd_date.date_to_canonical(p_from_date), fnd_date.date_to_canonical(p_to_date), p_custom_ibuc_hist_view);
1002 EXCEPTION
1003 WHEN OTHERS THEN
1004 retcode := -1;
1005 errbuf := substr(SQLERRM,1,150);
1006 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1007 msd_dem_common_utilities.log_message ('Error while submitting request for collecting install base under contracts');
1008 msd_dem_common_utilities.log_message (errbuf);
1009 RETURN;
1010 END;
1011
1012 var_request_num := var_request_num + 1;
1013 g_req_table(var_request_num).REQUEST_ID := var_request_id;
1014 g_req_table(var_request_num).DESCRIPTION := 'SPF Collect Install Base under Contracts';
1015 g_req_table(var_request_num).IS_COMPLETE := FALSE;
1016 g_req_table(var_request_num).status := 1;
1017
1018 COMMIT;
1019
1020 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1021 msd_dem_common_utilities.log_message ('');
1022 msd_dem_common_utilities.log_message ('');
1023
1024 END IF;
1025
1026 /* Launch Derive Service BOM Concurrent Program */
1027 IF (p_usage_data = G_YES OR p_install_base = G_YES OR p_shipment_data = G_YES) -- Bug#12675064
1028 THEN
1029 BEGIN
1030 var_request_id := null;
1031 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFDSB', NULL, NULL, FALSE, p_sr_instance_id, p_install_base, fnd_date.date_to_canonical(p_from_date), fnd_date.date_to_canonical(p_to_date), p_custom_ibuc_hist_view);
1032 EXCEPTION
1033 WHEN OTHERS THEN
1034 retcode := -1;
1035 errbuf := substr(SQLERRM,1,150);
1036 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1037 msd_dem_common_utilities.log_message ('Error while submitting request for derive service bom');
1038 msd_dem_common_utilities.log_message (errbuf);
1039 RETURN;
1040 END;
1041
1042 var_request_num := var_request_num + 1;
1043 g_req_table(var_request_num).REQUEST_ID := var_request_id;
1044 g_req_table(var_request_num).DESCRIPTION := 'SPF Derive Service BOM';
1045 g_req_table(var_request_num).IS_COMPLETE := FALSE;
1046 g_req_table(var_request_num).status := 1;
1047
1048 COMMIT;
1049
1050 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1051 msd_dem_common_utilities.log_message ('');
1052 msd_dem_common_utilities.log_message ('');
1053
1054 END IF;
1055
1056 IF (var_request_num > 0)
1057 THEN
1058
1059 check_requests_completion(var_errbuf, var_retcode, g_req_table.LAST, p_run_time, g_req_table, p_check_interval, p_time_out);
1060 IF (var_retcode = -1)
1061 THEN
1062 retcode := -1;
1063 errbuf := var_errbuf;
1064 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1065 msd_dem_common_utilities.log_message ('Error while waiting for requests for Stage III to complete.');
1066 msd_dem_common_utilities.log_message (errbuf);
1067 RETURN;
1068 END IF;
1069 IF (var_retcode = 1)
1070 THEN
1071 retcode := 1;
1072 errbuf := var_errbuf;
1073 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1074 msd_dem_common_utilities.log_message ('One or more requests in Stage III completed with warnings.');
1075 msd_dem_common_utilities.log_message (errbuf);
1076 END IF;
1077
1078 END IF;
1079
1080 msd_dem_common_utilities.log_message('--------------------------------Stage III - End---------------------------------------');
1081 msd_dem_common_utilities.log_message ('');
1082 msd_dem_common_utilities.log_message ('');
1083 /* STAGE III *** END *** */
1084
1085
1086 /* STAGE IV *** BEGIN *** */
1087 msd_dem_common_utilities.log_message('---------------------------------Stage IV - Begin-------------------------------------');
1088 var_request_num := 0;
1089
1090 IF (g_req_table.COUNT <> 0)
1091 THEN
1092 g_req_table.DELETE;
1093 END IF;
1094
1095 /* Submit requests to populate staging tables */
1096 IF (p_usage_data = G_YES OR p_install_base = G_YES OR p_shipment_data = G_YES) -- Bug#12675064
1097 THEN
1098
1099 /* BIIO_SPF_BASE_MODEL */
1100 BEGIN
1101 var_request_id := null;
1102 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE, 'EQ_SPF_BASE_MODEL', p_sr_instance_id);
1103 EXCEPTION
1104 WHEN OTHERS THEN
1105 retcode := -1;
1106 errbuf := substr(SQLERRM,1,150);
1107 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1108 msd_dem_common_utilities.log_message ('Error while submitting request for populating BIIO_SPF_BASE_MODEL');
1109 msd_dem_common_utilities.log_message (errbuf);
1110 RETURN;
1111 END;
1112
1113 var_request_num := var_request_num + 1;
1114 g_req_table(var_request_num).REQUEST_ID := var_request_id;
1115 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate BIIO_SPF_BASE_MODEL';
1116 g_req_table(var_request_num).IS_COMPLETE := FALSE;
1117 g_req_table(var_request_num).status := 1;
1118
1119 COMMIT;
1120
1121 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1122 msd_dem_common_utilities.log_message ('');
1123 msd_dem_common_utilities.log_message ('');
1124
1125
1126 /* BIIO_SPF_CHILD */
1127 BEGIN
1128 var_request_id := null;
1129 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE, 'EQ_SPF_CHILD', p_sr_instance_id);
1130 EXCEPTION
1131 WHEN OTHERS THEN
1132 retcode := -1;
1133 errbuf := substr(SQLERRM,1,150);
1134 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1135 msd_dem_common_utilities.log_message ('Error while submitting request for populating BIIO_SPF_CHILD');
1136 msd_dem_common_utilities.log_message (errbuf);
1137 RETURN;
1138 END;
1139
1140 var_request_num := var_request_num + 1;
1141 g_req_table(var_request_num).REQUEST_ID := var_request_id;
1142 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate BIIO_SPF_CHILD';
1143 g_req_table(var_request_num).IS_COMPLETE := FALSE;
1144 g_req_table(var_request_num).status := 1;
1145
1146 COMMIT;
1147
1148 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1149 msd_dem_common_utilities.log_message ('');
1150 msd_dem_common_utilities.log_message ('');
1151
1152
1153 /* BIIO_SPF_LATEST_REVISION */
1154 BEGIN
1155 var_request_id := null;
1156 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE, 'EQ_SPF_LATEST_REVISION', p_sr_instance_id);
1157 EXCEPTION
1158 WHEN OTHERS THEN
1159 retcode := -1;
1160 errbuf := substr(SQLERRM,1,150);
1161 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1162 msd_dem_common_utilities.log_message ('Error while submitting request for populating BIIO_SPF_LATEST_REVISION');
1163 msd_dem_common_utilities.log_message (errbuf);
1164 RETURN;
1165 END;
1166
1167 var_request_num := var_request_num + 1;
1168 g_req_table(var_request_num).REQUEST_ID := var_request_id;
1169 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate BIIO_SPF_LATEST_REVISION';
1170 g_req_table(var_request_num).IS_COMPLETE := FALSE;
1171 g_req_table(var_request_num).status := 1;
1172
1173 COMMIT;
1174
1175 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1176 msd_dem_common_utilities.log_message ('');
1177 msd_dem_common_utilities.log_message ('');
1178
1179
1180 /* BIIO_SPF_LEVEL */
1181 BEGIN
1182 var_request_id := null;
1183
1184 /*Bug#12571298*/
1185 x_sql := 'select to_number(replace(version,''.'','''')) from ' || x_dem_schema || '.version_details' ;
1186 EXECUTE IMMEDIATE x_sql INTO x_version;
1187
1188 IF (x_version = 731) THEN
1189 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE, 'EQ_SPF_LEVEL', p_sr_instance_id);
1190 ELSE
1191 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE, 'EQ_SPF_LEVEL_732', p_sr_instance_id);
1192 END IF;
1193
1194 EXCEPTION
1195 WHEN OTHERS THEN
1196 retcode := -1;
1197 errbuf := substr(SQLERRM,1,150);
1198 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1199 msd_dem_common_utilities.log_message ('Error while submitting request for populating BIIO_SPF_LEVEL');
1200 msd_dem_common_utilities.log_message (errbuf);
1201 RETURN;
1202 END;
1203
1204 var_request_num := var_request_num + 1;
1205 g_req_table(var_request_num).REQUEST_ID := var_request_id;
1206 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate BIIO_SPF_LEVEL';
1207 g_req_table(var_request_num).IS_COMPLETE := FALSE;
1208 g_req_table(var_request_num).status := 1;
1209
1210 COMMIT;
1211
1212 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1213 msd_dem_common_utilities.log_message ('');
1214 msd_dem_common_utilities.log_message ('');
1215
1216
1217 /* T_SRC_SALES_TMPL */
1218 BEGIN
1219 var_request_id := null;
1220 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE, 'EQ_SPF_SALES_TMPL', p_sr_instance_id);
1221 EXCEPTION
1222 WHEN OTHERS THEN
1223 retcode := -1;
1224 errbuf := substr(SQLERRM,1,150);
1225 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1226 msd_dem_common_utilities.log_message ('Error while submitting request for populating T_SRC_SALES_TMPL');
1227 msd_dem_common_utilities.log_message (errbuf);
1228 RETURN;
1229 END;
1230
1231 var_request_num := var_request_num + 1;
1232 g_req_table(var_request_num).REQUEST_ID := var_request_id;
1233 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate T_SRC_SALES_TMPL';
1234 g_req_table(var_request_num).IS_COMPLETE := FALSE;
1235 g_req_table(var_request_num).status := 1;
1236
1237 COMMIT;
1238
1239 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1240 msd_dem_common_utilities.log_message ('');
1241 msd_dem_common_utilities.log_message ('');
1242
1243
1244 /* BIIO_SPF_DATA */
1245 BEGIN
1246 var_request_id := null;
1247 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE, 'EQ_SPF_DATA', p_sr_instance_id);
1248 EXCEPTION
1249 WHEN OTHERS THEN
1250 retcode := -1;
1251 errbuf := substr(SQLERRM,1,150);
1252 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1253 msd_dem_common_utilities.log_message ('Error while submitting request for populating BIIO_SPF_DATA');
1254 msd_dem_common_utilities.log_message (errbuf);
1255 RETURN;
1256 END;
1257
1258 var_request_num := var_request_num + 1;
1259 g_req_table(var_request_num).REQUEST_ID := var_request_id;
1260 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate BIIO_SPF_DATA';
1261 g_req_table(var_request_num).IS_COMPLETE := FALSE;
1262 g_req_table(var_request_num).status := 1;
1263
1264 COMMIT;
1265
1266 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1267 msd_dem_common_utilities.log_message ('');
1268 msd_dem_common_utilities.log_message ('');
1269
1270 END IF;
1271
1272
1273 IF (var_request_num > 0)
1274 THEN
1275
1276 check_requests_completion(var_errbuf, var_retcode, g_req_table.LAST, p_run_time, g_req_table, p_check_interval, p_time_out);
1277 IF (var_retcode = -1)
1278 THEN
1279 retcode := -1;
1280 errbuf := var_errbuf;
1281 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1282 msd_dem_common_utilities.log_message ('Error while waiting for requests for Stage IV to complete.');
1283 msd_dem_common_utilities.log_message (errbuf);
1284 RETURN;
1285 END IF;
1286 IF (var_retcode = 1)
1287 THEN
1288 retcode := 1;
1289 errbuf := var_errbuf;
1290 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1291 msd_dem_common_utilities.log_message ('One or more requests in Stage IV completed with warnings.');
1292 msd_dem_common_utilities.log_message (errbuf);
1293 END IF;
1294
1295 END IF;
1296
1297 msd_dem_common_utilities.log_message('---------------------------------Stage IV - End---------------------------------------');
1298 msd_dem_common_utilities.log_message ('');
1299 msd_dem_common_utilities.log_message ('');
1300 /* STAGE IV *** END *** */
1301
1302
1303 /* STAGE V *** BEGIN *** */
1304 msd_dem_common_utilities.log_message('----------------------------------Stage V - Begin-------------------------------------');
1305 var_request_num := 0;
1306
1307 IF (g_req_table.COUNT <> 0)
1308 THEN
1309 g_req_table.DELETE;
1310 END IF;
1311
1312 /* Submit requests to populate staging tables */
1313 IF (p_usage_data = G_YES OR p_install_base = G_YES OR p_shipment_data = G_YES) -- Bug#12675064
1314 THEN
1315
1316 /* BIIO_SPF_POPULATION */
1317 BEGIN
1318 var_request_id := null;
1319 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE, 'EQ_SPF_POPULATION', p_sr_instance_id);
1320 EXCEPTION
1321 WHEN OTHERS THEN
1322 retcode := -1;
1323 errbuf := substr(SQLERRM,1,150);
1324 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1325 msd_dem_common_utilities.log_message ('Error while submitting request for populating BIIO_SPF_POPULATION');
1326 msd_dem_common_utilities.log_message (errbuf);
1327 RETURN;
1328 END;
1329
1330 var_request_num := var_request_num + 1;
1331 g_req_table(var_request_num).REQUEST_ID := var_request_id;
1332 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate BIIO_SPF_POPULATION';
1333 g_req_table(var_request_num).IS_COMPLETE := FALSE;
1334 g_req_table(var_request_num).status := 1;
1335
1336 COMMIT;
1337
1338 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1339 msd_dem_common_utilities.log_message ('');
1340 msd_dem_common_utilities.log_message ('');
1341
1342
1343 /* T_SRC_ITEM_TMPL */
1344 BEGIN
1345 var_request_id := null;
1346 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMCLT', NULL, NULL, FALSE, p_sr_instance_id, 2);
1347 EXCEPTION
1348 WHEN OTHERS THEN
1349 retcode := -1;
1350 errbuf := substr(SQLERRM,1,150);
1351 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1352 msd_dem_common_utilities.log_message ('Error while submitting request for populating T_SRC_ITEM_TMPL');
1353 msd_dem_common_utilities.log_message (errbuf);
1354 RETURN;
1355 END;
1356
1357 var_request_num := var_request_num + 1;
1358 g_req_table(var_request_num).REQUEST_ID := var_request_id;
1359 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate T_SRC_ITEM_TMPL';
1360 g_req_table(var_request_num).IS_COMPLETE := FALSE;
1361 g_req_table(var_request_num).status := 1;
1362
1363 COMMIT;
1364
1365 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1366 msd_dem_common_utilities.log_message ('');
1367 msd_dem_common_utilities.log_message ('');
1368
1369
1370 /* T_SRC_LOC_TMPL */
1371 BEGIN
1372 var_request_id := null;
1373 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMCLT', NULL, NULL, FALSE, p_sr_instance_id, 1, -1, G_YES);
1374 EXCEPTION
1375 WHEN OTHERS THEN
1376 retcode := -1;
1377 errbuf := substr(SQLERRM,1,150);
1378 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1379 msd_dem_common_utilities.log_message ('Error while submitting request for populating T_SRC_LOC_TMPL');
1380 msd_dem_common_utilities.log_message (errbuf);
1381 RETURN;
1382 END;
1383
1384 var_request_num := var_request_num + 1;
1385 g_req_table(var_request_num).REQUEST_ID := var_request_id;
1386 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate T_SRC_LOC_TMPL';
1387 g_req_table(var_request_num).IS_COMPLETE := FALSE;
1388 g_req_table(var_request_num).status := 1;
1389
1390 COMMIT;
1391
1392 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1393 msd_dem_common_utilities.log_message ('');
1394 msd_dem_common_utilities.log_message ('');
1395
1396 END IF;
1397
1398 IF (var_request_num > 0)
1399 THEN
1400
1401 check_requests_completion(var_errbuf, var_retcode, g_req_table.LAST, p_run_time, g_req_table, p_check_interval, p_time_out);
1402 IF (var_retcode = -1)
1403 THEN
1404 retcode := -1;
1405 errbuf := var_errbuf;
1406 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1407 msd_dem_common_utilities.log_message ('Error while waiting for requests for Stage V to complete.');
1408 msd_dem_common_utilities.log_message (errbuf);
1409 RETURN;
1410 END IF;
1411 IF (var_retcode = 1)
1412 THEN
1413 retcode := 1;
1414 errbuf := var_errbuf;
1415 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1416 msd_dem_common_utilities.log_message ('One or more requests in Stage V completed with warnings.');
1417 msd_dem_common_utilities.log_message (errbuf);
1418 END IF;
1419
1420 END IF;
1421
1422 msd_dem_common_utilities.log_message('----------------------------------Stage V - End---------------------------------------');
1423 msd_dem_common_utilities.log_message ('');
1424 msd_dem_common_utilities.log_message ('');
1425 /* STAGE V *** END *** */
1426
1427
1428 /* STAGE VI *** BEGIN *** */
1429 msd_dem_common_utilities.log_message('---------------------------------Stage VI - Begin-------------------------------------');
1430 var_request_num := 0;
1431
1432 IF (g_req_table.COUNT <> 0)
1433 THEN
1434 g_req_table.DELETE;
1435 END IF;
1436
1437 /* History data Re-alignment -> Setup purge profiles as required */
1438 var_retcode := 0;
1439 -- purge is done either for flat file load of usage or for ERP load (usage or install base selected)
1440 IF (p_usage_flat_file = G_YES AND (p_usage_data = G_YES OR p_shipment_data = G_YES)) THEN -- Bug#12675064
1441 --get the date range from flat file data loaded to staging table
1442 var_sql := 'select min(sdate), max(sdate) from '||g_schema||'.biio_spf_data';
1443 execute immediate var_sql into var_usage_ff_start_date,var_usage_ff_until_date;
1444
1445 IF (var_usage_ff_start_date IS NULL or var_usage_ff_until_date IS NULL) THEN
1446 var_usage_ff_start_date := SYSDATE;
1447 var_usage_ff_until_date := SYSDATE;
1448 END IF;
1449
1450 --BUG#14166770
1451 SET_PURGE_PROFILES(var_errbuf, var_retcode, p_usage_data, p_install_base, p_shipment_data, var_usage_ff_start_date, var_usage_ff_until_date, G_YES);
1452 --14166770 ends
1453
1454 ELSIF (p_usage_data = G_YES OR p_install_base = G_YES OR p_shipment_data = G_YES) THEN -- Bug#12675064
1455 SET_PURGE_PROFILES(var_errbuf, var_retcode, p_usage_data, p_install_base, p_shipment_data, p_from_date, p_to_date, G_NO);
1456
1457 END IF;
1458
1459 IF (var_retcode = 1) THEN
1460 retcode := 1;
1461 errbuf := var_errbuf;
1462 END IF;
1463
1464 -- Bug#12675064
1465 -- Reset Load/Purge option for all series in IMPORT_SPF_DATA
1466 -- set (usage/shipment) series to 'No Load' and 'No Purge' if not selected
1467 IF (p_usage_data = G_YES OR p_shipment_data = G_YES) THEN
1468 begin
1469 x_profile_id := to_number(msd_dem_common_utilities.get_app_id_text (
1470 'MSD_DEM_DEMANTRA_OBJECT_ID',
1471 'PROFILE_IMPORT_SPF_DATA',
1472 1,
1473 'id'));
1474 msd_dem_common_utilities.log_debug('Refreshing profile - IMPORT_SPF_DATA');
1475 msd_dem_common_utilities.REFRESH_PURGE_SERIES(var_errbuf, var_retcode, x_profile_id, g_schema);
1476
1477 IF (var_retcode = -1) THEN
1478 retcode := 1;
1479 errbuf := 'Error refreshing profile - IMPORT_SPF_DATA';
1480 msd_dem_common_utilities.log_debug('Error Refreshing profile - IMPORT_SPF_DATA : ' || var_errbuf);
1481 END IF;
1482
1483 IF (p_usage_data = G_YES) THEN
1484 --set Usage series to Load-Override, Purge-No Purge
1485 msd_dem_common_utilities.log_debug('Set Load-Override / Purge-No Purge for usage history series');
1486 x_srs_id := to_number(msd_dem_common_utilities.get_app_id_text (
1487 'MSD_DEM_DEMANTRA_OBJECT_ID',
1488 'SERIES_SPF_USAGE_HIST',
1489 1,
1490 'forecast_type_id'));
1491 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_ATTR('||x_profile_id||', '|| x_srs_id||', 0, 0); end;';
1492 msd_dem_common_utilities.log_debug(x_sql);
1493 execute immediate x_sql;
1494 END IF;
1495
1496 IF (p_shipment_data = G_YES) THEN
1497 --set Shipments series to Load-Override, Purge-No Purge
1498 msd_dem_common_utilities.log_debug('Set Load-Override / Purge-No Purge for shipment history series');
1499 x_srs_id := to_number(msd_dem_common_utilities.get_app_id_text (
1500 'MSD_DEM_DEMANTRA_OBJECT_ID',
1501 'SERIES_SPF_SHIPMENT_HIST',
1502 1,
1503 'forecast_type_id'));
1504 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_ATTR('||x_profile_id||', '|| x_srs_id||', 0, 0); end;';
1505 msd_dem_common_utilities.log_debug(x_sql);
1506 execute immediate x_sql;
1507 END IF;
1508
1509 x_sql := 'begin ' || g_schema|| '.API_NOTIFY_APS_INTEGRATION('||x_profile_id ||'); end;';
1510 execute immediate x_sql;
1511
1512 exception
1513 when others then
1514 retcode := -1;
1515 errbuf := substr(SQLERRM,1,150);
1516 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1517 msd_dem_common_utilities.log_message ('Error when setting Load/Purge option for data profile');
1518 msd_dem_common_utilities.log_message (errbuf);
1519 RETURN;
1520 end;
1521 END IF;
1522
1523 /* Launch the Download Workflow */
1524 IF (p_auto_run_download = G_YES)
1525 THEN
1526
1527 BEGIN
1528
1529 var_request_id := null;
1530 IF (p_usage_data = G_YES OR p_install_base = G_YES OR p_shipment_data = G_YES) -- Bug#12675064
1531 THEN
1532 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFLSD', NULL, NULL, FALSE, 'WF_SPF_FULL_DOWNLOAD', p_check_interval, p_time_out);
1533 ELSE
1534 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFLSD', NULL, NULL, FALSE, 'WF_SPF_GL_DATA_DOWNLOAD', p_check_interval, p_time_out);
1535 END IF;
1536
1537
1538 EXCEPTION
1539 WHEN OTHERS THEN
1540 retcode := -1;
1541 errbuf := substr(SQLERRM,1,150);
1542 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1543 msd_dem_common_utilities.log_message ('Error while submitting request for launch download');
1544 msd_dem_common_utilities.log_message (errbuf);
1545 RETURN;
1546 END;
1547
1548 var_request_num := var_request_num + 1;
1549 g_req_table(var_request_num).REQUEST_ID := var_request_id;
1550 g_req_table(var_request_num).DESCRIPTION := 'SPF Launch Download';
1551 g_req_table(var_request_num).IS_COMPLETE := FALSE;
1552 g_req_table(var_request_num).status := 1;
1553
1554 COMMIT;
1555
1556 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1557 msd_dem_common_utilities.log_message ('');
1558 msd_dem_common_utilities.log_message ('');
1559
1560 END IF;
1561
1562 IF (var_request_num > 0)
1563 THEN
1564
1565 check_requests_completion(var_errbuf, var_retcode, g_req_table.LAST, p_run_time, g_req_table, p_check_interval, p_time_out);
1566 IF (var_retcode = -1)
1567 THEN
1568 retcode := -1;
1569 errbuf := var_errbuf;
1570 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1571 msd_dem_common_utilities.log_message ('Error while waiting for requests for Stage VI to complete.');
1572 msd_dem_common_utilities.log_message (errbuf);
1573 RETURN;
1574 END IF;
1575 IF (var_retcode = 1)
1576 THEN
1577 retcode := 1;
1578 errbuf := var_errbuf;
1579 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1580 msd_dem_common_utilities.log_message ('One or more requests in Stage VI completed with warnings.');
1581 msd_dem_common_utilities.log_message (errbuf);
1582 END IF;
1583
1584 END IF;
1585
1586 msd_dem_common_utilities.log_message('---------------------------------Stage VI - End---------------------------------------');
1587 msd_dem_common_utilities.log_message ('');
1588 msd_dem_common_utilities.log_message ('');
1589 /* STAGE VI *** END *** */
1590
1591
1592 msd_dem_common_utilities.log_debug ('Exiting msd_spf_collect_history_data.launch_spf_data_collection...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1593
1594
1595 EXCEPTION
1596 WHEN OTHERS THEN
1597 retcode := -1;
1598 errbuf := substr(SQLERRM,1,150);
1599 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_data_collection - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1600 msd_dem_common_utilities.log_message (errbuf);
1601 RETURN;
1602
1603 END LAUNCH_SPF_DATA_COLLECTION;
1604
1605
1606
1607
1608 PROCEDURE LAUNCH_SPF_SHIPMENT_DATA_FF (
1609 errbuf OUT NOCOPY VARCHAR2,
1610 retcode OUT NOCOPY VARCHAR2,
1611 p_run_time IN DATE,
1612 p_sr_instance_id IN NUMBER,
1613 p_auto_run_download IN NUMBER,
1614 p_file_separator IN VARCHAR2,
1615 p_control_file_path IN VARCHAR2,
1616 p_data_file_path IN VARCHAR2,
1617 p_data_file_name IN VARCHAR2,
1618 p_check_interval IN NUMBER DEFAULT 60,
1619 p_time_out IN NUMBER DEFAULT 86400,
1620 p_synchronous IN NUMBER DEFAULT G_NO )
1621 IS
1622
1623 var_errbuf VARCHAR2(2000) DEFAULT NULL;
1624 var_retcode VARCHAR2(100) DEFAULT 0;
1625 var_request_id NUMBER DEFAULT NULL;
1626 var_request_num NUMBER DEFAULT NULL;
1627 var_req_table REQ_TABLE;
1628
1629 var_sql VARCHAR2(2000) DEFAULT NULL;
1630 var_count NUMBER DEFAULT NULL;
1631
1632 BEGIN
1633
1634 msd_dem_common_utilities.log_debug ('Entering msd_spf_collect_history_data.launch_spf_shipment_data_ff...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1635
1636 /* STAGE I - Load Shipment Flat File *** BEGIN *** */
1637 msd_dem_common_utilities.log_message('--------------------------------Stage I - Begin---------------------------------------');
1638 var_request_num := 0;
1639
1640 /* Launch Flat File Loads */
1641 BEGIN
1642 var_request_id := null;
1643 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMLD', NULL, NULL, FALSE,
1644 p_sr_instance_id, 1440, p_file_separator, p_control_file_path, p_data_file_path, 3, null,
1645 null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
1646 null, null, null, null, null, null, null, null, null, null, p_data_file_name, p_auto_run_download);
1647 EXCEPTION
1648 WHEN OTHERS THEN
1649 retcode := -1;
1650 errbuf := substr(SQLERRM,1,150);
1651 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_shipment_data_ff - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1652 msd_dem_common_utilities.log_message ('Error while submitting request for Flat File Loads');
1653 msd_dem_common_utilities.log_message (errbuf);
1654 RETURN;
1655 END;
1656
1657 IF (var_req_table.COUNT <> 0)
1658 THEN
1659 var_req_table.DELETE;
1660 END IF;
1661
1662 var_request_num := var_request_num + 1;
1663 var_req_table(var_request_num).REQUEST_ID := var_request_id;
1664 var_req_table(var_request_num).DESCRIPTION := 'SPF Flat File Loads';
1665 var_req_table(var_request_num).IS_COMPLETE := FALSE;
1666 var_req_table(var_request_num).status := 1;
1667
1668 COMMIT;
1669
1670 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1671 msd_dem_common_utilities.log_message ('');
1672 msd_dem_common_utilities.log_message ('');
1673
1674
1675 /* Launch Push Setup Parameters */
1676 BEGIN
1677 var_request_id := null;
1678 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMPSP', NULL, NULL, FALSE,
1679 p_sr_instance_id, '-999', G_YES);
1680 EXCEPTION
1681 WHEN OTHERS THEN
1682 retcode := -1;
1683 errbuf := substr(SQLERRM,1,150);
1684 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_shipment_data_ff - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1685 msd_dem_common_utilities.log_message ('Error while submitting request for push setup parameters');
1686 msd_dem_common_utilities.log_message (errbuf);
1687 RETURN;
1688 END;
1689
1690 var_request_num := var_request_num + 1;
1691 var_req_table(var_request_num).REQUEST_ID := var_request_id;
1692 var_req_table(var_request_num).DESCRIPTION := 'SPF Push Setup Parameters';
1693 var_req_table(var_request_num).IS_COMPLETE := FALSE;
1694 var_req_table(var_request_num).status := 1;
1695
1696 COMMIT;
1697
1698 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1699 msd_dem_common_utilities.log_message ('');
1700 msd_dem_common_utilities.log_message ('');
1701
1702
1703 check_requests_completion(var_errbuf, var_retcode, var_req_table.LAST, p_run_time, var_req_table, p_check_interval, p_time_out);
1704 IF (var_retcode = -1)
1705 THEN
1706 retcode := -1;
1707 errbuf := var_errbuf;
1708 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_shipment_data_ff - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1709 msd_dem_common_utilities.log_message ('Error while waiting for requests for Stage I to complete.');
1710 msd_dem_common_utilities.log_message (errbuf);
1711 RETURN;
1712 END IF;
1713 IF (var_retcode = 1)
1714 THEN
1715 retcode := 1;
1716 errbuf := var_errbuf;
1717 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_shipment_data_ff - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1718 msd_dem_common_utilities.log_message ('One or more requests in Stage I completed with warnings.');
1719 msd_dem_common_utilities.log_message (errbuf);
1720 END IF;
1721
1722 msd_dem_common_utilities.log_message('--------------------------------Stage I - End-----------------------------------------');
1723 msd_dem_common_utilities.log_message ('');
1724 msd_dem_common_utilities.log_message ('');
1725 /* STAGE I - Load Shipment Flat File *** END *** */
1726
1727
1728 /* STAGE II - Move Shipment Date *** BEGIN *** */
1729 msd_dem_common_utilities.log_message('--------------------------------Stage II - Begin--------------------------------------');
1730 /* Move Shipment Data from T_SRC_SALES_TMPL to BIIO_SPF_SPARES_HIST_DATA */
1731
1732 var_sql := 'INSERT /*+ APPEND */ INTO ' || g_schema || '.BIIO_SPF_SPARES_HIST_DATA NOLOGGING '
1733 || ' (SDATE, LEVEL1, LEVEL2, SPF_ACTUAL_QUANTITY_DEP) '
1734 || ' SELECT mdd.datet, tsst.dm_item_code, tsst.dm_org_code, sum(tsst.ebs_ship_hist_ship_qty_sd) '
1735 || ' FROM ' || g_schema || '.t_src_sales_tmpl tsst, '
1736 || ' msd_dem_dates mdd '
1737 || ' WHERE tsst.sales_date BETWEEN mdd.start_date AND mdd.end_date '
1738 || ' GROUP BY tsst.dm_item_code, tsst.dm_org_code, mdd.datet';
1739 msd_dem_common_utilities.log_debug ('Shipment Data move sql - ');
1740 msd_dem_common_utilities.log_debug (var_sql);
1741
1742 msd_dem_common_utilities.log_message ('Aggregating and moving shipment data from T_SRC_SALES_TMPL to BIIO_SPF_SPARES_HIST_DATA');
1743 msd_dem_common_utilities.log_debug ('Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1744 EXECUTE IMMEDIATE var_sql;
1745 var_count := SQL%ROWCOUNT;
1746 COMMIT;
1747
1748 msd_dem_common_utilities.log_debug ('Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1749 msd_dem_common_utilities.log_message ('Rows Moved - ' || to_char(var_count));
1750
1751 /* Truncate the sales staging table */
1752 msd_dem_common_utilities.log_message ('Truncate sales staging table...');
1753 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || g_schema || '.T_SRC_SALES_TMPL';
1754
1755 /* Analyze table BIIO_SPF_SPARES_HIST_DATA */
1756 msd_dem_common_utilities.log_message ('Analyzing table BIIO_SPF_SPARES_HIST_DATA...');
1757 msd_dem_collect_history_data.analyze_table (var_errbuf, var_retcode, g_schema || '.BIIO_SPF_SPARES_HIST_DATA');
1758 IF (var_retcode = -1)
1759 THEN
1760 retcode := -1;
1761 errbuf := var_errbuf;
1762 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_shipment_data_ff - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1763 msd_dem_common_utilities.log_message ('Error in call to msd_dem_collect_history_data.analyze_table');
1764 RETURN;
1765 END IF;
1766
1767 msd_dem_common_utilities.log_message('--------------------------------Stage II - End----------------------------------------');
1768 msd_dem_common_utilities.log_message ('');
1769 msd_dem_common_utilities.log_message ('');
1770 /* STAGE II - Move Shipment Date *** END *** */
1771
1772
1773 /* STAGE III - Launch Download *** BEGIN *** */
1774 msd_dem_common_utilities.log_message('--------------------------------Stage III - Begin-------------------------------------');
1775 var_request_num := 0;
1776
1777 IF (var_req_table.COUNT <> 0)
1778 THEN
1779 var_req_table.DELETE;
1780 END IF;
1781
1782 /* Launch the Download Workflow */
1783 IF (p_auto_run_download = G_YES)
1784 THEN
1785
1786 BEGIN
1787
1788 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFLSD', NULL, NULL, FALSE, 'WF_SPF_GL_DATA_DOWNLOAD', p_check_interval, p_time_out);
1789
1790 EXCEPTION
1791 WHEN OTHERS THEN
1792 retcode := -1;
1793 errbuf := substr(SQLERRM,1,150);
1794 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_shipment_data_ff - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1795 msd_dem_common_utilities.log_message ('Error while submitting request for launch download');
1796 msd_dem_common_utilities.log_message (errbuf);
1797 RETURN;
1798 END;
1799
1800 var_request_num := var_request_num + 1;
1801 var_req_table(var_request_num).REQUEST_ID := var_request_id;
1802 var_req_table(var_request_num).DESCRIPTION := 'SPF Launch Download';
1803 var_req_table(var_request_num).IS_COMPLETE := FALSE;
1804 var_req_table(var_request_num).status := 1;
1805
1806 COMMIT;
1807
1808 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
1809 msd_dem_common_utilities.log_message ('');
1810 msd_dem_common_utilities.log_message ('');
1811
1812 END IF;
1813
1814 IF (var_request_num > 0)
1815 THEN
1816
1817 check_requests_completion(var_errbuf, var_retcode, var_req_table.LAST, p_run_time, var_req_table, p_check_interval, p_time_out);
1818 IF (var_retcode = -1)
1819 THEN
1820 retcode := -1;
1821 errbuf := var_errbuf;
1822 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_shipment_data_ff - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1823 msd_dem_common_utilities.log_message ('Error while waiting for requests for Stage III to complete.');
1824 msd_dem_common_utilities.log_message (errbuf);
1825 RETURN;
1826 END IF;
1827 IF (var_retcode = 1)
1828 THEN
1829 retcode := 1;
1830 errbuf := var_errbuf;
1831 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_shipment_data_ff - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1832 msd_dem_common_utilities.log_message ('One or more requests in Stage III completed with warnings.');
1833 msd_dem_common_utilities.log_message (errbuf);
1834 END IF;
1835
1836 END IF;
1837
1838 msd_dem_common_utilities.log_message('--------------------------------Stage III - End---------------------------------------');
1839 msd_dem_common_utilities.log_message ('');
1840 msd_dem_common_utilities.log_message ('');
1841 /* STAGE III - Launch Download *** END *** */
1842
1843 msd_dem_common_utilities.log_debug ('Exiting msd_spf_collect_history_data.launch_spf_shipment_data_ff...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1844
1845 EXCEPTION
1846 WHEN OTHERS THEN
1847 retcode := -1;
1848 errbuf := substr(SQLERRM,1,150);
1849 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_spf_shipment_data_ff - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1850 msd_dem_common_utilities.log_message (errbuf);
1851 RETURN;
1852
1853 END LAUNCH_SPF_SHIPMENT_DATA_FF;
1854
1855
1856
1857 /*** PUBLIC FUNCTIONS ***/
1858
1859
1860 /*** PUBLIC PROCEDURES ***/
1861
1862
1863 PROCEDURE COLLECT_SPF_DATA (
1864 errbuf OUT NOCOPY VARCHAR2,
1865 retcode OUT NOCOPY VARCHAR2,
1866 p_sr_instance_id IN NUMBER,
1867 p_collection_group IN VARCHAR2,
1868 p_collection_method IN NUMBER,
1869 p_hidden_param1 IN VARCHAR2,
1870 p_date_range_type IN NUMBER,
1871 p_collection_window IN NUMBER,
1872 p_from_date IN VARCHAR2,
1873 p_to_date IN VARCHAR2,
1874 p_shipment_data IN NUMBER,
1875 p_usage_data IN NUMBER,
1876 p_install_base IN NUMBER,
1877 p_sales_forecast IN NUMBER,
1878 p_auto_run_download IN NUMBER,
1879 p_check_interval IN NUMBER DEFAULT 60,
1880 p_time_out IN NUMBER DEFAULT 86400,
1881 p_synchronous IN NUMBER DEFAULT G_NO,
1882 p_custom_usage_hist_view IN VARCHAR2 DEFAULT NULL,
1883 p_custom_ibuc_hist_view IN VARCHAR2 DEFAULT NULL,
1884 p_custom_sales_fcst_view IN VARCHAR2 DEFAULT NULL,
1885 p_custom_download_workflow IN VARCHAR2 DEFAULT NULL )
1886 IS
1887
1888 var_runtime DATE DEFAULT systimestamp;
1889
1890 var_errbuf VARCHAR2(2000) DEFAULT NULL;
1891 var_retcode VARCHAR2(100) DEFAULT 0;
1892
1893 var_instance_code VARCHAR2(30) DEFAULT NULL;
1894 var_apps_ver NUMBER DEFAULT NULL;
1895 var_dgmt NUMBER DEFAULT NULL;
1896 var_instance_type NUMBER DEFAULT NULL;
1897
1898 var_from_date DATE DEFAULT NULL;
1899 var_to_date DATE DEFAULT NULL;
1900
1901
1902 BEGIN
1903
1904 msd_dem_common_utilities.log_debug ('Entering msd_spf_collect_history_data.collect_spf_data...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1905
1906 /* Log the input parameters to the log file */
1907 msd_dem_common_utilities.log_message('----------------------------------Input Parameters - Begin------------------------------------------');
1908
1909 msd_dem_common_utilities.log_message(' ' || rpad('Source Instance ID', 30) || ' - ' || to_char(p_sr_instance_id));
1910 msd_dem_common_utilities.log_message(' ' || rpad('Collection Group', 30) || ' - ' || p_collection_group);
1911 msd_dem_common_utilities.log_message(' ' || rpad('Collection Method', 30) || ' - ' || to_char(p_collection_method));
1912 msd_dem_common_utilities.log_message(' ' || rpad('Date Range Type', 30) || ' - ' || to_char(p_date_range_type));
1913 msd_dem_common_utilities.log_message(' ' || rpad('Collection Window', 30) || ' - ' || to_char(p_collection_window));
1914 msd_dem_common_utilities.log_message(' ' || rpad('From Date', 30) || ' - ' || p_from_date);
1915 msd_dem_common_utilities.log_message(' ' || rpad('To Date', 30) || ' - ' || p_to_date);
1916 msd_dem_common_utilities.log_message(' ' || rpad('Shipment History', 30) || ' - ' || to_char(p_shipment_data));
1917 msd_dem_common_utilities.log_message(' ' || rpad('Usage History', 30) || ' - ' || to_char(p_usage_data));
1918 msd_dem_common_utilities.log_message(' ' || rpad('Install Base under Contracts', 30) || ' - ' || to_char(p_install_base));
1919 msd_dem_common_utilities.log_message(' ' || rpad('Sales Forecast', 30) || ' - ' || to_char(p_sales_forecast));
1920 msd_dem_common_utilities.log_message(' ' || rpad('Auto Run Download', 30) || ' - ' || to_char(p_auto_run_download));
1921
1922 msd_dem_common_utilities.log_message('-----------------------------------Input Parameters - End-------------------------------------------');
1923 msd_dem_common_utilities.log_message ('');
1924 msd_dem_common_utilities.log_message ('');
1925
1926 /* Log the optional input parameters to the output file */
1927 msd_dem_common_utilities.log_debug('----------------------------------Input Parameters - Begin------------------------------------------');
1928
1929 msd_dem_common_utilities.log_debug(' ' || rpad('Check Interval', 30) || ' - ' || to_char(p_check_interval));
1930 msd_dem_common_utilities.log_debug(' ' || rpad('Time Out', 30) || ' - ' || p_time_out);
1931 msd_dem_common_utilities.log_debug(' ' || rpad('Synchronous', 30) || ' - ' || to_char(p_synchronous));
1932 msd_dem_common_utilities.log_debug(' ' || rpad('Custom Usage History', 30) || ' - ' || p_custom_usage_hist_view);
1933 msd_dem_common_utilities.log_debug(' ' || rpad('Custom Install Base under Contracts', 30) || ' - ' || p_custom_ibuc_hist_view);
1934 msd_dem_common_utilities.log_debug(' ' || rpad('Custom Sales Forecast', 30) || ' - ' || p_custom_sales_fcst_view);
1935 msd_dem_common_utilities.log_debug(' ' || rpad('Custom Download Workflow', 30) || ' - ' || p_custom_download_workflow);
1936
1937 msd_dem_common_utilities.log_debug('-----------------------------------Input Parameters - End-------------------------------------------');
1938 msd_dem_common_utilities.log_debug ('');
1939 msd_dem_common_utilities.log_debug ('');
1940
1941
1942 var_retcode := 0;
1943
1944 /* Validate Input Parameters */
1945 msd_dem_common_utilities.log_message('------------------------------Validate Input Parameters - Begin-------------------------------------');
1946
1947 /* 1 - Only 12.1 Source and above are supported for collection */
1948 /* 2 - A Legacy Instance Type should be allowed only for Install Base under Contracts and Sales Forecast */
1949
1950 /* Get Instance Info */
1951 msd_dem_common_utilities.get_instance_info (
1952 var_errbuf,
1953 var_retcode,
1954 var_instance_code,
1955 var_apps_ver,
1956 var_dgmt,
1957 var_instance_type,
1958 p_sr_instance_id);
1959 IF (var_retcode = -1)
1960 THEN
1961 retcode := -1;
1962 errbuf := substr(SQLERRM,1,150);
1963 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1964 msd_dem_common_utilities.log_message ('Error in call to msd_dem_common_utilities.get_instance_info');
1965 msd_dem_common_utilities.log_message (errbuf);
1966 RETURN;
1967 END IF;
1968
1969 IF (var_instance_type <> 3 AND var_apps_ver <5)
1970 THEN
1971 retcode := -1;
1972 errbuf := 'Source Version ' || to_char(var_apps_ver) || ' is not supported';
1973 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1974 msd_dem_common_utilities.log_message (errbuf);
1975 RETURN;
1976 END IF;
1977
1978 IF (var_instance_type = 3 AND (p_shipment_data = G_YES OR p_usage_data = G_YES))
1979 THEN
1980 retcode := -1;
1981 errbuf := 'This program does not support legacy load for Shipment and Usage History. Please use the respective self service options.';
1982 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1983 msd_dem_common_utilities.log_message (errbuf);
1984 RETURN;
1985 END IF;
1986
1987 /* Get Instance DB Link */
1988 msd_dem_common_utilities.get_dblink (
1989 var_errbuf,
1990 var_retcode,
1991 p_sr_instance_id,
1992 g_dblink);
1993 IF (var_retcode = -1)
1994 THEN
1995 retcode := -1;
1996 errbuf := substr(SQLERRM,1,150);
1997 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
1998 msd_dem_common_utilities.log_message ('Error in call to msd_dem_common_utilities.get_dblink');
1999 msd_dem_common_utilities.log_message (errbuf);
2000 RETURN;
2001 END IF;
2002
2003 /* 3 - Atleast One series should be selected for collection */
2004
2005 IF (p_shipment_data = G_NO AND p_usage_data = G_NO AND p_install_base = G_NO AND p_sales_forecast = G_NO)
2006 THEN
2007 retcode := -1;
2008 errbuf := 'No series selected for collection. Please select atleast one series for collection.';
2009 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2010 msd_dem_common_utilities.log_message (errbuf);
2011 RETURN;
2012 END IF;
2013
2014
2015 /* 4 - Date Range Checks */
2016
2017 /* For Complete Collections, the fields history collection window, from date and to date should not be specified. If specified, display error and exit */
2018 IF (p_collection_method = 1 AND (p_collection_window IS NOT NULL OR p_from_date IS NOT NULL OR p_to_date IS NOT NULL))
2019 THEN
2020 retcode := -1;
2021 errbuf := 'For Collection Method - Complete, the date range filters should not be specified. If you want to run collection for a specific date range please select Net-change mode';
2022 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2023 msd_dem_common_utilities.log_message (errbuf);
2024 RETURN;
2025 END IF;
2026
2027 /* For Net change, for Rolling type, the field history collection window should be specified. If not specified, log error and exit */
2028 IF (p_collection_method = 2 AND p_date_range_type = 2 AND p_collection_window IS NULL)
2029 THEN
2030 retcode := -1;
2031 errbuf := 'For Collection Method - Net Change and Date Range Type - Rolling, the field History Collection Window in mandatory.';
2032 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2033 msd_dem_common_utilities.log_message (errbuf);
2034 RETURN;
2035 END IF;
2036
2037 /* For Net change, for Absolute type, the fields from date and to date should be specified. If not specified, log error and exit */
2038 IF (p_collection_method = 2 AND p_date_range_type = 1 AND (p_from_date IS NULL OR p_to_date IS NULL))
2039 THEN
2040 retcode := -1;
2041 errbuf := 'For Collection Method - Net Change and Date Range Type - Absolute, the fields From Date and To Date are mandatory.';
2042 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2043 msd_dem_common_utilities.log_message (errbuf);
2044 RETURN;
2045 END IF;
2046
2047 /* For Net change, for Rolling type, the fields from date and to date should not be specified. If specified, log error and exit */
2048 IF (p_collection_method = 2 AND p_date_range_type = 2 AND (p_from_date IS NOT NULL OR p_to_date IS NOT NULL))
2049 THEN
2050 retcode := -1;
2051 errbuf := 'For Collection Method - Net Change and Date Range Type - Rolling, the fields From Date and To Date should not be specified. Only the field History Collection Window should be specified';
2052 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2053 msd_dem_common_utilities.log_message (errbuf);
2054 RETURN;
2055 END IF;
2056
2057 /* For Net change, for Absolute type, the field history collection window should not be specified. If specified, log error and exit */
2058 IF (p_collection_method = 2 AND p_date_range_type = 1 AND p_collection_window IS NOT NULL)
2059 THEN
2060 retcode := -1;
2061 errbuf := 'For Collection Method - Net Change and Date Range Type - Absolute, the field History Collection Window should not be specified. Only the fields From Date and To Date should be specified';
2062 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2063 msd_dem_common_utilities.log_message (errbuf);
2064 RETURN;
2065 END IF;
2066
2067
2068 /* 5 - Profile MSD_DEM Schema should be set */
2069
2070 /* Profile MSD_DEM Schema should be set */
2071 IF (G_SCHEMA IS NULL)
2072 THEN
2073 retcode := -1;
2074 errbuf := 'Profile MSD_DEM Schema is not set.';
2075 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2076 msd_dem_common_utilities.log_message (errbuf);
2077 RETURN;
2078 END IF;
2079
2080 msd_dem_common_utilities.log_message('-------------------------------Validate Input Parameters - End--------------------------------------');
2081 msd_dem_common_utilities.log_message ('');
2082 msd_dem_common_utilities.log_message ('');
2083
2084
2085 /* Get Date Range for Collection */
2086 msd_dem_common_utilities.log_message('--------------------------------Collection Date Range - Begin---------------------------------------');
2087
2088 /* If Complete, default the from the to dates */
2089 IF (p_collection_method = 1)
2090 THEN
2091
2092 var_from_date := to_date('01/01/1000', 'DD/MM/YYYY');
2093 var_to_date := to_date('31/12/4000', 'DD/MM/YYYY');
2094
2095 ELSE /* Net Change */
2096
2097 /* Absolute */
2098 IF (p_date_range_type = 1)
2099 THEN
2100
2101 var_from_date := fnd_date.canonical_to_date (p_from_date);
2102 var_to_date := fnd_date.canonical_to_date (p_to_date);
2103
2104 /* For Net change, for Absolute type, the field from date should be less than or equal to date If not, log error and exit */
2105 IF (var_from_date > var_to_date)
2106 THEN
2107 retcode := -1;
2108 errbuf := 'From Date should not be greater than To Date';
2109 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2110 msd_dem_common_utilities.log_message (errbuf);
2111 RETURN;
2112 END IF;
2113
2114 ELSE /* Rolling */
2115
2116 /* For Net change, for Rolling type, the field history collection window should be greater than zero.If not, log error and exit */
2117 IF (p_collection_window < 1)
2118 THEN
2119 retcode := -1;
2120 errbuf := 'History Collection Window must be a positive number';
2121 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2122 msd_dem_common_utilities.log_message (errbuf);
2123 RETURN;
2124 END IF;
2125
2126 var_to_date := trunc(sysdate);
2127 var_from_date := var_to_date - p_collection_window + 1;
2128
2129 END IF;
2130 END IF;
2131
2132 msd_dem_common_utilities.log_message(' ' || rpad('From Date (MM/DD/YYYY)', 30) || ' - ' || to_char(var_from_date, 'MM/DD/YYYY'));
2133 msd_dem_common_utilities.log_message(' ' || rpad('To Date (MM/DD/YYYY)', 30) || ' - ' || to_char(var_to_date, 'MM/DD/YYYY'));
2134
2135 msd_dem_common_utilities.log_message('---------------------------------Collection Date Range - End----------------------------------------');
2136 msd_dem_common_utilities.log_message ('');
2137 msd_dem_common_utilities.log_message ('');
2138
2139
2140 /* Truncate all the staging tables */
2141 truncate_spf_staging(var_errbuf, var_retcode);
2142 IF (var_retcode = -1)
2143 THEN
2144 retcode := -1;
2145 errbuf := var_errbuf;
2146 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2147 msd_dem_common_utilities.log_message ('Error in call to truncate_spf_staging');
2148 RETURN;
2149 END IF;
2150
2151 /* Call the main program to run the spf data collection in various stages */
2152 msd_dem_common_utilities.log_debug ('Calling msd_spf_collect_history_data.launch_spf_data_collection...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2153 launch_spf_data_collection (var_errbuf,
2154 var_retcode,
2155 var_runtime,
2156 p_sr_instance_id,
2157 p_collection_group,
2158 p_collection_method,
2159 p_date_range_type,
2160 p_collection_window,
2161 p_from_date,
2162 p_to_date,
2163 var_from_date,
2164 var_to_date,
2165 p_shipment_data,
2166 p_usage_data,
2167 p_install_base,
2168 p_sales_forecast,
2169 p_auto_run_download,
2170 G_NO,
2171 null,
2172 null,
2173 null,
2174 null,
2175 p_check_interval,
2176 p_time_out,
2177 p_synchronous,
2178 p_custom_usage_hist_view,
2179 p_custom_ibuc_hist_view,
2180 p_custom_sales_fcst_view,
2181 p_custom_download_workflow);
2182 IF (var_retcode = -1)
2183 THEN
2184 retcode := -1;
2185 errbuf := var_errbuf;
2186 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_spf_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2187 msd_dem_common_utilities.log_message ('Error in call to launch_spf_data_collection');
2188 RETURN;
2189 END IF;
2190
2191 msd_dem_common_utilities.log_debug ('Exiting msd_spf_collect_history_data.collect_spf_data...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2192
2193 END COLLECT_SPF_DATA;
2194
2195
2196
2197
2198 PROCEDURE LAUNCH_DOWNLOAD (
2199 errbuf OUT NOCOPY VARCHAR2,
2200 retcode OUT NOCOPY VARCHAR2,
2201 p_workflow_lkup_code IN VARCHAR2,
2202 p_auto_run_download IN NUMBER,
2203 p_check_interval IN NUMBER DEFAULT 60,
2204 p_time_out IN NUMBER DEFAULT 18000 )
2205 IS
2206
2207 var_user_id NUMBER DEFAULT NULL;
2208 var_sql VARCHAR2(1000) DEFAULT NULL;
2209 var_user_name VARCHAR2(100) DEFAULT NULL;
2210 var_user_password VARCHAR2(255) DEFAULT NULL;
2211 var_url VARCHAR2(1000) DEFAULT NULL;
2212 var_ret_val VARCHAR2(255) DEFAULT NULL;
2213 var_wf_schema_name VARCHAR2(255) DEFAULT NULL;
2214
2215 BEGIN
2216
2217 msd_dem_common_utilities.log_debug ('Entering msd_spf_collect_history_data.launch_download...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2218
2219 /* Log the input parameters to the log file */
2220 msd_dem_common_utilities.log_message('----------------------------------Input Parameters - Begin------------------------------------------');
2221
2222 msd_dem_common_utilities.log_message(' ' || rpad('Workflow Lookup Code', 30) || ' - ' || p_workflow_lkup_code);
2223 msd_dem_common_utilities.log_message(' ' || rpad('Auto Run Download', 30) || ' - ' || to_char(p_auto_run_download));
2224
2225 msd_dem_common_utilities.log_message('-----------------------------------Input Parameters - End-------------------------------------------');
2226 msd_dem_common_utilities.log_message ('');
2227 msd_dem_common_utilities.log_message ('');
2228
2229 /* Log the optional input parameters to the output file */
2230 msd_dem_common_utilities.log_debug('----------------------------------Input Parameters - Begin------------------------------------------');
2231
2232 msd_dem_common_utilities.log_debug(' ' || rpad('Check Interval', 30) || ' - ' || to_char(p_check_interval));
2233 msd_dem_common_utilities.log_debug(' ' || rpad('Time Out', 30) || ' - ' || p_time_out);
2234
2235 msd_dem_common_utilities.log_debug('-----------------------------------Input Parameters - End-------------------------------------------');
2236 msd_dem_common_utilities.log_debug ('');
2237 msd_dem_common_utilities.log_debug ('');
2238
2239 IF (p_auto_run_download = G_NO)
2240 THEN
2241 msd_dem_common_utilities.log_message('Auto Run Download is set to No. Exiting without launching the download workflow.');
2242 RETURN;
2243 END IF;
2244
2245 /* Get the dm user id */
2246 var_user_id := to_number(msd_dem_common_utilities.get_app_id_text ('MSD_DEM_DEMANTRA_OBJECT_ID', 'COMP_DM', 1, 'user_id'));
2247 IF (var_user_id IS NULL)
2248 THEN
2249 retcode := -1;
2250 errbuf := 'Unable to get dm component user';
2251 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_download - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2252 msd_dem_common_utilities.log_message (errbuf);
2253 RETURN;
2254 ELSE
2255 msd_dem_common_utilities.log_debug('User Id - ' || to_char(var_user_id));
2256 END IF;
2257
2258 /* Get the user name and password */
2259 var_sql := 'SELECT user_name, password FROM ' || g_schema || '.user_id WHERE user_id = ' || to_char(var_user_id);
2260
2261 msd_dem_common_utilities.log_debug('User details query - ');
2262 msd_dem_common_utilities.log_debug(var_sql);
2263 EXECUTE IMMEDIATE var_sql INTO var_user_name, var_user_password;
2264
2265 IF (var_user_name IS NULL or var_user_password IS NULL)
2266 THEN
2267 retcode := -1;
2268 errbuf := 'Unable to get user details';
2269 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_download - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2270 msd_dem_common_utilities.log_message (errbuf);
2271 RETURN;
2272 END IF;
2273
2274 /* Get base Demantra URL */
2275 var_url := FND_PROFILE.VALUE('MSD_DEM_HOST_URL');
2276
2277 IF (var_url IS NULL)
2278 THEN
2279 retcode := -1;
2280 errbuf := 'Unable to get host url';
2281 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_download - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2282 msd_dem_common_utilities.log_message (errbuf);
2283 RETURN;
2284 ELSE
2285 msd_dem_common_utilities.log_debug('Host URL - <' || var_url || '>');
2286 END IF;
2287
2288 /* Get the workflow schema name */
2289 var_wf_schema_name := trim(msd_dem_common_utilities.get_app_id_text ('MSD_DEM_DEMANTRA_OBJECT_ID', p_workflow_lkup_code, 1, 'schema_name'));
2290
2291 IF (var_wf_schema_name IS NULL)
2292 THEN
2293 retcode := -1;
2294 errbuf := 'Unable to get workflow schema name';
2295 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_download - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2296 msd_dem_common_utilities.log_message (errbuf);
2297 RETURN;
2298 END IF;
2299
2300 /* Build the workflow server sql */
2301 var_sql := 'SELECT utl_http.request(''' || var_url || '/WorkflowServer?action=run_proc&user=' || var_user_name || '&password=' || var_user_password
2302 || '&schema=' || replace(var_wf_schema_name, ' ', '%20') ||'&sync=no'') FROM dual';
2303 msd_dem_common_utilities.log_debug('Workflow Calling sql - ');
2304 msd_dem_common_utilities.log_debug(var_sql);
2305
2306 msd_dem_common_utilities.log_message ('Launching download workflow - ' || var_wf_schema_name);
2307 BEGIN
2308
2309 EXECUTE IMMEDIATE var_sql INTO var_ret_val;
2310
2311 IF (to_number(var_ret_val) < 0)
2312 THEN
2313
2314 retcode := -1;
2315 errbuf := var_ret_val;
2316 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_download - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2317 msd_dem_common_utilities.log_message ('Failed to launch download workflow');
2318 msd_dem_common_utilities.log_message (errbuf);
2319 RETURN;
2320
2321 ELSE
2322
2323 msd_dem_common_utilities.log_message('Launched workflow successfully.');
2324 msd_dem_common_utilities.log_message('Workflow Process Id - ' || to_number(var_ret_val));
2325 msd_dem_common_utilities.log_message('Please check the workflow process status from workflow manager.');
2326
2327 END IF;
2328
2329 EXCEPTION
2330 WHEN OTHERS THEN
2331 retcode := -1;
2332 errbuf := substr(SQLERRM,1,150);
2333 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_download - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2334 msd_dem_common_utilities.log_message ('Error while launching download workflow');
2335 msd_dem_common_utilities.log_message (errbuf);
2336 RETURN;
2337 END;
2338
2339 msd_dem_common_utilities.log_debug ('Entering msd_spf_collect_history_data.launch_download...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2340
2341 EXCEPTION
2342 WHEN OTHERS THEN
2343 retcode := -1;
2344 errbuf := substr(SQLERRM,1,150);
2345 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.launch_download - EXCEPTION ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2346 msd_dem_common_utilities.log_message (errbuf);
2347 RETURN;
2348
2349 END LAUNCH_DOWNLOAD;
2350
2351
2352 PROCEDURE TRUNCATE_SPF_CMRO_STAGING (
2353 errbuf OUT NOCOPY VARCHAR2,
2354 retcode OUT NOCOPY VARCHAR2 )
2355 IS
2356
2357 var_retval BOOLEAN DEFAULT NULL;
2358 var_dummy1 VARCHAR2(50) DEFAULT NULL;
2359 var_dummy2 VARCHAR2(50) DEFAULT NULL;
2360 var_msd_schema_name VARCHAR2(50) DEFAULT NULL;
2361
2362 var_table_name VARCHAR2(100) DEFAULT NULL;
2363 var_errbuf VARCHAR2(1000) DEFAULT NULL;
2364 var_retcode VARCHAR2(10) DEFAULT NULL;
2365
2366 BEGIN
2367
2368 msd_dem_common_utilities.log_debug ('Entering msd_spf_collect_history_data.truncate_spf_cmro_staging...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2369
2370 truncate_spf_staging(var_errbuf, var_retcode);
2371 IF (var_retcode = -1) THEN
2372 retcode := -1;
2373 errbuf := var_errbuf;
2374 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.truncate_spf_cmro_staging - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2375 msd_dem_common_utilities.log_message ('Error in call to truncate_spf_staging');
2376 RETURN;
2377 END IF;
2378
2379 /* Get the MSD schema name */
2380 var_retval := fnd_installation.get_app_info ('MSD', var_dummy1, var_dummy2, var_msd_schema_name);
2381
2382 msd_dem_common_utilities.log_debug(' ' || rpad('MSD Schema Name', 30) || ' - ' || var_msd_schema_name);
2383 msd_dem_common_utilities.log_debug(' ' || rpad('Demantra Schema Name', 30) || ' - ' || g_schema);
2384 msd_dem_common_utilities.log_debug ('');
2385 msd_dem_common_utilities.log_debug ('');
2386
2387 msd_dem_common_utilities.log_message ('');
2388 msd_dem_common_utilities.log_message ('');
2389 msd_dem_common_utilities.log_message('Truncating MSD Staging Tables...');
2390
2391 var_table_name := var_msd_schema_name || '.' || G_CMRO_WO_HIST_TABLE;
2392 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2393 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2394
2395 var_table_name := var_msd_schema_name || '.' || G_CMRO_MTL_USG_TABLE;
2396 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2397 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2398
2399 var_table_name := var_msd_schema_name || '.' || G_CMRO_RES_USG_TABLE;
2400 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2401 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2402
2403 var_table_name := var_msd_schema_name || '.MSD_SPF_CMRO_BOM';
2404 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2405 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2406
2407 msd_dem_common_utilities.log_debug ('');
2408 msd_dem_common_utilities.log_debug ('');
2409
2410 msd_dem_common_utilities.log_message('Truncating Demantra Staging Tables...');
2411
2412 var_table_name := g_schema || '.BIIO_SPF_CMRO_DATA';
2413 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2414 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2415
2416 var_table_name := g_schema || '.BIIO_SPF_VISIT_TYPE';
2417 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2418 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2419
2420 var_table_name := g_schema || '.BIIO_SPF_VISIT_STAGE_TYPE';
2421 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2422 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2423
2424 --var_table_name := g_schema || '.BIIO_SPF_MAINT_TYPE';
2425 --msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2426 --EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2427
2428 msd_dem_common_utilities.log_debug ('');
2429 msd_dem_common_utilities.log_debug ('');
2430
2431 msd_dem_common_utilities.log_message('Truncating Demantra Staging ERR Tables...');
2432
2433 var_table_name := g_schema || '.BIIO_SPF_CMRO_DATA_ERR';
2434 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2435 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2436
2437 var_table_name := g_schema || '.BIIO_SPF_VISIT_TYPE_ERR';
2438 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2439 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2440
2441 var_table_name := g_schema || '.BIIO_SPF_VISIT_STAGE_TYPE_ERR';
2442 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2443 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2444
2445 --var_table_name := g_schema || '.BIIO_SPF_MAINT_TYPE_ERR';
2446 --msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2447 --EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2448
2449 msd_dem_common_utilities.log_message ('');
2450 msd_dem_common_utilities.log_message ('');
2451 msd_dem_common_utilities.log_debug ('');
2452 msd_dem_common_utilities.log_debug ('');
2453
2454 msd_dem_common_utilities.log_debug ('Exiting msd_spf_collect_history_data.truncate_spf_cmro_staging...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2455
2456 EXCEPTION
2457 WHEN OTHERS THEN
2458 retcode := -1;
2459 errbuf := substr(SQLERRM,1,150);
2460 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.truncate_spf_cmro_staging - EXCEPTION ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2461 msd_dem_common_utilities.log_message (errbuf);
2462 RETURN;
2463
2464 END TRUNCATE_SPF_CMRO_STAGING;
2465
2466
2467 PROCEDURE TRUNCATE_SPF_STAGING (
2468 errbuf OUT NOCOPY VARCHAR2,
2469 retcode OUT NOCOPY VARCHAR2 )
2470 IS
2471
2472 var_retval BOOLEAN DEFAULT NULL;
2473 var_dummy1 VARCHAR2(50) DEFAULT NULL;
2474 var_dummy2 VARCHAR2(50) DEFAULT NULL;
2475 var_msd_schema_name VARCHAR2(50) DEFAULT NULL;
2476
2477 var_table_name VARCHAR2(100) DEFAULT NULL;
2478
2479 BEGIN
2480
2481 msd_dem_common_utilities.log_debug ('Entering msd_spf_collect_history_data.truncate_spf_staging...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2482
2483 /* Get the MSD schema name */
2484 var_retval := fnd_installation.get_app_info ('MSD', var_dummy1, var_dummy2, var_msd_schema_name);
2485
2486 msd_dem_common_utilities.log_debug(' ' || rpad('MSD Schema Name', 30) || ' - ' || var_msd_schema_name);
2487 msd_dem_common_utilities.log_debug(' ' || rpad('Demantra Schema Name', 30) || ' - ' || g_schema);
2488 msd_dem_common_utilities.log_debug ('');
2489 msd_dem_common_utilities.log_debug ('');
2490
2491 msd_dem_common_utilities.log_message ('');
2492 msd_dem_common_utilities.log_message ('');
2493 msd_dem_common_utilities.log_message('Truncating MSD Staging Tables...');
2494
2495 var_table_name := var_msd_schema_name || '.MSD_SPF_ST_SPARE_USAGE';
2496 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2497 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2498
2499 var_table_name := var_msd_schema_name || '.MSD_SPF_ITEM_SUPERSESSION';
2500 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2501 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2502
2503 var_table_name := var_msd_schema_name || '.MSD_SPF_MODEL_BOM_COMPONENTS';
2504 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2505 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2506
2507 var_table_name := var_msd_schema_name || '.MSD_SPF_MODEL_ORGS';
2508 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2509 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2510
2511 var_table_name := var_msd_schema_name || '.MSD_SPF_MFG_BOM_TEMP';
2512 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2513 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2514
2515 msd_dem_common_utilities.log_debug ('');
2516 msd_dem_common_utilities.log_debug ('');
2517
2518 msd_dem_common_utilities.log_message('Truncating Demantra Staging Tables...');
2519
2520 var_table_name := g_schema || '.BIIO_SPF_DATA';
2521 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2522 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2523
2524 var_table_name := g_schema || '.BIIO_SPF_SALES_FCST_DATA';
2525 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2526 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2527
2528 var_table_name := g_schema || '.BIIO_SPF_SPARES_HIST_DATA';
2529 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2530 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2531
2532 var_table_name := g_schema || '.BIIO_SPF_BASE_MODEL';
2533 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2534 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2535
2536 var_table_name := g_schema || '.BIIO_SPF_CHILD';
2537 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2538 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2539
2540 var_table_name := g_schema || '.BIIO_SPF_LATEST_REVISION';
2541 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2542 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2543
2544 var_table_name := g_schema || '.BIIO_SPF_POPULATION';
2545 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2546 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2547
2548 var_table_name := g_schema || '.BIIO_SPF_LEVEL';
2549 msd_dem_common_utilities.log_debug('Deleteing data from table ' || var_table_name);
2550 EXECUTE IMMEDIATE 'DELETE FROM ' || var_table_name;
2551
2552 var_table_name := g_schema || '.BIIO_PURGE_IB_HISTORY';
2553 msd_dem_common_utilities.log_debug('Deleteing data from table ' || var_table_name);
2554 EXECUTE IMMEDIATE 'DELETE FROM ' || var_table_name;
2555
2556 var_table_name := g_schema || '.BIIO_PURGE_SPARE_HISTORY';
2557 msd_dem_common_utilities.log_debug('Deleteing data from table ' || var_table_name);
2558 EXECUTE IMMEDIATE 'DELETE FROM ' || var_table_name;
2559
2560 var_table_name := g_schema || '.T_SRC_SALES_TMPL';
2561 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2562 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2563
2564 var_table_name := g_schema || '.T_SRC_LOC_TMPL';
2565 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2566 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2567
2568 var_table_name := g_schema || '.T_SRC_ITEM_TMPL';
2569 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2570 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2571
2572 msd_dem_common_utilities.log_debug ('');
2573 msd_dem_common_utilities.log_debug ('');
2574
2575 msd_dem_common_utilities.log_message('Truncating Demantra Staging ERR Tables...');
2576
2577 var_table_name := g_schema || '.BIIO_SPF_DATA_ERR';
2578 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2579 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2580
2581 var_table_name := g_schema || '.BIIO_SPF_SALES_FCST_DATA_ERR';
2582 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2583 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2584
2585 var_table_name := g_schema || '.BIIO_SPF_SPARES_HIST_DATA_ERR';
2586 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2587 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2588
2589 var_table_name := g_schema || '.BIIO_SPF_BASE_MODEL_ERR';
2590 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2591 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2592
2593 var_table_name := g_schema || '.BIIO_SPF_CHILD_ERR';
2594 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2595 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2596
2597 var_table_name := g_schema || '.BIIO_SPF_LATEST_REVISION_ERR';
2598 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2599 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2600
2601 var_table_name := g_schema || '.BIIO_SPF_POPULATION_ERR';
2602 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2603 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2604
2605 var_table_name := g_schema || '.BIIO_SPF_LEVEL_ERR';
2606 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2607 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2608
2609 var_table_name := g_schema || '.BIIO_PURGE_IB_HISTORY_ERR';
2610 msd_dem_common_utilities.log_debug('Deleteing data from table ' || var_table_name);
2611 EXECUTE IMMEDIATE 'DELETE FROM ' || var_table_name;
2612
2613 var_table_name := g_schema || '.BIIO_PURGE_SPARE_HISTORY_ERR';
2614 msd_dem_common_utilities.log_debug('Deleteing data from table ' || var_table_name);
2615 EXECUTE IMMEDIATE 'DELETE FROM ' || var_table_name;
2616
2617 var_table_name := g_schema || '.T_SRC_SALES_TMPL_ERR';
2618 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2619 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2620
2621 var_table_name := g_schema || '.T_SRC_LOC_TMPL_ERR';
2622 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2623 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2624
2625 var_table_name := g_schema || '.T_SRC_ITEM_TMPL_ERR';
2626 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
2627 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
2628
2629 msd_dem_common_utilities.log_message ('');
2630 msd_dem_common_utilities.log_message ('');
2631 msd_dem_common_utilities.log_debug ('');
2632 msd_dem_common_utilities.log_debug ('');
2633
2634 msd_dem_common_utilities.log_debug ('Exiting msd_spf_collect_history_data.truncate_spf_staging...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2635
2636 EXCEPTION
2637 WHEN OTHERS THEN
2638 retcode := -1;
2639 errbuf := substr(SQLERRM,1,150);
2640 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.truncate_spf_staging - EXCEPTION ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2641 msd_dem_common_utilities.log_message (errbuf);
2642 RETURN;
2643
2644 END TRUNCATE_SPF_STAGING;
2645
2646
2647
2648
2649 PROCEDURE COLLECT_INSTALL_BASE_UC_DATA (
2650 errbuf OUT NOCOPY VARCHAR2,
2651 retcode OUT NOCOPY VARCHAR2,
2652 p_sr_instance_id IN NUMBER,
2653 p_collection_method IN NUMBER,
2654 p_from_date IN VARCHAR2,
2655 p_to_date IN VARCHAR2,
2656 p_custom_ibuc_hist_view IN VARCHAR2 DEFAULT NULL )
2657 IS
2658
2659 var_errbuf VARCHAR2(2000) DEFAULT NULL;
2660 var_retcode VARCHAR2(100) DEFAULT 0;
2661
2662 var_series_name VARCHAR2(250) DEFAULT NULL;
2663 var_series_type NUMBER DEFAULT NULL;
2664 var_identifier VARCHAR2(30) DEFAULT NULL;
2665 var_custom_view_name VARCHAR2(30) DEFAULT NULL;
2666 var_ps_view_name VARCHAR2(30) DEFAULT NULL;
2667 var_is_custom NUMBER(1) DEFAULT NULL;
2668
2669 var_key_values VARCHAR2(4000) DEFAULT NULL;
2670 var_large_sql VARCHAR2(32000) DEFAULT NULL;
2671
2672 var_from_date_dt DATE DEFAULT NULL;
2673 var_to_date_dt DATE DEFAULT NULL;
2674
2675 CURSOR c_get_series_info (p_series_id NUMBER)
2676 IS
2677 SELECT
2678 series_name,
2679 series_type,
2680 identifier,
2681 custom_view_name,
2682 ps_view_name
2683 FROM msd_dem_series
2684 WHERE series_id = p_series_id;
2685
2686
2687 BEGIN
2688
2689 msd_dem_common_utilities.log_debug ('Entering msd_spf_collect_history_data.collect_install_base_uc_data...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2690
2691 /* Log the input parameters to the log file */
2692 msd_dem_common_utilities.log_message('----------------------------------Input Parameters - Begin------------------------------------------');
2693
2694 msd_dem_common_utilities.log_message(' ' || rpad('Source Instance ID', 30) || ' - ' || to_char(p_sr_instance_id));
2695 msd_dem_common_utilities.log_message(' ' || rpad('Collection Method', 30) || ' - ' || to_char(p_collection_method));
2696 msd_dem_common_utilities.log_message(' ' || rpad('From Date (MM/DD/YYYY)', 30) || ' - ' || p_from_date);
2697 msd_dem_common_utilities.log_message(' ' || rpad('To Date (MM/DD/YYYY)', 30) || ' - ' || p_to_date);
2698
2699 msd_dem_common_utilities.log_message('-----------------------------------Input Parameters - End-------------------------------------------');
2700 msd_dem_common_utilities.log_message ('');
2701 msd_dem_common_utilities.log_message ('');
2702
2703 /* Log the optional input parameters to the output file */
2704 msd_dem_common_utilities.log_debug('----------------------------------Input Parameters - Begin------------------------------------------');
2705
2706 msd_dem_common_utilities.log_debug(' ' || rpad('Custom Install Base under Contracts', 30) || ' - ' || p_custom_ibuc_hist_view);
2707
2708 msd_dem_common_utilities.log_debug('-----------------------------------Input Parameters - End-------------------------------------------');
2709 msd_dem_common_utilities.log_debug ('');
2710 msd_dem_common_utilities.log_debug ('');
2711
2712
2713 /* For a weekly or monthly Demantra schema, change the from date to start bucket date
2714 and to date to end bucket date */
2715 IF( lower(msd_dem_common_utilities.dm_time_level) <> 'day' AND p_collection_method <> 1)
2716 THEN
2717
2718 /* Get bucket start date for start date */
2719 SELECT start_date
2720 INTO var_from_date_dt
2721 FROM msd_dem_dates
2722 WHERE fnd_date.canonical_to_date(p_from_date) BETWEEN start_date AND end_date;
2723
2724 /* Get bucket end date for end date */
2725 SELECT end_date
2726 INTO var_to_date_dt
2727 FROM msd_dem_dates
2728 WHERE fnd_date.canonical_to_date(p_to_date) BETWEEN start_date AND end_date;
2729
2730
2731 ELSE /* Daily system or complete refresh - assign the same dates */
2732
2733 var_from_date_dt := fnd_date.canonical_to_date(p_from_date);
2734 var_to_date_dt := fnd_date.canonical_to_date(p_to_date);
2735
2736 END IF;
2737
2738 var_retcode := 0;
2739
2740 /* Get the series info for Install Base under Contracts */
2741 OPEN c_get_series_info (G_INSTALL_BASE_UC_SERIES_ID);
2742 FETCH c_get_series_info INTO var_series_name,
2743 var_series_type,
2744 var_identifier,
2745 var_custom_view_name,
2746 var_ps_view_name;
2747 CLOSE c_get_series_info;
2748 IF ( var_series_name IS NULL
2749 OR var_series_type IS NULL
2750 OR var_identifier IS NULL
2751 OR var_ps_view_name IS NULL)
2752 THEN
2753 retcode := -1;
2754 errbuf := 'Unable to get series information for Install Base under Contracts from table msd_dem_series';
2755 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_install_base_uc_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2756 msd_dem_common_utilities.log_message (errbuf);
2757 RETURN;
2758 END IF;
2759
2760 /* Check if custom view is specified for the series */
2761 IF (var_custom_view_name IS NULL)
2762 THEN
2763 var_is_custom := 0;
2764 ELSE
2765 var_is_custom := 1;
2766 END IF;
2767
2768 /* Build key value pairs */
2769 IF (p_collection_method = 1)
2770 THEN
2771 var_key_values := '$C_TIME_CLAUSE# $';
2772 ELSE
2773 var_key_values := '$C_TIME_CLAUSE#' || ' AND ibuc.sdate between to_date(''' || to_char(var_from_date_dt, 'MM/DD/YYYY') || ''', ''MM/DD/YYYY'') '
2774 || ' and to_date(''' || to_char(var_to_date_dt, 'MM/DD/YYYY') || ''', ''MM/DD/YYYY'') $';
2775 END IF;
2776
2777 var_key_values := var_key_values || 'C_DEM_SCHEMA#' || g_schema
2778 || '$C_SR_INSTANCE_ID#' || to_char(p_sr_instance_id) || '$';
2779
2780 /* Get the query */
2781 msd_dem_query_utilities.get_query3 (
2782 var_retcode,
2783 var_large_sql,
2784 var_identifier,
2785 null,
2786 var_key_values,
2787 var_is_custom,
2788 var_custom_view_name,
2789 var_series_type,
2790 var_ps_view_name);
2791 IF (var_retcode = -1)
2792 THEN
2793 retcode := -1;
2794 errbuf := 'Error in call to msd_dem_query_utilities.get_query3';
2795 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_install_base_uc_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2796 msd_dem_common_utilities.log_message (errbuf);
2797 RETURN;
2798 END IF;
2799
2800 msd_dem_common_utilities.log_debug ('Query - ');
2801 msd_dem_common_utilities.log_debug (var_large_sql);
2802
2803 /* Execute the query */
2804 msd_dem_common_utilities.log_debug ('Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2805 BEGIN
2806 EXECUTE IMMEDIATE var_large_sql;
2807 EXCEPTION
2808 WHEN OTHERS THEN
2809 retcode := -1;
2810 errbuf := substr(SQLERRM,1,150);
2811 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_install_base_uc_data - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2812 msd_dem_common_utilities.log_message ('Error while executing query');
2813 msd_dem_common_utilities.log_message (errbuf);
2814 RETURN;
2815 END;
2816 msd_dem_common_utilities.log_debug ('Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2817
2818
2819 msd_dem_common_utilities.log_debug ('Exiting msd_spf_collect_history_data.collect_install_base_uc_data...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2820
2821 EXCEPTION
2822 WHEN OTHERS THEN
2823 retcode := -1;
2824 errbuf := substr(SQLERRM,1,150);
2825 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_install_base_uc_data - EXCEPTION ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2826 msd_dem_common_utilities.log_message (errbuf);
2827 RETURN;
2828
2829 END COLLECT_INSTALL_BASE_UC_DATA;
2830
2831
2832
2833
2834 PROCEDURE POPULATE_STAGING_TABLE (
2835 errbuf OUT NOCOPY VARCHAR2,
2836 retcode OUT NOCOPY VARCHAR2,
2837 p_entity_name IN VARCHAR2,
2838 p_sr_instance_id IN NUMBER,
2839 p_key_value_pairs IN VARCHAR2 DEFAULT NULL )
2840 IS
2841 var_is_present NUMBER DEFAULT NULL;
2842 var_key_value_pairs VARCHAR2(500) DEFAULT NULL;
2843 BEGIN
2844
2845 msd_dem_common_utilities.log_debug ('Entering msd_spf_collect_history_data.populate_staging_table...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2846
2847 /* Log the input parameters to the log file */
2848 msd_dem_common_utilities.log_message('----------------------------------Input Parameters - Begin------------------------------------------');
2849
2850 msd_dem_common_utilities.log_message(' ' || rpad('Entity Name', 30) || ' - ' || p_entity_name);
2851 msd_dem_common_utilities.log_message(' ' || rpad('Source Instance ID', 30) || ' - ' || to_char(p_sr_instance_id));
2852
2853 msd_dem_common_utilities.log_message('-----------------------------------Input Parameters - End-------------------------------------------');
2854 msd_dem_common_utilities.log_message ('');
2855 msd_dem_common_utilities.log_message ('');
2856
2857 /* Check that the given entity name is available in MSD_DEM_ENTITY_QUERIES */
2858 SELECT 1
2859 INTO var_is_present
2860 FROM msd_dem_entity_queries
2861 WHERE entity_name = p_entity_name;
2862
2863 /* Pre-Process Begin */
2864
2865 /* Pre-Process End */
2866
2867 /* Execute the query */
2868 msd_dem_common_utilities.log_debug('Calling msd_dem_query_utilities.execute_query');
2869 msd_dem_query_utilities.execute_query (
2870 errbuf,
2871 retcode,
2872 p_entity_name,
2873 p_sr_instance_id,
2874 p_key_value_pairs );
2875 IF (retcode = -1)
2876 THEN
2877 msd_dem_common_utilities.log_message ('Error(3) in msd_spf_collect_history_data.populate_staging_table - '
2878 || 'Error in call to msd_dem_query_utilities.execute_query');
2879 msd_dem_common_utilities.log_message(errbuf);
2880 RETURN;
2881 ELSE
2882 msd_dem_common_utilities.log_message ('Query ' || p_entity_name || ' executed successfully.');
2883 END IF;
2884
2885
2886 /* Post-Process Begin */
2887
2888 /* Post-Process End */
2889
2890 retcode := 0;
2891 msd_dem_common_utilities.log_debug ('Exiting msd_spf_collect_history_data.populate_staging_table...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2892
2893 EXCEPTION
2894 WHEN OTHERS THEN
2895 retcode := -1;
2896 errbuf := substr(SQLERRM,1,150);
2897 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.populate_staging_table - EXCEPTION ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
2898 msd_dem_common_utilities.log_message (errbuf);
2899 RETURN;
2900
2901 END POPULATE_STAGING_TABLE;
2902
2903
2904 PROCEDURE DERIVE_SPARE_SUPERSESSIONS (
2905 errbuf OUT NOCOPY VARCHAR2,
2906 retcode OUT NOCOPY VARCHAR2,
2907 p_sr_instance_id IN NUMBER
2908 ) IS
2909 x_category_set_id number := null;
2910 x_spf_master_org number := null; -- Bug#12675064
2911 x_sql varchar2(2000) := null;
2912 x_run_seq number := null;
2913 type rctype is ref cursor; -- Bug#12675064
2914 rctvar rctype;
2915 x_item varchar2(240) := null;
2916 BEGIN
2917 msd_dem_common_utilities.log_message('Begin - MSD_SPF_COLLECT_HISTORY_DATA.DERIVE_SPARE_SUPERSESSIONS');
2918
2919 -- Bug#12675064
2920 x_category_set_id := MSC_UTIL.GET_SERVICE_ITEMS_CATSET_ID;
2921 x_sql := 'select to_number(parameter_value) from msd_dem_setup_parameters ' ||
2922 ' where parameter_name like ''MSD_SPF_MASTER_ORG''';
2923 execute immediate x_sql into x_spf_master_org;
2924 msd_dem_common_utilities.log_debug(x_sql);
2925
2926 if x_category_set_id is null then
2927 raise_application_error(-20001, 'Profile ''MSC: Category Set for Serviceable Items'' not set. Cannot proceed with derivation of supersession chains.');
2928 elsif x_spf_master_org is null then -- Bug#12675064
2929 raise_application_error(-20003, 'Profile ''MSD_SPF: Organization containing generic BOM for Service Parts Forecasting'' not set. Cannot proceed with derivation of supersession chains.');
2930 end if;
2931
2932 /* truncate MSD_SPF_ITEM_SUPERSESSION table */
2933 msd_dem_common_utilities.log_message('Clearing MSD_SPF_ITEM_SUPERSESSION table');
2934 msd_dem_common_utilities.log_debug('Clearing MSD_SPF_ITEM_SUPERSESSION table');
2935
2936 x_sql := 'delete from MSD_SPF_ITEM_SUPERSESSION';
2937 execute immediate x_sql;
2938 msd_dem_common_utilities.log_debug(x_sql);
2939
2940 /* check for invalid supersession relations */ -- Bug#12434828
2941 msd_dem_common_utilities.log_message('Checking for invalid supersession relations');
2942 x_sql := 'select mi.item_name ' ||
2943 ' from msc_item_substitutes mis, msc_items mi ' ||
2944 ' where mis.plan_id = -1 and mis.sr_instance_id = ' || p_sr_instance_id ||
2945 ' and mis.relationship_type = 8 ' ||
2946 ' and exists (select 1 from msc_item_categories mic where mic.organization_id = ' || x_spf_master_org ||
2947 ' and mic.sr_instance_id = ' || p_sr_instance_id || ' and mic.inventory_item_id = mis.higher_item_id and mic.category_set_id = ' || x_category_set_id || ' ) ' ||
2948 ' and exists (select 1 from msc_item_categories mic where mic.organization_id = ' || x_spf_master_org ||
2949 ' and mic.sr_instance_id = ' || p_sr_instance_id || ' and mic.inventory_item_id = mis.lower_item_id and mic.category_set_id = ' || x_category_set_id || ' ) ' ||
2950 ' and mi.inventory_item_id = mis.lower_item_id group by mi.item_name having count(*) > 1';
2951
2952 open rctvar for x_sql;
2953 loop
2954 fetch rctvar into x_item;
2955 EXIT WHEN rctvar%NOTFOUND;
2956 msd_dem_common_utilities.log_message(x_item);
2957 end loop;
2958
2959 if (rctvar%ROWCOUNT > 0) then
2960 msd_dem_common_utilities.log_message(rctvar%ROWCOUNT || ' item(s) have invalid supersession relations. Each of the items listed above is superseeded by more than one spare revision.');
2961 raise_application_error(-20001, 'Invalid supersession relations found');
2962 end if;
2963 close rctvar;
2964
2965 /* derive the supersession chain backwards */
2966 msd_dem_common_utilities.log_message('Deriving Supersession chains');
2967 msd_dem_common_utilities.log_debug('Start - Derivation - ' || TO_CHAR(systimestamp, 'DD-MON-RRRR HH24:MI:SS') );
2968
2969 /* get the spare rev at end of each chain */
2970 x_run_seq := 1;
2971 x_sql := 'INSERT INTO MSD_SPF_ITEM_SUPERSESSION (sequence_id, chain_id, inventory_item_id, superseeded_item_id, effective_date, disable_date, latest_rev) ' ||
2972 ' (select ' || x_run_seq || ', rownum, higher_item_id, lower_item_id, effective_date, disable_date, higher_item_id ' ||
2973 ' from msc_item_substitutes mis '||
2974 ' where sr_instance_id = ' || p_sr_instance_id ||
2975 ' and plan_id = -1 and relationship_type = 8 ' ||
2976 ' and not exists (select 1 from msc_item_substitutes misx where misx.sr_instance_id = mis.sr_instance_id and misx.lower_item_id = mis.higher_item_id and misx.plan_id = -1 and misx.relationship_type = 8)' ||
2977 ' and exists (select 1 from msc_item_categories mic where mic.organization_id = ' || x_spf_master_org || ' and mic.sr_instance_id = ' || p_sr_instance_id || -- Bug#12675064
2978 ' and mic.inventory_item_id = mis.higher_item_id and mic.category_set_id = ' || x_category_set_id || ' ))' ; -- Bug#12675064
2979 execute immediate x_sql;
2980
2981 msd_dem_common_utilities.log_debug(x_sql);
2982 msd_dem_common_utilities.log_debug(SQL%ROWCOUNT || ' chains detected');
2983
2984 /* Loop over and derive each chain backwards */
2985 loop
2986 x_run_seq := x_run_seq + 1;
2987 x_sql := 'INSERT INTO MSD_SPF_ITEM_SUPERSESSION (sequence_id, chain_id, inventory_item_id, superseeded_item_id, effective_date, disable_date, latest_rev) ' ||
2988 ' (select ' || x_run_seq || ', sc.chain_id, mis.higher_item_id, mis.lower_item_id, mis.effective_date, ' ||
2989 ' nvl(mis.disable_date, case when mis.effective_date < sc.effective_date then (sc.effective_date - 1) else mis.effective_date end), sc.latest_rev ' ||
2990 ' from msd_spf_item_supersession sc, msc_item_substitutes mis '||
2991 ' where sc.sequence_id = '|| (x_run_seq - 1) ||
2992 ' and mis.sr_instance_id = ' || p_sr_instance_id ||
2993 ' and mis.plan_id = -1 and mis.relationship_type = 8 ' ||
2994 ' and sc.superseeded_item_id = mis.higher_item_id ' ||
2995 ' and exists (select 1 from msc_item_categories mic where mic.organization_id = ' || x_spf_master_org || ' and mic.sr_instance_id = ' || p_sr_instance_id || -- Bug#12675064
2996 ' and mic.inventory_item_id = mis.higher_item_id and mic.category_set_id = ' || x_category_set_id || ' ))'; -- Bug#12675064
2997 execute immediate x_sql;
2998
2999 msd_dem_common_utilities.log_debug(x_sql);
3000
3001 exit when SQL%ROWCOUNT <= 0;
3002 end loop;
3003
3004 /* Above loop will not get the spare at start of chain, populate it here */
3005 x_sql := 'INSERT INTO MSD_SPF_ITEM_SUPERSESSION (chain_id, sequence_id, inventory_item_id, disable_date, latest_rev) ' ||
3006 ' (select sc.chain_id, sc.sequence_id + 1, sc.superseeded_item_id, sc.effective_date - 1, sc.latest_rev ' ||
3007 ' from msd_spf_item_supersession sc, '||
3008 ' (select chain_id, max(sequence_id) max_seq from MSD_SPF_ITEM_SUPERSESSION group by chain_id) scg' ||
3009 ' where sc.chain_id = scg.chain_id' ||
3010 ' and sc.sequence_id = scg.max_seq' ||
3011 ' and exists (select 1 from msc_item_categories mic where mic.organization_id = ' || x_spf_master_org || ' and mic.sr_instance_id = ' || p_sr_instance_id || -- Bug#12675064
3012 ' and mic.inventory_item_id = sc.superseeded_item_id and mic.category_set_id = ' || x_category_set_id || ' ))'; -- Bug#12675064
3013 execute immediate x_sql;
3014 msd_dem_common_utilities.log_debug(x_sql);
3015
3016 /* Update sr_item_pk values */
3017 msd_dem_common_utilities.log_debug('Update sr_item_pk values');
3018 x_sql := 'UPDATE MSD_SPF_ITEM_SUPERSESSION mdsis '||
3019 ' set mdsis.sr_inventory_item_id = (' ||
3020 ' select sr_inventory_item_id from msc_item_id_lid ' ||
3021 ' where inventory_item_id = mdsis.inventory_item_id ' ||
3022 ' and sr_instance_id = ' || p_sr_instance_id || ' ) ';
3023 execute immediate x_sql;
3024 msd_dem_common_utilities.log_debug(x_sql);
3025
3026 msd_dem_common_utilities.log_message('Determining revisions active in future');
3027 msd_dem_common_utilities.log_debug('Determining revisions active in future');
3028 /* Update active in future flag for all eligible records - use this flag for all spare revs which are to go into demantra */
3029 /* - flag is 'Yes' for spares at end of chain or having effective date range in future */
3030 /* - also set this for spares already in demantra in case the latest revision has changed and needs to be updated in demantra also */
3031 x_sql := 'UPDATE MSD_SPF_ITEM_SUPERSESSION msis'||
3032 ' set msis.active_in_future = 1 ' ||
3033 -- effectivity end date is in future or is not specified for last spare revision
3034 ' where (msis.disable_date is not null and msis.disable_date > sysdate) '||
3035 ' or (msis.disable_date is null and msis.sequence_id = 1) '||
3036 ' or exists (select 1 ' ||
3037 ' from ' || g_schema || '.t_ep_spf tes, ' || g_schema || '.t_ep_spf_latest_rev teslr, msc_items mi ' ||
3038 ' where tes.t_ep_spf_code like ''' || p_sr_instance_id || '::%-'' || msis.sr_inventory_item_id ' ||
3039 ' and teslr.t_ep_spf_latest_rev_id = tes.t_ep_spf_latest_rev_id ' ||
3040 ' and mi.inventory_item_id = msis.latest_rev ' ||
3041 ' and mi.item_name <> teslr.t_ep_spf_latest_rev_code ) ';
3042 execute immediate x_sql;
3043 msd_dem_common_utilities.log_debug(x_sql);
3044
3045 commit;
3046 msd_dem_common_utilities.log_message('Derivation of Supersession chains complete');
3047 msd_dem_common_utilities.log_debug('End - Derivation - ' || TO_CHAR(systimestamp, 'DD-MON-RRRR HH24:MI:SS') );
3048
3049 retcode := 0;
3050 msd_dem_common_utilities.log_message('End - MSD_SPF_COLLECT_HISTORY_DATA.DERIVE_SPARE_SUPERSESSIONS');
3051 EXCEPTION
3052 WHEN OTHERS THEN
3053 retcode := -1;
3054 errbuf := substr(sqlerrm, 1, 200);
3055 msd_dem_common_utilities.log_message('Error in MSD_SPF_COLLECT_HISTORY_DATA.DERIVE_SPARE_SUPERSESSIONS - ' || errbuf);
3056 msd_dem_common_utilities.log_debug('Error in MSD_SPF_COLLECT_HISTORY_DATA.DERIVE_SPARE_SUPERSESSIONS (' || TO_CHAR(systimestamp, 'DD-MON-RRRR HH24:MI:SS') || ') - ' || errbuf );
3057 END DERIVE_SPARE_SUPERSESSIONS;
3058
3059 PROCEDURE LOAD_DM_FORECAST_FOR_SPF (
3060 errbuf OUT NOCOPY VARCHAR2,
3061 retcode OUT NOCOPY VARCHAR2,
3062 p_load_sales_fcst IN NUMBER
3063 )
3064 IS
3065 x_dem_url varchar2(500) := null;
3066 x_wf_status varchar2(200) := null;
3067 x_user_id number;
3068 x_user_name varchar2(50);
3069 x_password varchar2(80);
3070 x_schema_name varchar2(255);
3071 x_schema_id number;
3072 x_sql varchar2(1100) := null;
3073 x_sales_fcst_stg varchar2(100) := null;
3074
3075 BEGIN
3076 msd_dem_common_utilities.log_message('Begin - MSD_SPF_COLLECT_HISTORY_DATA.LOAD_DM_FORECAST_FOR_SPF');
3077
3078 /* check if Sales Forecast download is selected */
3079 if( p_load_sales_fcst = G_NO ) then
3080 msd_dem_common_utilities.log_message('Load Sales Forecast not selected. Exiting.');
3081 msd_dem_common_utilities.log_debug('Load Sales Forecast not selected. Exiting.');
3082 else
3083 x_dem_url := fnd_profile.value('MSD_DEM_HOST_URL');
3084
3085 /* check if demantra schema and host url are set */
3086 if( g_schema is null ) then
3087 raise_application_error(-20002, 'Demantra schema not set');
3088 elsif ( x_dem_url is null ) then
3089 raise_application_error(-20003, 'Demantra server host URL not set');
3090 end if;
3091
3092 /* get user_id of DM component owner */
3093 x_user_id := to_number(msd_dem_common_utilities.get_app_id_text ('MSD_DEM_DEMANTRA_OBJECT_ID',
3094 'COMP_DM',
3095 1,
3096 'user_id'));
3097 if x_user_id is null then
3098 raise_application_error(-20004, 'Demand Management component not found');
3099 end if;
3100
3101 begin
3102 x_sql := 'select user_name, password from ' || g_schema ||'.user_id where user_id = ' || x_user_id;
3103 msd_dem_common_utilities.log_debug(x_sql);
3104 execute immediate x_sql into x_user_name, x_password;
3105 exception when others then
3106 msd_dem_common_utilities.log_debug(substr(sqlerrm, 1, 200));
3107 raise_application_error(-20005, 'Error querying for details of user - ' || x_user_id);
3108 end;
3109
3110 /* get the name of export consensus workflow */
3111 x_schema_name := msd_dem_common_utilities.get_app_id_text ('MSD_DEM_DEMANTRA_OBJECT_ID',
3112 'WF_EXPORT_CNS_FCST_SPF',
3113 1,
3114 'schema_name');
3115 x_schema_name := trim(x_schema_name);
3116 x_sql := 'select utl_http.request(''' || x_dem_url || '/WorkflowServer?action=run_proc&user='||x_user_name||'&password='||x_password||'&schema='|| replace(x_schema_name, ' ', '%20') ||'&sync=yes'') from dual';
3117
3118 msd_dem_common_utilities.log_message('Launching export workflow - ' || x_schema_name);
3119 msd_dem_common_utilities.log_debug('Launching export workflow - ' || x_schema_name);
3120 msd_dem_common_utilities.log_debug(x_sql);
3121
3122 begin
3123 /* launch workflow in synchronous mode */
3124 execute immediate x_sql into x_wf_status;
3125 exception when others then
3126 msd_dem_common_utilities.log_debug(substr(sqlerrm, 1, 200));
3127 raise_application_error(-20006, 'Error launching workflow - ' || x_schema_name);
3128 end;
3129
3130 msd_dem_common_utilities.log_message('Result of workflow launch - ' || x_wf_status);
3131 msd_dem_common_utilities.log_debug('Result of workflow launch - ' || x_wf_status);
3132
3133 /* check for success of workflow */
3134 if( instr(upper(x_wf_status), 'SUCCESS') <= 0 ) then
3135 msd_dem_common_utilities.log_message('Workflow run was not successfull, please check demantra server logs. Not populating staging table.');
3136 raise_application_error(-20007, 'Workflow run not successfull');
3137 else
3138 msd_dem_common_utilities.log_message('Workflow run successfull');
3139
3140 /* truncate and load load sales forecast into staging table */
3141 x_sales_fcst_stg := g_schema ||'.BIIO_SPF_SALES_FCST_DATA';
3142 msd_dem_common_utilities.log_message('Deleting data from staging table - ' || x_sales_fcst_stg);
3143 x_sql := 'truncate table ' || x_sales_fcst_stg;
3144 msd_dem_common_utilities.log_debug(x_sql);
3145 execute immediate x_sql;
3146
3147 msd_dem_common_utilities.log_debug('Loading staging table - Start - ' || TO_CHAR(systimestamp, 'DD-MON-RRRR HH24:MI:SS'));
3148 begin
3149 x_sql := 'INSERT INTO ' || x_sales_fcst_stg ||
3150 '(LEVEL1, SPF_CONSENSUS_FORE_IN, SDATE)' ||
3151 '(SELECT LEVEL1, FCST_CONSENSUS, SDATE' ||
3152 ' FROM '|| g_schema || '.BIEO_DM_SPF_FCST_V)';
3153
3154 msd_dem_common_utilities.log_debug(x_sql);
3155 execute immediate x_sql;
3156 exception when others then
3157 msd_dem_common_utilities.log_debug(substr(sqlerrm, 1, 200));
3158 raise_application_error(-20008, 'Error loading staging table - ' || x_sales_fcst_stg);
3159 end;
3160
3161 commit;
3162 msd_dem_common_utilities.log_message('Loading staging table - Done');
3163 msd_dem_common_utilities.log_debug('Loading staging table - End - ' || TO_CHAR(systimestamp, 'DD-MON-RRRR HH24:MI:SS'));
3164 msd_dem_common_utilities.log_debug('Inserted ' || SQL%ROWCOUNT || ' rows into staging table.');
3165 end if;
3166 end if;
3167
3168 retcode := 0;
3169 msd_dem_common_utilities.log_message('End - MSD_SPF_COLLECT_HISTORY_DATA.LOAD_DM_FORECAST_FOR_SPF');
3170 EXCEPTION
3171 WHEN OTHERS THEN
3172 retcode := -1;
3173 errbuf := substr(sqlerrm, 1, 200);
3174 msd_dem_common_utilities.log_message('Error in MSD_SPF_COLLECT_HISTORY_DATA.LOAD_DM_FORECAST_FOR_SPF - ' || errbuf);
3175 msd_dem_common_utilities.log_debug('Error in MSD_SPF_COLLECT_HISTORY_DATA.LOAD_DM_FORECAST_FOR_SPF (' || TO_CHAR(systimestamp, 'DD-MON-RRRR HH24:MI:SS') || ') - ' || errbuf );
3176 END LOAD_DM_FORECAST_FOR_SPF;
3177
3178 PROCEDURE COLLECT_SPARE_USAGE_HISTORY (
3179 errbuf OUT NOCOPY VARCHAR2,
3180 retcode OUT NOCOPY VARCHAR2,
3181 p_sr_instance_id IN NUMBER,
3182 p_collection_method IN NUMBER,
3183 p_from_date IN VARCHAR2,
3184 p_to_date IN VARCHAR2,
3185 p_spare_usg_hist IN NUMBER
3186 )
3187 IS
3188 x_sql VARCHAR2(1000) := NULL;
3189 x_errbuf VARCHAR2(200) := NULL;
3190 x_retcode VARCHAR2(100) := NULL;
3191 x_dest_table VARCHAR2(100) := NULL;
3192 x_from_date DATE := NULL;
3193 x_to_date DATE := NULL;
3194
3195 BEGIN
3196 msd_dem_common_utilities.log_debug ('Entering: MSD_SPF_COLLECT_DATA.COLLECT_SPARE_USAGE_HISTORY - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3197
3198 retcode := 0;
3199
3200 /* check if Sales Forecast download is selected */
3201 if( p_spare_usg_hist = G_NO ) then
3202 msd_dem_common_utilities.log_message('Load Spare Usage History not selected. Exiting.');
3203 msd_dem_common_utilities.log_debug('Load Spare Usage History not selected. Exiting.');
3204 else
3205 /* Table to collect spare usage history initially */
3206 x_dest_table := C_SPARE_USAGE_HISTORY_TABLE;
3207
3208 x_from_date := fnd_date.canonical_to_date(p_from_date);
3209 x_to_date := fnd_date.canonical_to_date(p_to_date);
3210
3211 msd_dem_common_utilities.log_message (' Collect Spare History Data - Actions');
3212 msd_dem_common_utilities.log_message ('------------------------------------');
3213 msd_dem_common_utilities.log_message (' ');
3214
3215 msd_dem_common_utilities.log_message ('Collection Method - ' || case when p_collection_method = G_COLL_COMPLETE then 'Complete Refresh' else 'Net Change' end);
3216 msd_dem_common_utilities.log_message ('Date From (DD/MM/RRRR) - ' || to_char(x_from_date, 'DD/MM/RRRR'));
3217 msd_dem_common_utilities.log_message ('Date To (DD/MM/RRRR) - ' || to_char(x_to_date, 'DD/MM/RRRR'));
3218
3219 -- Bug#12675064 commented
3220 /* msd_dem_common_utilities.log_debug ('Begin delete from staging table - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3221
3222 -- Truncate the sales staging table - always
3223 msd_dem_common_utilities.log_message ('Deleting data from staging table - ' || x_dest_table);
3224 x_sql := 'DELETE FROM ' || x_dest_table;
3225 EXECUTE IMMEDIATE x_sql;
3226 msd_dem_common_utilities.log_debug ('End delete from sales staging table - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3227 */
3228
3229 /* Collect Spare Usage History series */
3230 msd_dem_common_utilities.log_debug ('Begin collect Spare Usage History - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3231 collect_series_data (
3232 x_errbuf,
3233 x_retcode,
3234 C_SPARE_USAGE_HISTORY,
3235 x_dest_table,
3236 p_sr_instance_id,
3237 p_collection_method,
3238 x_from_date,
3239 x_to_date
3240 );
3241
3242 IF (x_retcode = -1) THEN
3243 retcode := -1;
3244 errbuf := x_errbuf;
3245 msd_dem_common_utilities.log_message ('Error(11): MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SPARE_USAGE_HISTORY - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3246 msd_dem_common_utilities.log_message ('Error while collecting Spare Usage History');
3247 RETURN;
3248 END IF;
3249
3250 msd_dem_common_utilities.log_debug ('End collect Spare Usage History - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3251
3252 -- Bug#12675064 commented
3253 /* anything for NPI ?? */
3254
3255 /* Analyze Sales Staging Table */ -- doing this at end of stage 2
3256 /*msd_dem_common_utilities.log_debug ('Begin Analyze sales staging table - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3257
3258 msd_dem_collect_history_data.analyze_table (
3259 x_errbuf,
3260 x_retcode,
3261 x_dest_table);
3262
3263 msd_dem_common_utilities.log_debug ('End Analyze sales staging table - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3264
3265 IF (x_retcode = 1) THEN
3266 retcode := 1;
3267 errbuf := x_errbuf;
3268 msd_dem_common_utilities.log_message ('Warning(7): MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SPARE_USAGE_HISTORY - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3269 msd_dem_common_utilities.log_message ('Error while analyzing staging table');
3270 END IF;*/
3271
3272 END IF;
3273
3274 msd_dem_common_utilities.log_debug ('Exiting: MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SPARE_USAGE_HISTORY - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3275 EXCEPTION
3276 WHEN OTHERS THEN
3277 retcode := -1;
3278 errbuf := substr(sqlerrm, 1, 200);
3279 msd_dem_common_utilities.log_message('Error in MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SPARE_USAGE_HISTORY - ' || errbuf);
3280 msd_dem_common_utilities.log_debug('Error in MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SPARE_USAGE_HISTORY (' || TO_CHAR(systimestamp, 'DD-MON-RRRR HH24:MI:SS') || ') - ' || errbuf );
3281 END COLLECT_SPARE_USAGE_HISTORY;
3282
3283 -- Bug#12675064
3284 PROCEDURE COLLECT_SPARE_SHIPMENT_HISTORY (
3285 errbuf OUT NOCOPY VARCHAR2,
3286 retcode OUT NOCOPY VARCHAR2,
3287 p_sr_instance_id IN NUMBER,
3288 p_collection_method IN NUMBER,
3289 p_from_date IN VARCHAR2,
3290 p_to_date IN VARCHAR2
3291 )
3292 IS
3293 x_sql VARCHAR2(1000) := NULL;
3294 x_errbuf VARCHAR2(200) := NULL;
3295 x_retcode VARCHAR2(100) := NULL;
3296 x_dest_table VARCHAR2(100) := NULL;
3297 x_from_date DATE := NULL;
3298 x_to_date DATE := NULL;
3299
3300 BEGIN
3301 msd_dem_common_utilities.log_debug ('Entering: MSD_SPF_COLLECT_DATA.COLLECT_SPARE_SHIPMENT_HISTORY - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3302
3303 retcode := 0;
3304
3305 /* Table to collect spare usage history initially */
3306 x_dest_table := C_SPARE_USAGE_HISTORY_TABLE;
3307
3308 x_from_date := fnd_date.canonical_to_date(p_from_date);
3309 x_to_date := fnd_date.canonical_to_date(p_to_date);
3310
3311 msd_dem_common_utilities.log_message (' Collect Spare Shipment History - Actions');
3312 msd_dem_common_utilities.log_message ('------------------------------------------');
3313 msd_dem_common_utilities.log_message (' ');
3314
3315 msd_dem_common_utilities.log_message ('Collection Method - ' || case when p_collection_method = G_COLL_COMPLETE then 'Complete Refresh' else 'Net Change' end);
3316 msd_dem_common_utilities.log_message ('Date From (DD/MM/RRRR) - ' || to_char(x_from_date, 'DD/MM/RRRR'));
3317 msd_dem_common_utilities.log_message ('Date To (DD/MM/RRRR) - ' || to_char(x_to_date, 'DD/MM/RRRR'));
3318
3319 --msd_dem_common_utilities.log_debug ('Begin delete from staging table - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3320
3321 /* Truncate the sales staging table - always */
3322 /*msd_dem_common_utilities.log_message ('Deleting data from staging table - ' || x_dest_table);
3323 x_sql := 'DELETE FROM ' || x_dest_table;
3324 EXECUTE IMMEDIATE x_sql;
3325 msd_dem_common_utilities.log_debug ('End delete from sales staging table - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));*/
3326
3327 /* Collect Spare Usage History series */
3328 msd_dem_common_utilities.log_debug ('Begin collect Spare Shipment History - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3329 collect_series_data (
3330 x_errbuf,
3331 x_retcode,
3332 C_SPARE_SHIPMENT_HISTORY,
3333 x_dest_table,
3334 p_sr_instance_id,
3335 p_collection_method,
3336 x_from_date,
3337 x_to_date
3338 );
3339
3340 IF (x_retcode = -1) THEN
3341 retcode := -1;
3342 errbuf := x_errbuf;
3343 msd_dem_common_utilities.log_message ('Error(1): MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SPARE_SHIPMENT_HISTORY - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3344 msd_dem_common_utilities.log_message ('Error while collecting Spare Shipment History');
3345 RETURN;
3346 END IF;
3347
3348 msd_dem_common_utilities.log_debug ('End collect Spare Shipment History - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3349
3350 msd_dem_common_utilities.log_debug ('Exiting: MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SPARE_SHIPMENT_HISTORY - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3351 EXCEPTION
3352 WHEN OTHERS THEN
3353 retcode := -1;
3354 errbuf := substr(sqlerrm, 1, 200);
3355 msd_dem_common_utilities.log_message('Error in MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SPARE_SHIPMENT_HISTORY - ' || errbuf);
3356 msd_dem_common_utilities.log_debug('Error in MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SPARE_SHIPMENT_HISTORY (' || TO_CHAR(systimestamp, 'DD-MON-RRRR HH24:MI:SS') || ') - ' || errbuf );
3357 END COLLECT_SPARE_SHIPMENT_HISTORY;
3358
3359 PROCEDURE DERIVE_SERVICE_BOM (
3360 errbuf OUT NOCOPY VARCHAR2,
3361 retcode OUT NOCOPY VARCHAR2,
3362 p_sr_instance_id IN NUMBER,
3363 p_install_base IN NUMBER,
3364 p_from_date IN VARCHAR2 DEFAULT NULL,
3365 p_to_date IN VARCHAR2 DEFAULT NULL,
3366 p_custom_ibuc_hist_view IN VARCHAR2 DEFAULT NULL,
3367 p_eng_profile_app_id IN VARCHAR2 DEFAULT 'ENGINE_PROFILE:141', --engine profile from which forecast lead param is to be used -- Bug#12911203
3368 p_preserve_dem_dates IN NUMBER default G_YES, --preserve the population from and to dates for existing spf members in demantra
3369 --if yes, the dates will be preserved even if they are out of the allowed (spf_history_periods, lead) date range
3370 --this is to minimize deletion of combinations in demantra to improve performance of level profile load -- Bug#12675064
3371 p_check_interval IN NUMBER DEFAULT 60,
3372 p_time_out IN NUMBER DEFAULT 86400
3373 )
3374 IS
3375
3376 x_category_set_id number := null;
3377 x_spf_master_org number := null;
3378 x_sql varchar2(4000) := null;
3379 x_run_seq number := null;
3380 x_pval varchar2(100) := null;
3381 x_dm_time_level varchar2(6) := null;
3382 x_max_sales_date date := null;
3383 x_history_cap date := null;
3384 x_forecast_cap date := null;
3385 x_key_values VARCHAR2(200) := NULL;
3386 x_lvl_org_id number := null;
3387 x_from_date date := null;
3388 x_to_date date := null;
3389 x_eng_params_table varchar2(100) := NULL; -- Bug#12911203
3390 var_request_id number := null;
3391 var_runtime DATE DEFAULT systimestamp;
3392 var_errbuf VARCHAR2(2000) DEFAULT NULL;
3393 var_retcode VARCHAR2(100) DEFAULT 0;
3394
3395 l_req_table REQ_TABLE;
3396
3397 BEGIN
3398 msd_dem_common_utilities.log_message('Begin - MSD_SPF_COLLECT_HISTORY_DATA.DERIVE_SERVICE_BOM');
3399
3400 x_category_set_id := MSC_UTIL.GET_SERVICE_ITEMS_CATSET_ID;
3401 x_sql := 'select to_number(parameter_value) from msd_dem_setup_parameters ' ||
3402 ' where parameter_name like ''MSD_SPF_MASTER_ORG''';
3403 execute immediate x_sql into x_spf_master_org;
3404 msd_dem_common_utilities.log_debug(x_sql);
3405
3406 if g_schema is null then
3407 raise_application_error(-20001, 'Demantra Schema not set. Cannot proceed with derivation of supersession chains.');
3408 elsif x_category_set_id is null then
3409 raise_application_error(-20002, 'Profile ''MSC: Category Set for Serviceable Items'' not set. Cannot proceed with derivation of supersession chains.');
3410 elsif x_spf_master_org is null then
3411 raise_application_error(-20003, 'Profile ''MSD_SPF: Organization containing generic BOM for Service Parts Forecasting'' not set. Cannot proceed with derivation of supersession chains.');
3412 end if;
3413
3414 -- get demantra time level
3415 x_dm_time_level := lower(msd_dem_common_utilities.dm_time_level);
3416
3417 x_from_date := fnd_date.canonical_to_date(p_from_date);
3418 x_to_date := fnd_date.canonical_to_date(p_to_date);
3419
3420 -- get max_sales_date
3421 x_sql := 'select trunc(max(max_date), ''dd'') from ( '||
3422 ' select max(sdate) max_date from ' || nvl(p_custom_ibuc_hist_view, 'MSD_SPF_INSTALL_BASE_UC_V') ||
3423 ' where 1 = ' || p_install_base ||
3424 case when (p_install_base = G_YES and x_to_date is not null)
3425 then ' and sdate <= to_date(''' || to_char(x_to_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'')'
3426 else '' end ||
3427 ' union ' ||
3428 ' select max(usage_date) max_date from MSD_SPF_ST_SPARE_USAGE '||
3429 ' union ' ||
3430 ' select to_date(' || g_schema || '.get_max_date, param.pval) max_date from ' ||
3431 g_schema || '.db_params param where param.pname = ''nls_date_format'' )';
3432 msd_dem_common_utilities.log_debug(x_sql);
3433 execute immediate x_sql into x_max_sales_date;
3434 msd_dem_common_utilities.log_debug('Max Sales Date - ' || x_max_sales_date);
3435
3436 -- get history cap
3437 x_sql := 'select pval from ' || g_schema || '.sys_params where lower(pname) = ''spf_history_periods''';
3438 execute immediate x_sql into x_pval;
3439 if x_dm_time_level = 'day' then
3440 x_history_cap := x_max_sales_date - to_number(x_pval);
3441 elsif x_dm_time_level = 'week' then
3442 x_history_cap := x_max_sales_date - 7*to_number(x_pval);
3443 elsif x_dm_time_level = 'month' then
3444 x_history_cap := add_months(x_max_sales_date, -to_number(x_pval));
3445 end if;
3446
3447 msd_dem_common_utilities.log_debug('History Cap - ' || x_history_cap);
3448
3449 -- get future cap -- Bug#12911203
3450 BEGIN
3451 x_sql := 'select init_params_table_name from ' || g_schema || '.engine_profiles where application_id = ''' || p_eng_profile_app_id || '''';
3452 execute immediate x_sql into x_eng_params_table;
3453 x_sql := 'select value_float from ' || g_schema || '.' || x_eng_params_table || ' where lower(pname) = ''lead''';
3454 execute immediate x_sql into x_pval;
3455 EXCEPTION
3456 WHEN OTHERS THEN
3457 msd_dem_common_utilities.log_debug('Exception when reading forecast lead param from engine profile - ' || p_eng_profile_app_id);
3458 msd_dem_common_utilities.log_debug('Using forecast lead param from Base profile');
3459 msd_dem_common_utilities.log_message('Using forecast lead param from Base profile');
3460 x_sql := 'select value_float from ' || g_schema || '.init_params_0 where lower(pname) = ''lead''';
3461 execute immediate x_sql into x_pval;
3462 END;
3463
3464 if x_dm_time_level = 'day' then
3465 x_forecast_cap := x_max_sales_date + to_number(x_pval);
3466 elsif x_dm_time_level = 'week' then
3467 x_forecast_cap := x_max_sales_date + 7*to_number(x_pval);
3468 elsif x_dm_time_level = 'month' then
3469 x_forecast_cap := add_months(x_max_sales_date, to_number(x_pval));
3470 end if;
3471
3472 msd_dem_common_utilities.log_debug('Forecast Cap - ' || x_forecast_cap);
3473
3474
3475 /* Populate MSD_SPF_MODEL_BOM_COMPONENTS, MSD_SPF_MODEL_ORGS */
3476
3477 -- The following will run in parallel
3478 -- 1. Populate MSD_SPF_MODEL_BOM_COMPONENTS based on usage history and item supersession (Historic FG-Spare-Dates)
3479 -- 2. Populate MSD_SPF_MODEL_ORGS based on usage history, IB and t_ep_spf tables (Item, Org population and effectivity dates)
3480
3481 -- parallel step#1
3482 BEGIN
3483 var_request_id := null;
3484 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE, 'EQ_SPF_MODEL_BOM_COMPONENTS', p_sr_instance_id);
3485 EXCEPTION
3486 WHEN OTHERS THEN
3487 retcode := -1;
3488 errbuf := substr(SQLERRM,1,150);
3489 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.DERIVE_SERVICE_BOM - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3490 msd_dem_common_utilities.log_message ('Error while submitting request for populating MSD_SPF_MODEL_BOM_COMPONENTS');
3491 msd_dem_common_utilities.log_message (errbuf);
3492 RETURN;
3493 END;
3494
3495 l_req_table(1).REQUEST_ID := var_request_id;
3496 l_req_table(1).DESCRIPTION := 'SPF Populate MSD_SPF_MODEL_BOM_COMPONENTS';
3497 l_req_table(1).IS_COMPLETE := FALSE;
3498 l_req_table(1).status := 1;
3499
3500 COMMIT;
3501
3502 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
3503 msd_dem_common_utilities.log_message ('');
3504 msd_dem_common_utilities.log_message ('');
3505
3506 -- parallel step#2
3507 x_key_values := '$C_COLLECT_INSTALL_BASE#' || p_install_base ||
3508 '$C_IBUC_VIEW_NAME#' || nvl(p_custom_ibuc_hist_view, 'MSD_SPF_INSTALL_BASE_UC_V') ||
3509 '$C_IBUC_DATE_CLAUSE#';
3510 if (p_install_base = G_YES and x_from_date is not null and x_to_date is not null) then
3511 x_key_values := x_key_values || ' and sdate between ' ||
3512 'to_date(''' || to_char(x_from_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'')' ||
3513 ' and ' ||
3514 'to_date(''' || to_char(x_to_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'')' ;
3515 end if;
3516 x_key_values := x_key_values || '$';
3517
3518 BEGIN
3519 var_request_id := null;
3520 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE, 'EQ_SPF_MODEL_ORGS', p_sr_instance_id, x_key_values);
3521 EXCEPTION
3522 WHEN OTHERS THEN
3523 retcode := -1;
3524 errbuf := substr(SQLERRM,1,150);
3525 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.DERIVE_SERVICE_BOM - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3526 msd_dem_common_utilities.log_message ('Error while submitting request for populating MSD_SPF_MODEL_ORGS');
3527 msd_dem_common_utilities.log_message (errbuf);
3528 RETURN;
3529 END;
3530
3531 l_req_table(2).REQUEST_ID := var_request_id;
3532 l_req_table(2).DESCRIPTION := 'SPF Populate MSD_SPF_MODEL_ORGS';
3533 l_req_table(2).IS_COMPLETE := FALSE;
3534 l_req_table(2).status := 1;
3535
3536 COMMIT;
3537
3538 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
3539 msd_dem_common_utilities.log_message ('');
3540 msd_dem_common_utilities.log_message ('');
3541
3542 -- wait for request completion
3543 check_requests_completion(var_errbuf, var_retcode, l_req_table.LAST, var_runtime, l_req_table, p_check_interval, p_time_out);
3544 IF (var_retcode = -1)
3545 THEN
3546 retcode := -1;
3547 errbuf := var_errbuf;
3548 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.DERIVE_SERVICE_BOM - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3549 msd_dem_common_utilities.log_message ('Error while waiting for requests to complete.');
3550 msd_dem_common_utilities.log_message (errbuf);
3551 RETURN;
3552 END IF;
3553
3554 -- analyze table MSD_SPF_MODEL_BOM_COMPONENTS
3555 msd_dem_common_utilities.log_debug ('Begin Analyze MSD_SPF_MODEL_BOM_COMPONENTS table - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3556
3557 msd_dem_collect_history_data.analyze_table (
3558 var_errbuf,
3559 var_retcode,
3560 'MSD_SPF_MODEL_BOM_COMPONENTS');
3561
3562 msd_dem_common_utilities.log_debug ('End Analyze sales staging table - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3563
3564 IF (var_retcode = 1) THEN
3565 retcode := 1;
3566 errbuf := var_errbuf;
3567 msd_dem_common_utilities.log_message ('Warning: MSD_SPF_COLLECT_HISTORY_DATA.DERIVE_SERVICE_BOM - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3568 msd_dem_common_utilities.log_message ('Error while analyzing MSD_SPF_MODEL_BOM_COMPONENTS table');
3569 END IF;
3570
3571 /* Populate MSD_SPF_MFG_BOM_TEMP with data from MFG BOM for products from MSD_SPF_MODEL_ORGS (FG-Latest Spare-Dates) */
3572 -- populate records for base model-base model into msd_spf_mfg_bom_temp table
3573 x_run_seq := 1;
3574 x_sql := 'INSERT into MSD_SPF_MFG_BOM_TEMP ' ||
3575 ' (EBS_BASE_MODEL_SR_PK, DM_ITEM_SR_PK, EFFECTIVE_DATE, DISABLE_DATE, RETAIN_RECORD, SEQUENCE_ID) '||
3576 ' (select ebs_base_model_sr_pk, ebs_base_model_sr_pk, :1, :2, 1, ' || x_run_seq ||
3577 ' from (select distinct ebs_base_model_sr_pk from msd_spf_model_orgs) )';
3578 execute immediate x_sql using x_history_cap, x_forecast_cap;
3579
3580 msd_dem_common_utilities.log_debug(x_sql);
3581 msd_dem_common_utilities.log_debug(SQL%ROWCOUNT || ' records inserted (FG-FG-dates)');
3582
3583 /* Loop over and derive bom */
3584 loop
3585 x_run_seq := x_run_seq + 1;
3586 -- Bug#12434821
3587 x_sql := 'INSERT into MSD_SPF_MFG_BOM_TEMP ' ||
3588 ' (EBS_BASE_MODEL_SR_PK, DM_ITEM_SR_PK, EFFECTIVE_DATE, DISABLE_DATE, RETAIN_RECORD, SEQUENCE_ID) ' ||
3589 ' (select tbom.ebs_base_model_sr_pk base, msis.sr_inventory_item_id spare, mbc.effectivity_date, ' ||
3590 ' mbc.disable_date, 0 retain_record, ' || x_run_seq || ' sequence_id ' ||
3591 ' from msd_spf_mfg_bom_temp tbom, msc_system_items msib, msc_boms mb, msc_bom_components mbc, msc_system_items msis ' ||
3592 ' where tbom.sequence_id = ' || (x_run_seq - 1) ||
3593 ' and msib.plan_id = -1 and msib.sr_instance_id = ' || p_sr_instance_id ||
3594 ' and msib.organization_id = ' || x_spf_master_org || ' and msib.sr_inventory_item_id = tbom.dm_item_sr_pk ' ||
3595 ' and mb.plan_id = -1 and mb.organization_id = ' || x_spf_master_org || ' and mb.sr_instance_id = ' || p_sr_instance_id ||
3596 ' and mb.assembly_item_id = msib.inventory_item_id and mbc.plan_id = -1 and mbc.sr_instance_id = mb.sr_instance_id ' ||
3597 ' and mbc.bill_sequence_id = mb.bill_sequence_id and msis.plan_id = -1 and msis.sr_instance_id = mbc.sr_instance_id ' ||
3598 ' and msis.organization_id = mbc.organization_id and mbc.inventory_item_id = msis.inventory_item_id) ';
3599
3600 execute immediate x_sql;
3601
3602 msd_dem_common_utilities.log_debug(x_sql);
3603
3604 exit when SQL%ROWCOUNT <= 0;
3605 end loop;
3606
3607 -- remove records for non serviceable spares in msd_spf_mfg_bom_temp -- Bug#12675064
3608 x_sql := 'DELETE from MSD_SPF_MFG_BOM_TEMP tbom where retain_record <> 1 ' ||
3609 ' and not exists (select 1 from msc_system_items msi, msc_item_categories mic ' ||
3610 ' where msi.plan_id = -1 and ' || ' msi.sr_instance_id = '|| p_sr_instance_id ||
3611 ' and msi.organization_id = ' || x_spf_master_org || ' and msi.sr_inventory_item_id = dm_item_sr_pk ' ||
3612 ' and mic.organization_id = msi.organization_id and mic.sr_instance_id = msi.sr_instance_id and msi.inventory_item_id = mic.inventory_item_id ' ||
3613 ' and mic.category_set_id = ' || x_category_set_id || ')';
3614 msd_dem_common_utilities.log_debug(x_sql);
3615 execute immediate x_sql;
3616
3617 /* Populate MSD_SPF_MODEL_BOM_COMPONENTS based on MFG BOM and item supersession */
3618 /* (FG-Spare-Dates) - all spares from bom, all eligible spares from item supersession chains */
3619 x_sql := 'MERGE into MSD_SPF_MODEL_BOM_COMPONENTS a ' ||
3620 ' using ( ' ||
3621 ' select ' || p_sr_instance_id || ' sr_instance_id, ebs_base_model_sr_pk, dm_item_sr_pk, ' ||
3622 ' trunc(min(effective_date), ''dd'') effective_date, ' ||
3623 ' trunc(max(disable_date), ''dd'') disable_date, ' ||
3624 ' min(chain_id) chain_id, min(latest_rev) latest_rev '||
3625 ' from ( '||
3626 ' select tbom.ebs_base_model_sr_pk, tbom.dm_item_sr_pk, ' ||
3627 ' least(nvl(msis.effective_date, tbom.effective_date), tbom.effective_date) effective_date, ' ||
3628 ' greatest(msis.disable_date, nvl(tbom.disable_date, msis.disable_date)) disable_date, ' ||
3629 ' msis.chain_id, msis.latest_rev '||
3630 ' from msd_spf_mfg_bom_temp tbom, msd_spf_item_supersession msis '||
3631 ' where tbom.dm_item_sr_pk = msis.sr_inventory_item_id(+) ' ||
3632 ' union all ' ||
3633 ' select tbom.ebs_base_model_sr_pk, mdsisx.sr_inventory_item_id dm_item_sr_pk, ' ||
3634 ' mdsisx.effective_date, mdsisx.disable_date, mdsisx.chain_id, mdsisx.latest_rev ' ||
3635 ' from MSD_SPF_MFG_BOM_TEMP tbom, msd_spf_item_supersession mdsis, msd_spf_item_supersession mdsisx '||
3636 ' where tbom.dm_item_sr_pk = mdsis.sr_inventory_item_id and mdsis.chain_id = mdsisx.chain_id '||
3637 ' and mdsisx.active_in_future = 1) ' ||
3638 ' group by ebs_base_model_sr_pk, dm_item_sr_pk ) b ' ||
3639 ' on ( ' ||
3640 ' a.sr_instance_id = b.sr_instance_id ' ||
3641 ' and a.ebs_base_model_sr_pk = b.ebs_base_model_sr_pk ' ||
3642 ' and a.dm_item_sr_pk = b.dm_item_sr_pk ) ' ||
3643 ' when not matched then ' ||
3644 ' insert (SR_INSTANCE_ID,EBS_BASE_MODEL_SR_PK,DM_ITEM_SR_PK,LATEST_REV,CHAIN_ID,EFFECTIVE_DATE,DISABLE_DATE) ' ||
3645 ' values (b.SR_INSTANCE_ID,b.EBS_BASE_MODEL_SR_PK,b.DM_ITEM_SR_PK,b.LATEST_REV,b.CHAIN_ID,b.EFFECTIVE_DATE,b.DISABLE_DATE) ' ||
3646 ' when matched then ' ||
3647 ' update set ' ||
3648 ' effective_date = least(a.effective_date, nvl(b.effective_date, a.effective_date)), ' ||
3649 ' disable_date = greatest(a.disable_date, nvl(b.disable_date, a.disable_date))' ;
3650
3651 msd_dem_common_utilities.log_debug(x_sql);
3652 execute immediate x_sql;
3653 msd_dem_common_utilities.log_debug(SQL%ROWCOUNT || ' - rows merged');
3654
3655 IF ( p_preserve_dem_dates <> G_YES ) then -- Bug#12675064
3656 -- update msd_spf_model_bom_components to expand date range based on from and until dates of SPF GL members in demantra
3657 -- ** exclude base model and current latest spare rev in demantra **
3658 -- ** this handles case where a new latest spare rev is introduced **
3659 -- ** date range for current latest spare rev has to be changed based on source dates from supersession, during subsequent collection **
3660 x_sql := 'MERGE into MSD_SPF_MODEL_BOM_COMPONENTS a ' ||
3661 ' using ( ' ||
3662 ' select msbc.sr_instance_id, msbc.ebs_base_model_sr_pk, msbc.dm_item_sr_pk, ' ||
3663 ' least(nvl(msbc.effective_date, tesd.from_date), tesd.from_date) from_date, ' ||
3664 ' case when (tesd.until_date > :1 and msbc.disable_date > :2) then msbc.disable_date ' ||
3665 ' else greatest(nvl(msbc.disable_date, tesd.until_date), tesd.until_date) ' ||
3666 ' end until_date ' || --bug#10124698, preserve only past dates in demantra (wrt max_sales_date)
3667 ' from msd_spf_model_bom_components msbc, '||g_schema|| '.t_ep_spf tes, ' ||g_schema|| '.t_ep_spf_child tesc, ' ||g_schema|| '.t_ep_spf_latest_rev teslr, ' ||g_schema|| '.t_ep_spf_dates tesd ' ||
3668 ' where msbc.ebs_base_model_sr_pk <> msbc.dm_item_sr_pk ' ||
3669 ' and tes.t_ep_spf_code = msbc.sr_instance_id || ''::'' || msbc.ebs_base_model_sr_pk || ''-'' || msbc.dm_item_sr_pk ' ||
3670 ' and (( msbc.latest_rev is null '||
3671 ' and tesc.t_ep_spf_child_id = tes.t_ep_spf_child_id ' ||
3672 ' and teslr.t_ep_spf_latest_rev_id = tes.t_ep_spf_latest_rev_id ' ||
3673 ' and tesc.t_ep_spf_child_code = teslr.t_ep_spf_latest_rev_code)' ||
3674 ' or (tesc.t_ep_spf_child_id = tes.t_ep_spf_child_id ' ||
3675 ' and teslr.t_ep_spf_latest_rev_id = tes.t_ep_spf_latest_rev_id ' ||
3676 ' and tesc.t_ep_spf_child_code <> teslr.t_ep_spf_latest_rev_code) ) ' ||
3677 ' and tes.t_ep_spf_id = tesd.t_ep_spf_id ' ||
3678 ' and tesd.from_date <= :3 ' || --bug#10124698, preserve only past dates in demantra (wrt max_sales_date)
3679 ' and (nvl(msbc.effective_date, tesd.from_date) > tesd.from_date or nvl(msbc.disable_date, tesd.until_date) < tesd.until_date ) ) b '||
3680 ' on ( ' ||
3681 ' a.sr_instance_id = b.sr_instance_id ' ||
3682 ' and a.ebs_base_model_sr_pk = b.ebs_base_model_sr_pk ' ||
3683 ' and a.dm_item_sr_pk = b.dm_item_sr_pk ) ' ||
3684 ' when matched then ' ||
3685 ' update set ' ||
3686 ' a.effective_date = b.from_date, ' ||
3687 ' a.disable_date = b.until_date ';
3688 msd_dem_common_utilities.log_debug(x_sql);
3689 execute immediate x_sql using x_max_sales_date, x_max_sales_date, x_max_sales_date;
3690 msd_dem_common_utilities.log_debug(SQL%ROWCOUNT || ' - rows merged');
3691 END IF;
3692
3693 -- set disable date to null in case of spare does not have latest revision / is itself latest revision
3694 x_sql := 'UPDATE MSD_SPF_MODEL_BOM_COMPONENTS mbc ' ||
3695 ' SET ' ||
3696 ' mbc.disable_date = null ' ||
3697 ' where mbc.latest_rev is null ' ||
3698 ' or mbc.latest_rev = (select inventory_item_id from msc_item_id_lid miil ' ||
3699 ' where miil.sr_instance_id = mbc.sr_instance_id ' ||
3700 ' and miil.sr_inventory_item_id = mbc.dm_item_sr_pk) ';
3701 msd_dem_common_utilities.log_debug(x_sql);
3702 execute immediate x_sql;
3703
3704 -- adjust date range to the history and forecast cap and make sure there are no null dates
3705 x_sql := 'UPDATE MSD_SPF_MODEL_BOM_COMPONENTS ' ||
3706 ' SET ' ||
3707 ' effective_date = greatest(nvl(effective_date, :1), :2), ' ||
3708 ' disable_date = least(nvl(disable_date, :3), :4) ' ||
3709 ' where nvl(effective_date, :5) < :6 or nvl(disable_date, :7) > :8 ';
3710 msd_dem_common_utilities.log_debug(x_sql);
3711 execute immediate x_sql using x_history_cap, x_history_cap, x_forecast_cap, x_forecast_cap, x_history_cap-1, x_history_cap, x_forecast_cap+1, x_forecast_cap;
3712
3713 IF (p_preserve_dem_dates = G_YES) THEN -- Bug#12675064
3714 -- update msd_spf_model_bom_components to expand date range based on from and until dates of SPF GL members in demantra
3715 -- ** exclude base model and current latest spare rev in demantra **
3716 -- ** this handles case where a new latest spare rev is introduced **
3717 -- ** date range for current latest spare rev has to be changed based on source dates from supersession, during subsequent collection **
3718 x_sql := 'MERGE into MSD_SPF_MODEL_BOM_COMPONENTS a ' ||
3719 ' using ( ' ||
3720 ' select msbc.sr_instance_id, msbc.ebs_base_model_sr_pk, msbc.dm_item_sr_pk, ' ||
3721 ' least(nvl(msbc.effective_date, tesd.from_date), tesd.from_date) from_date, ' ||
3722 ' case when (tesc.t_ep_spf_child_code = teslr.t_ep_spf_latest_rev_code) then msbc.disable_date ' ||
3723 ' when (tesd.until_date > :1 and msbc.disable_date > :2) then msbc.disable_date ' ||
3724 ' else greatest(nvl(msbc.disable_date, tesd.until_date), tesd.until_date) ' ||
3725 ' end until_date ' || --bug#10124698, preserve only past dates in demantra (wrt max_sales_date)
3726 ' from msd_spf_model_bom_components msbc, '||g_schema|| '.t_ep_spf tes, ' ||g_schema|| '.t_ep_spf_child tesc, ' ||g_schema|| '.t_ep_spf_latest_rev teslr, ' ||g_schema|| '.t_ep_spf_dates tesd ' ||
3727 ' where tes.t_ep_spf_code = msbc.sr_instance_id || ''::'' || msbc.ebs_base_model_sr_pk || ''-'' || msbc.dm_item_sr_pk ' ||
3728 ' and tesc.t_ep_spf_child_id = tes.t_ep_spf_child_id ' ||
3729 ' and teslr.t_ep_spf_latest_rev_id = tes.t_ep_spf_latest_rev_id ' ||
3730 ' and tes.t_ep_spf_id = tesd.t_ep_spf_id ' ||
3731 ' and tesd.from_date <= :3 ' || --bug#10124698, preserve only past dates in demantra (wrt max_sales_date)
3732 ' and (nvl(msbc.effective_date, tesd.from_date) > tesd.from_date or nvl(msbc.disable_date, tesd.until_date) < tesd.until_date ) ) b '||
3733 ' on ( ' ||
3734 ' a.sr_instance_id = b.sr_instance_id ' ||
3735 ' and a.ebs_base_model_sr_pk = b.ebs_base_model_sr_pk ' ||
3736 ' and a.dm_item_sr_pk = b.dm_item_sr_pk ) ' ||
3737 ' when matched then ' ||
3738 ' update set ' ||
3739 ' a.effective_date = b.from_date, ' ||
3740 ' a.disable_date = b.until_date ';
3741 msd_dem_common_utilities.log_debug(x_sql);
3742 execute immediate x_sql using x_max_sales_date, x_max_sales_date, x_max_sales_date;
3743 msd_dem_common_utilities.log_debug(SQL%ROWCOUNT || ' - rows merged');
3744 END IF;
3745
3746 IF x_dm_time_level <> 'day' THEN
3747 -- adjust all future (from and to) dates
3748 -- from date is moved to start of bucket, to date will be moved to end of previous bucket to avoid overlap (2 spare revs active in same bucket)
3749 msd_dem_common_utilities.log_debug('Adjusting from and until dates in future');
3750
3751 x_sql := 'UPDATE ' ||
3752 ' msd_spf_model_bom_components '||
3753 ' set effective_date = ( '||
3754 ' select inp.start_date from msd_dem_dates inp '||
3755 ' where effective_date between inp.start_date and inp.end_date) ' ||
3756 ' where effective_date > :1 ';
3757 msd_dem_common_utilities.log_debug(x_sql);
3758 execute immediate x_sql using x_max_sales_date;
3759
3760 x_sql := 'UPDATE ' ||
3761 ' msd_spf_model_bom_components '||
3762 ' set disable_date = nvl( '||
3763 ' (select greatest(inp.start_date-1,effective_date) from msd_dem_dates inp '||
3764 ' where disable_date between inp.start_date and inp.end_date-1), ' ||
3765 ' disable_date) '||
3766 ' where disable_date > :1 ';
3767 msd_dem_common_utilities.log_debug(x_sql);
3768 execute immediate x_sql using x_max_sales_date;
3769
3770 END IF;
3771
3772 -- existing org population in demantra should be preserved
3773 x_lvl_org_id := to_number(msd_dem_common_utilities.get_app_id_text (
3774 'MSD_DEM_DEMANTRA_OBJECT_ID',
3775 'LEVEL_ORGANIZATION',
3776 1,
3777 'group_table_id'));
3778
3779 x_sql := 'MERGE INTO MSD_SPF_MODEL_ORGS a using ' ||
3780 ' (select msmo.ebs_base_model_code ebs_base_model_code, msmo.ebs_base_model_sr_pk, '||
3781 ' teo.organization dm_org_code, mtp.sr_tp_id dm_org_sr_pk ' ||
3782 ' from (select distinct ebs_base_model_code, ebs_base_model_sr_pk from msd_spf_model_orgs) msmo, ' ||
3783 ' ' || g_schema || '.t_ep_spf_base_model tesbm, ' || g_schema || '.t_ep_spf tes, ' ||
3784 ' ' || g_schema || '.t_ep_spf_levels tesl, ' || g_schema || '.t_ep_spf_members tesm, ' ||
3785 ' ' || g_schema || '.t_ep_organization teo, ' || g_schema || '.t_ep_spf_demand_type tesdt, '||
3786 ' msc_trading_partners mtp ' ||
3787 ' where tesbm.t_ep_spf_base_model_code = msmo.ebs_base_model_code ' ||
3788 ' and tes.t_ep_spf_base_model_id = tesbm.t_ep_spf_base_model_id ' ||
3789 ' and tesdt.t_ep_spf_demand_type_code = ''SPF-BM'' ' ||
3790 ' and tes.t_ep_spf_demand_type_id = tesdt.t_ep_spf_demand_type_id ' ||
3791 ' and tesl.t_ep_spf_id = tes.t_ep_spf_id and tesl.level_id = ' || x_lvl_org_id ||
3792 ' and tesm.filter_id = tesl.filter_id ' ||
3793 ' and tesm.member_id = teo.t_ep_organization_ep_id ' ||
3794 ' and mtp.sr_instance_id = ' || p_sr_instance_id ||
3795 ' and mtp.organization_code = teo.organization ' ||
3796 ' and mtp.partner_type = 3 ) b ' || -- Bug#12675064
3797 ' on ' ||
3798 ' ( a.ebs_base_model_sr_pk = b.ebs_base_model_sr_pk ' ||
3799 ' and a.ebs_base_model_code = b.ebs_base_model_code ' ||
3800 ' and a.dm_org_sr_pk = b.dm_org_sr_pk and a.dm_org_code = b.dm_org_code) ' ||
3801 ' when not matched then ' ||
3802 ' insert (ebs_base_model_sr_pk, ebs_base_model_code, dm_org_sr_pk, dm_org_code) ' ||
3803 ' values (b.ebs_base_model_sr_pk, b.ebs_base_model_code, b.dm_org_sr_pk, b.dm_org_code)';
3804 msd_dem_common_utilities.log_debug(x_sql);
3805 execute immediate x_sql;
3806 msd_dem_common_utilities.log_debug(SQL%ROWCOUNT || ' - rows merged');
3807
3808 commit;
3809
3810 EXCEPTION
3811 WHEN OTHERS THEN
3812 retcode := -1;
3813 errbuf := substr(sqlerrm, 1, 200);
3814 msd_dem_common_utilities.log_message('Error in MSD_SPF_COLLECT_HISTORY_DATA.DERIVE_SERVICE_BOM - ' || errbuf);
3815 msd_dem_common_utilities.log_debug('Error in MSD_SPF_COLLECT_HISTORY_DATA.DERIVE_SERVICE_BOM (' || TO_CHAR(systimestamp, 'DD-MON-RRRR HH24:MI:SS') || ') - ' || errbuf );
3816 END DERIVE_SERVICE_BOM;
3817
3818
3819
3820
3821 PROCEDURE COLLECT_SHIPMENT_DATA_FF (
3822 errbuf OUT NOCOPY VARCHAR2,
3823 retcode OUT NOCOPY VARCHAR2,
3824 p_sr_instance_id IN NUMBER,
3825 p_auto_run_download IN NUMBER,
3826 p_file_separator IN VARCHAR2,
3827 p_control_file_path IN VARCHAR2,
3828 p_data_file_path IN VARCHAR2,
3829 p_data_file_name IN VARCHAR2,
3830 p_check_interval IN NUMBER DEFAULT 60,
3831 p_time_out IN NUMBER DEFAULT 86400,
3832 p_synchronous IN NUMBER DEFAULT G_NO )
3833 IS
3834
3835 var_runtime DATE DEFAULT systimestamp;
3836
3837 var_errbuf VARCHAR2(2000) DEFAULT NULL;
3838 var_retcode VARCHAR2(100) DEFAULT 0;
3839
3840 BEGIN
3841
3842 msd_dem_common_utilities.log_debug ('Entering msd_spf_collect_history_data.collect_shipment_data_ff...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3843
3844 /* Log the input parameters to the log file */
3845 msd_dem_common_utilities.log_message('----------------------------------Input Parameters - Begin------------------------------------------');
3846
3847 msd_dem_common_utilities.log_message(' ' || rpad('Source Instance ID', 30) || ' - ' || to_char(p_sr_instance_id));
3848 msd_dem_common_utilities.log_message(' ' || rpad('Auto Run Download', 30) || ' - ' || to_char(p_auto_run_download));
3849 msd_dem_common_utilities.log_message(' ' || rpad('File Separator', 30) || ' - ' || p_file_separator);
3850 msd_dem_common_utilities.log_message(' ' || rpad('Control File Path', 30) || ' - ' || p_control_file_path);
3851 msd_dem_common_utilities.log_message(' ' || rpad('Data File Path', 30) || ' - ' || p_data_file_path);
3852 msd_dem_common_utilities.log_message(' ' || rpad('Data File Name', 30) || ' - ' || p_data_file_name);
3853
3854 msd_dem_common_utilities.log_message('-----------------------------------Input Parameters - End-------------------------------------------');
3855 msd_dem_common_utilities.log_message ('');
3856 msd_dem_common_utilities.log_message ('');
3857
3858 /* Log the optional input parameters to the output file */
3859 msd_dem_common_utilities.log_debug('----------------------------------Input Parameters - Begin------------------------------------------');
3860
3861 msd_dem_common_utilities.log_debug(' ' || rpad('Check Interval', 30) || ' - ' || to_char(p_check_interval));
3862 msd_dem_common_utilities.log_debug(' ' || rpad('Time Out', 30) || ' - ' || p_time_out);
3863 msd_dem_common_utilities.log_debug(' ' || rpad('Synchronous', 30) || ' - ' || to_char(p_synchronous));
3864
3865 msd_dem_common_utilities.log_debug('-----------------------------------Input Parameters - End-------------------------------------------');
3866 msd_dem_common_utilities.log_debug ('');
3867 msd_dem_common_utilities.log_debug ('');
3868
3869
3870 var_retcode := 0;
3871
3872
3873 /* Truncate all the staging tables */
3874 truncate_spf_staging(var_errbuf, var_retcode);
3875 IF (var_retcode = -1)
3876 THEN
3877 retcode := -1;
3878 errbuf := var_errbuf;
3879 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_shipment_data_ff - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3880 msd_dem_common_utilities.log_message ('Error in call to truncate_spf_staging');
3881 RETURN;
3882 END IF;
3883
3884
3885 /* Call the main program to run the spf shipment data collection in various stages */ -- Bug#12675064
3886 /*msd_dem_common_utilities.log_debug ('Calling msd_spf_collect_history_data.launch_spf_shipment_data_ff...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3887 launch_spf_shipment_data_ff (var_errbuf,
3888 var_retcode,
3889 var_runtime,
3890 p_sr_instance_id,
3891 p_auto_run_download,
3892 p_file_separator,
3893 p_control_file_path,
3894 p_data_file_path,
3895 p_data_file_name,
3896 p_check_interval,
3897 p_time_out,
3898 p_synchronous);*/
3899
3900 ---- Bug#12675064
3901 msd_dem_common_utilities.log_debug ('Calling msd_spf_collect_history_data.launch_spf_data_collection...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3902 launch_spf_data_collection (var_errbuf,
3903 var_retcode,
3904 var_runtime,
3905 p_sr_instance_id,
3906 '-999',
3907 null,
3908 null,
3909 null,
3910 null,
3911 null,
3912 null,
3913 null,
3914 G_YES,
3915 G_NO,
3916 G_NO,
3917 G_NO,
3918 p_auto_run_download,
3919 G_YES,
3920 p_file_separator,
3921 p_control_file_path,
3922 p_data_file_path,
3923 p_data_file_name,
3924 p_check_interval,
3925 p_time_out,
3926 p_synchronous);
3927
3928 IF (var_retcode = -1)
3929 THEN
3930 retcode := -1;
3931 errbuf := var_errbuf;
3932 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_shipment_data_ff - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3933 msd_dem_common_utilities.log_message ('Error in call to launch_spf_shipment_data_ff');
3934 RETURN;
3935 END IF;
3936 IF (var_retcode = 1)
3937 THEN
3938 retcode := 1;
3939 errbuf := var_errbuf;
3940 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_shipment_data_ff - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3941 msd_dem_common_utilities.log_message ('Warning in call to launch_spf_shipment_data_ff');
3942 RETURN;
3943 END IF;
3944
3945 msd_dem_common_utilities.log_debug ('Exiting msd_spf_collect_history_data.collect_shipment_data_ff...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3946
3947 EXCEPTION
3948 WHEN OTHERS THEN
3949 retcode := -1;
3950 errbuf := substr(SQLERRM,1,150);
3951 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_shipment_data_ff - EXCEPTION ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3952 msd_dem_common_utilities.log_message (errbuf);
3953 RETURN;
3954
3955 END COLLECT_SHIPMENT_DATA_FF;
3956
3957
3958
3959
3960 PROCEDURE COLLECT_USAGE_DATA_FF (
3961 errbuf OUT NOCOPY VARCHAR2,
3962 retcode OUT NOCOPY VARCHAR2,
3963 p_sr_instance_id IN NUMBER,
3964 p_file_separator IN VARCHAR2,
3965 p_control_file_path IN VARCHAR2,
3966 p_data_file_path IN VARCHAR2,
3967 p_data_file_name IN VARCHAR2,
3968 p_auto_run_download IN NUMBER,
3969 p_check_interval IN NUMBER DEFAULT 60,
3970 p_time_out IN NUMBER DEFAULT 86400,
3971 p_synchronous IN NUMBER DEFAULT G_NO )
3972 IS
3973
3974 var_runtime DATE DEFAULT systimestamp;
3975
3976 var_errbuf VARCHAR2(2000) DEFAULT NULL;
3977 var_retcode VARCHAR2(100) DEFAULT 0;
3978
3979 BEGIN
3980
3981 msd_dem_common_utilities.log_debug ('Entering msd_spf_collect_history_data.collect_usage_data_ff...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
3982
3983 /* Log the input parameters to the log file */
3984 msd_dem_common_utilities.log_message('----------------------------------Input Parameters - Begin------------------------------------------');
3985
3986 msd_dem_common_utilities.log_message(' ' || rpad('Source Instance ID', 30) || ' - ' || to_char(p_sr_instance_id));
3987 msd_dem_common_utilities.log_message(' ' || rpad('File Separator', 30) || ' - ' || p_file_separator);
3988 msd_dem_common_utilities.log_message(' ' || rpad('Control File Path', 30) || ' - ' || p_control_file_path);
3989 msd_dem_common_utilities.log_message(' ' || rpad('Data File Path', 30) || ' - ' || p_data_file_path);
3990 msd_dem_common_utilities.log_message(' ' || rpad('Data File Name', 30) || ' - ' || p_data_file_name);
3991 msd_dem_common_utilities.log_message(' ' || rpad('Auto Run Download', 30) || ' - ' || to_char(p_auto_run_download));
3992
3993 msd_dem_common_utilities.log_message('-----------------------------------Input Parameters - End-------------------------------------------');
3994 msd_dem_common_utilities.log_message ('');
3995 msd_dem_common_utilities.log_message ('');
3996
3997 /* Log the optional input parameters to the output file */
3998 msd_dem_common_utilities.log_debug('----------------------------------Input Parameters - Begin------------------------------------------');
3999
4000 msd_dem_common_utilities.log_debug(' ' || rpad('Check Interval', 30) || ' - ' || to_char(p_check_interval));
4001 msd_dem_common_utilities.log_debug(' ' || rpad('Time Out', 30) || ' - ' || p_time_out);
4002 msd_dem_common_utilities.log_debug(' ' || rpad('Synchronous', 30) || ' - ' || to_char(p_synchronous));
4003
4004 msd_dem_common_utilities.log_debug('-----------------------------------Input Parameters - End-------------------------------------------');
4005 msd_dem_common_utilities.log_debug ('');
4006 msd_dem_common_utilities.log_debug ('');
4007
4008
4009 var_retcode := 0;
4010
4011
4012 /* Truncate all the staging tables */
4013 truncate_spf_staging(var_errbuf, var_retcode);
4014 IF (var_retcode = -1)
4015 THEN
4016 retcode := -1;
4017 errbuf := var_errbuf;
4018 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_usage_data_ff - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4019 msd_dem_common_utilities.log_message ('Error in call to truncate_spf_staging');
4020 RETURN;
4021 END IF;
4022
4023 /* Call the main program to run the spf data collection in various stages */
4024 msd_dem_common_utilities.log_debug ('Calling msd_spf_collect_history_data.collect_usage_data_ff...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4025 launch_spf_data_collection (var_errbuf,
4026 var_retcode,
4027 var_runtime,
4028 p_sr_instance_id,
4029 '-999',
4030 null,
4031 null,
4032 null,
4033 null,
4034 null,
4035 null,
4036 null,
4037 G_NO,
4038 G_YES,
4039 G_NO,
4040 G_NO,
4041 p_auto_run_download,
4042 G_YES,
4043 p_file_separator,
4044 p_control_file_path,
4045 p_data_file_path,
4046 p_data_file_name,
4047 p_check_interval,
4048 p_time_out,
4049 p_synchronous);
4050 IF (var_retcode = -1)
4051 THEN
4052 retcode := -1;
4053 errbuf := var_errbuf;
4054 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_usage_data_ff - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4055 msd_dem_common_utilities.log_message ('Error in call to launch_spf_data_collection');
4056 RETURN;
4057 END IF;
4058 IF (var_retcode = 1)
4059 THEN
4060 retcode := 1;
4061 errbuf := var_errbuf;
4062 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_usage_data_ff - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4063 msd_dem_common_utilities.log_message ('Warning in call to launch_spf_data_collection');
4064 END IF;
4065
4066 msd_dem_common_utilities.log_debug ('Exiting msd_spf_collect_history_data.collect_usage_data_ff...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4067
4068 EXCEPTION
4069 WHEN OTHERS THEN
4070 retcode := -1;
4071 errbuf := substr(SQLERRM,1,150);
4072 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_usage_data_ff - EXCEPTION ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4073 msd_dem_common_utilities.log_message (errbuf);
4074 RETURN;
4075
4076 END COLLECT_USAGE_DATA_FF;
4077
4078
4079 PROCEDURE USAGE_DATA_PRE_PROCESS (
4080 errbuf OUT NOCOPY VARCHAR2,
4081 retcode OUT NOCOPY VARCHAR2,
4082 p_sr_instance_id IN NUMBER )
4083 IS
4084
4085 var_total_rows NUMBER DEFAULT NULL;
4086 var_row_count NUMBER DEFAULT NULL;
4087 var_good_rows NUMBER DEFAULT NULL;
4088 var_bad_rows NUMBER DEFAULT NULL;
4089 var_spf_master_org NUMBER DEFAULT NULL; -- Bug#12675064
4090
4091 x_category_set_id number := null;
4092
4093 CURSOR c_get_bad_rows
4094 IS
4095 SELECT ebs_base_model_code, dm_item_code, dm_org_code, usage_date, error_text
4096 FROM msd_spf_st_spare_usage
4097 WHERE process_flag = -1
4098 AND rownum < 10000;
4099
4100 BEGIN
4101
4102 msd_dem_common_utilities.log_debug ('Entering msd_spf_collect_history_data.usage_data_pre_process...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4103
4104 /* Log the input parameters to the log file */
4105 msd_dem_common_utilities.log_message('----------------------------------Input Parameters - Begin------------------------------------------');
4106
4107 msd_dem_common_utilities.log_message(' ' || rpad('Source Instance ID', 30) || ' - ' || to_char(p_sr_instance_id));
4108
4109 msd_dem_common_utilities.log_message('-----------------------------------Input Parameters - End-------------------------------------------');
4110 msd_dem_common_utilities.log_message ('');
4111 msd_dem_common_utilities.log_message ('');
4112
4113 /* Get the SPF Master Organization for SPF Base Model validation */ -- Bug#12675064
4114 SELECT to_number(parameter_value)
4115 INTO var_spf_master_org
4116 FROM msd_dem_setup_parameters
4117 WHERE parameter_name = 'MSD_SPF_MASTER_ORG';
4118
4119 IF (var_spf_master_org IS NULL)
4120 THEN
4121
4122 retcode := -1;
4123 errbuf := 'Unable to find SPF Master Organization. Hence exiting with error.';
4124 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.usage_data_pre_process - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4125 msd_dem_common_utilities.log_message (errbuf);
4126 RETURN;
4127
4128 END IF;
4129
4130 /* Get Total Rows in the table */
4131 msd_dem_common_utilities.log_debug('Total Count Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4132 SELECT count(1) INTO var_total_rows FROM msd_spf_st_spare_usage;
4133 msd_dem_common_utilities.log_debug('Total Count Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4134 IF (var_total_rows = 0)
4135 THEN
4136 retcode := -1;
4137 errbuf := 'No rows found in msd_spf_st_spare_usage';
4138 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.collect_usage_data_ff - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4139 msd_dem_common_utilities.log_message (errbuf);
4140 RETURN;
4141 ELSE
4142 msd_dem_common_utilities.log_message('Total rows in msd_spf_st_spare_usage - ' || to_char(var_total_rows));
4143 msd_dem_common_utilities.log_message ('');
4144 msd_dem_common_utilities.log_message ('');
4145 END IF;
4146
4147 /* Process Organizations */
4148 msd_dem_common_utilities.log_message('----------------------------Process Organization Members - Begin------------------------------------');
4149 var_row_count := 0;
4150
4151 msd_dem_common_utilities.log_message ('Update Source Organization Id...');
4152 msd_dem_common_utilities.log_debug('Update DM_ORG_SR_PK Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4153 UPDATE msd_spf_st_spare_usage su
4154 SET dm_org_sr_pk = NVL((SELECT sr_tp_id FROM msc_trading_partners mtp
4155 WHERE mtp.sr_instance_id = p_sr_instance_id
4156 AND mtp.partner_type = 3
4157 AND mtp.organization_code = su.dm_org_code), su.dm_org_sr_pk);
4158 var_row_count := SQL%ROWCOUNT;
4159 msd_dem_common_utilities.log_debug('Update DM_ORG_SR_PK Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4160 msd_dem_common_utilities.log_message ('Rows updated - ' || to_char(var_row_count));
4161
4162
4163 msd_dem_common_utilities.log_message('-----------------------------Process Organization Members - End-------------------------------------');
4164 msd_dem_common_utilities.log_message ('');
4165 msd_dem_common_utilities.log_message ('');
4166
4167 /* Process Service Parts */
4168 msd_dem_common_utilities.log_message('-----------------------------Process Service Parts Members - Begin----------------------------------');
4169 var_row_count := 0;
4170
4171 msd_dem_common_utilities.log_message ('Update Source Inventory Item Id for Service Parts...');
4172 msd_dem_common_utilities.log_debug('Update DM_ITEM_SR_PK Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4173 UPDATE msd_spf_st_spare_usage su
4174 SET dm_item_sr_pk = NVL((SELECT sr_inventory_item_id FROM msc_system_items msi
4175 WHERE msi.plan_id = -1
4176 AND msi.sr_instance_id = p_sr_instance_id
4177 AND msi.organization_id = su.dm_org_sr_pk
4178 AND msi.item_name = su.dm_item_code), su.dm_item_sr_pk)
4179 WHERE dm_org_sr_pk > 0;
4180 var_row_count := SQL%ROWCOUNT;
4181 msd_dem_common_utilities.log_debug('Update DM_ITEM_SR_PK Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4182 msd_dem_common_utilities.log_message ('Rows updated - ' || to_char(var_row_count));
4183
4184
4185 msd_dem_common_utilities.log_message('------------------------------Process Service Parts Members - End-----------------------------------');
4186 msd_dem_common_utilities.log_message ('');
4187 msd_dem_common_utilities.log_message ('');
4188
4189 /* Process Finished Goods */
4190 msd_dem_common_utilities.log_message('-----------------------------Process Finished Goods Members - Begin---------------------------------');
4191 var_row_count := 0;
4192
4193 msd_dem_common_utilities.log_message ('Update Source Inventory Item Id for Finished Goods...');
4194 msd_dem_common_utilities.log_debug('Update EBS_BASE_MODEL_SR_PK Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4195 UPDATE msd_spf_st_spare_usage su
4196 SET ebs_base_model_sr_pk = NVL((SELECT sr_inventory_item_id FROM msc_system_items msi
4197 WHERE msi.plan_id = -1
4198 AND msi.sr_instance_id = p_sr_instance_id
4199 AND msi.organization_id = var_spf_master_org -- Bug#12675064
4200 AND msi.item_name = su.ebs_base_model_code), su.ebs_base_model_sr_pk)
4201 WHERE dm_org_sr_pk > 0;
4202 var_row_count := SQL%ROWCOUNT;
4203 msd_dem_common_utilities.log_debug('Update EBS_BASE_MODEL_SR_PK Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4204 msd_dem_common_utilities.log_message ('Rows updated - ' || to_char(var_row_count));
4205
4206
4207 msd_dem_common_utilities.log_message('------------------------------Process Finished Goods Members - End----------------------------------');
4208 msd_dem_common_utilities.log_message ('');
4209 msd_dem_common_utilities.log_message ('');
4210
4211 /* Update Process Flag and Error Text for bad rows */
4212 msd_dem_common_utilities.log_message('------------------------------------Check Invalid Rows - Begin--------------------------------------');
4213 var_bad_rows := 0;
4214
4215 msd_dem_common_utilities.log_message ('Checking for invalid rows ...');
4216 msd_dem_common_utilities.log_debug('Update Bad Rows Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4217 UPDATE msd_spf_st_spare_usage
4218 SET process_flag = -1,
4219 error_text = 'Unable to find key(s) for - '
4220 || decode (ebs_base_model_sr_pk, -23453, ' EBS_BASE_MODEL_CODE = ' || ebs_base_model_code, '')
4221 || decode (dm_item_sr_pk, -23453, ' DM_ITEM_CODE = ' || dm_item_code, '')
4222 || decode (dm_org_sr_pk, -23453, ' DM_ORG_CODE = ' || dm_org_code, '')
4223 WHERE ebs_base_model_sr_pk < 0
4224 OR dm_item_sr_pk < 0
4225 OR dm_org_sr_pk < 0;
4226 var_bad_rows := SQL%ROWCOUNT;
4227
4228 msd_dem_common_utilities.log_debug('Update Bad Rows Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4229
4230 msd_dem_common_utilities.log_message ('Checking for invalid spares ...');
4231
4232 x_category_set_id := MSC_UTIL.GET_SERVICE_ITEMS_CATSET_ID;
4233 if x_category_set_id is null then
4234 raise_application_error(-20001, 'Profile ''MSC: Category Set for Serviceable Items'' not set. Cannot proceed with validation of spares.');
4235 end if;
4236
4237 msd_dem_common_utilities.log_debug('Update Bad Rows Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4238 UPDATE msd_spf_st_spare_usage su
4239 SET process_flag = -1,
4240 error_text = 'Spare not assigned to Spare Cat Set ' || x_category_set_id || ', for - '
4241 || ' DM_ITEM_CODE = ' || dm_item_code || ''
4242 WHERE (process_flag is null or process_flag <> -1)
4243 and not exists (select 1 from msc_system_items msi, msc_item_categories mic -- Bug#12675064
4244 where msi.sr_inventory_item_id = su.dm_item_sr_pk and msi.plan_id = -1 and
4245 msi.sr_instance_id = p_sr_instance_id and msi.organization_id = su.dm_org_sr_pk
4246 and mic.organization_id = var_spf_master_org -- Bug#12675064
4247 and mic.sr_instance_id = msi.sr_instance_id
4248 and mic.inventory_item_id = msi.inventory_item_id -- Bug#12675064
4249 and mic.category_set_id = x_category_set_id );
4250 var_bad_rows := var_bad_rows + SQL%ROWCOUNT;
4251
4252 msd_dem_common_utilities.log_debug('Update Bad Rows Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4253
4254 IF (var_bad_rows > 0)
4255 THEN
4256
4257 msd_dem_common_utilities.log_message ('Total Invalid Rows - ' || to_char (var_bad_rows));
4258 msd_dem_common_utilities.log_message ('');
4259 msd_dem_common_utilities.log_message ('');
4260
4261 msd_dem_common_utilities.log_message ('Following rows are invalid and will be deleted from the table - ');
4262 msd_dem_common_utilities.log_message ('');
4263 msd_dem_common_utilities.log_message ('');
4264
4265 msd_dem_common_utilities.log_message('--------------------------------------------------------------------------------'
4266 || '--------------------------------------------------------------------------------'
4267 || '------------------');
4268 msd_dem_common_utilities.log_message (rpad('EBS BASE MODEL CODE', 25) || ' ' || rpad('DM ITEM CODE', 25) || ' ' || rpad('DM ORG CODE', 12) || ' ' || rpad('USAGE DATE', 12) || ' ' || rpad('Error Text', 100));
4269 msd_dem_common_utilities.log_message('--------------------------------------------------------------------------------'
4270 || '--------------------------------------------------------------------------------'
4271 || '------------------');
4272
4273 FOR c_rec IN c_get_bad_rows
4274 LOOP
4275 msd_dem_common_utilities.log_message(rpad(c_rec.ebs_base_model_code, 25) || ' '
4276 || rpad(c_rec.dm_item_code, 25) || ' '
4277 || rpad(c_rec.dm_org_code, 12) || ' '
4278 || rpad(to_char(c_rec.usage_date, 'DD/MM/YYYY'), 12) || ' '
4279 || rpad(c_rec.error_text, 100));
4280 END LOOP;
4281
4282 msd_dem_common_utilities.log_message('--------------------------------------------------------------------------------'
4283 || '--------------------------------------------------------------------------------'
4284 || '------------------');
4285 msd_dem_common_utilities.log_message ('');
4286 msd_dem_common_utilities.log_message ('');
4287
4288 msd_dem_common_utilities.log_message ('Deleting Invalid Rows...');
4289 var_row_count := 0;
4290
4291 msd_dem_common_utilities.log_debug('Delete Bad Rows Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4292 DELETE FROM msd_spf_st_spare_usage WHERE process_flag = -1;
4293 var_row_count := SQL%ROWCOUNT;
4294 msd_dem_common_utilities.log_debug('Delete Bad Rows Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4295
4296 msd_dem_common_utilities.log_message('Rows Deleted - ' || to_char(var_row_count));
4297
4298 ELSE
4299 msd_dem_common_utilities.log_message ('No invalid rows found.');
4300 END IF;
4301
4302 msd_dem_common_utilities.log_message('-------------------------------------Check Invalid Rows - End---------------------------------------');
4303 msd_dem_common_utilities.log_message ('');
4304 msd_dem_common_utilities.log_message ('');
4305
4306 COMMIT;
4307
4308 IF (var_bad_rows = var_total_rows)
4309 THEN
4310
4311 retcode := -1;
4312 errbuf := 'All the rows are invalid. Hence exiting with error.';
4313 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.usage_data_pre_process - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4314
4315 ELSE
4316
4317 var_good_rows := var_total_rows - var_bad_rows;
4318 msd_dem_common_utilities.log_message ('Total valid rows - ' || to_char(var_good_rows));
4319
4320 IF (var_bad_rows > 0)
4321 THEN
4322
4323 msd_dem_common_utilities.log_message('Total invalid rows - ' || to_char(var_bad_rows));
4324 msd_dem_common_utilities.log_message ('');
4325 msd_dem_common_utilities.log_message ('');
4326 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.usage_data_pre_process - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4327 msd_dem_common_utilities.log_message ('Invalid rows found in usage history flat file load.');
4328 retcode := 1;
4329 errbuf := 'Invalid rows found in usage history flat file load.';
4330
4331 END IF;
4332
4333 END IF;
4334
4335 /* Aggregate Data to Demantra Base Time Level */
4336 msd_dem_common_utilities.log_message('---------------------------Aggregating Data to Base Time Level - Begin------------------------------');
4337 var_row_count := null;
4338
4339 msd_dem_common_utilities.log_debug('Update Rows Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4340 UPDATE msd_spf_st_spare_usage
4341 SET process_flag = 0;
4342 msd_dem_common_utilities.log_debug('Update Rows Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4343 COMMIT;
4344
4345 msd_dem_common_utilities.log_debug('Aggregate and Insert Rows Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4346 INSERT /*+ APPEND */ INTO MSD_SPF_ST_SPARE_USAGE NOLOGGING
4347 (USAGE_HIST_TYPE, EBS_BASE_MODEL_CODE, DM_ITEM_CODE, DM_ORG_CODE, USAGE_DATE, QUANTITY, -- Bug#12675064
4348 EBS_BASE_MODEL_SR_PK, DM_ITEM_SR_PK, DM_ORG_SR_PK,
4349 LAST_UPDATE_LOGIN, LAST_UPDATE_DATE, CREATION_DATE, LAST_UPDATED_BY, CREATED_BY)
4350 SELECT su.usage_hist_type, su.ebs_base_model_code, su.dm_item_code, su.dm_org_code, mdd.datet, sum(su.quantity), -- Bug#12675064
4351 su.ebs_base_model_sr_pk, su.dm_item_sr_pk, su.dm_org_sr_pk,
4352 FND_GLOBAL.LOGIN_ID, systimestamp, systimestamp, FND_GLOBAL.USER_ID, FND_GLOBAL.USER_ID
4353 FROM
4354 msd_spf_st_spare_usage su,
4355 msd_dem_dates mdd
4356 WHERE
4357 su.usage_date BETWEEN mdd.start_date AND mdd.end_date
4358 GROUP BY su.usage_hist_type, su.ebs_base_model_sr_pk, su.dm_item_sr_pk, su.dm_org_sr_pk, mdd.datet, -- Bug#12675064
4359 su.ebs_base_model_code, su.dm_item_code, su.dm_org_code;
4360 var_row_count := SQL%ROWCOUNT;
4361 msd_dem_common_utilities.log_debug('Aggregate and Insert End Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4362 msd_dem_common_utilities.log_message('Rows (at base time level) Inserted - ' || to_char(var_row_count));
4363
4364 COMMIT;
4365
4366 msd_dem_common_utilities.log_debug('Daily Rows Delete Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4367 var_row_count := null;
4368
4369 DELETE FROM msd_spf_st_spare_usage
4370 WHERE process_flag =0;
4371 var_row_count := SQL%ROWCOUNT;
4372 msd_dem_common_utilities.log_debug('Daily Rows Delete Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4373 msd_dem_common_utilities.log_message('Rows (at day level) Deleted - ' || to_char(var_row_count));
4374
4375 COMMIT;
4376
4377 msd_dem_common_utilities.log_message('----------------------------Aggregating Data to Base Time Level - End-------------------------------');
4378 msd_dem_common_utilities.log_message ('');
4379 msd_dem_common_utilities.log_message ('');
4380
4381
4382 msd_dem_common_utilities.log_debug ('Exiting msd_spf_collect_history_data.usage_data_pre_process...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4383
4384 EXCEPTION
4385 WHEN OTHERS THEN
4386 retcode := -1;
4387 errbuf := substr(SQLERRM,1,150);
4388 msd_dem_common_utilities.log_message ('msd_spf_collect_history_data.usage_data_pre_process - EXCEPTION ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4389 msd_dem_common_utilities.log_message (errbuf);
4390 RETURN;
4391
4392 END USAGE_DATA_PRE_PROCESS;
4393 /* Procedure for collect series data request */
4394 PROCEDURE COLLECT_SERIES_DATA_REQ (
4395 errbuf OUT NOCOPY VARCHAR2,
4396 retcode OUT NOCOPY VARCHAR2,
4397 p_series_id IN NUMBER,
4398 p_dest_table IN VARCHAR2,
4399 p_sr_instance_id IN NUMBER,
4400 p_collection_method IN NUMBER,
4401 p_from_date IN VARCHAR2,
4402 p_to_date IN VARCHAR2,
4403 p_sim_plan_name IN VARCHAR2 DEFAULT '')
4404 IS
4405 x_errbuf VARCHAR2(200) := NULL;
4406 x_retcode VARCHAR2(100) := NULL;
4407 BEGIN
4408 collect_series_data(x_errbuf, x_retcode,
4409 p_series_id,
4410 p_dest_table,
4411 p_sr_instance_id,
4412 p_collection_method,
4413 fnd_date.canonical_to_date(p_from_date),
4414 fnd_date.canonical_to_date(p_to_date),
4415 p_sim_plan_name
4416 );
4417
4418 IF (x_retcode = -1) THEN
4419 retcode := -1;
4420 errbuf := x_errbuf;
4421 msd_dem_common_utilities.log_message ('Error: MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_SERIES_DATA_REQ - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4422 msd_dem_common_utilities.log_message ('Error in call to COLLECT_SERIES_DATA');
4423 RETURN;
4424 END IF;
4425 END COLLECT_SERIES_DATA_REQ;
4426
4427 /*
4428 * Set purge profiles for CMRO/Fleet/EAM collections
4429 */
4430 PROCEDURE SET_CMROEAM_PURGE_PROFILES(
4431 errbuf OUT NOCOPY VARCHAR2,
4432 retcode OUT NOCOPY VARCHAR2,
4433 p_product IN VARCHAR2,
4434 p_from_date IN DATE,
4435 p_to_date IN DATE
4436 )
4437 IS
4438 x_profile_id number;
4439 x_sql varchar2(500) := null;
4440 x_query_name varchar2(200) := null;
4441 x_table_name varchar2(30) := null;
4442 x_series_id number;
4443 x_lvl_org_id number;
4444 x_org_filter_id number;
4445 x_from_date date;
4446 x_to_date date;
4447 x_errbuf1 varchar2(200) := null;
4448 x_retcode1 varchar2(100) := null;
4449 BEGIN
4450 msd_dem_common_utilities.log_debug ('Entering: MSD_SPF_COLLECT_HISTORY_DATA.SET_CMROEAM_PURGE_PROFILES - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4451
4452 x_sql := 'select datet from '|| g_schema ||'.inputs where datet >= :1 and rownum = 1 order by datet asc';
4453 execute immediate x_sql into x_from_date using p_from_date;
4454
4455 x_sql := 'select datet from '|| g_schema ||'.inputs where datet <= :1 and rownum = 1 order by datet desc';
4456 execute immediate x_sql into x_to_date using p_to_date;
4457
4458 if (x_from_date > x_to_date) then
4459 x_to_date := x_from_date;
4460 end if;
4461
4462 msd_dem_common_utilities.log_message ('For the selected series, the old data will be purged from ''' || x_from_date ||''' to '''||x_to_date ||'''');
4463 msd_dem_common_utilities.log_debug ('For the selected series, the old data will be purged from ''' || x_from_date ||''' to '''||x_to_date ||'''');
4464
4465 -- reset Purge Asset Group History profile to no load, no purge
4466 x_profile_id := to_number(msd_dem_common_utilities.get_app_id_text (
4467 'MSD_DEM_DEMANTRA_OBJECT_ID',
4468 'PROFILE_PURGE_AG_HISTORY',
4469 1,
4470 'id'));
4471 x_sql := 'select query_name, table_name from '|| g_schema || '.transfer_query where id = ' || x_profile_id;
4472 msd_dem_common_utilities.log_debug(x_sql);
4473 execute immediate x_sql into x_query_name, x_table_name;
4474 msd_dem_common_utilities.log_debug('Refreshing profile - ' || x_query_name);
4475 msd_dem_common_utilities.REFRESH_PURGE_SERIES(x_errbuf1, x_retcode1, x_profile_id, g_schema);
4476
4477 IF (x_retcode1 = -1) THEN
4478 retcode := 1;
4479 errbuf := 'Error refreshing profile - ' || x_query_name ||'. ';
4480 msd_dem_common_utilities.log_debug('Error Refreshing profile -' || x_query_name || ' : ' || x_errbuf1);
4481 END IF;
4482
4483 IF (p_product = 'CMRO') THEN
4484 --set series to Load-Override, Purge-All dates without new data within profile's date range
4485 --'Sales' series in 'Purge Asset Group History'
4486 msd_dem_common_utilities.log_debug('Set purge for Sales series');
4487 x_series_id := to_number(msd_dem_common_utilities.get_app_id_text (
4488 'MSD_DEM_DEMANTRA_OBJECT_ID',
4489 'SERIES_SALES',
4490 1,
4491 'forecast_type_id'));
4492 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_ATTR('||x_profile_id||', '|| x_series_id||', 0, 2); end;';
4493 msd_dem_common_utilities.log_debug(x_sql);
4494 execute immediate x_sql;
4495
4496 --set date range
4497 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_FDATE('||x_profile_id||', '''|| x_from_date||''' , '''||x_to_date||'''); end;';
4498 msd_dem_common_utilities.log_debug(x_sql);
4499 execute immediate x_sql;
4500
4501 --populate Asset Group members in staging table
4502 x_sql := 'insert into '|| g_schema ||'.'||x_table_name||'(sdate, level1)'||
4503 ' select '''||x_from_date||''', teag.asset_group from '|| g_schema||'.t_ep_asset_group teag '||
4504 ' where teag.asset_group in ' ||
4505 ' (SELECT distinct asset_group FROM MSD_SPF_CMRO_BOM)';
4506 msd_dem_common_utilities.log_debug(x_sql);
4507 execute immediate x_sql;
4508
4509 --notify app server
4510 x_sql := 'begin ' || g_schema|| '.API_NOTIFY_APS_INTEGRATION('||x_profile_id ||'); end;';
4511 msd_dem_common_utilities.log_debug(x_sql);
4512 execute immediate x_sql;
4513 ELSIF (p_product = 'FLEET') THEN
4514 --set series to Load-Override, Purge-All dates without new data within profile's date range
4515 --'Fleet Size', 'Fleet Flight Hours', 'Fleet Number of Flights' series in 'Purge Asset Group History'
4516 msd_dem_common_utilities.log_debug('Set purge for Fleet Size series');
4517 x_series_id := to_number(msd_dem_common_utilities.get_app_id_text (
4518 'MSD_DEM_DEMANTRA_OBJECT_ID',
4519 'SERIES_FLEET_SIZE',
4520 1,
4521 'forecast_type_id'));
4522 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_ATTR('||x_profile_id||', '|| x_series_id||', 0, 2); end;';
4523 msd_dem_common_utilities.log_debug(x_sql);
4524 execute immediate x_sql;
4525
4526 msd_dem_common_utilities.log_debug('Set purge for Fleet Flight Hours series');
4527 x_series_id := to_number(msd_dem_common_utilities.get_app_id_text (
4528 'MSD_DEM_DEMANTRA_OBJECT_ID',
4529 'SERIES_FLEET_FLIGHT_HOURS',
4530 1,
4531 'forecast_type_id'));
4532 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_ATTR('||x_profile_id||', '|| x_series_id||', 0, 2); end;';
4533 msd_dem_common_utilities.log_debug(x_sql);
4534 execute immediate x_sql;
4535
4536 msd_dem_common_utilities.log_debug('Set purge for Fleet Number of Flights series');
4537 x_series_id := to_number(msd_dem_common_utilities.get_app_id_text (
4538 'MSD_DEM_DEMANTRA_OBJECT_ID',
4539 'SERIES_FLEET_NUMBER_FLIGHTS',
4540 1,
4541 'forecast_type_id'));
4542 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_ATTR('||x_profile_id||', '|| x_series_id||', 0, 2); end;';
4543 msd_dem_common_utilities.log_debug(x_sql);
4544 execute immediate x_sql;
4545
4546 --set date range
4547 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_FDATE('||x_profile_id||', '''|| x_from_date||''' , '''||x_to_date||'''); end;';
4548 msd_dem_common_utilities.log_debug(x_sql);
4549 execute immediate x_sql;
4550
4551 --populate Asset Group members in staging table
4552 x_sql := 'insert into '|| g_schema ||'.'||x_table_name||'(sdate, level1)'||
4553 ' select '''||x_from_date||''', teag.asset_group from '|| g_schema||'.t_ep_asset_group teag '||
4554 ' where teag.asset_group in ' ||
4555 ' (SELECT distinct level1 FROM ' || G_FLEET_DATA_DEST_TABLE || ')';
4556 msd_dem_common_utilities.log_debug(x_sql);
4557 execute immediate x_sql;
4558
4559 --notify app server
4560 x_sql := 'begin ' || g_schema|| '.API_NOTIFY_APS_INTEGRATION('||x_profile_id ||'); end;';
4561 msd_dem_common_utilities.log_debug(x_sql);
4562 execute immediate x_sql;
4563 END IF;
4564
4565 -- reset Purge Spare History Data profile to no load, no purge
4566 x_profile_id := to_number(msd_dem_common_utilities.get_app_id_text (
4567 'MSD_DEM_DEMANTRA_OBJECT_ID',
4568 'PROFILE_PURGE_SPARE_HISTORY',
4569 1,
4570 'id'));
4571 x_sql := 'select query_name, table_name from '|| g_schema || '.transfer_query where id = ' || x_profile_id;
4572 msd_dem_common_utilities.log_debug(x_sql);
4573 execute immediate x_sql into x_query_name, x_table_name;
4574 msd_dem_common_utilities.log_debug('Refreshing profile - ' || x_query_name);
4575 msd_dem_common_utilities.REFRESH_PURGE_SERIES(x_errbuf1, x_retcode1, x_profile_id, g_schema);
4576
4577 IF (x_retcode1 = -1) THEN
4578 retcode := 1;
4579 errbuf := errbuf || 'Error refreshing profile - ' || x_query_name ||'. ';
4580 msd_dem_common_utilities.log_debug('Error Refreshing profile -' || x_query_name || ' : ' || x_errbuf1);
4581 END IF;
4582
4583 IF (p_product = 'CMRO') THEN
4584 --set series to Load-Override, Purge-All dates without new data within profile's date range
4585 --'SPF Item Usage', 'SPF Work Order History' in 'Purge Spare history Data'
4586 msd_dem_common_utilities.log_debug('Set purge for usage history');
4587 x_series_id := to_number(msd_dem_common_utilities.get_app_id_text (
4588 'MSD_DEM_DEMANTRA_OBJECT_ID',
4589 'SERIES_SPF_USAGE_HIST',
4590 1,
4591 'forecast_type_id'));
4592 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_ATTR('||x_profile_id||', '|| x_series_id||', 0, 2); end;';
4593 msd_dem_common_utilities.log_debug(x_sql);
4594 execute immediate x_sql;
4595
4596 msd_dem_common_utilities.log_debug('Set purge for usage history');
4597 x_series_id := to_number(msd_dem_common_utilities.get_app_id_text (
4598 'MSD_DEM_DEMANTRA_OBJECT_ID',
4599 'SERIES_SPF_WORK_ORDER_HISTORY',
4600 1,
4601 'forecast_type_id'));
4602 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_ATTR('||x_profile_id||', '|| x_series_id||', 0, 2); end;';
4603 msd_dem_common_utilities.log_debug(x_sql);
4604 execute immediate x_sql;
4605
4606 --set date range
4607 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_FDATE('||x_profile_id||', '''|| x_from_date||''' , '''||x_to_date||'''); end;';
4608 execute immediate x_sql;
4609
4610 --populate base model(s) in staging table
4611 x_sql := 'insert into '|| g_schema ||'.'||x_table_name||'(sdate, level1)'||
4612 ' select '''||x_from_date||''', tesbm.t_ep_spf_base_model_code from '|| g_schema||'.t_ep_spf_base_model tesbm '||
4613 ' where tesbm.t_ep_spf_base_model_code in ' ||
4614 ' (SELECT distinct base_model_code FROM MSD_SPF_CMRO_BOM)';
4615 msd_dem_common_utilities.log_debug(x_sql);
4616 execute immediate x_sql;
4617
4618 --populate filters for org
4619 x_lvl_org_id := to_number(msd_dem_common_utilities.get_app_id_text (
4620 'MSD_DEM_DEMANTRA_OBJECT_ID',
4621 'LEVEL_ORGANIZATION',
4622 1,
4623 'group_table_id'));
4624 x_sql := 'select filter_id from ' || g_schema || '.transfer_query_filters ' ||
4625 ' where id = ' || x_profile_id || ' and level_id = ' || x_lvl_org_id || '';
4626 msd_dem_common_utilities.log_debug(x_sql);
4627 execute immediate x_sql into x_org_filter_id;
4628
4629 x_sql := 'delete from ' || g_schema || '.transfer_query_filter_m where filter_id = ' || x_org_filter_id;
4630 msd_dem_common_utilities.log_debug(x_sql);
4631 execute immediate x_sql;
4632
4633 x_sql := 'insert into '||g_schema|| '.transfer_query_filter_m (filter_id, member_id) ' ||
4634 ' select ' ||x_org_filter_id|| ', teo.t_ep_organization_ep_id from ' ||g_schema||'.t_ep_organization teo ' ||
4635 ' where teo.organization in ' ||
4636 ' (select distinct organization_code from MSD_SPF_CMRO_BOM)';
4637 msd_dem_common_utilities.log_debug(x_sql);
4638 execute immediate x_sql;
4639
4640 --notify app server
4641 x_sql := 'begin ' || g_schema|| '.API_NOTIFY_APS_INTEGRATION('||x_profile_id ||'); end;';
4642 msd_dem_common_utilities.log_debug(x_sql);
4643 execute immediate x_sql;
4644 END IF;
4645
4646 -- reset Purge SPF Fleet Data profile to no load, no purge
4647 x_profile_id := to_number(msd_dem_common_utilities.get_app_id_text (
4648 'MSD_DEM_DEMANTRA_OBJECT_ID',
4649 'PROFILE_PURGE_SPF_FLEET_DATA',
4650 1,
4651 'id'));
4652 x_sql := 'select query_name, table_name from '|| g_schema || '.transfer_query where id = ' || x_profile_id;
4653 msd_dem_common_utilities.log_debug(x_sql);
4654 execute immediate x_sql into x_query_name, x_table_name;
4655 msd_dem_common_utilities.log_debug('Refreshing profile - ' || x_query_name);
4656 msd_dem_common_utilities.REFRESH_PURGE_SERIES(x_errbuf1, x_retcode1, x_profile_id, g_schema);
4657
4658 IF (x_retcode1 = -1) THEN
4659 retcode := 1;
4660 errbuf := errbuf || 'Error refreshing profile - ' || x_query_name ||'. ';
4661 msd_dem_common_utilities.log_debug('Error Refreshing profile -' || x_query_name || ' : ' || x_errbuf1);
4662 END IF;
4663
4664 IF (p_product = 'FLEET') THEN
4665 --set series to Load-Override, Purge-All dates without new data within profile's date range
4666 --'SPF Fleet Size', 'SPF Fleet Flight Hours', 'SPF Fleet Number of Flights' series in 'Purge SPF Fleet Data'
4667 msd_dem_common_utilities.log_debug('Set purge for SPF Fleet Size series');
4668 x_series_id := to_number(msd_dem_common_utilities.get_app_id_text (
4669 'MSD_DEM_DEMANTRA_OBJECT_ID',
4670 'SERIES_SPF_FLEET_SIZE',
4671 1,
4672 'forecast_type_id'));
4673 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_ATTR('||x_profile_id||', '|| x_series_id||', 0, 2); end;';
4674 msd_dem_common_utilities.log_debug(x_sql);
4675 execute immediate x_sql;
4676
4677 msd_dem_common_utilities.log_debug('Set purge for SPF Fleet Flight Hours series');
4678 x_series_id := to_number(msd_dem_common_utilities.get_app_id_text (
4679 'MSD_DEM_DEMANTRA_OBJECT_ID',
4680 'SERIES_SPF_FLEET_FLIGHT_HOURS',
4681 1,
4682 'forecast_type_id'));
4683 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_ATTR('||x_profile_id||', '|| x_series_id||', 0, 2); end;';
4684 msd_dem_common_utilities.log_debug(x_sql);
4685 execute immediate x_sql;
4686
4687 msd_dem_common_utilities.log_debug('Set purge for SPF Fleet Number of Flights series');
4688 x_series_id := to_number(msd_dem_common_utilities.get_app_id_text (
4689 'MSD_DEM_DEMANTRA_OBJECT_ID',
4690 'SERIES_SPF_FLEET_NUM_FLIGHTS',
4691 1,
4692 'forecast_type_id'));
4693 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_ATTR('||x_profile_id||', '|| x_series_id||', 0, 2); end;';
4694 msd_dem_common_utilities.log_debug(x_sql);
4695 execute immediate x_sql;
4696
4697 --set date range
4698 x_sql := 'begin ' || g_schema|| '.API_MODIFY_INTEG_SERIES_FDATE('||x_profile_id||', '''|| x_from_date||''' , '''||x_to_date||'''); end;';
4699 msd_dem_common_utilities.log_debug(x_sql);
4700 execute immediate x_sql;
4701
4702 --populate Asset Group members in staging table
4703 x_sql := 'insert into '|| g_schema ||'.'||x_table_name||'(sdate, level1)'||
4704 ' select '''||x_from_date||''', teag.asset_group from '|| g_schema||'.t_ep_asset_group teag '||
4705 ' where teag.asset_group in ' ||
4706 ' (SELECT distinct level1 FROM ' || G_FLEET_DATA_DEST_TABLE || ')';
4707 msd_dem_common_utilities.log_debug(x_sql);
4708 execute immediate x_sql;
4709
4710 --notify app server
4711 x_sql := 'begin ' || g_schema|| '.API_NOTIFY_APS_INTEGRATION('||x_profile_id ||'); end;';
4712 msd_dem_common_utilities.log_debug(x_sql);
4713 execute immediate x_sql;
4714 END IF;
4715
4716 msd_dem_common_utilities.log_debug ('Exiting: MSD_SPF_COLLECT_HISTORY_DATA.SET_CMROEAM_PURGE_PROFILES - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4717 EXCEPTION WHEN OTHERS THEN
4718 retcode := 1 ;
4719 errbuf := errbuf || substr(SQLERRM,1,150);
4720 msd_dem_common_utilities.log_message ('Warning: MSD_SPF_COLLECT_HISTORY_DATA.SET_CMROEAM_PURGE_PROFILES - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4721 msd_dem_common_utilities.log_debug (errbuf);
4722 msd_dem_common_utilities.log_debug ('Exiting: MSD_SPF_COLLECT_HISTORY_DATA.SET_CMROEAM_PURGE_PROFILES - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4723 RETURN;
4724 END SET_CMROEAM_PURGE_PROFILES;
4725
4726
4727 PROCEDURE COLLECT_CMRO_DATA (
4728 errbuf OUT NOCOPY VARCHAR2,
4729 retcode OUT NOCOPY VARCHAR2,
4730 p_sr_instance_id IN NUMBER,
4731 p_collection_group IN VARCHAR2,
4732 p_collection_method IN NUMBER,
4733 p_hidden_param IN VARCHAR2,
4734 p_date_range_type IN NUMBER,
4735 p_collection_window IN NUMBER,
4736 p_from_date IN VARCHAR2,
4737 p_to_date IN VARCHAR2,
4738 p_auto_run_download IN NUMBER,
4739 p_synchronous IN NUMBER DEFAULT G_NO,
4740 p_check_interval IN NUMBER DEFAULT 60,
4741 p_time_out IN NUMBER DEFAULT 1440
4742 )
4743 IS
4744 x_errbuf VARCHAR2(200) := NULL;
4745 x_retcode VARCHAR2(100) := NULL;
4746 x_from_date DATE := NULL;
4747 x_to_date DATE := NULL;
4748 x_src_dblink VARCHAR2(50) := NULL;
4749 x_dest_dblink VARCHAR2(50) := NULL;
4750 x_sql varchar2(1000) := NULL;
4751 x_params varchar2(500) := null;
4752 x_dm_time_level varchar2(6) := null;
4753 x_max_sales_date date := null;
4754 x_history_cap date := null;
4755 x_forecast_cap date := null;
4756 x_pval varchar2(100) := null;
4757
4758 var_request_id NUMBER DEFAULT NULL;
4759 var_request_num NUMBER DEFAULT NULL;
4760
4761 var_param_value varchar2(240) := null;
4762 var_key_value_pairs VARCHAR2(500) DEFAULT NULL;
4763 BEGIN
4764 msd_dem_common_utilities.log_debug ('Entering MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4765
4766 --validate parameters
4767 msd_dem_common_utilities.ui_params_validation(x_errbuf, x_retcode,
4768 x_from_date, x_to_date,
4769 p_sr_instance_id,
4770 p_collection_group,
4771 p_collection_method,
4772 null,
4773 p_date_range_type,
4774 p_collection_window,
4775 p_from_date,
4776 p_to_date,
4777 'CMRO'
4778 );
4779
4780 IF (x_retcode = -1) THEN
4781 retcode := -1;
4782 errbuf := x_errbuf;
4783 msd_dem_common_utilities.log_message ('Error: MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4784 msd_dem_common_utilities.log_message ('Error validating params for COLLECT_CMRO_DATA');
4785 RETURN;
4786 END IF;
4787
4788 /* Get Instance source DB Link */
4789 msd_dem_common_utilities.get_dblink (
4790 x_errbuf,
4791 x_retcode,
4792 p_sr_instance_id,
4793 x_src_dblink);
4794 IF (x_retcode = -1) THEN
4795 retcode := -1;
4796 errbuf := substr(SQLERRM,1,150);
4797 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4798 msd_dem_common_utilities.log_message ('Error in call to MSD_DEM_COMMON_UTILITIES.GET_DBLINK');
4799 msd_dem_common_utilities.log_message (errbuf);
4800 RETURN;
4801 END IF;
4802
4803 /* Get Instance destination DB Link */
4804 msd_dem_common_utilities.get_dest_dblink (
4805 x_errbuf,
4806 x_retcode,
4807 p_sr_instance_id,
4808 x_dest_dblink);
4809 IF (x_retcode = -1) THEN
4810 retcode := -1;
4811 errbuf := substr(SQLERRM,1,150);
4812 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4813 msd_dem_common_utilities.log_message ('Error in call to MSD_DEM_COMMON_UTILITIES.GET_DEST_DBLINK');
4814 msd_dem_common_utilities.log_message (errbuf);
4815 RETURN;
4816 END IF;
4817
4818 /* Truncate all the staging tables */
4819 truncate_spf_cmro_staging(x_errbuf, x_retcode);
4820 IF (x_retcode = -1) THEN
4821 retcode := -1;
4822 errbuf := x_errbuf;
4823 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4824 msd_dem_common_utilities.log_message ('Error in call to TRUNCATE_SPF_CMRO_STAGING');
4825 RETURN;
4826 END IF;
4827
4828 /* STAGE I *** BEGIN *** */
4829 msd_dem_common_utilities.log_message ('---------------------------------Stage I - Begin-------------------------------------');
4830 var_request_num := 0;
4831
4832 IF (g_req_table.COUNT <> 0)
4833 THEN
4834 g_req_table.DELETE;
4835 END IF;
4836
4837 msd_dem_common_utilities.log_message ('');
4838 msd_dem_common_utilities.log_message ('Launching source data collection request');
4839
4840 --launch collection request on source
4841 BEGIN
4842
4843 var_request_id := null;
4844 x_sql := 'begin ' ||
4845 'msd_dem_common_utilities.launch_remote_request' || x_src_dblink ||
4846 ' (:1, :2, :3, :4, :5, :6, :7);' ||
4847 'end;';
4848 msd_dem_common_utilities.log_debug('SQL for request launch : ');
4849 msd_dem_common_utilities.log_debug(x_sql);
4850
4851 x_params := ' ''MSD'', ''MSDSPFEAMCMRO'', NULL, NULL, FALSE, ' ||
4852 ' ' || p_sr_instance_id || ', ''' || p_collection_group || ''', ' ||
4853 ' ''' || fnd_date.date_to_canonical(x_from_date) || ''', ' ||
4854 ' ''' || fnd_date.date_to_canonical(x_to_date) || ''', ' ||
4855 ' ''' || x_dest_dblink || ''', ' ||
4856 ' ''CMRO'' ';
4857 execute immediate x_sql using out x_errbuf, out x_retcode,
4858 in fnd_global.user_name, in fnd_global.resp_name, in fnd_global.application_name,
4859 in x_params,
4860 out var_request_id;
4861
4862 IF (x_retcode = -1) THEN
4863 retcode := -1;
4864 errbuf := x_errbuf;
4865 msd_dem_common_utilities.log_message ('ERROR(1) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4866 msd_dem_common_utilities.log_message (errbuf);
4867 RETURN;
4868 END IF;
4869 EXCEPTION
4870 WHEN OTHERS THEN
4871 retcode := -1;
4872 errbuf := substr(SQLERRM,1,200);
4873 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4874 msd_dem_common_utilities.log_message ('Error while submitting collection request on source');
4875 msd_dem_common_utilities.log_message (errbuf);
4876 RETURN;
4877 END;
4878
4879 var_request_num := var_request_num + 1;
4880 g_req_table(var_request_num).REQUEST_ID := var_request_id;
4881 g_req_table(var_request_num).DESCRIPTION := 'SPF CMRO Collect Source Data';
4882 g_req_table(var_request_num).IS_COMPLETE := FALSE;
4883 g_req_table(var_request_num).status := 1;
4884
4885 COMMIT;
4886
4887 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
4888 msd_dem_common_utilities.log_message ('');
4889 msd_dem_common_utilities.log_message ('');
4890
4891 IF (var_request_num > 0) THEN
4892
4893 check_requests_completion(x_errbuf, x_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out, x_src_dblink);
4894 IF (x_retcode = -1) THEN
4895 retcode := -1;
4896 errbuf := x_errbuf;
4897 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4898 msd_dem_common_utilities.log_message ('Error while waiting for requests for Stage I to complete.');
4899 msd_dem_common_utilities.log_message (errbuf);
4900 RETURN;
4901 END IF;
4902
4903 IF (x_retcode = 1) THEN
4904 retcode := 1;
4905 errbuf := x_errbuf;
4906 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4907 msd_dem_common_utilities.log_message ('One or more requests in Stage I completed with warnings.');
4908 msd_dem_common_utilities.log_message (errbuf);
4909 END IF;
4910
4911 END IF;
4912
4913 msd_dem_common_utilities.log_message ('---------------------------------Stage I - End---------------------------------------');
4914 msd_dem_common_utilities.log_message ('');
4915 msd_dem_common_utilities.log_message ('');
4916 /* STAGE I *** END *** */
4917
4918 /* STAGE II *** BEGIN *** */
4919 msd_dem_common_utilities.log_message ('---------------------------------Stage II - Begin-------------------------------------');
4920
4921 /* Step1: Populate CMRO BOM, CMRO data staging, Sales staging, Item staging tables */
4922 /* Step2: Populate CMRO level staging, Loc staging tables */
4923 /* Step3: Population for SPF CMRO members, Cap population from date (all members - existing and new) */
4924 /* Step4: Set purge profiles */
4925
4926 /* Begin Step1: Populate CMRO BOM, CMRO data staging, Sales staging, Item staging tables */
4927 msd_dem_common_utilities.log_message ('');
4928 msd_dem_common_utilities.log_message ('Step1: Populate CMRO BOM, CMRO data staging, Sales staging, Item staging tables');
4929
4930 var_request_num := 0;
4931 IF (g_req_table.COUNT <> 0) THEN
4932 g_req_table.DELETE;
4933 END IF;
4934
4935 msd_dem_common_utilities.log_message ('');
4936 msd_dem_common_utilities.log_message ('Launching request for populating EQ_SPF_CMRO_BOM');
4937 BEGIN
4938 var_request_id := null;
4939 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE,
4940 'EQ_SPF_CMRO_BOM',
4941 p_sr_instance_id);
4942 EXCEPTION
4943 WHEN OTHERS THEN
4944 retcode := -1;
4945 errbuf := substr(SQLERRM,1,150);
4946 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4947 msd_dem_common_utilities.log_message ('Error while submitting request for populating EQ_SPF_CMRO_BOM');
4948 msd_dem_common_utilities.log_message (errbuf);
4949 RETURN;
4950 END;
4951
4952 var_request_num := var_request_num + 1;
4953 g_req_table(var_request_num).REQUEST_ID := var_request_id;
4954 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate EQ_SPF_CMRO_BOM';
4955 g_req_table(var_request_num).IS_COMPLETE := FALSE;
4956 g_req_table(var_request_num).status := 1;
4957
4958 COMMIT;
4959
4960 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
4961 msd_dem_common_utilities.log_message ('');
4962
4963 msd_dem_common_utilities.log_message ('');
4964 msd_dem_common_utilities.log_message ('Launching request for populating EQ_SPF_CMRO_SALES_TMPL');
4965 BEGIN
4966 var_request_id := null;
4967 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE,
4968 'EQ_SPF_CMRO_SALES_TMPL',
4969 p_sr_instance_id);
4970 EXCEPTION
4971 WHEN OTHERS THEN
4972 retcode := -1;
4973 errbuf := substr(SQLERRM,1,150);
4974 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
4975 msd_dem_common_utilities.log_message ('Error while submitting request for populating EQ_SPF_CMRO_SALES_TMPL');
4976 msd_dem_common_utilities.log_message (errbuf);
4977 RETURN;
4978 END;
4979
4980 var_request_num := var_request_num + 1;
4981 g_req_table(var_request_num).REQUEST_ID := var_request_id;
4982 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate EQ_SPF_CMRO_SALES_TMPL';
4983 g_req_table(var_request_num).IS_COMPLETE := FALSE;
4984 g_req_table(var_request_num).status := 1;
4985
4986 COMMIT;
4987
4988 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
4989 msd_dem_common_utilities.log_message ('');
4990
4991 msd_dem_common_utilities.log_message ('');
4992 msd_dem_common_utilities.log_message ('Launching request for populating EQ_SPF_CMRO_DATA');
4993 BEGIN
4994 var_request_id := null;
4995 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE,
4996 'EQ_SPF_CMRO_DATA',
4997 p_sr_instance_id);
4998 EXCEPTION
4999 WHEN OTHERS THEN
5000 retcode := -1;
5001 errbuf := substr(SQLERRM,1,150);
5002 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5003 msd_dem_common_utilities.log_message ('Error while submitting request for populating EQ_SPF_CMRO_DATA');
5004 msd_dem_common_utilities.log_message (errbuf);
5005 RETURN;
5006 END;
5007
5008 var_request_num := var_request_num + 1;
5009 g_req_table(var_request_num).REQUEST_ID := var_request_id;
5010 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate EQ_SPF_CMRO_DATA';
5011 g_req_table(var_request_num).IS_COMPLETE := FALSE;
5012 g_req_table(var_request_num).status := 1;
5013
5014 COMMIT;
5015
5016 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
5017 msd_dem_common_utilities.log_message ('');
5018
5019 msd_dem_common_utilities.log_message ('');
5020 msd_dem_common_utilities.log_message ('Launching request for populating EQ_SPF_CMRO_ITEM_TMPL');
5021 BEGIN
5022 x_sql := 'select parameter_value from msd_dem_setup_parameters where parameter_name = ''MSD_DEM_MASTER_ORG''';
5023 execute immediate x_sql into var_param_value;
5024 var_key_value_pairs := '$C_MASTER_ORG_STRING#' || var_param_value ;
5025
5026 x_sql := 'select parameter_value from msd_dem_setup_parameters where parameter_name = ''MSD_DEM_CATEGORY_SET_NAME''';
5027 execute immediate x_sql into var_param_value;
5028 var_key_value_pairs := var_key_value_pairs || '$C_CATEGORY_STRING#' || var_param_value;
5029
5030 -- BUG#14694463 kkhatri
5031 var_key_value_pairs := var_key_value_pairs || '$C_MATERIAL#' || CS_DEM_MATERIAL;
5032 var_key_value_pairs := var_key_value_pairs || '$C_RESOURCE#' || CS_DEM_RESOURCE || '$';
5033
5034 var_request_id := null;
5035 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE,
5036 'EQ_SPF_CMRO_ITEM_TMPL',
5037 p_sr_instance_id,
5038 var_key_value_pairs);
5039 EXCEPTION
5040 WHEN OTHERS THEN
5041 retcode := -1;
5042 errbuf := substr(SQLERRM,1,150);
5043 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5044 msd_dem_common_utilities.log_message ('Error while submitting request for populating EQ_SPF_CMRO_ITEM_TMPL');
5045 msd_dem_common_utilities.log_message (errbuf);
5046 RETURN;
5047 END;
5048
5049 var_request_num := var_request_num + 1;
5050 g_req_table(var_request_num).REQUEST_ID := var_request_id;
5051 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate EQ_SPF_CMRO_ITEM_TMPL';
5052 g_req_table(var_request_num).IS_COMPLETE := FALSE;
5053 g_req_table(var_request_num).status := 1;
5054
5055 COMMIT;
5056
5057 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
5058 msd_dem_common_utilities.log_message ('');
5059 msd_dem_common_utilities.log_message ('');
5060
5061 IF (var_request_num > 0) THEN
5062
5063 check_requests_completion(x_errbuf, x_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out);
5064 IF (x_retcode = -1) THEN
5065 retcode := -1;
5066 errbuf := x_errbuf;
5067 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5068 msd_dem_common_utilities.log_message ('Error while waiting for requests for Step1 of Stage II to complete.');
5069 msd_dem_common_utilities.log_message (errbuf);
5070 RETURN;
5071 END IF;
5072
5073 IF (x_retcode = 1) THEN
5074 retcode := 1;
5075 errbuf := x_errbuf;
5076 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5077 msd_dem_common_utilities.log_message ('One or more requests in Step1 of Stage II completed with warnings.');
5078 msd_dem_common_utilities.log_message (errbuf);
5079 END IF;
5080
5081 END IF;
5082 /* End Step1: Populate CMRO BOM, CMRO data staging, Sales staging, Item staging tables */
5083
5084 /* Begin Step2: Populate CMRO level staging, Loc staging tables */
5085 msd_dem_common_utilities.log_message ('');
5086 msd_dem_common_utilities.log_message ('Begin Step2: Populate SPF level staging, Loc staging tables');
5087
5088 var_request_num := 0;
5089 IF (g_req_table.COUNT <> 0) THEN
5090 g_req_table.DELETE;
5091 END IF;
5092
5093 msd_dem_common_utilities.log_message ('');
5094 msd_dem_common_utilities.log_message ('Launching request for populating EQ_SPF_CMRO_BASE_MODEL');
5095 BEGIN
5096 var_request_id := null;
5097 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE,
5098 'EQ_SPF_CMRO_BASE_MODEL',
5099 p_sr_instance_id);
5100 EXCEPTION
5101 WHEN OTHERS THEN
5102 retcode := -1;
5103 errbuf := substr(SQLERRM,1,150);
5104 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5105 msd_dem_common_utilities.log_message ('Error while submitting request for populating EQ_SPF_CMRO_BASE_MODEL');
5106 msd_dem_common_utilities.log_message (errbuf);
5107 RETURN;
5108 END;
5109
5110 var_request_num := var_request_num + 1;
5111 g_req_table(var_request_num).REQUEST_ID := var_request_id;
5112 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate EQ_SPF_CMRO_BASE_MODEL';
5113 g_req_table(var_request_num).IS_COMPLETE := FALSE;
5114 g_req_table(var_request_num).status := 1;
5115
5116 COMMIT;
5117
5118 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
5119 msd_dem_common_utilities.log_message ('');
5120
5121 msd_dem_common_utilities.log_message ('');
5122 msd_dem_common_utilities.log_message ('Launching request for populating EQ_SPF_CMRO_CHILD');
5123 BEGIN
5124 var_request_id := null;
5125 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE,
5126 'EQ_SPF_CMRO_CHILD',
5127 p_sr_instance_id);
5128 EXCEPTION
5129 WHEN OTHERS THEN
5130 retcode := -1;
5131 errbuf := substr(SQLERRM,1,150);
5132 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5133 msd_dem_common_utilities.log_message ('Error while submitting request for populating EQ_SPF_CMRO_CHILD');
5134 msd_dem_common_utilities.log_message (errbuf);
5135 RETURN;
5136 END;
5137
5138 var_request_num := var_request_num + 1;
5139 g_req_table(var_request_num).REQUEST_ID := var_request_id;
5140 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate EQ_SPF_CMRO_CHILD';
5141 g_req_table(var_request_num).IS_COMPLETE := FALSE;
5142 g_req_table(var_request_num).status := 1;
5143
5144 COMMIT;
5145
5146 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
5147 msd_dem_common_utilities.log_message ('');
5148
5149 msd_dem_common_utilities.log_message ('');
5150 msd_dem_common_utilities.log_message ('Launching request for populating EQ_SPF_CMRO_VISIT_TYPE');
5151 BEGIN
5152 var_request_id := null;
5153 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE,
5154 'EQ_SPF_CMRO_VISIT_TYPE',
5155 p_sr_instance_id);
5156 EXCEPTION
5157 WHEN OTHERS THEN
5158 retcode := -1;
5159 errbuf := substr(SQLERRM,1,150);
5160 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5161 msd_dem_common_utilities.log_message ('Error while submitting request for populating EQ_SPF_CMRO_VISIT_TYPE');
5162 msd_dem_common_utilities.log_message (errbuf);
5163 RETURN;
5164 END;
5165
5166 var_request_num := var_request_num + 1;
5167 g_req_table(var_request_num).REQUEST_ID := var_request_id;
5168 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate EQ_SPF_CMRO_VISIT_TYPE';
5169 g_req_table(var_request_num).IS_COMPLETE := FALSE;
5170 g_req_table(var_request_num).status := 1;
5171
5172 COMMIT;
5173
5174 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
5175 msd_dem_common_utilities.log_message ('');
5176
5177 msd_dem_common_utilities.log_message ('');
5178 msd_dem_common_utilities.log_message ('Launching request for populating EQ_SPF_CMRO_VISIT_STAGE_TYPE');
5179 BEGIN
5180 var_request_id := null;
5181 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE,
5182 'EQ_SPF_CMRO_VISIT_STAGE_TYPE',
5183 p_sr_instance_id);
5184 EXCEPTION
5185 WHEN OTHERS THEN
5186 retcode := -1;
5187 errbuf := substr(SQLERRM,1,150);
5188 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5189 msd_dem_common_utilities.log_message ('Error while submitting request for populating EQ_SPF_CMRO_VISIT_STAGE_TYPE');
5190 msd_dem_common_utilities.log_message (errbuf);
5191 RETURN;
5192 END;
5193
5194 var_request_num := var_request_num + 1;
5195 g_req_table(var_request_num).REQUEST_ID := var_request_id;
5196 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate EQ_SPF_CMRO_VISIT_STAGE_TYPE';
5197 g_req_table(var_request_num).IS_COMPLETE := FALSE;
5198 g_req_table(var_request_num).status := 1;
5199
5200 COMMIT;
5201
5202 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
5203 msd_dem_common_utilities.log_message ('');
5204
5205 /*msd_dem_common_utilities.log_message ('');
5206 msd_dem_common_utilities.log_message ('Launching request for populating EQ_SPF_CMRO_MAINTENANCE_TYPE');
5207 BEGIN
5208 var_request_id := null;
5209 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE,
5210 'EQ_SPF_CMRO_MAINTENANCE_TYPE',
5211 p_sr_instance_id);
5212 EXCEPTION
5213 WHEN OTHERS THEN
5214 retcode := -1;
5215 errbuf := substr(SQLERRM,1,150);
5216 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5217 msd_dem_common_utilities.log_message ('Error while submitting request for populating EQ_SPF_CMRO_MAINTENANCE_TYPE');
5218 msd_dem_common_utilities.log_message (errbuf);
5219 RETURN;
5220 END;
5221
5222 var_request_num := var_request_num + 1;
5223 g_req_table(var_request_num).REQUEST_ID := var_request_id;
5224 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate EQ_SPF_CMRO_MAINTENANCE_TYPE';
5225 g_req_table(var_request_num).IS_COMPLETE := FALSE;
5226 g_req_table(var_request_num).status := 1;
5227
5228 COMMIT;
5229
5230 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
5231 msd_dem_common_utilities.log_message ('');*/
5232
5233 msd_dem_common_utilities.log_message ('');
5234 msd_dem_common_utilities.log_message ('Launching request for populating EQ_SPF_CMRO_LEVEL');
5235 BEGIN
5236 var_request_id := null;
5237 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE,
5238 'EQ_SPF_CMRO_LEVEL',
5239 p_sr_instance_id);
5240 EXCEPTION
5241 WHEN OTHERS THEN
5242 retcode := -1;
5243 errbuf := substr(SQLERRM,1,150);
5244 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5245 msd_dem_common_utilities.log_message ('Error while submitting request for populating EQ_SPF_CMRO_LEVEL');
5246 msd_dem_common_utilities.log_message (errbuf);
5247 RETURN;
5248 END;
5249
5250 var_request_num := var_request_num + 1;
5251 g_req_table(var_request_num).REQUEST_ID := var_request_id;
5252 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate EQ_SPF_CMRO_LEVEL';
5253 g_req_table(var_request_num).IS_COMPLETE := FALSE;
5254 g_req_table(var_request_num).status := 1;
5255
5256 COMMIT;
5257
5258 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
5259 msd_dem_common_utilities.log_message ('');
5260
5261 msd_dem_common_utilities.log_message ('');
5262 msd_dem_common_utilities.log_message ('Launching request for Collect Level Types - Location');
5263 BEGIN
5264 var_request_id := null;
5265 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMCLT', NULL, NULL, FALSE,
5266 p_sr_instance_id, 1);
5267 EXCEPTION
5268 WHEN OTHERS THEN
5269 retcode := -1;
5270 errbuf := substr(SQLERRM,1,150);
5271 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5272 msd_dem_common_utilities.log_message ('Error while submitting request for for Collect Level Types - Location');
5273 msd_dem_common_utilities.log_message (errbuf);
5274 RETURN;
5275 END;
5276
5277 var_request_num := var_request_num + 1;
5278 g_req_table(var_request_num).REQUEST_ID := var_request_id;
5279 g_req_table(var_request_num).DESCRIPTION := 'SPF Collect Level Types - Location';
5280 g_req_table(var_request_num).IS_COMPLETE := FALSE;
5281 g_req_table(var_request_num).status := 1;
5282
5283 COMMIT;
5284
5285 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
5286 msd_dem_common_utilities.log_message ('');
5287 msd_dem_common_utilities.log_message ('');
5288
5289 IF (var_request_num > 0) THEN
5290
5291 check_requests_completion(x_errbuf, x_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out);
5292 IF (x_retcode = -1) THEN
5293 retcode := -1;
5294 errbuf := x_errbuf;
5295 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5296 msd_dem_common_utilities.log_message ('Error while waiting for requests for Step2 of Stage II to complete.');
5297 msd_dem_common_utilities.log_message (errbuf);
5298 RETURN;
5299 END IF;
5300
5301 IF (x_retcode = 1) THEN
5302 retcode := 1;
5303 errbuf := x_errbuf;
5304 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5305 msd_dem_common_utilities.log_message ('One or more requests in Step2 of Stage II completed with warnings.');
5306 msd_dem_common_utilities.log_message (errbuf);
5307 END IF;
5308
5309 END IF;
5310 /* End Step2: Populate CMRO level staging, Loc staging tables */
5311
5312 /* Begin Step3: Population for SPF CMRO members, Cap population from date (all members - existing and new) */
5313 msd_dem_common_utilities.log_message ('');
5314 msd_dem_common_utilities.log_message ('Begin Step3: Population for SPF CMRO members, Cap population from date (all members - existing and new)');
5315
5316 -- get demantra time level
5317 x_dm_time_level := lower(msd_dem_common_utilities.dm_time_level);
5318
5319 -- get max_sales_date
5320 x_sql := 'select trunc(max(max_date), ''dd'') from ( '||
5321 ' select max(sdate) max_date from ' || g_schema || '.BIIO_SPF_CMRO_DATA '||
5322 ' union ' ||
5323 ' select to_date(' || g_schema || '.get_max_date, param.pval) max_date from ' ||
5324 g_schema || '.db_params param where param.pname = ''nls_date_format'' )';
5325 msd_dem_common_utilities.log_debug(x_sql);
5326 execute immediate x_sql into x_max_sales_date;
5327 msd_dem_common_utilities.log_debug('Max Sales Date - ' || x_max_sales_date);
5328
5329 -- get history cap
5330 x_sql := 'select pval from ' || g_schema || '.sys_params where lower(pname) = ''spf_history_periods''';
5331 execute immediate x_sql into x_pval;
5332
5333 if x_dm_time_level = 'day' then
5334 x_history_cap := x_max_sales_date - to_number(x_pval);
5335 elsif x_dm_time_level = 'week' then
5336 x_history_cap := x_max_sales_date - 7*to_number(x_pval);
5337 elsif x_dm_time_level = 'month' then
5338 x_history_cap := add_months(x_max_sales_date, -to_number(x_pval));
5339 end if;
5340 msd_dem_common_utilities.log_debug('History Cap - ' || x_history_cap);
5341
5342 -- get future cap
5343 x_sql := 'select value_float from ' || g_schema || '.init_params_0 where lower(pname) = ''lead''';
5344 execute immediate x_sql into x_pval;
5345 if x_dm_time_level = 'day' then
5346 x_forecast_cap := x_max_sales_date + to_number(x_pval);
5347 elsif x_dm_time_level = 'week' then
5348 x_forecast_cap := x_max_sales_date + 7*to_number(x_pval);
5349 elsif x_dm_time_level = 'month' then
5350 x_forecast_cap := add_months(x_max_sales_date, to_number(x_pval));
5351 end if;
5352 msd_dem_common_utilities.log_debug('Forecast Cap - ' || x_forecast_cap);
5353
5354 var_request_num := 0;
5355 IF (g_req_table.COUNT <> 0) THEN
5356 g_req_table.DELETE;
5357 END IF;
5358
5359 msd_dem_common_utilities.log_message ('');
5360 msd_dem_common_utilities.log_message ('Launching request for populating EQ_SPF_CMRO_POPULATION');
5361 BEGIN
5362 var_key_value_pairs := '$C_POP_UNTIL_DATE#to_date(''' || to_char(x_forecast_cap, 'DD-MON-RRRR') || ''', ''DD-MON-RRRR'')$';
5363 var_request_id := null;
5364 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE,
5365 'EQ_SPF_CMRO_POPULATION',
5366 p_sr_instance_id,
5367 var_key_value_pairs);
5368 EXCEPTION
5369 WHEN OTHERS THEN
5370 retcode := -1;
5371 errbuf := substr(SQLERRM,1,150);
5372 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5373 msd_dem_common_utilities.log_message ('Error while submitting request for populating EQ_SPF_CMRO_POPULATION');
5374 msd_dem_common_utilities.log_message (errbuf);
5375 RETURN;
5376 END;
5377
5378 var_request_num := var_request_num + 1;
5379 g_req_table(var_request_num).REQUEST_ID := var_request_id;
5380 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate EQ_SPF_CMRO_POPULATION';
5381 g_req_table(var_request_num).IS_COMPLETE := FALSE;
5382 g_req_table(var_request_num).status := 1;
5383
5384 COMMIT;
5385
5386 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
5387 msd_dem_common_utilities.log_message ('');
5388 msd_dem_common_utilities.log_message ('');
5389
5390 IF (var_request_num > 0) THEN
5391
5392 check_requests_completion(x_errbuf, x_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out);
5393 IF (x_retcode = -1) THEN
5394 retcode := -1;
5395 errbuf := x_errbuf;
5396 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5397 msd_dem_common_utilities.log_message ('Error while waiting for requests for Step3 of Stage II to complete.');
5398 msd_dem_common_utilities.log_message (errbuf);
5399 RETURN;
5400 END IF;
5401
5402 IF (x_retcode = 1) THEN
5403 retcode := 1;
5404 errbuf := x_errbuf;
5405 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5406 msd_dem_common_utilities.log_message ('One or more requests in Step3 of Stage II completed with warnings.');
5407 msd_dem_common_utilities.log_message (errbuf);
5408 END IF;
5409
5410 END IF;
5411
5412 msd_dem_common_utilities.log_debug(' ');
5413
5414 x_sql := 'UPDATE ' || g_schema || '.BIIO_SPF_POPULATION ' ||
5415 ' SET FROM_DATE = :1' ||
5416 ' WHERE FROM_DATE < :2';
5417 msd_dem_common_utilities.log_debug(x_sql);
5418 execute immediate x_sql using x_history_cap, x_history_cap;
5419
5420 /* End Step3: Population for SPF CMRO members, Cap population from date (all members - existing and new) */
5421
5422 /* Begin Step4: Set purge profiles */
5423 set_cmroeam_purge_profiles(x_errbuf, x_retcode, 'CMRO', x_from_date, x_to_date);
5424 IF (x_retcode = -1) THEN
5425 retcode := -1;
5426 errbuf := x_errbuf;
5427 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5428 msd_dem_common_utilities.log_message ('Error when setting purge profiles.');
5429 msd_dem_common_utilities.log_message (errbuf);
5430 RETURN;
5431 END IF;
5432
5433 IF (x_retcode = 1) THEN
5434 retcode := 1;
5435 errbuf := x_errbuf;
5436 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5437 msd_dem_common_utilities.log_message ('Warning when setting purge profiles.');
5438 msd_dem_common_utilities.log_message (errbuf);
5439 END IF;
5440 /* End Step4: Set purge profiles */
5441
5442 msd_dem_common_utilities.log_message ('---------------------------------Stage II - End---------------------------------------');
5443 msd_dem_common_utilities.log_message ('');
5444 msd_dem_common_utilities.log_message ('');
5445 /* STAGE II *** END *** */
5446
5447 /* STAGE III *** BEGIN *** */
5448 msd_dem_common_utilities.log_message ('---------------------------------Stage III - Begin-------------------------------------');
5449 var_request_num := 0;
5450
5451 IF (g_req_table.COUNT <> 0)
5452 THEN
5453 g_req_table.DELETE;
5454 END IF;
5455
5456 IF (p_auto_run_download = G_YES) then
5457 BEGIN
5458
5459 var_request_id := null;
5460 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMLDW', NULL, NULL, FALSE,
5461 'WF_SPF_IMPORT_CMRO_DATA',
5462 p_synchronous, p_check_interval, p_time_out);
5463
5464 EXCEPTION
5465 WHEN OTHERS THEN
5466 retcode := -1;
5467 errbuf := substr(SQLERRM,1,150);
5468 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5469 msd_dem_common_utilities.log_message ('Error while submitting request for launch download');
5470 msd_dem_common_utilities.log_message (errbuf);
5471 RETURN;
5472 END;
5473
5474 var_request_num := var_request_num + 1;
5475 g_req_table(var_request_num).REQUEST_ID := var_request_id;
5476 g_req_table(var_request_num).DESCRIPTION := 'SPF CMRO Launch Download';
5477 g_req_table(var_request_num).IS_COMPLETE := FALSE;
5478 g_req_table(var_request_num).status := 1;
5479
5480 COMMIT;
5481
5482 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
5483 msd_dem_common_utilities.log_message ('');
5484 msd_dem_common_utilities.log_message ('');
5485 END IF;
5486
5487 IF (var_request_num > 0) THEN
5488
5489 check_requests_completion(x_errbuf, x_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out);
5490 IF (x_retcode = -1) THEN
5491 retcode := -1;
5492 errbuf := x_errbuf;
5493 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5494 msd_dem_common_utilities.log_message ('Error while waiting for requests for Stage III to complete.');
5495 msd_dem_common_utilities.log_message (errbuf);
5496 RETURN;
5497 END IF;
5498
5499 IF (x_retcode = 1) THEN
5500 retcode := 1;
5501 errbuf := x_errbuf;
5502 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5503 msd_dem_common_utilities.log_message ('One or more requests in Stage III completed with warnings.');
5504 msd_dem_common_utilities.log_message (errbuf);
5505 END IF;
5506
5507 END IF;
5508
5509 msd_dem_common_utilities.log_message ('---------------------------------Stage III - End---------------------------------------');
5510 msd_dem_common_utilities.log_message ('');
5511 msd_dem_common_utilities.log_message ('');
5512 /* STAGE III *** END *** */
5513
5514 msd_dem_common_utilities.log_debug ('Exiting MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5515 EXCEPTION
5516 WHEN OTHERS THEN
5517 retcode := -1;
5518 errbuf := substr(sqlerrm, 1, 200);
5519 msd_dem_common_utilities.log_message('Error in MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ' || errbuf);
5520 msd_dem_common_utilities.log_debug('Error in MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA (' || TO_CHAR(systimestamp, 'DD-MON-RRRR HH24:MI:SS') || ') - ' || errbuf );
5521 END COLLECT_CMRO_DATA;
5522
5523
5524 PROCEDURE COLLECT_FLEET_DATA (
5525 errbuf OUT NOCOPY VARCHAR2,
5526 retcode OUT NOCOPY VARCHAR2,
5527 p_sr_instance_id IN NUMBER,
5528 p_collection_group IN VARCHAR2,
5529 p_collection_method IN NUMBER,
5530 p_hidden_param IN VARCHAR2,
5531 p_date_range_type IN NUMBER,
5532 p_hist_collection_window IN NUMBER,
5533 p_sim_plan_name IN VARCHAR2,
5534 p_fcst_collection_window IN NUMBER,
5535 p_from_date IN VARCHAR2,
5536 p_to_date IN VARCHAR2,
5537 p_auto_run_download IN NUMBER,
5538 p_synchronous IN NUMBER DEFAULT G_NO,
5539 p_check_interval IN NUMBER DEFAULT 60,
5540 p_time_out IN NUMBER DEFAULT 1440
5541 )
5542 IS
5543 x_errbuf VARCHAR2(200) := NULL;
5544 x_retcode VARCHAR2(100) := NULL;
5545 x_from_date DATE := NULL;
5546 x_to_date DATE := NULL;
5547 x_src_dblink VARCHAR2(50) := NULL;
5548 x_dest_dblink VARCHAR2(50) := NULL;
5549 x_sql varchar2(1000) := NULL;
5550 x_params varchar2(500) := null;
5551
5552 var_table_name varchar2(61) := NULL;
5553 var_request_id NUMBER DEFAULT NULL;
5554 var_request_num NUMBER DEFAULT NULL;
5555 BEGIN
5556 msd_dem_common_utilities.log_debug ('Entering MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_FLEET_DATA...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5557
5558 --validate parameters
5559 msd_dem_common_utilities.ui_params_validation(x_errbuf, x_retcode,
5560 x_from_date, x_to_date,
5561 p_sr_instance_id,
5562 p_collection_group,
5563 p_collection_method,
5564 null,
5565 p_date_range_type,
5566 p_hist_collection_window,
5567 p_from_date,
5568 p_to_date,
5569 'FLEET',
5570 p_fcst_collection_window
5571 );
5572
5573 IF (x_retcode = -1) THEN
5574 retcode := -1;
5575 errbuf := x_errbuf;
5576 msd_dem_common_utilities.log_message ('Error: MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_FLEET_DATA - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5577 msd_dem_common_utilities.log_message ('Error validating params for COLLECT_FLEET_DATA');
5578 RETURN;
5579 END IF;
5580
5581 /* Get Instance source DB Link */
5582 msd_dem_common_utilities.get_dblink (
5583 x_errbuf,
5584 x_retcode,
5585 p_sr_instance_id,
5586 x_src_dblink);
5587 IF (x_retcode = -1) THEN
5588 retcode := -1;
5589 errbuf := substr(SQLERRM,1,150);
5590 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_FLEET_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5591 msd_dem_common_utilities.log_message ('Error in call to MSD_DEM_COMMON_UTILITIES.GET_DBLINK');
5592 msd_dem_common_utilities.log_message (errbuf);
5593 RETURN;
5594 END IF;
5595
5596 /* Get Instance destination DB Link */
5597 msd_dem_common_utilities.get_dest_dblink (
5598 x_errbuf,
5599 x_retcode,
5600 p_sr_instance_id,
5601 x_dest_dblink);
5602 IF (x_retcode = -1) THEN
5603 retcode := -1;
5604 errbuf := substr(SQLERRM,1,150);
5605 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_FLEET_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5606 msd_dem_common_utilities.log_message ('Error in call to MSD_DEM_COMMON_UTILITIES.GET_DEST_DBLINK');
5607 msd_dem_common_utilities.log_message (errbuf);
5608 RETURN;
5609 END IF;
5610
5611 /* Truncate fleet data staging table */
5612 msd_dem_common_utilities.log_debug ('');
5613
5614 var_table_name := G_FLEET_DATA_DEST_TABLE;
5615 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
5616 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
5617
5618 var_table_name := G_FLEET_DATA_DEST_TABLE || '_ERR';
5619 msd_dem_common_utilities.log_debug('Truncating table ' || var_table_name);
5620 EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || var_table_name;
5621
5622 msd_dem_common_utilities.log_debug ('');
5623
5624 /* STAGE I *** BEGIN *** */
5625 msd_dem_common_utilities.log_message ('---------------------------------Stage I - Begin-------------------------------------');
5626 var_request_num := 0;
5627
5628 IF (g_req_table.COUNT <> 0)
5629 THEN
5630 g_req_table.DELETE;
5631 END IF;
5632
5633 IF (x_to_date > sysdate and p_sim_plan_name is null) THEN
5634 x_retcode := 1;
5635 msd_dem_common_utilities.log_message ('Simulation Plan for Forecast not specified, Projected Fleet data will not be loaded');
5636 msd_dem_common_utilities.log_message ('');
5637 END IF;
5638
5639 msd_dem_common_utilities.log_message ('');
5640 msd_dem_common_utilities.log_message ('Launching source data collection request');
5641
5642 --launch collection request on source
5643 BEGIN
5644
5645 var_request_id := null;
5646 x_sql := 'begin ' ||
5647 'msd_dem_common_utilities.launch_remote_request' || x_src_dblink ||
5648 ' (:1, :2, :3, :4, :5, :6, :7);' ||
5649 'end;';
5650 msd_dem_common_utilities.log_debug('SQL for request launch : ');
5651 msd_dem_common_utilities.log_debug(x_sql);
5652
5653 x_params := ' ''MSD'', ''MSDSPFEAMCMRO'', NULL, NULL, FALSE, ' ||
5654 ' ' || p_sr_instance_id || ', ''' || p_collection_group || ''', ' ||
5655 ' ''' || fnd_date.date_to_canonical(x_from_date) || ''', ' ||
5656 ' ''' || fnd_date.date_to_canonical(x_to_date) || ''', ' ||
5657 ' ''' || x_dest_dblink || ''', ' ||
5658 ' ''FLEET'', ' || '''' || p_sim_plan_name || ''' ';
5659 execute immediate x_sql using out x_errbuf, out x_retcode,
5660 in fnd_global.user_name, in fnd_global.resp_name, in fnd_global.application_name,
5661 in x_params,
5662 out var_request_id;
5663
5664 IF (x_retcode = -1) THEN
5665 retcode := -1;
5666 errbuf := x_errbuf;
5667 msd_dem_common_utilities.log_message ('ERROR(1) - msd_spf_collect_history_data.COLLECT_FLEET_DATA - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5668 msd_dem_common_utilities.log_message (errbuf);
5669 RETURN;
5670 END IF;
5671 EXCEPTION
5672 WHEN OTHERS THEN
5673 retcode := -1;
5674 errbuf := substr(SQLERRM,1,200);
5675 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_FLEET_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5676 msd_dem_common_utilities.log_message ('Error while submitting collection request on source');
5677 msd_dem_common_utilities.log_message (errbuf);
5678 RETURN;
5679 END;
5680
5681 var_request_num := var_request_num + 1;
5682 g_req_table(var_request_num).REQUEST_ID := var_request_id;
5683 g_req_table(var_request_num).DESCRIPTION := 'SPF CMRO Fleet Collect Source Data';
5684 g_req_table(var_request_num).IS_COMPLETE := FALSE;
5685 g_req_table(var_request_num).status := 1;
5686
5687 COMMIT;
5688
5689 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
5690 msd_dem_common_utilities.log_message ('');
5691 msd_dem_common_utilities.log_message ('');
5692
5693 IF (var_request_num > 0) THEN
5694
5695 check_requests_completion(x_errbuf, x_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out, x_src_dblink);
5696 IF (x_retcode = -1) THEN
5697 retcode := -1;
5698 errbuf := x_errbuf;
5699 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_FLEET_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5700 msd_dem_common_utilities.log_message ('Error while waiting for requests for Stage I to complete.');
5701 msd_dem_common_utilities.log_message (errbuf);
5702 RETURN;
5703 END IF;
5704
5705 IF (x_retcode = 1) THEN
5706 retcode := 1;
5707 errbuf := x_errbuf;
5708 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_FLEET_DATA - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5709 msd_dem_common_utilities.log_message ('One or more requests in Stage I completed with warnings.');
5710 msd_dem_common_utilities.log_message (errbuf);
5711 END IF;
5712
5713 END IF;
5714
5715 /* Begin : Set purge profiles */
5716 set_cmroeam_purge_profiles(x_errbuf, x_retcode, 'FLEET', x_from_date, x_to_date);
5717 IF (x_retcode = -1) THEN
5718 retcode := -1;
5719 errbuf := x_errbuf;
5720 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5721 msd_dem_common_utilities.log_message ('Error when setting purge profiles.');
5722 msd_dem_common_utilities.log_message (errbuf);
5723 RETURN;
5724 END IF;
5725
5726 IF (x_retcode = 1) THEN
5727 retcode := 1;
5728 errbuf := x_errbuf;
5729 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_CMRO_DATA - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5730 msd_dem_common_utilities.log_message ('Warning when setting purge profiles.');
5731 msd_dem_common_utilities.log_message (errbuf);
5732 END IF;
5733 /* End : Set purge profiles */
5734
5735 IF p_sim_plan_name is not null THEN
5736 --update demantra system parameter 'CMRO_Fleet_Simulation_Plan'
5737 msd_dem_common_utilities.log_message ('Updating Demantra system parameter ''CMRO_Fleet_Simulation_Plan'' to ''' || p_sim_plan_name || '''');
5738 x_sql := 'UPDATE ' || g_schema || '.sys_params ' ||
5739 ' set pval = ''' || p_sim_plan_name || '''' ||
5740 ' where pname = ''CMRO_Fleet_Simulation_Plan'' ';
5741 msd_dem_common_utilities.log_debug (x_sql);
5742 execute immediate x_sql;
5743 commit;
5744 END IF;
5745
5746 msd_dem_common_utilities.log_message ('---------------------------------Stage I - End---------------------------------------');
5747 msd_dem_common_utilities.log_message ('');
5748 msd_dem_common_utilities.log_message ('');
5749 /* STAGE I *** END *** */
5750
5751 /* STAGE II *** BEGIN *** */
5752 msd_dem_common_utilities.log_message ('---------------------------------Stage II - Begin-------------------------------------');
5753 var_request_num := 0;
5754
5755 IF (g_req_table.COUNT <> 0)
5756 THEN
5757 g_req_table.DELETE;
5758 END IF;
5759
5760 IF (p_auto_run_download = G_YES) then
5761 BEGIN
5762
5763 var_request_id := null;
5764 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMLDW', NULL, NULL, FALSE,
5765 'WF_SPF_IMPORT_CMRO_FLEET_DATA',
5766 p_synchronous, p_check_interval, p_time_out);
5767
5768 EXCEPTION
5769 WHEN OTHERS THEN
5770 retcode := -1;
5771 errbuf := substr(SQLERRM,1,150);
5772 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_FLEET_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5773 msd_dem_common_utilities.log_message ('Error while submitting request for launch download');
5774 msd_dem_common_utilities.log_message (errbuf);
5775 RETURN;
5776 END;
5777
5778 var_request_num := var_request_num + 1;
5779 g_req_table(var_request_num).REQUEST_ID := var_request_id;
5780 g_req_table(var_request_num).DESCRIPTION := 'SPF CMRO Fleet Launch Download';
5781 g_req_table(var_request_num).IS_COMPLETE := FALSE;
5782 g_req_table(var_request_num).status := 1;
5783
5784 COMMIT;
5785
5786 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
5787 msd_dem_common_utilities.log_message ('');
5788 msd_dem_common_utilities.log_message ('');
5789 END IF;
5790
5791 IF (var_request_num > 0) THEN
5792
5793 check_requests_completion(x_errbuf, x_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out);
5794 IF (x_retcode = -1) THEN
5795 retcode := -1;
5796 errbuf := x_errbuf;
5797 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_FLEET_DATA - ERROR ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5798 msd_dem_common_utilities.log_message ('Error while waiting for requests for Stage II to complete.');
5799 msd_dem_common_utilities.log_message (errbuf);
5800 RETURN;
5801 END IF;
5802
5803 IF (x_retcode = 1) THEN
5804 retcode := 1;
5805 errbuf := x_errbuf;
5806 msd_dem_common_utilities.log_message ('MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_FLEET_DATA - WARNING ...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5807 msd_dem_common_utilities.log_message ('One or more requests in Stage II completed with warnings.');
5808 msd_dem_common_utilities.log_message (errbuf);
5809 END IF;
5810
5811 END IF;
5812
5813 msd_dem_common_utilities.log_message ('---------------------------------Stage II - End---------------------------------------');
5814 msd_dem_common_utilities.log_message ('');
5815 msd_dem_common_utilities.log_message ('');
5816 /* STAGE II *** END *** */
5817
5818 msd_dem_common_utilities.log_debug ('Exiting MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_FLEET_DATA...' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5819 EXCEPTION
5820 WHEN OTHERS THEN
5821 retcode := -1;
5822 errbuf := substr(sqlerrm, 1, 200);
5823 msd_dem_common_utilities.log_message('Error in MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_FLEET_DATA - ' || errbuf);
5824 msd_dem_common_utilities.log_debug('Error in MSD_SPF_COLLECT_HISTORY_DATA.COLLECT_FLEET_DATA (' || TO_CHAR(systimestamp, 'DD-MON-RRRR HH24:MI:SS') || ') - ' || errbuf );
5825 END COLLECT_FLEET_DATA;
5826
5827
5828 /*
5829 * This procedure collects eAM data(resc/mtrls).
5830 * Performs the following.
5831 * 1. Get DB links
5832 * 2. Truncate staging tables (sales/item/loc_tmpl)
5833 * 3. Collects eAM data(resc/mtrls) usage by submitting CP on source.
5834 * 4. Loads t_src_item_tmpl table by submitting MSDSPFPST conc program
5835 * 5. Loads t_src_loc_tmpl table by submitting MSDDEMCLT conc program.
5836 * 6. Submit MSDDEMLDW conc prg to run the workflow
5837 *
5838 * ------------ PARAMETERS LIST ----------------
5839 * p_sr_instance_id : Instance Id
5840 * p_collection_group : Organization Group
5841 * p_collection_method : Complete or Net Change
5842 * p_date_range_type : Absolute or Rolling
5843 * p_collection_window : Noof Days in the past for collecting data
5844 * p_from_date : Start date for collecting data
5845 * p_to_date : End date for collecting data
5846 * p_auto_run_download : Whether to run/launch the demantra workflow or not
5847 * p_synchronous : Whether CP to in sync with demantra workflow or not
5848 * p_check_interval : Check the status of the workflow for every (in seconds)
5849 * p_time_out : Stop the status check of the workflow after (in minutes)
5850 * ---------------------------------------------
5851 *
5852 */
5853
5854 PROCEDURE Collect_eAM_Data (
5855 errbuf OUT NOCOPY VARCHAR2 ,
5856 retcode OUT NOCOPY VARCHAR2 ,
5857 p_sr_instance_id IN NUMBER ,
5858 p_collection_group IN VARCHAR2 ,
5859 p_collection_method IN NUMBER ,
5860 p_hidden_param1 IN VARCHAR2 ,
5861 p_date_range_type IN NUMBER ,
5862 p_collection_window IN NUMBER ,
5863 p_from_date IN VARCHAR2 ,
5864 p_to_date IN VARCHAR2 ,
5865 p_auto_run_download IN NUMBER ,
5866 p_synchronous IN NUMBER DEFAULT G_NO ,
5867 p_check_interval IN NUMBER DEFAULT 60 ,
5868 p_time_out IN NUMBER DEFAULT 1440 )
5869
5870 IS
5871 x_errbuf VARCHAR2(200) := NULL ;
5872 x_retcode VARCHAR2(100) := NULL ;
5873 x_from_date DATE := NULL ;
5874 x_to_date DATE := NULL ;
5875 x_params VARCHAR2(500) := NULL;
5876 x_key_values VARCHAR2(500) := NULL;
5877 x_category_set_id NUMBER := NULL;
5878 x_master_org_id NUMBER := NULL;
5879 x_sql VARCHAR2(1000) := NULL;
5880 sql_request VARCHAR2(1000) := NULL;
5881
5882 var_request_id NUMBER := NULL;
5883 var_request_num NUMBER := 0 ;
5884 var_errbuf VARCHAR2(200) := NULL ;
5885 var_retcode VARCHAR2(100) := NULL ;
5886
5887 var_D2S_dblink VARCHAR2(200) := NULL ;
5888 var_S2D_dblink VARCHAR2(200) := NULL ;
5889
5890
5891 BEGIN
5892
5893 msd_dem_common_utilities.log_debug ('Entering: msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5894
5895 /* Log the input parameters to the ouput file */
5896 msd_dem_common_utilities.log_message('----------------------------------Input Parameters - Begin------------------------------------------');
5897
5898 msd_dem_common_utilities.log_message(' ' || rpad('Instance Id', 30) || ' - ' || to_char(p_sr_instance_id));
5899 msd_dem_common_utilities.log_message(' ' || rpad('From Date', 30) || ' - ' || to_char(p_from_date));
5900 msd_dem_common_utilities.log_message(' ' || rpad('To Date', 30) || ' - ' || to_char(p_to_date));
5901 msd_dem_common_utilities.log_message(' ' || rpad('Auto Run', 30) || ' - ' || to_char(p_auto_run_download));
5902
5903 msd_dem_common_utilities.log_message('-----------------------------------Input Parameters - End-------------------------------------------');
5904 msd_dem_common_utilities.log_message ('');
5905 msd_dem_common_utilities.log_message ('');
5906
5907 /* Call UI_params_validation procedure */
5908 msd_dem_common_utilities.UI_params_validation(
5909 x_errbuf ,
5910 x_retcode ,
5911 x_from_date ,
5912 x_to_date ,
5913 p_sr_instance_id ,
5914 p_collection_group ,
5915 p_collection_method ,
5916 p_hidden_param1 ,
5917 p_date_range_type ,
5918 p_collection_window ,
5919 p_from_date ,
5920 p_to_date ,
5921 NULL ,
5922 NULL );
5923
5924 IF (x_retcode = -1)
5925 THEN
5926 retcode := -1;
5927 errbuf := x_errbuf;
5928 msd_dem_common_utilities.log_message ('Error(1): msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5929 msd_dem_common_utilities.log_message ('Error while validating UI parameters.');
5930 RETURN;
5931 END IF;
5932
5933 msd_dem_common_utilities.log_message(' ' || rpad('From Date', 30) || ' - ' || to_char(x_from_date));
5934 msd_dem_common_utilities.log_message(' ' || rpad('To Date', 30) || ' - ' || to_char(x_to_date));
5935 msd_dem_common_utilities.log_message(' ');
5936
5937 /*------- START - Get Desination to Source DBlink -------*/
5938 msd_dem_common_utilities.get_dblink (
5939 var_errbuf,
5940 var_retcode,
5941 p_sr_instance_id,
5942 var_D2S_dblink);
5943
5944 IF (var_retcode = -1)
5945 THEN
5946 retcode := -1;
5947 errbuf := substr(SQLERRM,1,150);
5948 msd_dem_common_utilities.log_message ('ERROR(2) - msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5949 msd_dem_common_utilities.log_message ('Error in call to msd_dem_common_utilities.get_dblink');
5950 msd_dem_common_utilities.log_message (errbuf);
5951 RETURN;
5952 END IF;
5953
5954 msd_dem_common_utilities.log_debug ('Desination to Source DBlink is - '|| var_D2S_dblink );
5955 /*------- END - Get Desination to Source DBlink -------*/
5956
5957 /*------- START - Get Source to Desination DBlink -------*/
5958 msd_dem_common_utilities.get_dest_dblink (
5959 var_errbuf,
5960 var_retcode,
5961 p_sr_instance_id,
5962 var_S2D_dblink);
5963
5964 IF (var_retcode = -1)
5965 THEN
5966 retcode := -1;
5967 errbuf := substr(SQLERRM,1,150);
5968 msd_dem_common_utilities.log_message ('ERROR(3) - msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
5969 msd_dem_common_utilities.log_message ('Error in call to msd_dem_common_utilities.get_dest_dblink');
5970 msd_dem_common_utilities.log_message (errbuf);
5971 RETURN;
5972 END IF;
5973
5974 msd_dem_common_utilities.log_debug ('Source to Desination DBlink is - '|| var_S2D_dblink );
5975 /*------- END - Get Source to Desination DBlink -------*/
5976
5977
5978 /*------- START - Truncate staging tables -------*/
5979 msd_dem_common_utilities.log_debug ('Truncating staging tables...');
5980 x_sql := 'TRUNCATE TABLE ' || g_schema || '.T_SRC_SALES_TMPL' ;
5981 EXECUTE IMMEDIATE x_sql;
5982 msd_dem_common_utilities.log_debug (x_sql);
5983 x_sql := 'TRUNCATE TABLE ' || g_schema || '.T_SRC_ITEM_TMPL' ;
5984 EXECUTE IMMEDIATE x_sql;
5985 msd_dem_common_utilities.log_debug (x_sql);
5986 x_sql := 'TRUNCATE TABLE ' || g_schema || '.T_SRC_LOC_TMPL' ;
5987 EXECUTE IMMEDIATE x_sql;
5988 msd_dem_common_utilities.log_debug (x_sql);
5989 x_sql := 'TRUNCATE TABLE ' || g_schema || '.T_SRC_SALES_TMPL_ERR' ;
5990 EXECUTE IMMEDIATE x_sql;
5991 msd_dem_common_utilities.log_debug (x_sql);
5992 x_sql := 'TRUNCATE TABLE ' || g_schema || '.T_SRC_ITEM_TMPL_ERR' ;
5993 EXECUTE IMMEDIATE x_sql;
5994 msd_dem_common_utilities.log_debug (x_sql);
5995 x_sql := 'TRUNCATE TABLE ' || g_schema || '.T_SRC_LOC_TMPL_ERR' ;
5996 EXECUTE IMMEDIATE x_sql;
5997 msd_dem_common_utilities.log_debug (x_sql);
5998 /*------- END - Truncate staging tables -------*/
5999
6000
6001 /*------- START - Submit "Collect EAM/CMRO Source data" conc program on source -------*/
6002 msd_dem_common_utilities.log_message('Submitting "Collect EAM/CMRO Source data" conc program on source.');
6003 msd_dem_common_utilities.log_message(' ');
6004
6005 BEGIN
6006
6007 sql_request := 'BEGIN ' ||
6008 'msd_dem_common_utilities.launch_remote_request' || var_D2S_dblink ||
6009 ' (:1, :2, :3, :4, :5, :6, :7);' ||
6010 'END;';
6011
6012 x_params := ' ''MSD'', ''MSDSPFEAMCMRO'', NULL, NULL, FALSE, '
6013 || p_sr_instance_id || ','
6014 || '''' || p_collection_group || ''','
6015 || '''' || fnd_date.date_to_canonical(x_from_date) || ''','
6016 || '''' || fnd_date.date_to_canonical(x_to_date) || ''','
6017 || '''' || var_S2D_dblink || ''','
6018 || ' ''EAM'' ' ;
6019
6020 EXECUTE IMMEDIATE sql_request USING OUT var_errbuf, OUT var_retcode,
6021 IN fnd_global.user_name, IN fnd_global.resp_name, IN fnd_global.application_name,
6022 IN x_params,
6023 OUT var_request_id;
6024
6025 IF (var_retcode = -1) THEN
6026 retcode := -1;
6027 errbuf := var_errbuf;
6028 msd_dem_common_utilities.log_message ('ERROR(4) - msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6029 msd_dem_common_utilities.log_message (errbuf);
6030 RETURN;
6031 END IF;
6032
6033 EXCEPTION
6034 WHEN OTHERS THEN
6035 retcode := -1;
6036 errbuf := substr(SQLERRM,1,150);
6037 msd_dem_common_utilities.log_message ('Error(5): msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6038 msd_dem_common_utilities.log_message ('Error while submitting request MSDSPFEAMCMRO on source');
6039 msd_dem_common_utilities.log_message (errbuf);
6040 RETURN;
6041 END;
6042
6043 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id) || ' on source. ');
6044 msd_dem_common_utilities.log_message ('');
6045 msd_dem_common_utilities.log_message ('');
6046
6047 var_request_num := var_request_num + 1;
6048 g_req_table(var_request_num).REQUEST_ID := var_request_id;
6049 g_req_table(var_request_num).DESCRIPTION := 'SPF eAM Collect Source Data';
6050 g_req_table(var_request_num).IS_COMPLETE := FALSE;
6051 g_req_table(var_request_num).status := 1;
6052
6053 COMMIT;
6054
6055 /*----- Check whether the requests(on source) are completed or not -----*/
6056 IF (var_request_num > 0) THEN
6057
6058 check_requests_completion(x_errbuf, x_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out, var_D2S_dblink);
6059 IF (x_retcode = -1) THEN
6060 retcode := -1;
6061 errbuf := x_errbuf;
6062 msd_dem_common_utilities.log_message ('Error(6): msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6063 msd_dem_common_utilities.log_message ('Error while waiting for request submitted on source.');
6064 msd_dem_common_utilities.log_message (errbuf);
6065 RETURN;
6066 END IF;
6067
6068 IF (x_retcode = 1) THEN
6069 retcode := 1;
6070 errbuf := x_errbuf;
6071 msd_dem_common_utilities.log_message ('WARNING(1): msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6072 msd_dem_common_utilities.log_message ('Request submitted on source completed with warnings.');
6073 msd_dem_common_utilities.log_message (errbuf);
6074 END IF;
6075
6076 END IF;
6077
6078 /*------- END - Submit "Collect EAM/CMRO Source data" conc program on source -------*/
6079
6080 var_request_num := 0;
6081 IF (g_req_table.COUNT <> 0) THEN g_req_table.DELETE; END IF;
6082
6083 /*------- START - Submit "SPF Populate Staging Tables" conc program to load T_SRC_ITEM_TMPL -------*/
6084 msd_dem_common_utilities.log_message ('Submitting "MSDSPFPST" request for populating T_SRC_ITEM_TMPL');
6085
6086 x_sql := 'select PARAMETER_VALUE from MSD_DEM_SETUP_PARAMETERS where PARAMETER_NAME = ''MSD_DEM_CATEGORY_SET_NAME''';
6087 EXECUTE IMMEDIATE x_sql INTO x_category_set_id ;
6088 x_key_values := '$C_CATEGORY_STRING#' || x_category_set_id;
6089 -- BUG#14694463 kkhatri
6090 x_key_values := x_key_values || '$C_MATERIAL#' || CS_DEM_MATERIAL;
6091 x_key_values := x_key_values || '$C_RESOURCE#' || CS_DEM_RESOURCE || '$';
6092
6093 x_sql := 'select PARAMETER_VALUE from MSD_DEM_SETUP_PARAMETERS where PARAMETER_NAME = ''MSD_DEM_MASTER_ORG''';
6094 EXECUTE IMMEDIATE x_sql INTO x_master_org_id ;
6095 x_key_values := x_key_values || 'C_ORG_STRING#' || x_master_org_id || '$' ;
6096
6097
6098 BEGIN
6099 var_request_id := null;
6100 var_request_id := fnd_request.submit_request ('MSD', 'MSDSPFPST', NULL, NULL, FALSE,'EQ_SPF_EAM_ITEM_TMPL', p_sr_instance_id, x_key_values);
6101 EXCEPTION
6102 WHEN OTHERS THEN
6103 retcode := -1;
6104 errbuf := substr(SQLERRM,1,150);
6105 msd_dem_common_utilities.log_message ('Error(7): msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6106 msd_dem_common_utilities.log_message ('Error while submitting request for populating T_SRC_ITEM_TMPL');
6107 msd_dem_common_utilities.log_message (errbuf);
6108 RETURN;
6109 END;
6110
6111 var_request_num := var_request_num + 1;
6112 g_req_table(var_request_num).REQUEST_ID := var_request_id;
6113 g_req_table(var_request_num).DESCRIPTION := 'SPF Populate EQ_SPF_EAM_ITEM_TMPL';
6114 g_req_table(var_request_num).IS_COMPLETE := FALSE;
6115 g_req_table(var_request_num).status := 1;
6116
6117 COMMIT;
6118
6119 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
6120 msd_dem_common_utilities.log_message ('');
6121 msd_dem_common_utilities.log_message ('');
6122 /*------- END - Submit "SPF Populate Staging Tables" conc program to load T_SRC_ITEM_TMPL -------*/
6123
6124
6125 /*------- START - Submit "Collect Level Types" conc program to load T_SRC_LOC_TMPL -------*/
6126 msd_dem_common_utilities.log_message ('Submitting "MSDDEMCLT" request for populating T_SRC_LOC_TMPL');
6127 BEGIN
6128 var_request_id := null;
6129 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMCLT', NULL, NULL, FALSE, p_sr_instance_id, 1, -1, G_YES);
6130 EXCEPTION
6131 WHEN OTHERS THEN
6132 retcode := -1;
6133 errbuf := substr(SQLERRM,1,150);
6134 msd_dem_common_utilities.log_message ('Error(8): msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6135 msd_dem_common_utilities.log_message ('Error while submitting request for populating T_SRC_LOC_TMPL');
6136 msd_dem_common_utilities.log_message (errbuf);
6137 RETURN;
6138 END;
6139
6140 var_request_num := var_request_num + 1;
6141 g_req_table(var_request_num).REQUEST_ID := var_request_id;
6142 g_req_table(var_request_num).DESCRIPTION := 'SPF eAM Populate T_SRC_LOC_TMPL';
6143 g_req_table(var_request_num).IS_COMPLETE := FALSE;
6144 g_req_table(var_request_num).status := 1;
6145
6146 COMMIT;
6147
6148 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
6149 msd_dem_common_utilities.log_message ('');
6150 msd_dem_common_utilities.log_message ('');
6151 /*------- END - Submit "Collect Level Types" conc program to load T_SRC_LOC_TMPL *-------/
6152
6153
6154 /*----- Check whether the requests are completed or not -----*/
6155 check_requests_completion(var_errbuf, var_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out, NULL);
6156
6157 IF (var_retcode = -1) THEN
6158 retcode := -1;
6159 errbuf := var_errbuf;
6160 msd_dem_common_utilities.log_message ('ERROR(9) - msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6161 msd_dem_common_utilities.log_message ('Error while waiting for requests to complete.');
6162 msd_dem_common_utilities.log_message (errbuf);
6163 RETURN;
6164 END IF;
6165
6166 IF (var_retcode = 1) THEN
6167 retcode := 1;
6168 errbuf := var_errbuf;
6169 msd_dem_common_utilities.log_message ('WARNING(2) - msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6170 msd_dem_common_utilities.log_message ('One or more requests completed with warnings.');
6171 msd_dem_common_utilities.log_message (errbuf);
6172 END IF;
6173
6174
6175
6176 var_request_num := 0;
6177 IF (g_req_table.COUNT <> 0) THEN g_req_table.DELETE; END IF;
6178
6179
6180 /*------- START - Submit "Launch Demantra Workflow" concurrent program -------*/
6181 IF (p_auto_run_download = G_YES)
6182 THEN
6183
6184 BEGIN
6185 var_request_id := null;
6186 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMLDW', NULL, NULL, FALSE,
6187 'WF_EBS_FULL_DOWNLOAD',
6188 p_synchronous, p_check_interval, p_time_out);
6189
6190 msd_dem_common_utilities.log_message ('Request Id for "Launch Demantra Workflow" concurrent program - ' || var_request_id);
6191
6192 EXCEPTION
6193 WHEN OTHERS THEN
6194 retcode := -1;
6195 errbuf := substr(SQLERRM,1,150);
6196 msd_dem_common_utilities.log_message ('Error(10): msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6197 msd_dem_common_utilities.log_message ('Error while submitting request for "Launch Demantra Workflow" concurrent program.');
6198 msd_dem_common_utilities.log_message (errbuf);
6199 msd_dem_common_utilities.log_message (' ');
6200 RETURN;
6201 END;
6202
6203 /*----- Check whether the requests are completed or not -----*/
6204 IF (var_request_num > 0) THEN
6205
6206 check_requests_completion(x_errbuf, x_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out);
6207 IF (x_retcode = -1) THEN
6208 retcode := -1;
6209 errbuf := x_errbuf;
6210 msd_dem_common_utilities.log_message ('Error(11): msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6211 msd_dem_common_utilities.log_message ('Error while waiting for requests to complete.');
6212 msd_dem_common_utilities.log_message (errbuf);
6213 RETURN;
6214 END IF;
6215
6216 IF (x_retcode = 1) THEN
6217 retcode := 1;
6218 errbuf := x_errbuf;
6219 msd_dem_common_utilities.log_message ('WARNING(3) - msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6220 msd_dem_common_utilities.log_message ('One or more requests completed with warnings.');
6221 msd_dem_common_utilities.log_message (errbuf);
6222 END IF;
6223
6224 END IF;
6225 END IF;
6226 /*------- END - Submit "Launch Demantra Workflow" concurrent program -------*/
6227
6228
6229 EXCEPTION
6230 WHEN OTHERS THEN
6231 errbuf := substr(SQLERRM,1,150);
6232 retcode := -1 ;
6233 msd_dem_common_utilities.log_message ('Exception: msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6234 msd_dem_common_utilities.log_message (errbuf);
6235 msd_dem_common_utilities.log_message (' ');
6236
6237 END Collect_eAM_Data ;
6238 /*
6239 * This procedure will be collecting historical data of non-maintenance products
6240 * This pocedure is wrapper on the top of the msd_dem_collect_history_data.collect_history_data procedure.
6241 * Actions performed
6242 * 1. Submit "Push Setup Parameters" conc progam
6243 * 2. Call msd_dem_collect_history_data.collect_history_data procedure
6244 * 3. Update columns in t_src_sales_tmpl table
6245 * 4. Submit "Collect Level Types" conc program for items
6246 * 5. Submit "Collect Level Types" conc program for locations
6247 * 6. Check requests status
6248 * 7. Update columns in t_src_item_tmpl table
6249 * 8. Submit "Launch Demantra Workflow" concurrent program
6250 *
6251 * ------------ PARAMETERS LIST ----------------
6252 * p_hist_series : Name of the history series to be collected
6253 * p_auto_run_download : Whether to run/launch the demantra workflow or not
6254 * p_synchronous : Whether CP to in sync with demantra workflow or not
6255 * p_check_interval : Check the status of the workflow for every (in seconds)
6256 * p_time_out : Stop the status check of the workflow after (in minutes)
6257 * --------------------------------------------
6258 */
6259
6260
6261 PROCEDURE collect_nmp_hist_data (
6262 errbuf OUT NOCOPY VARCHAR2,
6263 retcode OUT NOCOPY VARCHAR2,
6264 p_sr_instance_id IN NUMBER,
6265 p_collection_group IN VARCHAR2,
6266 p_collection_method IN NUMBER,
6267 p_hidden_param1 IN VARCHAR2,
6268 p_date_range_type IN NUMBER,
6269 p_collection_window IN NUMBER,
6270 p_from_date IN VARCHAR2,
6271 p_to_date IN VARCHAR2,
6272 p_hist_series IN VARCHAR2,
6273 p_auto_run_download IN NUMBER ,
6274 p_synchronous IN NUMBER DEFAULT G_NO,
6275 p_check_interval IN NUMBER DEFAULT 60,
6276 p_time_out IN NUMBER DEFAULT 1440)
6277 IS
6278
6279 x_errbuf VARCHAR2(200) := NULL;
6280 x_retcode VARCHAR2(100) := NULL;
6281 x_from_date DATE ;
6282 x_to_date DATE ;
6283 x_hist_series VARCHAR2(100) := NULL;
6284 x_hist_col VARCHAR2(100) := NULL;
6285 x_stg_table VARCHAR2(100) := msd_dem_common_utilities.get_lookup_value('MSD_DEM_DM_STAGING_TABLES','SALES_STAGING_TABLE');
6286 x_item_stg_table VARCHAR2(100) := msd_dem_common_utilities.get_lookup_value('MSD_DEM_DM_STAGING_TABLES','ITEM_STAGING_TABLE');
6287 l_sql VARCHAR2(2000) := NULL;
6288
6289
6290 p_bh_bi_bd NUMBER := 2 ;
6291 p_bh_bi_rd NUMBER := 2 ;
6292 p_bh_ri_bd NUMBER := 2 ;
6293 p_bh_ri_rd NUMBER := 2 ;
6294 p_sh_si_sd NUMBER := 2 ;
6295 p_sh_si_rd NUMBER := 2 ;
6296 p_sh_ri_sd NUMBER := 2 ;
6297 p_sh_ri_rd NUMBER := 2 ;
6298
6299 var_request_id NUMBER := NULL;
6300 var_request_num NUMBER := 0 ;
6301 var_errbuf VARCHAR2(200) := NULL ;
6302 var_retcode VARCHAR2(100) := NULL ;
6303
6304 BEGIN
6305
6306 msd_dem_common_utilities.log_debug ('Entering: msd_spf_collect_history_data.collect_nmp_hist_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6307
6308 /* Log the input parameters to the ouput file */
6309 msd_dem_common_utilities.log_message('----------------------------------Input Parameters - Begin------------------------------------------');
6310
6311 msd_dem_common_utilities.log_message(' ' || rpad('Instance Id', 30) || ' - ' || to_char(p_sr_instance_id));
6312 msd_dem_common_utilities.log_message(' ' || rpad('From Date', 30) || ' - ' || to_char(p_from_date));
6313 msd_dem_common_utilities.log_message(' ' || rpad('To Date', 30) || ' - ' || to_char(p_to_date));
6314 msd_dem_common_utilities.log_message(' ' || rpad('Auto Run', 30) || ' - ' || to_char(p_auto_run_download));
6315 msd_dem_common_utilities.log_message(' ' || rpad('History Series', 30) || ' - ' || to_char(nvl(p_hist_series,'No Value')));
6316
6317 msd_dem_common_utilities.log_message('-----------------------------------Input Parameters - End-------------------------------------------');
6318 msd_dem_common_utilities.log_message ('');
6319 msd_dem_common_utilities.log_message ('');
6320
6321
6322 /* START - Validating which History Series has been provided */
6323
6324 x_hist_series := UPPER(trim(p_hist_series));
6325
6326 IF (x_hist_series = 'BH_BI_BD') THEN p_bh_bi_bd := 1 ; x_hist_col := 'EBS_BOOK_HIST_BOOK_QTY_BD' ;
6327 ELSIF (x_hist_series = 'BH_BI_RD') THEN p_bh_bi_rd := 1 ; x_hist_col := 'EBS_BOOK_HIST_BOOK_QTY_RD' ;
6328 ELSIF (x_hist_series = 'BH_RI_BD') THEN p_bh_ri_bd := 1 ; x_hist_col := 'EBS_BOOK_HIST_REQ_QTY_BD' ;
6329 ELSIF (x_hist_series = 'BH_RI_RD') THEN p_bh_ri_rd := 1 ; x_hist_col := 'EBS_BOOK_HIST_REQ_QTY_RD' ;
6330 ELSIF (x_hist_series = 'SH_SI_SD') THEN p_sh_si_sd := 1 ; x_hist_col := 'EBS_SHIP_HIST_SHIP_QTY_SD' ;
6331 ELSIF (x_hist_series = 'SH_SI_RD') THEN p_sh_si_rd := 1 ; x_hist_col := 'EBS_SHIP_HIST_SHIP_QTY_RD' ;
6332 ELSIF (x_hist_series = 'SH_RI_SD') THEN p_sh_ri_sd := 1 ; x_hist_col := 'ACTUAL_QTY' ;
6333 ELSIF (x_hist_series = 'SH_RI_RD') THEN p_sh_ri_rd := 1 ; x_hist_col := 'EBS_SHIP_HIST_REQ_QTY_RD' ;
6334 ELSE
6335 retcode := -1;
6336 errbuf := 'INVALID history series. Please provide correct history series.' ;
6337 msd_dem_common_utilities.log_message ('Error(1): msd_spf_collect_history_data.collect_nmp_hist_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6338 msd_dem_common_utilities.log_message ('Error while validating history series.');
6339 msd_dem_common_utilities.log_message (' ');
6340 msd_dem_common_utilities.log_message ('Value for history series must be among the following:-');
6341 msd_dem_common_utilities.log_message ('BH_BI_BD / BH_BI_RD / BH_RI_BD / BH_RI_RD / SH_SI_SD / SH_SI_RD / SH_RI_SD / SH_RI_RD ');
6342 msd_dem_common_utilities.log_message (' ');
6343 RETURN;
6344
6345 END IF;
6346 /* END - Validating which History Series has been provided */
6347
6348 /*----- START - Submit Push Setup Parameters conc progam -----*/
6349 msd_dem_common_utilities.log_debug (' ');
6350 msd_dem_common_utilities.log_debug ('Submiting Push Setup Parameters conc progam.');
6351 msd_dem_common_utilities.log_debug (' ');
6352
6353 BEGIN
6354 var_request_id := null;
6355 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMPSP', NULL, NULL, FALSE,
6356 p_sr_instance_id, p_collection_group, G_NO );
6357 EXCEPTION
6358 WHEN OTHERS THEN
6359 retcode := -1;
6360 errbuf := substr(SQLERRM,1,150);
6361 msd_dem_common_utilities.log_message ('ERROR(2) - msd_spf_collect_history_data.collect_nmp_hist_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6362 msd_dem_common_utilities.log_message ('Error while submitting request for push setup parameters');
6363 msd_dem_common_utilities.log_message (errbuf);
6364 RETURN;
6365 END;
6366
6367 var_request_num := 0 ;
6368 IF (g_req_table.COUNT <> 0) THEN g_req_table.DELETE; END IF;
6369
6370 var_request_num := var_request_num + 1;
6371 g_req_table(var_request_num).REQUEST_ID := var_request_id;
6372 g_req_table(var_request_num).DESCRIPTION := 'SPF Push Setup Parameters';
6373 g_req_table(var_request_num).IS_COMPLETE := FALSE;
6374 g_req_table(var_request_num).status := 1;
6375
6376 COMMIT;
6377
6378 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
6379 msd_dem_common_utilities.log_message ('');
6380 msd_dem_common_utilities.log_message ('');
6381
6382 /*----- Check whether the requests are completed or not -----*/
6383 check_requests_completion(var_errbuf, var_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out, NULL);
6384 IF (var_retcode = -1) THEN
6385 retcode := -1;
6386 errbuf := var_errbuf;
6387 msd_dem_common_utilities.log_message ('ERROR(3) - msd_spf_collect_history_data.collect_nmp_hist_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6388 msd_dem_common_utilities.log_message (errbuf);
6389 RETURN;
6390 END IF;
6391
6392 IF (var_retcode = 1) THEN
6393 retcode := 1;
6394 errbuf := var_errbuf;
6395 msd_dem_common_utilities.log_message ('WARNING(1) - msd_spf_collect_history_data.collect_nmp_hist_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6396 msd_dem_common_utilities.log_message (errbuf);
6397 END IF;
6398
6399 /*----- END - Submit Push Setup Parameters conc progam -----*/
6400
6401
6402 /*------- START - call collect_history_data procedure -------*/
6403
6404 msd_dem_common_utilities.log_debug (' ');
6405 msd_dem_common_utilities.log_debug ('Calling msd_dem_collect_history_data.collect_history_data procedure.');
6406 msd_dem_common_utilities.log_debug (' ');
6407
6408 msd_dem_collect_history_data.collect_history_data (
6409 x_errbuf ,
6410 x_retcode ,
6411 p_sr_instance_id ,
6412 p_collection_group ,
6413 p_collection_method ,
6414 p_hidden_param1 ,
6415 p_date_range_type ,
6416 p_collection_window ,
6417 p_from_date ,
6418 p_to_date ,
6419 p_bh_bi_bd ,
6420 p_bh_bi_rd ,
6421 p_bh_ri_bd ,
6422 p_bh_ri_rd ,
6423 p_sh_si_sd ,
6424 p_sh_si_rd ,
6425 p_sh_ri_sd ,
6426 p_sh_ri_rd ,
6427 2 ,
6428 1 ,
6429 NULL ,
6430 1 ,
6431 NULL ,
6432 NULL ,
6433 2 ,
6434 2 );
6435
6436 IF (x_retcode = -1)
6437 THEN
6438 retcode := -1;
6439 errbuf := x_errbuf;
6440 msd_dem_common_utilities.log_message ('Error(4): msd_spf_collect_history_data.collect_nmp_hist_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6441 msd_dem_common_utilities.log_message ('Error while calling collect_history_data.');
6442 msd_dem_common_utilities.log_message (' ');
6443 RETURN;
6444 END IF;
6445 /*------- END - call collect_history_data procedure -------*/
6446
6447 /*------- START - updates to t_src_sales_tmpl table -------*/
6448
6449 l_sql := 'UPDATE ' || x_stg_table || ' SET ' || 'ACTUAL_QTY = ' || x_hist_col || ', '
6450 || 'DM_SITE_CODE = 0, EBS_SITE_SR_PK = -777, '
6451 || 'EBS_DEMAND_CLASS_CODE = 0, EBS_DEMAND_CLASS_SR_PK = -777, '
6452 || 'EBS_SALES_CHANNEL_CODE = 0, EBS_SALES_CHANNEL_SR_PK = -777 ';
6453 EXECUTE IMMEDIATE l_sql ;
6454 COMMIT;
6455 msd_dem_common_utilities.log_message ('Updating ACTUAL_QTY, DM_SITE_CODE,EBS_DEMAND_CLASS_CODE,EBS_SALES_CHANNEL_CODE,EBS_SITE_SR_PK,EBS_SALES_CHANNEL_SR_PK,EBS_DEMAND_CLASS_SR_PK columns in T_SRC_SALES_TMPL table.');
6456 msd_dem_common_utilities.log_debug (' ');
6457 msd_dem_common_utilities.log_debug ('Update stmt - ' || l_sql);
6458 msd_dem_common_utilities.log_debug (' ');
6459
6460 msd_dem_common_utilities.log_message ('Updating DM_ITEM_CODE column in T_SRC_SALES_TMPL table.');
6461 msd_dem_query_utilities.execute_query ( errbuf, retcode, 'EQ_SALES_TMPL_ITEM', p_sr_instance_id, null);
6462
6463 /*------- END - updates to t_src_sales_tmpl table -------*/
6464
6465
6466 /*------- START - Submit "Collect Level Types" conc program to load T_SRC_ITEM_TMPL -------*/
6467 msd_dem_common_utilities.log_debug (' ');
6468 msd_dem_common_utilities.log_debug ('Submiting Collect Level Types conc progam for items.');
6469 msd_dem_common_utilities.log_debug (' ');
6470 BEGIN
6471 var_request_id := null;
6472 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMCLT', NULL, NULL, FALSE, p_sr_instance_id, 2);
6473 EXCEPTION
6474 WHEN OTHERS THEN
6475 retcode := -1;
6476 errbuf := substr(SQLERRM,1,150);
6477 msd_dem_common_utilities.log_message ('Error(5): msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6478 msd_dem_common_utilities.log_message ('Error while submitting request for populating T_SRC_ITEM_TMPL');
6479 msd_dem_common_utilities.log_message (errbuf);
6480 RETURN;
6481 END;
6482
6483 var_request_num := 0 ;
6484 IF (g_req_table.COUNT <> 0) THEN g_req_table.DELETE; END IF;
6485
6486 var_request_num := var_request_num + 1;
6487 g_req_table(var_request_num).REQUEST_ID := var_request_id;
6488 g_req_table(var_request_num).DESCRIPTION := 'SPF eAM Populate T_SRC_ITEM_TMPL';
6489 g_req_table(var_request_num).IS_COMPLETE := FALSE;
6490 g_req_table(var_request_num).status := 1;
6491
6492 COMMIT;
6493
6494 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
6495 msd_dem_common_utilities.log_message ('');
6496 msd_dem_common_utilities.log_message ('');
6497 /*------- END - Submit "Collect Level Types" conc program to load T_SRC_ITEM_TMPL -------*/
6498
6499
6500 /*------- START - Submit "Collect Level Types" conc program to load T_SRC_LOC_TMPL -------*/
6501 msd_dem_common_utilities.log_debug (' ');
6502 msd_dem_common_utilities.log_debug ('Submiting Collect Level Types conc progam for locations.');
6503 msd_dem_common_utilities.log_debug (' ');
6504 BEGIN
6505 var_request_id := null;
6506 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMCLT', NULL, NULL, FALSE, p_sr_instance_id, 1, -1, G_YES);
6507 EXCEPTION
6508 WHEN OTHERS THEN
6509 retcode := -1;
6510 errbuf := substr(SQLERRM,1,150);
6511 msd_dem_common_utilities.log_message ('Error(6): msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6512 msd_dem_common_utilities.log_message ('Error while submitting request for populating T_SRC_LOC_TMPL');
6513 msd_dem_common_utilities.log_message (errbuf);
6514 RETURN;
6515 END;
6516
6517 var_request_num := var_request_num + 1;
6518 g_req_table(var_request_num).REQUEST_ID := var_request_id;
6519 g_req_table(var_request_num).DESCRIPTION := 'SPF eAM Populate T_SRC_LOC_TMPL';
6520 g_req_table(var_request_num).IS_COMPLETE := FALSE;
6521 g_req_table(var_request_num).status := 1;
6522
6523 COMMIT;
6524
6525 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
6526 msd_dem_common_utilities.log_message ('');
6527 msd_dem_common_utilities.log_message ('');
6528 /*------- END - Submit "Collect Level Types" conc program to load T_SRC_LOC_TMPL *-------/
6529
6530 /*----- Check whether the requests are completed or not -----*/
6531 check_requests_completion(var_errbuf, var_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out, NULL);
6532
6533 IF (var_retcode = -1) THEN
6534 retcode := -1;
6535 errbuf := var_errbuf;
6536 msd_dem_common_utilities.log_message ('ERROR(7) - msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6537 msd_dem_common_utilities.log_message (errbuf);
6538 RETURN;
6539 END IF;
6540
6541 IF (var_retcode = 1) THEN
6542 retcode := 1;
6543 errbuf := var_errbuf;
6544 msd_dem_common_utilities.log_message ('WARNING(2) - msd_spf_collect_history_data.Collect_eAM_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6545 msd_dem_common_utilities.log_message (errbuf);
6546 END IF;
6547
6548 /*------- START - updates to t_src_item_tmpl table -------*/
6549
6550 l_sql := 'UPDATE ' || x_item_stg_table || ' SET'
6551 || ' master_item_code = dm_item_code,'
6552 || ' master_item_desc = dm_item_desc,'
6553 || ' t_ep_I_ATT_10 = ''' ||CS_DEM_PRODUCT || '''' ; --bug#14694463 kkhatri
6554 EXECUTE IMMEDIATE l_sql ;
6555 COMMIT;
6556 msd_dem_common_utilities.log_message ('Updating MASTER_ITEM_CODE,MASTER_ITEM_DESC,T_EP_I_ATT_10 columns in T_SRC_ITEM_TMPL table.');
6557 msd_dem_common_utilities.log_debug (' ');
6558 msd_dem_common_utilities.log_debug ('Update stmt 3 - ' || l_sql);
6559 msd_dem_common_utilities.log_debug (' ');
6560
6561 /*------- END - updates to t_src_item_tmpl table -------*/
6562
6563 /* START - Submit "Launch Demantra Workflow" concurrent program */
6564 IF (p_auto_run_download = G_YES)
6565 THEN
6566
6567 BEGIN
6568 var_request_id := null;
6569 var_request_id := fnd_request.submit_request ('MSD', 'MSDDEMLDW', NULL, NULL, FALSE,
6570 'WF_EBS_FULL_DOWNLOAD',
6571 p_synchronous, p_check_interval, p_time_out);
6572
6573 msd_dem_common_utilities.log_message ('Request Id for "Launch Demantra Workflow" concurrent program - ' || var_request_id);
6574
6575 EXCEPTION
6576 WHEN OTHERS THEN
6577 retcode := -1;
6578 errbuf := substr(SQLERRM,1,150);
6579 msd_dem_common_utilities.log_message ('Error(8): msd_spf_collect_history_data.collect_nmp_hist_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6580 msd_dem_common_utilities.log_message ('Error while submitting request for "Launch Demantra Workflow" concurrent program.');
6581 msd_dem_common_utilities.log_message (errbuf);
6582 msd_dem_common_utilities.log_message (' ');
6583 RETURN;
6584 END;
6585 END IF;
6586 /* END - Submit "Launch Demantra Workflow" concurrent program */
6587
6588 EXCEPTION
6589 WHEN OTHERS THEN
6590 errbuf := substr(SQLERRM,1,150);
6591 retcode := -1 ;
6592 msd_dem_common_utilities.log_message ('Exception: msd_spf_collect_history_data.collect_nmp_hist_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6593 msd_dem_common_utilities.log_message (errbuf);
6594 msd_dem_common_utilities.log_message (' ');
6595
6596 END collect_nmp_hist_data ;
6597
6598
6599 /*
6600 *
6601 * This procedure is invoked when "Collect Source Data - eAM_cMRO" conc program
6602 * is submitted. This runs on the source instance.
6603 * This procedures performs the following.
6604 * 1. Submit Push Setup Parameters conc progam on destination
6605 * 2. Collect data regarding eAM
6606 * - collect material usage, resource usage series by submitting MSDSPFCLSRS conc prg
6607 * - check_requests_completion
6608 * 3. Collect data regarding cMRO
6609 * - collect workorder history , material usage, resource usage series
6610 * by submitting MSDSPFCLSRS conc prg
6611 * - check_requests_completion
6612 * 4. Collect data regarding Fleet
6613 *
6614 * ------------ PARAMETERS LIST ----------------
6615 * p_sr_instance_id : Instance Id
6616 * p_collection_group : Organization Group
6617 * p_from_date : Start date for collecting data
6618 * p_to_date : End date for collecting data
6619 * p_dest_dblink : Source to destination dblink
6620 * p_collect_product : Name of the product for which the collection is done
6621 * (EAM/CMRO/FLEET)
6622 *
6623 */
6624 Procedure Collect_Source_Data (
6625 errbuf OUT NOCOPY VARCHAR2 ,
6626 retcode OUT NOCOPY VARCHAR2 ,
6627 p_sr_instance_id IN NUMBER ,
6628 p_collection_group IN VARCHAR2 ,
6629 p_from_date IN VARCHAR2 ,
6630 p_to_date IN VARCHAR2 ,
6631 p_dest_dblink IN VARCHAR2 ,
6632 p_collect_product IN VARCHAR2 ,
6633 p_sim_plan_name IN VARCHAR2 DEFAULT '',
6634 p_check_interval IN NUMBER DEFAULT 60,
6635 p_time_out IN NUMBER DEFAULT 1440)
6636 IS
6637 var_errbuf VARCHAR2(1000) := NULL;
6638 var_retcode VARCHAR2(10) := NULL;
6639 var_request_id NUMBER := NULL;
6640 var_request_num NUMBER := 0;
6641 sql_request VARCHAR2(1000) := NULL;
6642 x_params varchar2(500) := NULL;
6643 x_stg_table varchar2(100) := null;
6644 x_dest_dem_schema varchar2(100) := null;
6645 x_sql varchar2(200) := null;
6646
6647 BEGIN
6648
6649 msd_dem_common_utilities.log_debug ('Entering: msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6650
6651 /* Log the input parameters to the log file */
6652 msd_dem_common_utilities.log_message('----------------------------------Input Parameters - Begin------------------------------------------');
6653
6654 msd_dem_common_utilities.log_message(' ' || rpad('Instance Id', 30) || ' - ' || to_char(p_sr_instance_id));
6655 msd_dem_common_utilities.log_message(' ' || rpad('From Date', 30) || ' - ' || to_char(p_from_date));
6656 msd_dem_common_utilities.log_message(' ' || rpad('To Date', 30) || ' - ' || to_char(p_to_date));
6657 msd_dem_common_utilities.log_message(' ' || rpad('Source to Destination DBLINK', 30) || ' - ' || p_dest_dblink);
6658 msd_dem_common_utilities.log_message(' ' || rpad('Product', 30) || ' - ' || p_collect_product);
6659
6660 msd_dem_common_utilities.log_message('-----------------------------------Input Parameters - End-------------------------------------------');
6661 msd_dem_common_utilities.log_message ('');
6662 msd_dem_common_utilities.log_message ('');
6663
6664 var_request_num := 0;
6665 IF (g_req_table.COUNT <> 0) THEN
6666 g_req_table.DELETE;
6667 END IF;
6668
6669 /*----- START - Submit Push Setup Parameters conc progam on destination -----*/
6670 BEGIN
6671 sql_request := 'BEGIN ' ||
6672 'msd_dem_common_utilities.launch_remote_request' || p_dest_dblink ||
6673 ' (:1, :2, :3, :4, :5, :6, :7);' ||
6674 'END;';
6675
6676 msd_dem_common_utilities.log_debug ('Submiting Push Setup Parameters conc progam on destination.');
6677
6678 x_params := ' ''MSD'', ''MSDDEMPSP'', NULL, NULL, FALSE, ' ||
6679 ' ' || p_sr_instance_id || ', ''' || p_collection_group || ''' ' ;
6680 EXECUTE IMMEDIATE sql_request USING OUT var_errbuf, OUT var_retcode,
6681 IN fnd_global.user_name, IN fnd_global.resp_name, IN fnd_global.application_name,
6682 IN x_params,
6683 OUT var_request_id;
6684
6685 IF (var_retcode = -1) THEN
6686 retcode := -1;
6687 errbuf := var_errbuf;
6688 msd_dem_common_utilities.log_message ('ERROR(1) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6689 msd_dem_common_utilities.log_message (errbuf);
6690 RETURN;
6691 END IF;
6692 EXCEPTION
6693 WHEN OTHERS THEN
6694 retcode := -1;
6695 errbuf := substr(SQLERRM,1,150);
6696 msd_dem_common_utilities.log_message ('ERROR(2) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6697 msd_dem_common_utilities.log_message ('Error while submitting request for push setup parameters.');
6698 msd_dem_common_utilities.log_message (errbuf);
6699 RETURN;
6700 END;
6701
6702 var_request_num := var_request_num + 1;
6703 g_req_table(var_request_num).REQUEST_ID := var_request_id;
6704 g_req_table(var_request_num).DESCRIPTION := 'SPF Push Setup Parameters';
6705 g_req_table(var_request_num).IS_COMPLETE := FALSE;
6706 g_req_table(var_request_num).status := 1;
6707
6708 COMMIT;
6709
6710 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id) || ' on destination.');
6711 msd_dem_common_utilities.log_message ('');
6712 msd_dem_common_utilities.log_message ('');
6713
6714
6715 check_requests_completion(var_errbuf, var_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out, p_dest_dblink);
6716 IF (var_retcode = -1) THEN
6717 retcode := -1;
6718 errbuf := var_errbuf;
6719 msd_dem_common_utilities.log_message ('ERROR(3) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6720 msd_dem_common_utilities.log_message (errbuf);
6721 RETURN;
6722 END IF;
6723
6724 IF (var_retcode = 1) THEN
6725 retcode := 1;
6726 errbuf := var_errbuf;
6727 msd_dem_common_utilities.log_message ('WARNING(1) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6728 msd_dem_common_utilities.log_message (errbuf);
6729 END IF;
6730
6731 /*----- END - Submit Push Setup Parameters conc progam on destination -----*/
6732
6733 x_sql := 'select parameter_value from msd_dem_setup_parameters where parameter_name like ''MSD_DEM_SCHEMA''';
6734 execute immediate x_sql into x_dest_dem_schema;
6735
6736 /*----- Perform the following to collect data regarding eAM -----*/
6737 IF (p_collect_product = 'EAM') THEN
6738
6739 var_request_num := 0;
6740 IF (g_req_table.COUNT <> 0) THEN g_req_table.DELETE; END IF;
6741
6742 /*----- START - Submit series data collection progams on destination -----*/
6743
6744 x_stg_table := msd_dem_common_utilities.get_lookup_value('MSD_DEM_DM_STAGING_TABLES','SALES_STAGING_TABLE');
6745 x_stg_table := x_dest_dem_schema || '.' || substr(x_stg_table, instr(x_stg_table, '.')+1);
6746
6747 /*---- for eAM Materials Usage series -----*/
6748 BEGIN
6749 sql_request := 'BEGIN ' ||
6750 'msd_dem_common_utilities.launch_remote_request' || p_dest_dblink ||
6751 ' (:1, :2, :3, :4, :5, :6, :7);' ||
6752 'END;';
6753
6754 msd_dem_common_utilities.log_debug ('Submiting Collect SPF Series Data conc progam on destination for eAM Materials Usage series.');
6755 x_params := ' ''MSD'', ''MSDSPFCLSRS'', NULL, NULL, FALSE, ' ||
6756 ' ' || G_EAM_MTL_USG_SERIES_ID || ', ''' || x_stg_table || ''', ' ||
6757 ' ' || p_sr_instance_id || ', 0, ' ||
6758 ' ''' || p_from_date || ''', ''' || p_to_date || ''' ';
6759 EXECUTE IMMEDIATE sql_request USING OUT var_errbuf, OUT var_retcode,
6760 IN fnd_global.user_name, IN fnd_global.resp_name, IN fnd_global.application_name,
6761 IN x_params,
6762 OUT var_request_id ;
6763
6764 IF (var_retcode = -1) THEN
6765 retcode := -1;
6766 errbuf := var_errbuf;
6767 msd_dem_common_utilities.log_message ('ERROR(4) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6768 msd_dem_common_utilities.log_message (errbuf);
6769 RETURN;
6770 END IF;
6771 EXCEPTION
6772 WHEN OTHERS THEN
6773 retcode := -1;
6774 errbuf := substr(SQLERRM,1,150);
6775 msd_dem_common_utilities.log_message ('ERROR(5) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6776 msd_dem_common_utilities.log_message ('Error while submitting request for collecting eAM Materials Usage.');
6777 msd_dem_common_utilities.log_message (errbuf);
6778 RETURN;
6779 END;
6780
6781 var_request_num := var_request_num + 1;
6782 g_req_table(var_request_num).REQUEST_ID := var_request_id;
6783 g_req_table(var_request_num).DESCRIPTION := 'SPF Collect eAM Materials Usage';
6784 g_req_table(var_request_num).IS_COMPLETE := FALSE;
6785 g_req_table(var_request_num).status := 1;
6786
6787 COMMIT;
6788
6789 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id) || ' on destination.');
6790 msd_dem_common_utilities.log_message ('');
6791 msd_dem_common_utilities.log_message ('');
6792
6793 /*---- for eAM Resource Usage series -----*/
6794 BEGIN
6795 sql_request := 'BEGIN ' ||
6796 'msd_dem_common_utilities.launch_remote_request' || p_dest_dblink ||
6797 ' (:1, :2, :3, :4, :5, :6, :7);' ||
6798 'END;';
6799
6800 msd_dem_common_utilities.log_debug ('Submiting Collect SPF Series Data conc progam on destination for eAM Resource Usage series.');
6801
6802 x_params := ' ''MSD'', ''MSDSPFCLSRS'', NULL, NULL, FALSE, ' ||
6803 ' ' || G_EAM_RES_USG_SERIES_ID || ', ''' || x_stg_table || ''', ' ||
6804 ' ' || p_sr_instance_id || ', 0, ' ||
6805 ' ''' || p_from_date || ''', ''' || p_to_date || ''' ';
6806 EXECUTE IMMEDIATE sql_request USING OUT var_errbuf, OUT var_retcode,
6807 IN fnd_global.user_name, IN fnd_global.resp_name, IN fnd_global.application_name,
6808 IN x_params,
6809 OUT var_request_id;
6810
6811 IF (var_retcode = -1) THEN
6812 retcode := -1;
6813 errbuf := var_errbuf;
6814 msd_dem_common_utilities.log_message ('ERROR(4) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6815 msd_dem_common_utilities.log_message (errbuf);
6816 RETURN;
6817 END IF;
6818 EXCEPTION
6819 WHEN OTHERS THEN
6820 retcode := -1;
6821 errbuf := substr(SQLERRM,1,150);
6822 msd_dem_common_utilities.log_message ('ERROR(5) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6823 msd_dem_common_utilities.log_message ('Error while submitting request for collecting eAM Resource Usage');
6824 msd_dem_common_utilities.log_message (errbuf);
6825 RETURN;
6826 END;
6827
6828 var_request_num := var_request_num + 1;
6829 g_req_table(var_request_num).REQUEST_ID := var_request_id;
6830 g_req_table(var_request_num).DESCRIPTION := 'SPF Collect eAM Resource Usage';
6831 g_req_table(var_request_num).IS_COMPLETE := FALSE;
6832 g_req_table(var_request_num).status := 1;
6833
6834 COMMIT;
6835
6836 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id) || ' on destination.');
6837 msd_dem_common_utilities.log_message ('');
6838 msd_dem_common_utilities.log_message ('');
6839
6840 /*----- Check whether the requests are completed or not -----*/
6841 check_requests_completion(var_errbuf, var_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out, p_dest_dblink);
6842
6843 IF (var_retcode = -1) THEN
6844 retcode := -1;
6845 errbuf := var_errbuf;
6846 msd_dem_common_utilities.log_message ('ERROR(6) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6847 msd_dem_common_utilities.log_message (errbuf);
6848 RETURN;
6849 END IF;
6850
6851 IF (var_retcode = 1) THEN
6852 retcode := 1;
6853 errbuf := var_errbuf;
6854 msd_dem_common_utilities.log_message ('WARNING(2) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6855 msd_dem_common_utilities.log_message (errbuf);
6856 END IF;
6857
6858 /*----- END - Submit series data collection progams on destination -----*/
6859
6860
6861 /*----- Perform the following to collect data regarding cMRO -----*/
6862 ELSIF (p_collect_product = 'CMRO') THEN
6863
6864 var_request_num := 0;
6865 IF (g_req_table.COUNT <> 0) THEN
6866 g_req_table.DELETE;
6867 END IF;
6868
6869 /*----- START - Submit series data collection progams on destination -----*/
6870 /*---- for cMRO workorder history series -----*/
6871 BEGIN
6872 sql_request := 'begin ' ||
6873 'msd_dem_common_utilities.launch_remote_request' || p_dest_dblink ||
6874 ' (:1, :2, :3, :4, :5, :6, :7);' ||
6875 'end;';
6876
6877 msd_dem_common_utilities.log_debug ('Submiting Collect SPF Series Data conc progam on destination for cMRO workorder history series.');
6878
6879 x_params := ' ''MSD'', ''MSDSPFCLSRS'', NULL, NULL, FALSE, ' ||
6880 ' ' || G_CMRO_WO_HIST_SERIES_ID || ', ''' || G_CMRO_WO_HIST_TABLE || ''', ' ||
6881 ' ' || p_sr_instance_id || ', 0, ' ||
6882 ' ''' || p_from_date || ''', ''' || p_to_date || ''' ';
6883 execute immediate sql_request using out var_errbuf, out var_retcode,
6884 in fnd_global.user_name, in fnd_global.resp_name, in fnd_global.application_name,
6885 in x_params,
6886 out var_request_id;
6887
6888 IF (var_retcode = -1) THEN
6889 retcode := -1;
6890 errbuf := var_errbuf;
6891 msd_dem_common_utilities.log_message ('ERROR(7) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6892 msd_dem_common_utilities.log_message (errbuf);
6893 RETURN;
6894 END IF;
6895 EXCEPTION
6896 WHEN OTHERS THEN
6897 retcode := -1;
6898 errbuf := substr(SQLERRM,1,150);
6899 msd_dem_common_utilities.log_message ('ERROR(8) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6900 msd_dem_common_utilities.log_message ('Error while submitting request for collecting workorder history');
6901 msd_dem_common_utilities.log_message (errbuf);
6902 RETURN;
6903 END;
6904
6905 var_request_num := var_request_num + 1;
6906 g_req_table(var_request_num).REQUEST_ID := var_request_id;
6907 g_req_table(var_request_num).DESCRIPTION := 'SPF Collect CMRO Workorder history';
6908 g_req_table(var_request_num).IS_COMPLETE := FALSE;
6909 g_req_table(var_request_num).status := 1;
6910
6911 COMMIT;
6912
6913 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
6914 msd_dem_common_utilities.log_message ('');
6915 msd_dem_common_utilities.log_message ('');
6916
6917 /*---- for cMRO material usage series -----*/
6918 BEGIN
6919 sql_request := 'begin ' ||
6920 'msd_dem_common_utilities.launch_remote_request' || p_dest_dblink ||
6921 ' (:1, :2, :3, :4, :5, :6, :7);' ||
6922 'end;';
6923
6924 msd_dem_common_utilities.log_debug ('Submiting Collect SPF Series Data conc progam on destination for cMRO material usage series.');
6925
6926 x_params := ' ''MSD'', ''MSDSPFCLSRS'', NULL, NULL, FALSE, ' ||
6927 ' ' || G_CMRO_MTL_USG_SERIES_ID || ', ''' || G_CMRO_MTL_USG_TABLE || ''', ' ||
6928 ' ' || p_sr_instance_id || ', 0, ' ||
6929 ' ''' || p_from_date || ''', ''' || p_to_date || ''' ';
6930 execute immediate sql_request using out var_errbuf, out var_retcode,
6931 in fnd_global.user_name, in fnd_global.resp_name, in fnd_global.application_name,
6932 in x_params,
6933 out var_request_id;
6934
6935 IF (var_retcode = -1) THEN
6936 retcode := -1;
6937 errbuf := var_errbuf;
6938 msd_dem_common_utilities.log_message ('ERROR(9) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6939 msd_dem_common_utilities.log_message (errbuf);
6940 RETURN;
6941 END IF;
6942 EXCEPTION
6943 WHEN OTHERS THEN
6944 retcode := -1;
6945 errbuf := substr(SQLERRM,1,150);
6946 msd_dem_common_utilities.log_message ('ERROR(10) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6947 msd_dem_common_utilities.log_message ('Error while submitting request for collecting material usage history');
6948 msd_dem_common_utilities.log_message (errbuf);
6949 RETURN;
6950 END;
6951
6952 var_request_num := var_request_num + 1;
6953 g_req_table(var_request_num).REQUEST_ID := var_request_id;
6954 g_req_table(var_request_num).DESCRIPTION := 'SPF Collect CMRO Material Usage history';
6955 g_req_table(var_request_num).IS_COMPLETE := FALSE;
6956 g_req_table(var_request_num).status := 1;
6957
6958 COMMIT;
6959
6960 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
6961 msd_dem_common_utilities.log_message ('');
6962 msd_dem_common_utilities.log_message ('');
6963
6964 /*---- for cMRO resource usage series -----*/
6965 BEGIN
6966 sql_request := 'begin ' ||
6967 'msd_dem_common_utilities.launch_remote_request' || p_dest_dblink ||
6968 ' (:1, :2, :3, :4, :5, :6, :7);' ||
6969 'end;';
6970
6971 msd_dem_common_utilities.log_debug ('Submiting Collect SPF Series Data conc progam on destination for cMRO resource usage series.');
6972
6973 x_params := ' ''MSD'', ''MSDSPFCLSRS'', NULL, NULL, FALSE, ' ||
6974 ' ' || G_CMRO_RES_USG_SERIES_ID || ', ''' || G_CMRO_RES_USG_TABLE || ''', ' ||
6975 ' ' || p_sr_instance_id || ', 0, ' ||
6976 ' ''' || p_from_date || ''', ''' || p_to_date || ''' ';
6977 execute immediate sql_request using out var_errbuf, out var_retcode,
6978 in fnd_global.user_name, in fnd_global.resp_name, in fnd_global.application_name,
6979 in x_params,
6980 out var_request_id;
6981
6982 IF (var_retcode = -1) THEN
6983 retcode := -1;
6984 errbuf := var_errbuf;
6985 msd_dem_common_utilities.log_message ('ERROR(11) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6986 msd_dem_common_utilities.log_message (errbuf);
6987 RETURN;
6988 END IF;
6989 EXCEPTION
6990 WHEN OTHERS THEN
6991 retcode := -1;
6992 errbuf := substr(SQLERRM,1,150);
6993 msd_dem_common_utilities.log_message ('ERROR(12) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
6994 msd_dem_common_utilities.log_message ('Error while submitting request for collecting Resource Usage history');
6995 msd_dem_common_utilities.log_message (errbuf);
6996 RETURN;
6997 END;
6998
6999 var_request_num := var_request_num + 1;
7000 g_req_table(var_request_num).REQUEST_ID := var_request_id;
7001 g_req_table(var_request_num).DESCRIPTION := 'SPF Collect CMRO Resource Usage history';
7002 g_req_table(var_request_num).IS_COMPLETE := FALSE;
7003 g_req_table(var_request_num).status := 1;
7004
7005 COMMIT;
7006
7007 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
7008 msd_dem_common_utilities.log_message ('');
7009 msd_dem_common_utilities.log_message ('');
7010
7011 /*----- Check whether requests ar completed or not -----*/
7012 check_requests_completion(var_errbuf, var_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out, p_dest_dblink);
7013
7014 IF (var_retcode = -1) THEN
7015 retcode := -1;
7016 errbuf := var_errbuf;
7017 msd_dem_common_utilities.log_message ('ERROR(13) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7018 msd_dem_common_utilities.log_message (errbuf);
7019 RETURN;
7020 END IF;
7021
7022 IF (var_retcode = 1) THEN
7023 retcode := 1;
7024 errbuf := var_errbuf;
7025 msd_dem_common_utilities.log_message ('WARNING(3) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7026 msd_dem_common_utilities.log_message (errbuf);
7027 END IF;
7028
7029 /*----- END - Submit series data collection progams on destination -----*/
7030
7031 /*----- Perform the following to collect data regarding Fleet -----*/
7032 ELSIF (p_collect_product = 'FLEET') THEN
7033 var_request_num := 0;
7034 IF (g_req_table.COUNT <> 0) THEN
7035 g_req_table.DELETE;
7036 END IF;
7037
7038 /*----- START - Submit series data collection progams on destination -----*/
7039 /*---- for cMRO fleet data -----*/
7040 BEGIN
7041 sql_request := 'begin ' ||
7042 'msd_dem_common_utilities.launch_remote_request' || p_dest_dblink ||
7043 ' (:1, :2, :3, :4, :5, :6, :7);' ||
7044 'end;';
7045
7046 msd_dem_common_utilities.log_debug ('Submiting Collect SPF Series Data conc progam on destination for cMRO fleet data');
7047
7048 x_stg_table := x_dest_dem_schema || '.' || substr(G_FLEET_DATA_DEST_TABLE, instr(G_FLEET_DATA_DEST_TABLE, '.')+1);
7049
7050 x_params := ' ''MSD'', ''MSDSPFCLSRS'', NULL, NULL, FALSE, ' ||
7051 ' ' || G_FLEET_DATA_SERIES_ID || ', ''' || x_stg_table || ''', ' ||
7052 ' ' || p_sr_instance_id || ', 0, ' ||
7053 ' ''' || p_from_date || ''', ''' || p_to_date || ''', ' ||
7054 ' ''' || p_sim_plan_name || ''' ';
7055 execute immediate sql_request using out var_errbuf, out var_retcode,
7056 in fnd_global.user_name, in fnd_global.resp_name, in fnd_global.application_name,
7057 in x_params,
7058 out var_request_id;
7059
7060 IF (var_retcode = -1) THEN
7061 retcode := -1;
7062 errbuf := var_errbuf;
7063 msd_dem_common_utilities.log_message ('ERROR(14) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7064 msd_dem_common_utilities.log_message (errbuf);
7065 RETURN;
7066 END IF;
7067 EXCEPTION
7068 WHEN OTHERS THEN
7069 retcode := -1;
7070 errbuf := substr(SQLERRM,1,150);
7071 msd_dem_common_utilities.log_message ('ERROR(15) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7072 msd_dem_common_utilities.log_message ('Error while submitting request for collecting workorder history');
7073 msd_dem_common_utilities.log_message (errbuf);
7074 RETURN;
7075 END;
7076
7077 var_request_num := var_request_num + 1;
7078 g_req_table(var_request_num).REQUEST_ID := var_request_id;
7079 g_req_table(var_request_num).DESCRIPTION := 'SPF Collect CMRO Fleet Data';
7080 g_req_table(var_request_num).IS_COMPLETE := FALSE;
7081 g_req_table(var_request_num).status := 1;
7082
7083 COMMIT;
7084
7085 msd_dem_common_utilities.log_message ('Submitted concurrent request - ' || to_char(var_request_id));
7086 msd_dem_common_utilities.log_message ('');
7087 msd_dem_common_utilities.log_message ('');
7088
7089 /*----- Check whether requests ar completed or not -----*/
7090 check_requests_completion(var_errbuf, var_retcode, g_req_table.LAST, systimestamp, g_req_table, p_check_interval, p_time_out, p_dest_dblink);
7091
7092 IF (var_retcode = -1) THEN
7093 retcode := -1;
7094 errbuf := var_errbuf;
7095 msd_dem_common_utilities.log_message ('ERROR(16) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7096 msd_dem_common_utilities.log_message (errbuf);
7097 RETURN;
7098 END IF;
7099
7100 IF (var_retcode = 1) THEN
7101 retcode := 1;
7102 errbuf := var_errbuf;
7103 msd_dem_common_utilities.log_message ('WARNING(4) - msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7104 msd_dem_common_utilities.log_message (errbuf);
7105 END IF;
7106
7107 /*----- END - Submit series data collection progams on destination -----*/
7108
7109 END IF;
7110
7111 msd_dem_common_utilities.log_debug ('Exiting: msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7112
7113 EXCEPTION
7114 WHEN OTHERS THEN
7115 errbuf := substr(SQLERRM,1,150);
7116 retcode := -1 ;
7117 msd_dem_common_utilities.log_message ('Exception: msd_spf_collect_history_data.Collect_Source_Data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7118 msd_dem_common_utilities.log_message (errbuf);
7119 msd_dem_common_utilities.log_message (' ');
7120
7121 END Collect_Source_Data ;
7122
7123 /*
7124 * This procedure deletes all data from SPF GL Tables. This should only be run by
7125 * an admin user. The user must make sure that the Demantra AS is down before running
7126 * the procedure.
7127 * The procedure is used when the SPF related profile options have been changed which
7128 * result in changes to the bom structure brought into Demantra.
7129 */
7130 PROCEDURE PURGE_SPF_GL_DATA (
7131 errbuf OUT NOCOPY VARCHAR2,
7132 retcode OUT NOCOPY VARCHAR2)
7133 IS
7134 x_schema VARCHAR2(100) := NULL;
7135 x_sql VARCHAR2(500) := NULL;
7136 BEGIN
7137
7138 msd_dem_common_utilities.log_debug ('Entering: msd_spf_collect_history_data.purge_spf_gl_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7139
7140 x_schema := fnd_profile.value('MSD_DEM_SCHEMA');
7141
7142 /*Deleting records from T_EP_SPF table */
7143 msd_dem_common_utilities.log_message('Deleting data from T_EP_SPF');
7144 x_sql := 'DELETE FROM ' || x_schema || '.t_ep_spf WHERE t_ep_spf_id <> 0 ';
7145 msd_dem_common_utilities.log_debug ('The SQL is - ' || x_sql);
7146 msd_dem_common_utilities.log_debug ('Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7147 EXECUTE IMMEDIATE x_sql;
7148 COMMIT;
7149 msd_dem_common_utilities.log_debug ('Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7150
7151 /*Deleting records from T_EP_SPF_BASE_MODEL table */
7152 msd_dem_common_utilities.log_message('Deleting data from T_EP_SPF_BASE_MODEL');
7153 x_sql := 'DELETE FROM ' || x_schema || '.t_ep_spf_base_model WHERE t_ep_spf_base_model_id <> 0 ';
7154 msd_dem_common_utilities.log_debug ('The SQL is - ' || x_sql);
7155 msd_dem_common_utilities.log_debug ('Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7156 EXECUTE IMMEDIATE x_sql;
7157 COMMIT;
7158 msd_dem_common_utilities.log_debug ('Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7159
7160 /*Deleting records from T_EP_SPF_CHILD table */
7161 msd_dem_common_utilities.log_message('Deleting data from T_EP_SPF_CHILD');
7162 x_sql := 'DELETE FROM ' || x_schema || '.t_ep_spf_child WHERE t_ep_spf_child_id <> 0 ';
7163 msd_dem_common_utilities.log_debug ('The SQL is - ' || x_sql);
7164 msd_dem_common_utilities.log_debug ('Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7165 EXECUTE IMMEDIATE x_sql;
7166 COMMIT;
7167 msd_dem_common_utilities.log_debug ('Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7168
7169 /*Deleting records from T_EP_SPF_LATEST_REV table */
7170 msd_dem_common_utilities.log_message('Deleting data from T_EP_SPF_LATEST_REV');
7171 x_sql := 'DELETE FROM ' || x_schema || '.t_ep_spf_latest_rev WHERE t_ep_spf_latest_rev_id <> 0 ';
7172 msd_dem_common_utilities.log_debug ('The SQL is - ' || x_sql);
7173 msd_dem_common_utilities.log_debug ('Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7174 EXECUTE IMMEDIATE x_sql;
7175 COMMIT;
7176 msd_dem_common_utilities.log_debug ('Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7177
7178 /*Deleting records from T_EP_SPF_VISIT_TYPE table */
7179 msd_dem_common_utilities.log_message('Deleting data from T_EP_SPF_VISIT_TYPE');
7180 x_sql := 'DELETE FROM ' || x_schema || '.t_ep_spf_visit_type WHERE t_ep_spf_visit_type_id <> 0 ';
7181 msd_dem_common_utilities.log_debug ('The SQL is - ' || x_sql);
7182 msd_dem_common_utilities.log_debug ('Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7183 EXECUTE IMMEDIATE x_sql;
7184 COMMIT;
7185 msd_dem_common_utilities.log_debug ('Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7186
7187 /*Deleting records from T_EP_SPF_VISIT_STAGE_TYPE table */
7188 msd_dem_common_utilities.log_message('Deleting data from T_EP_SPF_VISIT_STAGE_TYPE');
7189 x_sql := 'DELETE FROM ' || x_schema || '.t_ep_spf_visit_stage_type WHERE t_ep_spf_visit_stage_type_id <> 0 ';
7190 msd_dem_common_utilities.log_debug ('The SQL is - ' || x_sql);
7191 msd_dem_common_utilities.log_debug ('Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7192 EXECUTE IMMEDIATE x_sql;
7193 COMMIT;
7194 msd_dem_common_utilities.log_debug ('Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7195
7196 msd_dem_common_utilities.log_message('SPF GL Data deleted successfully');
7197 msd_dem_common_utilities.log_message('Please bounce the demantra server');
7198 msd_dem_common_utilities.log_debug ('Exiting: msd_spf_collect_history_data.purge_spf_gl_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7199 retcode := 0;
7200
7201 EXCEPTION
7202 WHEN OTHERS THEN
7203 errbuf := substr(SQLERRM,1,200);
7204 retcode := -1;
7205
7206 msd_dem_common_utilities.log_message ('Exception(1): msd_spf_collect_history_data.purge_spf_gl_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
7207 msd_dem_common_utilities.log_message (errbuf);
7208 RETURN;
7209
7210 END PURGE_SPF_GL_DATA;
7211
7212
7213 END MSD_SPF_COLLECT_HISTORY_DATA;