[Home] [Help]
PACKAGE BODY: APPS.BSC_AOP_TPLATE
Source
1 PACKAGE BODY BSC_AOP_TPLATE AS
2 /* $Header: BSCUAOPB.pls 115.10 2003/06/20 22:24:09 meastmon ship $ */
3
4
5 G_PF_Tbl BSC_TEMPLATE.Proj_Field_Tbl_Type;
6 G_PD_Tbl BSC_TEMPLATE.Proj_Data_Tbl_Type;
7 G_Cal_Tbl BSC_TEMPLATE.Cal_Tbl_Type;
8
9 /*===========================================================================+
10 |
11 | Name: Create_Analysis_Options
12 |
13 | Description: To create analysis options
14 |
15 | History:
16 | 02-APR-1999 Alex Yang Created.
17 | 12/22/1999 Henry Camacho Modified to Model 4.0
18 +============================================================================*/
19
20 Function Create_Analysis_Options
21 Return Boolean
22 Is
23 l_system_type varchar2(60);
24 is_cross_template boolean := FALSE;
25
26 l_num_of_options number;
27 l_num_of_data number;
28
29 l_debug_stmt varchar2(2000) := 'DEBUG: ';
30
31 Begin
32
33 -- check template type (Tab or Cross)
34
35 Select PROPERTY_VALUE
36 Into l_system_type
37 From BSC_SYS_INIT
38 Where PROPERTY_CODE = 'MODEL_TYPE';
39
40 if (l_system_type = '1') then
41 l_num_of_options := 4;
42 l_num_of_data := 4;
43 else
44 l_num_of_options := 1;
45 l_num_of_data := 1;
46 end if;
47
48 G_PF_Tbl.Delete;
49 G_PD_Tbl.Delete;
50
51 G_PF_Tbl(0).Measure_id := 1;
52 G_PF_Tbl(0).Measure_col := 'Amount';
53 G_PF_Tbl(0).Operation := 'SUM';
54 G_PF_Tbl(0).Type := 0;
55 G_PF_Tbl(0).Min_Actual := 1000;
56 G_PF_Tbl(0).Max_Actual := 2000;
57 G_PF_Tbl(0).Min_Plan := 1000;
58 G_PF_Tbl(0).Max_Plan := 2000;
59 G_PF_Tbl(0).Style := 1;
60 G_PF_Tbl(0).Insert_var := TRUE;
61
62 -- For Cross only
63
64 G_PF_Tbl(1).Measure_id := 2;
65 G_PF_Tbl(1).Measure_col := 'Completed';
66 G_PF_Tbl(1).Operation := 'SUM';
67 G_PF_Tbl(1).Type := 0;
68 G_PF_Tbl(1).Min_Actual := 0;
69 G_PF_Tbl(1).Max_Actual := 1;
70 G_PF_Tbl(1).Min_Plan := 0;
71 G_PF_Tbl(1).Max_Plan := 1;
72 G_PF_Tbl(1).Style := 1;
73 G_PF_Tbl(1).Insert_var := TRUE;
74
75 G_PF_Tbl(2).Measure_id := 3;
76 G_PF_Tbl(2).Measure_col := 'Cost';
77 G_PF_Tbl(2).Operation := 'SUM';
78 G_PF_Tbl(2).Type := 0;
79 G_PF_Tbl(2).Min_Actual := 10000;
80 G_PF_Tbl(2).Max_Actual := 15000;
81 G_PF_Tbl(2).Min_Plan := 10000;
82 G_PF_Tbl(2).Max_Plan := 15000;
83 G_PF_Tbl(2).Style := 1;
84 G_PF_Tbl(2).Insert_var := TRUE;
85
86 G_PF_Tbl(3).Measure_id := 4;
87 G_PF_Tbl(3).Measure_col := 'XXX';
88 G_PF_Tbl(3).Operation := 'SUM';
89 G_PF_Tbl(3).Type := 0;
90 G_PF_Tbl(3).Min_Actual := 1000;
91 G_PF_Tbl(3).Max_Actual := 2000;
92 G_PF_Tbl(3).Min_Plan := 1500;
93 G_PF_Tbl(3).Max_Plan := 2000;
94 G_PF_Tbl(3).Style := 2;
95 G_PF_Tbl(3).Insert_var := TRUE;
96
97 -- Define MPROJ_DATA fields
98
99 G_PD_Tbl(0).Dataset_id := 1;
100 G_PD_Tbl(0).Measure1 := 1;
101 G_PD_Tbl(0).Operation := NULL;
102 G_PD_Tbl(0).Measure2 := NULL;
103 G_PD_Tbl(0).Format := 5;
104 G_PD_Tbl(0).Color_Method := 1;
105 G_PD_Tbl(0).Proj_Flag := 1;
106 G_PD_Tbl(0).name := 'Amount';
107 G_PD_Tbl(0).Help := 'Amount';
108 G_PD_Tbl(0).num_of_calc := 11;
109
110 -- for Cross only
111
112 G_PD_Tbl(1).Dataset_id := 2;
113 G_PD_Tbl(1).Measure1 := 2;
114 G_PD_Tbl(1).operation := NULL;
115 G_PD_Tbl(1).Measure2 := NULL;
116 G_PD_Tbl(1).Format := 0;
117 G_PD_Tbl(1).Color_Method := 1;
118 G_PD_Tbl(1).Proj_Flag := 1;
119 G_PD_Tbl(1).name := 'Completed';
120 G_PD_Tbl(1).Help := '% Completed';
121 G_PD_Tbl(1).num_of_calc := 10;
122
123 G_PD_Tbl(2).Dataset_id := 3;
124 G_PD_Tbl(2).Measure1 := 3;
125 G_PD_Tbl(2).Operation := NULL;
126 G_PD_Tbl(2).Measure2 := NULL;
127 G_PD_Tbl(2).Format := 5;
128 G_PD_Tbl(2).Color_Method := 2;
129 G_PD_Tbl(2).Proj_Flag := 1;
130 G_PD_Tbl(2).name := 'Cost';
131 G_PD_Tbl(2).Help := 'Associated Cost by Project';
132 G_PD_Tbl(2).num_of_calc := 8;
133
134 G_PD_Tbl(3).Dataset_id := 4;
135 G_PD_Tbl(3).Measure1 := 4;
136 G_PD_Tbl(3).operation := NULL;
137 G_PD_Tbl(3).Measure2 := NULL;
138 G_PD_Tbl(3).Format := 6;
139 G_PD_Tbl(3).Color_Method := 1;
140 G_PD_Tbl(3).Proj_Flag := 1;
141 G_PD_Tbl(3).name := 'XXXX';
142 G_PD_Tbl(3).Help := 'XXXX';
143 G_PD_Tbl(3).num_of_calc := 7;
144
145
146 if (NOT create_option_relations(l_num_of_options, l_num_of_data)) then
147 l_debug_stmt := bsc_apps.get_message('BSC_ERROR_CREATE_AO');
148 Raise BSC_AOP_ERROR;
149 end if;
150
151 Return(TRUE);
152
153 EXCEPTION
154 WHEN BSC_AOP_ERROR THEN
155 BSC_MESSAGE.Add(
156 X_Message => l_debug_stmt,
157 X_Source => 'bsc_aop_tplate.create_analysis_options',
158 X_Mode => 'I');
159
160 Return(FALSE);
161
162 WHEN OTHERS THEN
163 BSC_MESSAGE.Add(
164 X_Message => SQLERRM,
165 X_Source => 'bsc_aop_tplate.create_analysis_options',
166 X_Mode => 'I');
167
168 BSC_MESSAGE.Add(
169 X_Message => l_debug_stmt,
170 X_Source => 'bsc_aop_tplate.create_analysis_options',
171 x_type => 3,
172 X_Mode => 'I');
173
174 Return(FALSE);
175
176 End Create_Analysis_Options;
177
178
179 /*===========================================================================+
180 |
181 | Name: Create_Option_Relations
182 |
183 | Description: To configue analysis options
184 |
185 | Parameters:
186 | x_num_of_options number of analysis options
187 | x_num_of_data number of data fields
188 |
189 | History:
190 | 02-APR-1999 Alex Yang Created.
191 | 12/22/1999 Henry Camacho Modified to Model 4.0
192 +============================================================================*/
193 Function Create_Option_Relations(
194 x_num_of_options IN Number,
195 x_num_of_data IN Number
196 ) Return Boolean
197 Is
198 l_debug_stmt varchar2(2000);
199 l_sql varchar2(32700);
200 Begin
201
202 G_Cal_Tbl(0).Calculation := 0; G_Cal_Tbl(0).EV0 := 2;
203 G_Cal_Tbl(1).Calculation := 1; G_Cal_Tbl(1).EV0 := 2;
204 G_Cal_Tbl(2).Calculation := 2; G_Cal_Tbl(2).EV0 := 2;
205 G_Cal_Tbl(3).Calculation := 3; G_Cal_Tbl(3).EV0 := 0;
206 G_Cal_Tbl(4).Calculation := 4; G_Cal_Tbl(4).EV0 := 0;
207 G_Cal_Tbl(5).Calculation := 5; G_Cal_Tbl(5).EV0 := 2;
208 G_Cal_Tbl(6).Calculation := 6; G_Cal_Tbl(6).EV0 := 0;
209 G_Cal_Tbl(7).Calculation := 7; G_Cal_Tbl(7).EV0 := 0;
210 G_Cal_Tbl(8).Calculation := 8; G_Cal_Tbl(8).EV0 := 0;
211 G_Cal_Tbl(9).Calculation := 9; G_Cal_Tbl(9).EV0 := 0;
212 G_Cal_Tbl(10).Calculation := 10; G_Cal_Tbl(10).EV0 := 0;
213 G_Cal_Tbl(11).Calculation := 20; G_Cal_Tbl(11).EV0 := 0;
214
215
216
217 For i_option in 0 .. (x_num_of_options -1)
218 Loop
219 l_debug_stmt := 'Insert Into BSC_SYS_MEASURES .. Measure_id=' ||
220 to_char(G_PF_Tbl(i_option).Measure_id);
221 Insert Into BSC_SYS_MEASURES (
222 MEASURE_ID,
223 MEASURE_COL,
224 OPERATION,
225 TYPE,
226 MIN_ACTUAL_VALUE,
227 MAX_ACTUAL_VALUE,
228 MIN_BUDGET_VALUE,
229 MAX_BUDGET_VALUE,
230 RANDOM_STYLE,
231 CREATED_BY,CREATION_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE )
232 Values (
233 G_PF_Tbl(i_option).Measure_id,
234 G_PF_Tbl(i_option).Measure_col,
235 G_PF_Tbl(i_option).Operation,
236 G_PF_Tbl(i_option).Type,
237 G_PF_Tbl(i_option).Min_Actual,
238 G_PF_Tbl(i_option).Max_Actual,
239 G_PF_Tbl(i_option).Min_Plan,
240 G_PF_Tbl(i_option).Max_Plan,
241 G_PF_Tbl(i_option).Style,
242 1,SYSDATE,1,SYSDATE
243 );
244
245 -- create Data Set
246
247 if (G_PF_Tbl(i_option).insert_var) then
248
249 l_debug_stmt := 'Insert Into BSC_DB_MEASURE_COLS_TL .. ' ||
250 'field_n=' || G_PF_Tbl(i_option).Measure_col;
251
252 --FEM -Template Translable
253 l_sql := 'INSERT INTO BSC_DB_MEASURE_COLS_TL '||
254 ' (MEASURE_COL,LANGUAGE,SOURCE_LANG,HELP,MEASURE_GROUP_ID,PROJECTION_ID,MEASURE_TYPE) ' ||
255 'SELECT '||
256 ''''||G_PF_Tbl(i_option).Measure_col||''' AS MEASURE_COL, '||
257 'FEM.LANGUAGE AS LANGUAGE, '||
258 'FEM.SOURCE_LANG AS SOURCE_LANG, '||
259 'SUBSTR(FEM.MEANING,1,50) AS HELP, '||
260 '-1 AS MEASURE_GROUP_ID, '||
261 '3 AS PROJECTION_ID, '||
262 'NULL AS MEASURE_TYPE '||
263 'FROM '||BSC_TEMPLATE.LOOKUP_VALUES_TABLE||' FEM '||
264 'WHERE FEM.LOOKUP_TYPE = ''BSC_TPLATE_TAB_DATASET_NAME'' AND '||
265 'FEM.LOOKUP_CODE = '''||G_PF_Tbl(i_option).Measure_id||'''';
266 BSC_APPS.Execute_Immediate(l_sql);
267 end if;
268 End Loop; -- analysis option loop
269
270
271 For i_data In 0 .. (x_num_of_data -1)
272 Loop
273 l_debug_stmt := 'Insert Into BSC_SYS_DATASETS_B .. data_code=' ||
274 to_char(G_PD_Tbl(i_data).Dataset_id);
275
276 Insert Into BSC_SYS_DATASETS_B (
277 DATASET_ID,
278 MEASURE_ID1,
279 OPERATION,
280 MEASURE_ID2,
281 FORMAT_ID,
282 COLOR_METHOD,
283 PROJECTION_FLAG,
284 CREATED_BY,CREATION_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE )
285 Values (
286 G_PD_Tbl(i_data).Dataset_id,
287 G_PD_Tbl(i_data).Measure1,
288 G_PD_Tbl(i_data).Operation,
289 G_PD_Tbl(i_data).Measure2,
290 G_PD_Tbl(i_data).Format,
291 G_PD_Tbl(i_data).Color_Method,
292 G_PD_Tbl(i_data).Proj_Flag,
293 1,SYSDATE,1,SYSDATE
294 );
295
296 l_debug_stmt := 'Insert Into BSC_SYS_DATASETS_TL .. data_code=' ||
297 to_char(G_PD_Tbl(i_data).Dataset_id);
298
299 l_sql := 'INSERT INTO BSC_SYS_DATASETS_TL (DATASET_ID, LANGUAGE, SOURCE_LANG,'||
300 ' NAME, HELP) '||
301 'SELECT '||
302 G_PD_Tbl(i_data).Dataset_id||' AS DATASET_ID, '||
303 'FEM.LANGUAGE AS LANGUAGE, '||
304 'FEM.SOURCE_LANG AS SOURCE_LANG, '||
305 'SUBSTR(FEM.MEANING,1,20) AS NAME, '||
306 'SUBSTR(FEM.MEANING,1,80) AS HELP '||
307 'FROM '||BSC_TEMPLATE.LOOKUP_VALUES_TABLE||' FEM '||
308 'WHERE FEM.LOOKUP_TYPE = ''BSC_TPLATE_TAB_DATASET_NAME'' AND '||
309 'FEM.LOOKUP_CODE = '''||G_PD_Tbl(i_data).Dataset_id||'''';
310 BSC_APPS.Execute_Immediate(l_sql);
311
312 For i_proj_calc In 0 .. (G_PD_Tbl(i_data).num_of_calc -1)
313 Loop
314
315 l_debug_stmt := 'Insert Into BSC_SYS_DATASET_CALC .. data_code=' ||
316 to_char(G_PD_Tbl(i_data).Dataset_id);
317
318 IF G_Cal_Tbl(i_proj_calc).EV0 = 0 THEN
319 Insert Into BSC_SYS_DATASET_CALC (
320 DATASET_ID,
321 DISABLED_CALC_ID
322 )
323 Values (
324 G_PD_Tbl(i_data).Dataset_id,
325 G_Cal_Tbl(i_proj_calc).Calculation
326 );
327 END IF;
328
329 End loop; -- calculation field loop
330
331 End Loop; -- analysis option data loop
332
333 Return(TRUE);
334
335 EXCEPTION
336
337 WHEN OTHERS THEN
338 BSC_MESSAGE.Add(
339 X_Message => SQLERRM,
340 X_Source => 'bsc_aop_tplate.create_option_relations',
341 X_Mode => 'I');
342
343 BSC_MESSAGE.Add(
344 X_Message => l_debug_stmt,
345 X_Source => 'bsc_template.create_crx_template',
346 x_type => 3,
347 X_Mode => 'I');
348
349 Return(FALSE);
350
351 End Create_Option_Relations;
352
353
354 END BSC_AOP_TPLATE;