[Home] [Help]
PACKAGE BODY: APPS.PMI_PRODUCTION_SUM
Source
1 PACKAGE BODY PMI_PRODUCTION_SUM AS
2 /* $Header: PMIPRDAB.pls 115.11 2003/06/03 03:05:30 srpuri ship $ */
3 PROCEDURE POPULATE_BATCH_STATUS_SUM (errbuf OUT NOCOPY varchar2,retcode OUT NOCOPY VARCHAR2) IS
4 l_buffer varchar2(40);
5 l_count number :=0;
6 l_table_owner VARCHAR2(40);
7
8 BEGIN
9
10 delete from pmi_batch_status;
11 commit;
12
13 /* Insert records for Plan Start */
14 Insert into pmi_batch_status (CO_CODE,
15 PLANT_CODE,
16 WHSE_CODE,
17 FISCAL_YEAR,
18 PERIOD_NUM,
22 BATCH_COUNT,
19 PERIOD_NAME,
20 ITEM_ID,
21 BATCH_STATUS_CODE,
23 LAST_UPDATE_DATE)
24 select og.co_code,
25 bh.plant_code,
26 bh.wip_whse_code,
27 cl.period_year,
28 cl.period_num,
29 cl.period_name,
30 bd.item_id,
31 '1',
32 count(*),
33 sysdate
34 from gme_batch_header bh, gme_material_details bd, pmi_gl_calendar_v cl,sy_orgn_mst og
35 where bh.batch_id = bd.batch_id
36 and line_type = 1
37 and bh.plant_CODE = og.ORGN_CODE
38 and og.CO_CODE = cl.CO_CODE
39 AND trunc(bh.PLAN_START_DATE) between
40 CL.start_date and CL.end_date
41 group by og.co_code,
42 bh.plant_code,
43 bh.wip_whse_code,
44 cl.period_year,
45 cl.period_num,
46 cl.period_name,
47 bd.item_id,
48 '1',
49 sysdate;
50
51 /*Insert records for Plan Complete */
52 Insert into pmi_batch_status (CO_CODE,
53 PLANT_CODE,
54 WHSE_CODE,
55 FISCAL_YEAR,
56 PERIOD_NUM,
57 PERIOD_NAME,
58 ITEM_ID,
59 BATCH_STATUS_CODE,
60 BATCH_COUNT,
61 LAST_UPDATE_DATE)
62 select og.co_code,
63 bh.plant_code,
64 bh.wip_whse_code,
65 cl.period_year,
66 cl.period_num,
67 cl.period_name,
68 bd.item_id,
69 '3',
70 count(*),
71 sysdate
72 from gme_batch_header bh, gme_material_details bd, pmi_gl_calendar_v cl,sy_orgn_mst og
73 where bh.batch_id = bd.batch_id
74 and line_type = 1
75 and bh.plant_CODE = og.ORGN_CODE
76 and og.CO_CODE = cl.CO_CODE
77 AND trunc(bh.PLAN_CMPLT_DATE) between
78 CL.start_date and CL.end_date
79 group by og.co_code,
80 bh.plant_code,
81 bh.wip_whse_code,
82 cl.period_year,
83 cl.period_num,
84 cl.period_name,
85 bd.item_id,
86 '3',
87 sysdate;
88
89 /* Insert records for Actual Start */
90
91 Insert into pmi_batch_status (CO_CODE,
92 PLANT_CODE,
93 WHSE_CODE,
94 FISCAL_YEAR,
95 PERIOD_NUM,
96 PERIOD_NAME,
97 ITEM_ID,
98 BATCH_STATUS_CODE,
99 BATCH_COUNT,
100 LAST_UPDATE_DATE)
101 select og.co_code,
102 bh.plant_code,
103 bh.wip_whse_code,
104 cl.period_year,
105 cl.period_num,
106 cl.period_name,
107 bd.item_id,
108 '2',
109 count(*),
110 sysdate
111 from gme_batch_header bh, gme_material_details bd, pmi_gl_calendar_v cl,sy_orgn_mst og
112 where bh.batch_id = bd.batch_id
113 and bh.batch_status > 1
114 and line_type = 1
115 and bh.plant_CODE = og.ORGN_CODE
116 and og.CO_CODE = cl.CO_CODE
117 AND trunc(bh.ACTUAL_START_DATE) between
118 CL.start_date and CL.end_date
119 group by og.co_code,
120 bh.plant_code,
121 bh.wip_whse_code,
122 cl.period_year,
123 cl.period_num,
124 cl.period_name,
125 bd.item_id,
126 '2',
127 sysdate;
128
129 /* Insert records for Actual Complete */
130 Insert into pmi_batch_status (CO_CODE,
131 PLANT_CODE,
132 WHSE_CODE,
133 FISCAL_YEAR,
134 PERIOD_NUM,
135 PERIOD_NAME,
136 ITEM_ID,
137 BATCH_STATUS_CODE,
138 BATCH_COUNT,
139 LAST_UPDATE_DATE)
140 select og.co_code,
141 bh.plant_code,
142 bh.wip_whse_code,
143 cl.period_year,
144 cl.period_num,
145 cl.period_name,
146 bd.item_id,
147 '4',
148 count(*),
149 sysdate
150 from gme_batch_header bh, gme_material_details bd, pmi_gl_calendar_v cl,sy_orgn_mst og
151 where bh.batch_id = bd.batch_id
152 and bh.batch_status > 2
153 and line_type = 1
154 and bh.plant_CODE = og.ORGN_CODE
155 and og.CO_CODE = cl.CO_CODE
156 AND trunc(bh.ACTUAL_CMPLT_DATE) between
157 CL.start_date and CL.end_date
158 group by og.co_code,
159 bh.plant_code,
160 bh.wip_whse_code,
161 cl.period_year,
162 cl.period_num,
163 cl.period_name,
164 bd.item_id,
165 '4',
166 sysdate;
167
168 /* Insert records for Closed */
169 Insert into pmi_batch_status (CO_CODE,
170 PLANT_CODE,
171 WHSE_CODE,
172 FISCAL_YEAR,
173 PERIOD_NUM,
174 PERIOD_NAME,
175 ITEM_ID,
176 BATCH_STATUS_CODE,
177 BATCH_COUNT,
178 LAST_UPDATE_DATE)
179 select og.co_code,
180 bh.plant_code,
181 bh.wip_whse_code,
182 cl.period_year,
183 cl.period_num,
184 cl.period_name,
185 bd.item_id,
186 '5',
187 count(*),
188 sysdate
189 from gme_batch_header bh, gme_material_details bd, pmi_gl_calendar_v cl,sy_orgn_mst og
190 where bh.batch_id = bd.batch_id
191 and bh.batch_status = 4
192 and line_type = 1
193 and bh.plant_CODE = og.ORGN_CODE
194 and og.CO_CODE = cl.CO_CODE
195 AND trunc(bh.BATCH_CLOSE_DATE) between
196 CL.start_date and CL.end_date
197 group by og.co_code,
198 bh.plant_code,
199 bh.wip_whse_code,
200 cl.period_year,
201 cl.period_num,
202 cl.period_name,
203 bd.item_id,
204 '5',
205 sysdate;
206
207
208 /* Insert records for Cancelled */
209 Insert into pmi_batch_status (CO_CODE,
210 PLANT_CODE,
211 WHSE_CODE,
212 FISCAL_YEAR,
213 PERIOD_NUM,
214 PERIOD_NAME,
215 ITEM_ID,
216 BATCH_STATUS_CODE,
217 BATCH_COUNT,
218 LAST_UPDATE_DATE)
219 select og.co_code,
220 bh.plant_code,
221 bh.wip_whse_code,
222 cl.period_year,
223 cl.period_num,
224 cl.period_name,
225 bd.item_id,
226 '6',
227 count(*),
228 sysdate
229 from gme_batch_header bh, gme_material_details bd, pmi_gl_calendar_v cl,sy_orgn_mst og
230 where bh.batch_id = bd.batch_id
231 and bh.batch_status = -1
232 and line_type = 1
233 and bh.plant_CODE = og.ORGN_CODE
234 and og.CO_CODE = cl.CO_CODE
235 AND trunc(bh.LAST_UPDATE_DATE) between
236 CL.start_date and CL.end_date
237 group by og.co_code,
238 bh.plant_code,
239 bh.wip_whse_code,
240 cl.period_year,
241 cl.period_num,
242 cl.period_name,
243 bd.item_id,
244 '6',
245 sysdate;
246
247 Commit;
248 SELECT TABLE_OWNER INTO l_table_owner
249 FROM USER_SYNONYMS
250 WHERE SYNONYM_NAME = 'PMI_BATCH_STATUS';
251 FND_STATS.GATHER_TABLE_STATS(l_table_owner, 'PMI_BATCH_STATUS');
252
253 exception when others then
254 l_buffer :='Summary table Population Failed'||l_count;
255 FND_FILE.PUT_LINE(FND_FILE.LOG,l_buffer);
256
257 END POPULATE_BATCH_STATUS_SUM;
258
259 FUNCTION FIND_PROD_GRADE(TRANS_ID_VI IN INTEGER,ITEM_ID_VI IN INTEGER,LOT_ID_VI IN INTEGER)
260 RETURN VARCHAR2
261 IS
262 TRANS_ID_V ic_TRAN_CMP.TRANS_id%TYPE := NULL;
263 QC_GRADE_V ic_TRAN_CMP.QC_GRADE%TYPE := NULL;
264
265 CURSOR GRADE_CHANGE_TRAN_CUR(
266 ITEM_ID_V ic_item_mst.item_id%TYPE,
267 LOT_ID_V ic_lots_mst.lot_id%TYPE )
268 IS
269 SELECT nvl(max(trans_id),0) from ic_tran_cmp_vw1
270 where item_id = item_id_v
271 and lot_id = lot_id_v
272 and doc_type = 'GRDI'
273 and reason_code = fnd_profile.value('PMI$REASON_CODE');
274 begin
275 if (item_id_vi = PKG_VAR_ITEM_ID_V AND
276 LOT_ID_VI = PKG_VAR_LOT_ID_V) then
277 return PKG_VAR_QC_GRADE_V;
278 end if;
279
280 IF NOT GRADE_CHANGE_TRAN_CUR%ISOPEN THEN
281 OPEN GRADE_CHANGE_TRAN_CUR(ITEM_ID_VI,LOT_ID_VI);
282 END IF;
283
284 FETCH GRADE_CHANGE_TRAN_CUR INTO trans_id_v;
285 IF trans_id_v = 0 THEN
286 SELECT QC_GRADE into qc_grade_v
287 from ic_tran_cmp_vw1 where trans_id = trans_id_vi;
288 else
289 SELECT QC_GRADE into qc_grade_v
290 from ic_tran_cmp_vw1 where trans_id = trans_id_v;
291 end if;
292
293 PKG_VAR_ITEM_ID_V := item_id_vi;
294 PKG_VAR_LOT_ID_V := lot_id_vi;
295 PKG_VAR_qc_grade_v := qc_grade_v;
296 return qc_grade_v;
297
298 end FIND_PROD_GRADE;
299
300
301 FUNCTION NO_OF_SAMPLES_TAKEN(BATCH_ID_VI IN INTEGER) RETURN INTEGER
302 is
303 NO_OF_SAMPLES_V INTEGER := 0;
304
305 Begin
306 if BATCH_ID_vi = PKG_VAR_BATCH_ID_V1 then
307 return PKG_VAR_NO_OF_SAMPLES_V;
308 end if;
309
310 select count(*) into NO_OF_SAMPLES_v from GMD_SAMPLES
311 where batch_id = BATCH_ID_VI;
312
313 PKG_VAR_BATCH_ID_V1 := BATCH_ID_vi;
314 PKG_VAR_NO_OF_SAMPLES_V := NO_OF_SAMPLES_v;
315
316 return NO_OF_SAMPLES_V;
317 end NO_OF_SAMPLES_TAKEN;
318
319 FUNCTION NO_OF_SAMPLES_COMPLET(BATCH_ID_VI IN INTEGER) RETURN INTEGER
320 is
321 Complet_SAMPLES_V INTEGER := 0;
322
323 Begin
324 if BATCH_ID_vi = PKG_VAR_BATCH_ID_V4 then
325 return PKG_VAR_NO_OF_SMPL_CMPLT_V;
326 end if;
327 Select count(*) into COMPLET_SAMPLES_v
328 from GMD_SAMPLES Smp,
329 GMD_EVENT_SPEC_DISP EVT_SPEC_DISP,
330 GMD_SAMPLE_SPEC_DISP SMP_SPEC_DISP
331 WHERE SMP.SAMPLING_EVENT_ID = EVT_SPEC_DISP.SAMPLING_EVENT_ID
332 AND EVT_SPEC_DISP.EVENT_SPEC_DISP_ID = SMP_SPEC_DISP.EVENT_SPEC_DISP_ID
333 AND EVT_SPEC_DISP.SPEC_USED_FOR_LOT_ATTRIB_IND = 'Y'
334 AND SMP_SPEC_DISP.DISPOSITION IN ('4A','5AV','6RJ')
335 AND SMP.BATCH_ID = BATCH_ID_VI;
336
337 PKG_VAR_BATCH_ID_V4 := BATCH_ID_vi;
338 PKG_VAR_NO_OF_SMPL_CMPLT_V := COMPLET_SAMPLES_v;
339
340 return COMPLET_SAMPLES_V;
341 end NO_OF_SAMPLES_COMPLET;
342
343 FUNCTION NO_OF_SAMPLES_PASSED(BATCH_ID_VI IN INTEGER) RETURN INTEGER
344 is
345 PASSED_SAMPLES_V INTEGER := 0;
346
347 Begin
348 if BATCH_ID_vi = PKG_VAR_BATCH_ID_V2 then
349 return PKG_VAR_PASSED_SAMPLES_V;
350 end if;
351 Select count(*) into PASSED_SAMPLES_V
352 from GMD_SAMPLES Smp,
353 GMD_EVENT_SPEC_DISP EVT_SPEC_DISP,
354 GMD_SAMPLE_SPEC_DISP SMP_SPEC_DISP
355 WHERE SMP.SAMPLING_EVENT_ID = EVT_SPEC_DISP.SAMPLING_EVENT_ID
356 AND EVT_SPEC_DISP.EVENT_SPEC_DISP_ID = SMP_SPEC_DISP.EVENT_SPEC_DISP_ID
357 AND EVT_SPEC_DISP.SPEC_USED_FOR_LOT_ATTRIB_IND = 'Y'
358 AND SMP_SPEC_DISP.DISPOSITION IN ('4A','5AV')
359 AND SMP.BATCH_ID = BATCH_ID_VI;
360
361 PKG_VAR_BATCH_ID_V2 := BATCH_ID_vi;
362 PKG_VAR_PASSED_SAMPLES_V := PASSED_SAMPLES_v;
363
364 return PASSED_SAMPLES_V;
365 end NO_OF_SAMPLES_PASSED;
366
367 FUNCTION NO_OF_TIMES_ADJUSTED(BATCH_ID_VI IN INTEGER) RETURN INTEGER
368 is
369 ADJUST_BATCH_V INTEGER := 0;
370
371 Begin
372 if BATCH_ID_vi = PKG_VAR_BATCH_ID_V3 then
373 return PKG_VAR_ADJUST_BATCH_V;
374 end if;
375
376 select count(distinct to_char(item_id)||to_char(TRANS_DATE,'dd/mm/yy hh24:mi:ss'))
377 into ADJUST_BATCH_V
378 from ic_tran_cmp_vw1
379 where doc_id = BATCH_ID_VI
380 and doc_type = 'PROD'
381 and reason_code = fnd_profile.value('PMI$REASON_CODE_BTCH_ADJ');
382
383 PKG_VAR_BATCH_ID_V3 := BATCH_ID_vi;
384 PKG_VAR_ADJUST_BATCH_V := ADJUST_BATCH_v;
385
386 return ADJUST_BATCH_v;
387 end NO_OF_TIMES_ADJUSTED;
388
389 FUNCTION SCHD_WORK_HOUR(BATCH_ID_VI IN INTEGER, SCHEDULE_VI IN ps_schd_hdr.schedule%type)
390 RETURN NUMBER
391 is
392 ACTUAL_START_DATE_V GME_BATCH_HEADER.ACTUAL_START_DATE%type;
393 ACTUAL_CMPLT_DATE_V GME_BATCH_HEADER.ACTUAL_CMPLT_DATE%type;
394 NO_DAYS_V INTEGER := 0;
395 Count1_V INTEGER := 0;
396 Count2_V INTEGER := 0;
397 batch_time_v INTEGER := 0;
398 PLANT_CODE_V1 GME_BATCH_HEADER.PLANT_CODE%type;
399
400 SHIFT_START_V INTEGER := 0;
401 SHIFT_END_V INTEGER := 0;
402 SHIFT_DURATION_V INTEGER;
403 start_sec INTEGER;
404 end_sec INTEGER;
405 prev_end_sec INTEGER := 0;
406 batch_hrs_v NUMBER;
407 Batch_day_V1 DATE;
408
409 CURSOR shop_cal_CUR(
410 SCHEDULE_V PS_SCHD_HDR.SCHEDULE%TYPE,
411 PLANT_CODE_V GME_BATCH_HEADER.PLANT_CODE%type,
412 Batch_day_V DATE )
413 IS
414 SELECT shift_start,shift_duration
415 FROM ps_schd_dtl sd, ps_schd_hdr sh,
416 mr_shcl_dtl sc, mr_shdy_dtl sl
417 WHERE sd.schedule_id = sh.schedule_id
418 AND sd.Calendar_id = sc.Calendar_id
419 AND sc.shopday_no = sl.shopday_no
420 AND sh.schedule = SCHEDULE_V
421 AND sd.orgn_code = PLANT_CODE_V
422 AND trunc(sc.calendar_date) = trunc(batch_day_V)
423 order by shift_start;
424
425 Begin
426 SELECT PLANT_CODE,ACTUAL_START_DATE,ACTUAL_CMPLT_DATE
427 into PLANT_CODE_V1,ACTUAL_START_DATE_V, ACTUAL_CMPLT_DATE_V
428 from gme_batch_header
429 where batch_id = batch_id_vi;
430
431 select count(*) into count2_v
432 from ps_schd_dtl sd, ps_schd_hdr sh
433 where sd.schedule_id = sh.schedule_id
434 and sh.schedule = SCHEDULE_VI
435 AND sd.orgn_code = PLANT_CODE_V1;
436
437 if count2_v = 0 then /* No Calendar Found */
438 Batch_hrs_v := 24*(ACTUAL_CMPLT_DATE_V - ACTUAL_START_DATE_V);
439 return Batch_hrs_v;
440 end if;
441
442 no_days_v := trunc(ACTUAL_CMPLT_DATE_V) - trunc(ACTUAL_START_DATE_V);
443 start_sec := 3600*to_char(ACTUAL_START_DATE_V,'hh24') +
444 60*to_char(ACTUAL_START_DATE_V,'mi') +
445 to_char(ACTUAL_START_DATE_V,'ss');
446 End_sec := 3600*to_char(ACTUAL_CMPLT_DATE_V,'hh24') +
447 60*to_char(ACTUAL_CMPLT_DATE_V,'mi') +
448 to_char(ACTUAL_CMPLT_DATE_V,'ss');
449
450 LOOP
451 batch_day_v1 := ACTUAL_START_DATE_V + count1_v;
452
453 IF shop_cal_CUR%ISOPEN THEN
454 CLOSE shop_cal_CUR;
455 end if;
456
460 FETCH shop_cal_CUR INTO SHIFT_START_V,SHIFT_DURATION_V;
457 OPEN shop_cal_CUR(SCHEDULE_VI,PLANT_CODE_V1,batch_day_v1);
458
459 LOOP
461
462 if shop_cal_CUR%NOTFOUND then
463 if (prev_end_sec <= start_sec and start_sec < 86400) then
464 if (prev_end_sec <= end_sec and end_sec < 86400) then
465 if no_days_v = 0 then
466 Batch_time_v := (end_sec - start_sec);
467 EXIT;
468 else
469 if count1_v = 0 then
470 Batch_time_v := batch_time_v +(86400 - start_sec);
471 else
472 if count1_v = no_days_v then
473 Batch_time_v := batch_time_v +(end_sec - prev_end_sec);
474 end if;
475 end if;
476 end if;
477 else
478 if count1_v = 0 then
479 Batch_time_v := batch_time_v +(86400 - start_sec);
480 end if;
481 end if;
482 else
483 if (prev_end_sec <= end_sec and end_sec < 86400) then
484 if no_days_v = count1_v then
485 Batch_time_v := batch_time_v +(end_sec - prev_end_sec);
486 end if;
487 end if;
488 end if;
489 EXIT;
490 end if;
491
492 if (prev_end_sec <= start_sec and start_sec < SHIFT_START_V) then
493 if (prev_end_sec <= end_sec and end_sec < SHIFT_START_V) then
494 if no_days_v = 0 then
495 Batch_time_v := (end_sec - start_sec);
496 EXIT;
497 else
498 if count1_v = 0 then
499 Batch_time_v := batch_time_v +(SHIFT_START_V - start_sec);
500 else
501 if count1_v = no_days_v then
502 Batch_time_v := batch_time_v +(end_sec - prev_end_sec);
503 end if;
504 end if;
505 end if;
506 else
507 if count1_v = 0 then
508 Batch_time_v := batch_time_v +(SHIFT_START_V - start_sec);
509 end if;
510 end if;
511 else
512 if (prev_end_sec <= end_sec and end_sec < SHIFT_START_V) then
513 if no_days_v = count1_v then
514 Batch_time_v := batch_time_v +(end_sec - prev_end_sec);
515 end if;
516 end if;
517 end if;
518
519 shift_end_v := SHIFT_START_V + SHIFT_DURATION_V;
520
521 if (count1_v = 0 and start_sec > SHIFT_START_V) then
522 if start_sec < shift_end_v then
523 Batch_time_v := batch_time_v + (SHIFT_START_V - start_sec);
524 else
525 Batch_time_v := batch_time_v - SHIFT_DURATION_V;
526 end if;
527 end if;
528
529 if no_days_v = count1_v then /* Last Day */
530 if End_sec >= shift_end_v then
531 Batch_time_v := batch_time_v + SHIFT_DURATION_V;
532 else if end_sec > SHIFT_START_V then
533 Batch_time_v := batch_time_v + SHIFT_DURATION_V -
534 (shift_end_v - End_sec);
535 end if;
536 end if;
537 else /* Days in the Middle */
538 Batch_time_v := batch_time_v + SHIFT_DURATION_V;
539 end if;
540
541 prev_end_sec := shift_end_v;
542 END LOOP;
543
544 prev_end_sec := 0;
545 count1_v := count1_v + 1;
546 EXIT WHEN count1_v > no_days_v;
547 END LOOP;
548 Batch_hrs_v := Batch_time_v / 3600;
549 return Batch_hrs_v;
550 end SCHD_WORK_HOUR;
551
552 FUNCTION PLAN_ING_VALUE(BATCH_ID_VI IN INTEGER) RETURN NUMBER
553 is
554 PLAN_ING_VALUE_V NUMBER := 0;
555 Begin
556 SELECT sum(gmicuom.i2uom_cv(BtchDtl.ITEM_ID,0,BtchDtl.ITEM_UM,
557 BtchDtl.PLAN_QTY,ItemMst.ITEM_UM)*pmi_common_pkg.PMICO_GET_COST(
558 BtchDtl.ITEM_ID,BtchHdr.WIP_WHSE_CODE,NULL,BtchHdr.ACTUAL_CMPLT_DATE))
559 into PLAN_ING_VALUE_V
560 FROM
561 GME_BATCH_HEADER BtchHdr,
562 GME_MATERIAL_DETAILS BtchDtl,
563 IC_ITEM_MST ItemMst
564 WHERE BtchHdr.BATCH_ID = BATCH_ID_VI
565 AND BtchHdr.BATCH_ID = BtchDtl.BATCH_ID
566 AND BtchDtl.ITEM_ID = ItemMst.ITEM_ID
567 AND BtchDtl.LINE_TYPE=-1;
568
569 return PLAN_ING_VALUE_V;
570 end PLAN_ING_VALUE;
571
572 FUNCTION ACTUAL_ING_VALUE(BATCH_ID_VI IN INTEGER) RETURN NUMBER
573 is
574 ACTUAL_ING_VALUE_V NUMBER := 0;
575 Begin
576 SELECT sum(gmicuom.i2uom_cv(BtchDtl.ITEM_ID,0,BtchDtl.ITEM_UM,
577 BtchDtl.ACTUAL_QTY,ItemMst.ITEM_UM)*pmi_common_pkg.PMICO_GET_COST(
578 BtchDtl.ITEM_ID,BtchHdr.WIP_WHSE_CODE,NULL,BtchHdr.ACTUAL_CMPLT_DATE))
579 into ACTUAL_ING_VALUE_V
580 FROM
581 GME_BATCH_HEADER BtchHdr,
582 GME_MATERIAL_DETAILS BtchDtl,
583 IC_ITEM_MST ItemMst
584 WHERE BtchHdr.BATCH_ID = BATCH_ID_VI
585 AND BtchHdr.BATCH_ID = BtchDtl.BATCH_ID
586 AND BtchDtl.ITEM_ID = ItemMst.ITEM_ID
587 AND BtchDtl.LINE_TYPE=-1;
588
589 return ACTUAL_ING_VALUE_V;
590 end ACTUAL_ING_VALUE;
591
592 END PMI_PRODUCTION_SUM;