DBA Data[Home] [Help]

PACKAGE BODY: APPS.OPI_EDW_JOB_DETAIL_F_SZ

Source


1 PACKAGE BODY OPI_EDW_JOB_DETAIL_F_SZ AS
2 /* $Header: OPIOJDZB.pls 120.2 2006/02/23 22:01:46 sberi noship $*/
3 
4 PROCEDURE cnt_rows(p_from_date DATE,
5                    p_to_date DATE,
6                    p_num_rows OUT NOCOPY NUMBER) IS
7 CURSOR c_cnt_rows IS
8        Select sum(cnt)
9        from
10        (
11 	Select count(*) cnt
12 	FROM
13 	  WIP_ENTITIES EN, WIP_DISCRETE_JOBS DI
14 	WHERE
15 	  DI.STATUS_TYPE IN (4,5,7,12) AND '_SEC:di.organization_id' IS NOT NULL AND
16 	  DI.WIP_ENTITY_ID = EN.WIP_ENTITY_ID AND DI.ORGANIZATION_ID = EN.ORGANIZATION_ID
17           and en.last_update_date between p_from_date and p_to_date
18         union
19 	Select count(*) cnt
20 	FROM
21 	  WIP_ENTITIES EN, WIP_REPETITIVE_SCHEDULES RE
22 	WHERE
23 	  RE.STATUS_TYPE IN (4,5,7,12) AND '_SEC:re.organization_id' IS NOT NULL AND
24 	  RE.WIP_ENTITY_ID = EN.WIP_ENTITY_ID AND RE.ORGANIZATION_ID = EN.ORGANIZATION_ID
25           and en.last_update_date between p_from_date and p_to_date
26 	union
27 	Select count(*) cnt
28 	FROM
29 	  WIP_ENTITIES EN, WIP_FLOW_SCHEDULES FL
30 	WHERE
31 	 FL.STATUS = 2  AND '_SEC:fl.organization_id' IS NOT NULL AND
32 	 FL.WIP_ENTITY_ID = EN.WIP_ENTITY_ID AND FL.ORGANIZATION_ID = EN.ORGANIZATION_ID
33          and en.last_update_date between p_from_date and p_to_date
34        );
35 
36 
37 BEGIN
38 
39   OPEN c_cnt_rows;
40        FETCH c_cnt_rows INTO p_num_rows;
41   CLOSE c_cnt_rows;
42 
43 END;  -- procedure cnt_rows.
44 
45 
46 PROCEDURE est_row_len(p_from_date DATE,
47                    p_to_date DATE,
48                    p_est_row_len OUT NOCOPY NUMBER) IS
49 
50 	 x_JOB_NO NUMBER ;
51 	 x_JOB_ID_EN NUMBER ;
52 	 x_ORG_ID NUMBER ;
53 	 x_ITEM_ORG NUMBER ;
54 	 x_ENTITY_TYPE NUMBER ;
55 	 x_CREATION_DATE NUMBER ;
56 	 x_LAST_UPDATE_DATE NUMBER ;
57          x_ROUTING NUMBER ;
58 
59 	 x_ACT_OUT_QTY_DI NUMBER;
60 	 x_PLN_CMPL_DATE_DI NUMBER;
61 	 x_PLN_OUT_QTY_DI  NUMBER;
62 	 x_ACT_STRT_DATE_DI NUMBER;
63 	 x_PLN_STRT_DATE_DI NUMBER;
64 	 x_ACT_CMPL_DATE_DI NUMBER;
65 	 x_ACT_CNCL_DATE_DI NUMBER;
66 	 x_PRD_LINE_FK_DI NUMBER;
67 	 x_ROUTING_REVISION_DI NUMBER;
68 
69 	 x_JOB_ID_RE NUMBER;
70 	 x_ACT_OUT_QTY_RE NUMBER;
71 	 x_PLN_CMPL_DATE_RE NUMBER;
72 	 x_PLN_OUT_QTY_RE  NUMBER;
73 	 x_ACT_STRT_DATE_RE NUMBER;
74 	 x_PLN_STRT_DATE_RE NUMBER;
75 	 x_ACT_CMPL_DATE_RE NUMBER;
76 	 x_ACT_CNCL_DATE_RE NUMBER;
77 	 x_PRD_LINE_FK_RE NUMBER;
78 	 x_ROUTING_REVISION_RE NUMBER;
79 
80 
81 	 x_ACT_OUT_QTY_FL NUMBER;
82 	 x_PLN_CMPL_DATE_FL NUMBER;
83 	 x_PLN_OUT_QTY_FL  NUMBER;
84 	 x_ACT_STRT_DATE_FL NUMBER;
85 	 x_PLN_STRT_DATE_FL NUMBER;
86 	 x_ACT_CMPL_DATE_FL NUMBER;
87 	 x_PRD_LINE_FK_FL NUMBER;
88 	 x_ROUTING_REVISION_FL NUMBER;
89 
90 	 x_JOB_STATUS_MFG_MODE NUMBER;
91 
92  	 x_ACT_INP_VAL NUMBER;
93 
94 	 x_ACT_PLN_VAL NUMBER;
95 
96 	 x_ACT_PLN_JOB_TIME_DI NUMBER;
97  	 x_ACT_PLN_JOB_TIME_RE NUMBER;
98 	 x_ACT_PLN_JOB_TIME_FL NUMBER;
99 
100 	 x_INST NUMBER;
101          x_MP_ORG NUMBER;
102 
103 	 x_di_rows NUMBER;
104          x_re_rows NUMBER;
105          x_fl_rows NUMBER;
106 
107 	 x_tot_jobs_rows NUMBER;
108 
109 	 x_FULL_LEAD_TIME NUMBER;
110 	 x_trx_date NUMBER;
111 	 x_currency NUMBER;
112 
113  	 x_total NUMBER := 0 ;
114 
115 CURSOR c_1  IS
116 	SELECT
117 	 avg(nvl(vsize(EN.WIP_ENTITY_NAME), 0)),  --    JOB_NO
118 	 avg(nvl(vsize(EN.WIP_ENTITY_ID || '-'), 0)), -- JOB_ID
119 	 3*avg(nvl(vsize(EN.ORGANIZATION_ID), 0)),  -- ORG_ID, Used three times in the stg table
120 	 2*avg(nvl(vsize(EN.PRIMARY_ITEM_ID), 0)),  -- ITEM_ORG, Used twice in the stg table
121 	 avg(nvl(vsize(EN.ENTITY_TYPE), 0)),      -- ENTITY_TYPE
122 	 avg(nvl(vsize(EN.CREATION_DATE), 0)),    -- CREATION_DATE
123 	 avg(nvl(vsize(EN.LAST_UPDATE_DATE), 0)) , -- LAST_UPDATE_DATE
124          avg(nvl(vsize(TO_CHAR(EN.PRIMARY_ITEM_ID)), 0)) -- ROUTING
125 	FROM WIP_ENTITIES EN;
126 
127 CURSOR c_2  IS
128 	SELECT
129 	 avg(nvl(vsize(DI.QUANTITY_COMPLETED), 0)),  -- ACT_OUT_QTY,
130 	 avg(nvl(vsize(DI.SCHEDULED_COMPLETION_DATE), 0)),   -- PLN_CMPL_DATE,
131 	 avg(nvl(vsize(DI.START_QUANTITY), 0)),   -- PLN_OUT_QTY ,
132 	 avg(nvl(vsize(DI.SCHEDULED_START_DATE), 0)),   -- ACT_STRT_DATE,
133 	 avg(nvl(vsize(DI.SCHEDULED_START_DATE), 0)),   -- PLN_STRT_DATE,
134 	 avg(nvl(vsize(DI.date_closed), 0)),   -- ACT_CMPL_DATE,
135 	 avg(nvl(vsize(DECODE(DI.STATUS_TYPE,7,DI.DATE_COMPLETED,NULL)), 0)),   -- ACT_CNCL_DATE,
136 	 avg(nvl(vsize(DI.LINE_ID), 0)),   -- PRD_LINE_FK,
137 	 avg(nvl(vsize(DI.ROUTING_REVISION), 0))   -- ROUTING_REVISION,
138 	FROM WIP_DISCRETE_JOBS DI
139 	WHERE
140 	  DI.STATUS_TYPE IN (4,5,7,12) AND '_SEC:di.organization_id' IS NOT NULL;
141 
142 CURSOR c_3  IS
143 	SELECT
144 	 avg(nvl(vsize(RE.QUANTITY_COMPLETED), 0)),  -- ACT_OUT_QTY,
145 	 avg(nvl(vsize(RE.LAST_UNIT_COMPLETION_DATE), 0)),  -- PLN_CMPL_DATE,
146 	 avg(nvl(vsize('-' || RE.REPETITIVE_SCHEDULE_ID), 0)),   -- JOB_ID,
147 	 avg(nvl(vsize(RE.DAILY_PRODUCTION_RATE * RE.PROCESSING_WORK_DAYS), 0)),  -- PLN_OUT_QTY,
148 	 avg(nvl(vsize(RE.FIRST_UNIT_START_DATE), 0)),  -- ACT_STRT_DATE,
149 	 avg(nvl(vsize(RE.FIRST_UNIT_START_DATE), 0)),    -- PLN_STRT_DATE,
150 	 avg(nvl(vsize(NVL(RE.DATE_CLOSED,RE.last_unit_completion_date)), 0)),  -- ACT_CMPL_DATE,
151 	 avg(nvl(vsize(DECODE(RE.STATUS_TYPE,7,RE.DATE_CLOSED,NULL)), 0)),  -- ACT_CNCL_DATE,
152 	 avg(nvl(vsize(RE.LINE_ID), 0)),  -- PRD_LINE_FK,
153 	 avg(nvl(vsize(RE.ROUTING_REVISION), 0)) -- ROUTING_REVISION
154 	FROM
155 	  WIP_REPETITIVE_SCHEDULES RE
156 	WHERE
157 	  RE.STATUS_TYPE IN (4,5,7,12) AND '_SEC:re.organization_id' IS NOT NULL;
158 
159 CURSOR c_4  IS
160 	SELECT
161 	 avg(nvl(vsize(FL.QUANTITY_COMPLETED), 0)),  -- ACT_OUT_QTY,
162 	 avg(nvl(vsize(FL.SCHEDULED_COMPLETION_DATE), 0)),  -- PLN_CMPL_DATE,
163 	 avg(nvl(vsize(FL.PLANNED_QUANTITY), 0)),  -- PLN_OUT_QTY ,
164 	 avg(nvl(vsize(FL.SCHEDULED_START_DATE), 0)), -- ACT_STRT_DATE,
165 	 avg(nvl(vsize(FL.SCHEDULED_START_DATE), 0)), -- PLN_STRT_DATE,
166 	 avg(nvl(vsize(NVL(FL.DATE_CLOSED,FL.scheduled_completion_date)), 0)), -- ACT_CMPL_DATE,
167 	 avg(nvl(vsize(FL.LINE_ID), 0)), -- PRD_LINE_FK,
168 	 avg(nvl(vsize(FL.ROUTING_REVISION), 0)) -- ROUTING_REVISION,
169 	FROM
170 	  WIP_FLOW_SCHEDULES FL
171 	WHERE
172 	 FL.STATUS = 2  AND '_SEC:fl.organization_id' IS NOT NULL;
173 
174 CURSOR c_5  IS
175 	SELECT
176 	 avg(nvl(vsize(ML1.MEANING), 0)) -- JOB_STATUS_MFG_MODE
177 	FROM MFG_LOOKUPS ML1
178 	WHERE
179 	  ML1.LOOKUP_TYPE = 'WIP_JOB_STATUS' OR ML1.LOOKUP_TYPE = 'WIP_ENTITY' ;
180 
181 CURSOR c_6  IS
182 	 SELECT
183 	  avg(nvl(vsize(NVL(WPB.TL_RESOURCE_IN,0) + NVL(WPB.TL_OVERHEAD_IN,0) + NVL(WPB.TL_OUTSIDE_PROCESSING_IN,0) +
184 	      NVL(WPB.PL_MATERIAL_IN,0) + NVL(WPB.PL_MATERIAL_OVERHEAD_IN,0) + NVL(WPB.PL_RESOURCE_IN,0) + NVL(WPB.PL_OVERHEAD_IN,0) +
185 	      NVL(WPB.PL_OUTSIDE_PROCESSING_IN,0) + NVL(WPB.TL_SCRAP_IN,0)), 0))  -- ACT_INP_VAL
186 	 FROM WIP_PERIOD_BALANCES WPB;
187 
188 CURSOR c_7  IS
189 	SELECT
190 	  -- ACT_MTL_INP_VAL, PLN_MTL_INP_VAl, ACT_BPR_VAL, PLN_BPR_VAl, ACT_OUT_VAL, AVG_ACT_UNIT_CMPL_CST (used twice: STD_VAL_B, PLN_OUT_VAL_B), ACT_SCR_VAL
191 	  avg(nvl(vsize(MMT.PRIMARY_QUANTITY), 0))
192 	FROM
193 	  MTL_MATERIAL_TRANSACTIONS MMT;
194 
195 CURSOR c_8  IS
196 	SELECT
197 	 avg(nvl(vsize((NVL(DI.DATE_COMPLETED,DI.date_closed) - DI.SCHEDULED_START_DATE)), 0))   -- ACT_JOB_TIME AND PLN_JOB_TIME
198 	FROM
199 	  WIP_DISCRETE_JOBS DI;
200 
201 CURSOR c_9  IS
202 	SELECT
203 	 avg(nvl(vsize((NVL(RE.DATE_CLOSED,RE.last_unit_completion_date) - RE.FIRST_UNIT_START_DATE)), 0))   -- ACT_JOB_TIME AND PLN_JOB_TIME
204 	FROM
205 	  WIP_REPETITIVE_SCHEDULES RE;
206 
207 CURSOR c_10  IS
208 	SELECT
209 	  avg(nvl(vsize((NVL(FL.DATE_CLOSED, FL.scheduled_completion_date)  - FL.SCHEDULED_START_DATE)), 0))   -- ACT_JOB_TIME AND PLN_JOB_TIME
210 	 FROM
211 	   WIP_FLOW_SCHEDULES FL;
212 
213 CURSOR c_11 IS
214 	SELECT
215    	   avg(nvl(vsize(instance_code), 0))
216 	FROM	EDW_LOCAL_INSTANCE ;
217 
218 CURSOR c_12 IS
219 	SELECT
220 	   avg(nvl(vsize(mp.organization_code), 0))
221 	FROM mtl_parameters mp ;
222 
223 CURSOR c_13 IS
224         Select count(*) cnt
225 	FROM
226 	  WIP_ENTITIES EN, WIP_DISCRETE_JOBS DI
227 	WHERE
228 	  DI.STATUS_TYPE IN (4,5,7,12) AND '_SEC:di.organization_id' IS NOT NULL AND
229 	  DI.WIP_ENTITY_ID = EN.WIP_ENTITY_ID AND DI.ORGANIZATION_ID = EN.ORGANIZATION_ID	;
230 
231 CURSOR c_14 IS
232 	Select count(*) cnt
233 	FROM
234 	  WIP_ENTITIES EN, WIP_REPETITIVE_SCHEDULES RE
235 	WHERE
236 	  RE.STATUS_TYPE IN (4,5,7,12) AND '_SEC:re.organization_id' IS NOT NULL AND
237 	  RE.WIP_ENTITY_ID = EN.WIP_ENTITY_ID AND RE.ORGANIZATION_ID = EN.ORGANIZATION_ID ;
238 
239 CURSOR c_15 IS
240 	Select count(*) cnt
241 	FROM
242 	  WIP_ENTITIES EN, WIP_FLOW_SCHEDULES FL
243 	WHERE
244 	 FL.STATUS = 2  AND '_SEC:fl.organization_id' IS NOT NULL AND
245 	 FL.WIP_ENTITY_ID = EN.WIP_ENTITY_ID AND FL.ORGANIZATION_ID = EN.ORGANIZATION_ID;
246 
247 CURSOR c_16 IS
248 	SELECT
249 	   avg(nvl(vsize(MSI.FULL_LEAD_TIME), 0))
250         FROM
251 	   MTL_SYSTEM_ITEMS MSI;
252 
253 CURSOR c_17 IS
254         SELECT
255                 avg(nvl(vsize(transaction_date), 0))
256         FROM    WIP_MOVE_TRANSACTIONS;
257 
258 
259 CURSOR c_18 is
260         SELECT  avg(nvl(vsize(gsob.currency_code), 0))
261         FROM    hr_all_organization_units hou,
262                 hr_organization_information hoi,
263                 gl_sets_of_books gsob
264         WHERE   hou.organization_id  = hoi.organization_id
265           AND ( hoi.org_information_context || '') ='Accounting Information'
266           AND hoi.org_information1    = to_char(gsob.set_of_books_id)  ;
267 
268 BEGIN
269 
270   OPEN c_13;
271        FETCH c_13 INTO x_di_rows;
272   CLOSE c_13;
273 
274   OPEN c_14;
275        FETCH c_14 INTO x_re_rows;
276   CLOSE c_14;
277 
278   OPEN c_15;
279        FETCH c_15 INTO x_fl_rows;
280   CLOSE c_15;
281 
282   x_tot_jobs_rows := x_di_rows + x_re_rows + x_fl_rows;
283 
284   -- dbms_output.put_line ('******************'||x_total||'******') ;
285   OPEN c_1;
286        FETCH c_1 INTO
287 	 x_JOB_NO ,
288 	 x_JOB_ID_EN ,
289 	 x_ORG_ID ,
290 	 x_ITEM_ORG ,
291 	 x_ENTITY_TYPE ,
292 	 x_CREATION_DATE ,
293 	 x_LAST_UPDATE_DATE ,
294          x_ROUTING;
295   CLOSE c_1;
296 
297   x_total := 3 +
298 	    x_total +
299 	ceil(x_JOB_NO + 1) +
300 	ceil(x_JOB_ID_EN + 1) +
301 	2*ceil(x_ORG_ID + 1) +  -- ORG_ID is used twice in the job_detail stg record, once in Fact
302 	ceil(x_ITEM_ORG + 1) +
303 	ceil(x_ENTITY_TYPE + 1) +
304 	ceil(x_CREATION_DATE + 1) +
305 	ceil(x_LAST_UPDATE_DATE + 1) +
306 	ceil(x_LAST_UPDATE_DATE + 1) +
307 	ceil(x_ROUTING + 1)   ;
308 
309   -- dbms_output.put_line ('******************'||x_total||'******') ;
310   OPEN c_2;
311        FETCH c_2 INTO
312 	 x_ACT_OUT_QTY_DI,
313 	 x_PLN_CMPL_DATE_DI,
314 	 x_PLN_OUT_QTY_DI ,
315 	 x_ACT_STRT_DATE_DI,
316 	 x_PLN_STRT_DATE_DI,
317 	 x_ACT_CMPL_DATE_DI,
318 	 x_ACT_CNCL_DATE_DI,
319 	 x_PRD_LINE_FK_DI,
320 	 x_ROUTING_REVISION_DI;
321   CLOSE c_2;
322 
323   x_total := x_total +
324 	(ceil(x_ACT_OUT_QTY_DI + 1) +
325 	ceil(x_PLN_CMPL_DATE_DI + 1) +
326 	ceil(x_PLN_OUT_QTY_DI + 1) +
327 	ceil(x_ACT_STRT_DATE_DI + 1) +
328 	ceil(x_PLN_STRT_DATE_DI + 1) +
329 	ceil(x_ACT_CMPL_DATE_DI + 1) +
330 	ceil(x_ACT_CNCL_DATE_DI + 1) +
331 	ceil(x_PRD_LINE_FK_DI + 1) +
332 	ceil(x_ROUTING_REVISION_DI + 1))*(x_di_rows/x_tot_jobs_rows )   ;
333 
334   -- dbms_output.put_line ('******************'||x_total||'******') ;
335   OPEN c_3;
336        FETCH c_3 INTO
337 	 x_JOB_ID_RE,
338 	 x_ACT_OUT_QTY_RE,
339 	 x_PLN_CMPL_DATE_RE,
340 	 x_PLN_OUT_QTY_RE,
341 	 x_ACT_STRT_DATE_RE,
342 	 x_PLN_STRT_DATE_RE,
343 	 x_ACT_CMPL_DATE_RE,
344 	 x_ACT_CNCL_DATE_RE,
345 	 x_PRD_LINE_FK_RE,
346 	 x_ROUTING_REVISION_RE ;
347   CLOSE c_3;
348 
349   x_total := x_total +
350 	(ceil(x_JOB_ID_RE + 1) +
351         ceil(x_ACT_OUT_QTY_RE + 1) +
352 	ceil(x_PLN_CMPL_DATE_RE + 1) +
353 	ceil(x_PLN_OUT_QTY_RE + 1) +
354 	ceil(x_ACT_STRT_DATE_RE + 1) +
355 	ceil(x_PLN_STRT_DATE_RE + 1) +
356 	ceil(x_ACT_CMPL_DATE_RE + 1) +
357 	ceil(x_ACT_CNCL_DATE_RE + 1) +
358 	ceil(x_PRD_LINE_FK_RE + 1) +
359 	ceil(x_ROUTING_REVISION_RE + 1))*(x_re_rows/x_tot_jobs_rows )   ;
360 
361   -- dbms_output.put_line ('******************'||x_total||'******') ;
362   OPEN c_4;
363        FETCH c_4 INTO
364 	 x_ACT_OUT_QTY_FL,
365 	 x_PLN_CMPL_DATE_FL,
366 	 x_PLN_OUT_QTY_FL,
367 	 x_ACT_STRT_DATE_FL,
368 	 x_PLN_STRT_DATE_FL,
369 	 x_ACT_CMPL_DATE_FL,
370 	 x_PRD_LINE_FK_FL,
371 	 x_ROUTING_REVISION_FL;
372   CLOSE c_4;
373 
374   x_total := x_total +
375 	(ceil(x_ACT_OUT_QTY_FL + 1) +
376 	ceil(x_PLN_CMPL_DATE_FL + 1) +
377 	ceil(x_PLN_OUT_QTY_FL + 1) +
378 	ceil(x_ACT_STRT_DATE_FL + 1) +
379 	ceil(x_PLN_STRT_DATE_FL + 1) +
380 	ceil(x_ACT_CMPL_DATE_FL + 1) +
381 	ceil(x_PRD_LINE_FK_FL + 1) +
382 	ceil(x_ROUTING_REVISION_FL + 1))*(x_fl_rows/x_tot_jobs_rows )   ;
383 
384   -- dbms_output.put_line ('******************'||x_total||'******') ;
385   OPEN c_5;
386        FETCH c_5 INTO
387 	 x_JOB_STATUS_MFG_MODE ;
388   CLOSE c_5;
389 
390   x_total := x_total + 2*ceil(x_JOB_STATUS_MFG_MODE  + 1);  -- Used twice in the job_detail record
391 
392   -- dbms_output.put_line ('******************'||x_total||'******') ;
393   OPEN c_6;
394        FETCH c_6 INTO
395 	 x_ACT_INP_VAL ;
396   CLOSE c_6;
397 
398   x_total := x_total + 2*ceil(x_ACT_INP_VAL  + 1);  -- VAL_B and VAL_G
399 
400   -- dbms_output.put_line ('******************'||x_total||'******') ;
401 
402   OPEN c_7;
403        FETCH c_7 INTO
404 	 x_ACT_PLN_VAL ;
405   CLOSE c_7;
406 
407   x_total := x_total + 16*ceil(x_ACT_PLN_VAL   + 1);  -- There are 8 different values that come from this column, that are also converted to warehouse currency
408 
409   -- dbms_output.put_line ('******************'||x_total||'******') ;
410 
411   OPEN c_8;
412        FETCH c_8 INTO
413 	x_ACT_PLN_JOB_TIME_DI;
414   CLOSE c_8;
415 
416   x_total := x_total + ceil(x_ACT_PLN_JOB_TIME_DI  + 1)*(x_di_rows/x_tot_jobs_rows ) ;
417 
418   -- dbms_output.put_line ('******************'||to_char(x_total)||'******') ;
419   -- dbms_output.put_line ('*****just after this *************'||x_total||'******') ;
420   OPEN c_9;
421        FETCH c_9 INTO
422 	x_ACT_PLN_JOB_TIME_RE;
423   CLOSE c_9;
424 
425   -- dbms_output.put_line ('******not here ************'||x_total||'******') ;
426   x_total := x_total + ceil(x_ACT_PLN_JOB_TIME_RE  + 1)*(x_re_rows/x_tot_jobs_rows ) ;
427 
428   -- dbms_output.put_line ('******************'||x_total||'******') ;
429   OPEN c_10;
430        FETCH c_10 INTO
431 	x_ACT_PLN_JOB_TIME_FL;
432   CLOSE c_10;
433 
434   x_total := x_total + ceil(x_ACT_PLN_JOB_TIME_FL  + 1)*(x_fl_rows/x_tot_jobs_rows ) ;
435 
436   -- dbms_output.put_line ('******************'||x_total||'******') ;
437   OPEN c_11;
438        FETCH c_11 INTO
439 	 x_INST;
440   CLOSE c_11;
441 
442   x_total := x_total + 4*ceil(x_INST  + 1);  -- Instance is mentioned 4 times in the Job Detail stg Row but only once in Fact
443 
444   -- dbms_output.put_line ('******************'||x_total||'******') ;
445 --  This is used only in stg table
446   OPEN c_12;
447        FETCH c_12 INTO x_MP_ORG;
448   CLOSE c_12;
449 
450   x_total := x_total + ceil(x_MP_ORG + 1);
451 
455   CLOSE c_16;
452   -- dbms_output.put_line ('******************'||x_total||'******') ;
453   OPEN c_16;
454        FETCH c_16 INTO x_FULL_LEAD_TIME;
456 
457   x_total := x_total + ceil(x_FULL_LEAD_TIME + 1);
458   -- dbms_output.put_line ('******************'||x_total||'******') ;
459 
460   OPEN c_17;
461        FETCH c_17 INTO x_trx_date;
462   CLOSE c_17;
463 
464   x_total := x_total + ceil(x_trx_date + 1);
465   -- dbms_output.put_line ('******************'||x_total||'******') ;
466   OPEN c_18;
467        FETCH c_18 INTO x_currency;
468   CLOSE c_18;
469 
473 
470   x_total := x_total + ceil(x_currency + 1);
471   -- dbms_output.put_line ('******************'||x_total||'******') ;
472 
474   -- * ITEM_FK, * BASE_UOM_FK, * TRX_DATE_FK, * SOB_CURRENCY_FK, * PRD_LINE_FK, * LOCATOR_FK, * INSTANCE_FK: 35 aprox (5 per fk_key)
475 
476   p_est_row_len := x_total + 3 ; -- (UOM_FK)
477 
478 END ;
479 
480 END OPI_EDW_JOB_DETAIL_F_SZ;  -- procedure est_row_len.