15: -- only if debug is turned on.
16: CURSOR cur_debug is
17: SELECT distinct msi.concatenated_segments
18: FROM mtl_system_items_kfv msi, mrp_low_level_codes mllc
19: WHERE mllc.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
20: AND mllc.organization_id =
21: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
22: AND mllc.from_subinventory IS NULL
23: AND mllc.from_locator_id IS NULL
17: SELECT distinct msi.concatenated_segments
18: FROM mtl_system_items_kfv msi, mrp_low_level_codes mllc
19: WHERE mllc.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
20: AND mllc.organization_id =
21: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
22: AND mllc.from_subinventory IS NULL
23: AND mllc.from_locator_id IS NULL
24: AND mllc.kanban_item_flag = 'Y'
25: AND mllc.assembly_item_id <> mllc.component_item_id
28:
29:
30: BEGIN
31:
32: mrp_kanban_plan_pk.g_stmt_num := 120;
33: IF mrp_kanban_plan_pk.g_debug THEN
34: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
35: || to_char (mrp_kanban_plan_pk.g_stmt_num);
36: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
29:
30: BEGIN
31:
32: mrp_kanban_plan_pk.g_stmt_num := 120;
33: IF mrp_kanban_plan_pk.g_debug THEN
34: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
35: || to_char (mrp_kanban_plan_pk.g_stmt_num);
36: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
37: mrp_kanban_plan_pk.g_log_message := 'Entering Check_Item_Locations Procedure';
30: BEGIN
31:
32: mrp_kanban_plan_pk.g_stmt_num := 120;
33: IF mrp_kanban_plan_pk.g_debug THEN
34: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
35: || to_char (mrp_kanban_plan_pk.g_stmt_num);
36: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
37: mrp_kanban_plan_pk.g_log_message := 'Entering Check_Item_Locations Procedure';
38: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
31:
32: mrp_kanban_plan_pk.g_stmt_num := 120;
33: IF mrp_kanban_plan_pk.g_debug THEN
34: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
35: || to_char (mrp_kanban_plan_pk.g_stmt_num);
36: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
37: mrp_kanban_plan_pk.g_log_message := 'Entering Check_Item_Locations Procedure';
38: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
39: END IF;
32: mrp_kanban_plan_pk.g_stmt_num := 120;
33: IF mrp_kanban_plan_pk.g_debug THEN
34: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
35: || to_char (mrp_kanban_plan_pk.g_stmt_num);
36: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
37: mrp_kanban_plan_pk.g_log_message := 'Entering Check_Item_Locations Procedure';
38: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
39: END IF;
40:
33: IF mrp_kanban_plan_pk.g_debug THEN
34: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
35: || to_char (mrp_kanban_plan_pk.g_stmt_num);
36: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
37: mrp_kanban_plan_pk.g_log_message := 'Entering Check_Item_Locations Procedure';
38: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
39: END IF;
40:
41:
34: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
35: || to_char (mrp_kanban_plan_pk.g_stmt_num);
36: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
37: mrp_kanban_plan_pk.g_log_message := 'Entering Check_Item_Locations Procedure';
38: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
39: END IF;
40:
41:
42: -- first check if any of the kanban items have null locations
42: -- first check if any of the kanban items have null locations
43: SELECT count(*)
44: INTO l_count
45: FROM mrp_low_level_codes
46: WHERE plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
47: AND organization_id = mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
48: AND from_subinventory IS NULL
49: AND from_locator_id IS NULL
50: AND kanban_item_flag = 'Y'
43: SELECT count(*)
44: INTO l_count
45: FROM mrp_low_level_codes
46: WHERE plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
47: AND organization_id = mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
48: AND from_subinventory IS NULL
49: AND from_locator_id IS NULL
50: AND kanban_item_flag = 'Y'
51: AND assembly_item_id <> component_item_id;
64: FROM bom_inventory_backflush_subinv bibs
65: AND bibs.inventory_item_id = mllc.component_item_id
66: AND bibs.organization_id = mllc.organization_id
67: AND bibs.location_type = 1) -- ??
68: WHERE mllc.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
69: AND mllc.organization_id =
70: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
71: AND mllc.from_subinventory IS NULL
72: AND mllc.from_locator_id IS NULL
66: AND bibs.organization_id = mllc.organization_id
67: AND bibs.location_type = 1) -- ??
68: WHERE mllc.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
69: AND mllc.organization_id =
70: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
71: AND mllc.from_subinventory IS NULL
72: AND mllc.from_locator_id IS NULL
73: AND mllc.kanban_item_flag = 'Y'
74: AND mllc.assembly_item_id <> mllc.component_item_id;
79: -- now check again to see if we have any kanban items with null locations
80: SELECT count(*)
81: INTO l_count
82: FROM mrp_low_level_codes
83: WHERE plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
84: AND organization_id = mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
85: AND from_subinventory IS NULL
86: AND from_locator_id IS NULL
87: AND kanban_item_flag = 'Y'
80: SELECT count(*)
81: INTO l_count
82: FROM mrp_low_level_codes
83: WHERE plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
84: AND organization_id = mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
85: AND from_subinventory IS NULL
86: AND from_locator_id IS NULL
87: AND kanban_item_flag = 'Y'
88: AND assembly_item_id <> component_item_id;
101: FROM mtl_system_items msi
102: WHERE msi.organization_id = mllc.organization_id
103: AND msi.inventory_item_id = mllc.component_item_id)
104: WHERE mllc.plan_id =
105: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
106: AND mllc.organization_id =
107: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
108: AND mllc.from_subinventory IS NULL
109: AND mllc.from_locator_id IS NULL
103: AND msi.inventory_item_id = mllc.component_item_id)
104: WHERE mllc.plan_id =
105: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
106: AND mllc.organization_id =
107: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
108: AND mllc.from_subinventory IS NULL
109: AND mllc.from_locator_id IS NULL
110: AND mllc.kanban_item_flag = 'Y'
111: AND mllc.assembly_item_id <> mllc.component_item_id;
116: -- location information. If so error out
117: SELECT count(*)
118: INTO l_count
119: FROM mrp_low_level_codes
120: WHERE plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
121: AND organization_id = mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
122: AND from_subinventory IS NULL
123: AND from_locator_id IS NULL
124: AND kanban_item_flag = 'Y'
117: SELECT count(*)
118: INTO l_count
119: FROM mrp_low_level_codes
120: WHERE plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
121: AND organization_id = mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
122: AND from_subinventory IS NULL
123: AND from_locator_id IS NULL
124: AND kanban_item_flag = 'Y'
125: AND assembly_item_id <> component_item_id;
124: AND kanban_item_flag = 'Y'
125: AND assembly_item_id <> component_item_id;
126:
127: IF l_count > 0 THEN
128: IF mrp_kanban_plan_pk.g_debug THEN
129: mrp_kanban_plan_pk.g_log_message := 'End of CHECK_ITEM_LOCATIONS function';
130: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
131: END IF;
132:
125: AND assembly_item_id <> component_item_id;
126:
127: IF l_count > 0 THEN
128: IF mrp_kanban_plan_pk.g_debug THEN
129: mrp_kanban_plan_pk.g_log_message := 'End of CHECK_ITEM_LOCATIONS function';
130: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
131: END IF;
132:
133: l_count := 0;
126:
127: IF l_count > 0 THEN
128: IF mrp_kanban_plan_pk.g_debug THEN
129: mrp_kanban_plan_pk.g_log_message := 'End of CHECK_ITEM_LOCATIONS function';
130: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
131: END IF;
132:
133: l_count := 0;
134: OPEN cur_debug;
138: FETCH cur_debug INTO l_item;
139:
140: EXIT WHEN cur_debug%NOTFOUND;
141:
142: IF mrp_kanban_plan_pk.g_debug THEN
143: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_ITEM_INCOMP_LOC');
144: FND_MESSAGE.SET_TOKEN ('ITEMNAME', l_item);
145: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
146: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
141:
142: IF mrp_kanban_plan_pk.g_debug THEN
143: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_ITEM_INCOMP_LOC');
144: FND_MESSAGE.SET_TOKEN ('ITEMNAME', l_item);
145: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
146: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
147: END IF;
148:
149: l_count := l_count + 1;
142: IF mrp_kanban_plan_pk.g_debug THEN
143: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_ITEM_INCOMP_LOC');
144: FND_MESSAGE.SET_TOKEN ('ITEMNAME', l_item);
145: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
146: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
147: END IF;
148:
149: l_count := l_count + 1;
150:
149: l_count := l_count + 1;
150:
151: END LOOP;
152:
153: IF mrp_kanban_plan_pk.g_debug THEN
154: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_INCOMP_LOC');
155: FND_MESSAGE.SET_TOKEN ('NUMITEMS', to_char(l_count));
156: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
157: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
152:
153: IF mrp_kanban_plan_pk.g_debug THEN
154: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_INCOMP_LOC');
155: FND_MESSAGE.SET_TOKEN ('NUMITEMS', to_char(l_count));
156: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
157: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
158: END IF;
159:
160: --set the flag to return warning here
153: IF mrp_kanban_plan_pk.g_debug THEN
154: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_INCOMP_LOC');
155: FND_MESSAGE.SET_TOKEN ('NUMITEMS', to_char(l_count));
156: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
157: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
158: END IF;
159:
160: --set the flag to return warning here
161: MRP_KANBAN_PLAN_PK.g_raise_warning := TRUE;
157: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
158: END IF;
159:
160: --set the flag to return warning here
161: MRP_KANBAN_PLAN_PK.g_raise_warning := TRUE;
162:
163: END IF;
164:
165: RETURN TRUE;
167: --Exception handling
168: EXCEPTION
169:
170: WHEN OTHERS THEN
171: mrp_kanban_plan_pk.g_log_message := 'CHECK_ITEM_LOCATIONS Sql Error ';
172: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
173: mrp_kanban_plan_pk.g_log_message := sqlerrm;
174: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
175: RETURN FALSE;
168: EXCEPTION
169:
170: WHEN OTHERS THEN
171: mrp_kanban_plan_pk.g_log_message := 'CHECK_ITEM_LOCATIONS Sql Error ';
172: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
173: mrp_kanban_plan_pk.g_log_message := sqlerrm;
174: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
175: RETURN FALSE;
176:
169:
170: WHEN OTHERS THEN
171: mrp_kanban_plan_pk.g_log_message := 'CHECK_ITEM_LOCATIONS Sql Error ';
172: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
173: mrp_kanban_plan_pk.g_log_message := sqlerrm;
174: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
175: RETURN FALSE;
176:
177: END CHECK_ITEM_LOCATIONS;
170: WHEN OTHERS THEN
171: mrp_kanban_plan_pk.g_log_message := 'CHECK_ITEM_LOCATIONS Sql Error ';
172: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
173: mrp_kanban_plan_pk.g_log_message := sqlerrm;
174: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
175: RETURN FALSE;
176:
177: END CHECK_ITEM_LOCATIONS;
178:
210: mtl_item_locations child_loc,
211: mtl_system_items_kfv parent,
212: mtl_system_items_kfv child,
213: mrp_low_level_codes mllc
214: WHERE mllc.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
215: AND mllc.organization_id =
216: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
217: AND mllc.low_level_code IS NULL
218: AND parent.inventory_item_id = mllc.assembly_item_id
212: mtl_system_items_kfv child,
213: mrp_low_level_codes mllc
214: WHERE mllc.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
215: AND mllc.organization_id =
216: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
217: AND mllc.low_level_code IS NULL
218: AND parent.inventory_item_id = mllc.assembly_item_id
219: AND parent.organization_id = mllc.organization_id
220: AND child.inventory_item_id = mllc.component_item_id
228: component_item;
229:
230: BEGIN
231:
232: IF mrp_kanban_plan_pk.g_debug THEN
233: mrp_kanban_plan_pk.g_log_message := 'In Check_For_Loops Procedure';
234: fnd_file.put_line (fnd_file.log, mrp_kanban_plan_pk.g_log_message);
235: END IF;
236:
229:
230: BEGIN
231:
232: IF mrp_kanban_plan_pk.g_debug THEN
233: mrp_kanban_plan_pk.g_log_message := 'In Check_For_Loops Procedure';
234: fnd_file.put_line (fnd_file.log, mrp_kanban_plan_pk.g_log_message);
235: END IF;
236:
237: -- We just go and check if we have assigned a low level code value
230: BEGIN
231:
232: IF mrp_kanban_plan_pk.g_debug THEN
233: mrp_kanban_plan_pk.g_log_message := 'In Check_For_Loops Procedure';
234: fnd_file.put_line (fnd_file.log, mrp_kanban_plan_pk.g_log_message);
235: END IF;
236:
237: -- We just go and check if we have assigned a low level code value
238: -- to every entry for the current plan. If we have at least one
257:
258: l_loop_found := TRUE;
259:
260: IF not l_logged_loop_err_msg THEN
261: IF mrp_kanban_plan_pk.g_debug THEN
262: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_LOOP_ERROR');
263: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
264: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
265:
259:
260: IF not l_logged_loop_err_msg THEN
261: IF mrp_kanban_plan_pk.g_debug THEN
262: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_LOOP_ERROR');
263: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
264: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
265:
266: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_LOOP_INFO_START');
267: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
260: IF not l_logged_loop_err_msg THEN
261: IF mrp_kanban_plan_pk.g_debug THEN
262: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_LOOP_ERROR');
263: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
264: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
265:
266: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_LOOP_INFO_START');
267: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
268: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
263: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
264: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
265:
266: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_LOOP_INFO_START');
267: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
268: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
269: END IF;
270:
271: l_logged_loop_err_msg := TRUE;
264: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
265:
266: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_LOOP_INFO_START');
267: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
268: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
269: END IF;
270:
271: l_logged_loop_err_msg := TRUE;
272:
273: END IF;
274:
275: -- now go ahead and log messages giving details of the loop found
276:
277: IF mrp_kanban_plan_pk.g_debug THEN
278: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_LOOP_INFO');
279: FND_MESSAGE.SET_TOKEN ('PARENT_ITEM', l_parent_item);
280: FND_MESSAGE.SET_TOKEN ('PARENT_SUB', l_to_subinventory);
281: FND_MESSAGE.SET_TOKEN ('PARENT_LOC', to_char(l_parent_loc));
281: FND_MESSAGE.SET_TOKEN ('PARENT_LOC', to_char(l_parent_loc));
282: FND_MESSAGE.SET_TOKEN ('CHILD_ITEM', l_child_item);
283: FND_MESSAGE.SET_TOKEN ('CHILD_SUB', l_from_subinventory);
284: FND_MESSAGE.SET_TOKEN ('CHILD_LOC', to_char(l_child_loc));
285: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
286: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
287: END IF;
288:
289: END LOOP;
282: FND_MESSAGE.SET_TOKEN ('CHILD_ITEM', l_child_item);
283: FND_MESSAGE.SET_TOKEN ('CHILD_SUB', l_from_subinventory);
284: FND_MESSAGE.SET_TOKEN ('CHILD_LOC', to_char(l_child_loc));
285: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
286: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
287: END IF;
288:
289: END LOOP;
290:
291: CLOSE cur_loop_check;
292:
293: IF l_loop_found THEN
294:
295: IF mrp_kanban_plan_pk.g_debug THEN
296: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_LOOP_INFO_END');
297: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
298: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
299: END IF;
293: IF l_loop_found THEN
294:
295: IF mrp_kanban_plan_pk.g_debug THEN
296: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_LOOP_INFO_END');
297: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
298: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
299: END IF;
300:
301: raise exc_loop_error;
294:
295: IF mrp_kanban_plan_pk.g_debug THEN
296: FND_MESSAGE.SET_NAME ('MRP','MRP_KANBAN_LOOP_INFO_END');
297: mrp_kanban_plan_pk.g_log_message := FND_MESSAGE.GET;
298: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
299: END IF;
300:
301: raise exc_loop_error;
302: END IF;
307: WHEN exc_loop_error THEN
308: RETURN FALSE;
309:
310: WHEN OTHERS THEN
311: mrp_kanban_plan_pk.g_log_message := 'CHECK_FOR_LOOPS Sql Error ';
312: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
313: mrp_kanban_plan_pk.g_log_message := sqlerrm;
314: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
315: RETURN FALSE;
308: RETURN FALSE;
309:
310: WHEN OTHERS THEN
311: mrp_kanban_plan_pk.g_log_message := 'CHECK_FOR_LOOPS Sql Error ';
312: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
313: mrp_kanban_plan_pk.g_log_message := sqlerrm;
314: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
315: RETURN FALSE;
316:
309:
310: WHEN OTHERS THEN
311: mrp_kanban_plan_pk.g_log_message := 'CHECK_FOR_LOOPS Sql Error ';
312: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
313: mrp_kanban_plan_pk.g_log_message := sqlerrm;
314: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
315: RETURN FALSE;
316:
317:
310: WHEN OTHERS THEN
311: mrp_kanban_plan_pk.g_log_message := 'CHECK_FOR_LOOPS Sql Error ';
312: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
313: mrp_kanban_plan_pk.g_log_message := sqlerrm;
314: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
315: RETURN FALSE;
316:
317:
318: END CHECK_FOR_LOOPS;
327: l_low_level_code number;
328:
329: BEGIN
330:
331: IF mrp_kanban_plan_pk.g_debug THEN
332: mrp_kanban_plan_pk.g_log_message := 'In Calc_Low_Level_Codes Procedure';
333: fnd_file.put_line (fnd_file.log, mrp_kanban_plan_pk.g_log_message);
334: END IF;
335:
328:
329: BEGIN
330:
331: IF mrp_kanban_plan_pk.g_debug THEN
332: mrp_kanban_plan_pk.g_log_message := 'In Calc_Low_Level_Codes Procedure';
333: fnd_file.put_line (fnd_file.log, mrp_kanban_plan_pk.g_log_message);
334: END IF;
335:
336: -- start calculating the low level codes
329: BEGIN
330:
331: IF mrp_kanban_plan_pk.g_debug THEN
332: mrp_kanban_plan_pk.g_log_message := 'In Calc_Low_Level_Codes Procedure';
333: fnd_file.put_line (fnd_file.log, mrp_kanban_plan_pk.g_log_message);
334: END IF;
335:
336: -- start calculating the low level codes
337: -- we start by assigning a low_level_code of 1000 to the lowest level
345: WHILE TRUE LOOP
346:
347: UPDATE mrp_low_level_codes mllc1
348: SET mllc1.low_level_code = l_low_level_code
349: WHERE mllc1.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
350: AND mllc1.organization_id =
351: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
352: AND mllc1.low_level_code IS NULL
353: AND NOT EXISTS
347: UPDATE mrp_low_level_codes mllc1
348: SET mllc1.low_level_code = l_low_level_code
349: WHERE mllc1.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
350: AND mllc1.organization_id =
351: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
352: AND mllc1.low_level_code IS NULL
353: AND NOT EXISTS
354: (SELECT /*+index(mllc2 MRP_LOW_LEVEL_CODES_N1)*/ 'Exists as parent' /* Bug 4608294 - added hint*/
355: FROM mrp_low_level_codes mllc2
376:
377: -- exception handling
378: EXCEPTION
379: WHEN OTHERS THEN
380: mrp_kanban_plan_pk.g_log_message := 'CALC_LOW_LEVEL_CODE Sql Error ';
381: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
382: mrp_kanban_plan_pk.g_log_message := sqlerrm;
383: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
384: RETURN FALSE;
377: -- exception handling
378: EXCEPTION
379: WHEN OTHERS THEN
380: mrp_kanban_plan_pk.g_log_message := 'CALC_LOW_LEVEL_CODE Sql Error ';
381: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
382: mrp_kanban_plan_pk.g_log_message := sqlerrm;
383: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
384: RETURN FALSE;
385:
378: EXCEPTION
379: WHEN OTHERS THEN
380: mrp_kanban_plan_pk.g_log_message := 'CALC_LOW_LEVEL_CODE Sql Error ';
381: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
382: mrp_kanban_plan_pk.g_log_message := sqlerrm;
383: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
384: RETURN FALSE;
385:
386: END CALC_LOW_LEVEL_CODE;
379: WHEN OTHERS THEN
380: mrp_kanban_plan_pk.g_log_message := 'CALC_LOW_LEVEL_CODE Sql Error ';
381: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
382: mrp_kanban_plan_pk.g_log_message := sqlerrm;
383: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
384: RETURN FALSE;
385:
386: END CALC_LOW_LEVEL_CODE;
387:
607: l_error_buf varchar2(2000);
608:
609: BEGIN
610:
611: mrp_kanban_plan_pk.g_stmt_num := 30;
612: IF mrp_kanban_plan_pk.g_debug THEN
613: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
614: || to_char (mrp_kanban_plan_pk.g_stmt_num);
615: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
608:
609: BEGIN
610:
611: mrp_kanban_plan_pk.g_stmt_num := 30;
612: IF mrp_kanban_plan_pk.g_debug THEN
613: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
614: || to_char (mrp_kanban_plan_pk.g_stmt_num);
615: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
616: mrp_kanban_plan_pk.g_log_message :=
609: BEGIN
610:
611: mrp_kanban_plan_pk.g_stmt_num := 30;
612: IF mrp_kanban_plan_pk.g_debug THEN
613: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
614: || to_char (mrp_kanban_plan_pk.g_stmt_num);
615: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
616: mrp_kanban_plan_pk.g_log_message :=
617: 'Entering Snapshot_Item_Locations function';
610:
611: mrp_kanban_plan_pk.g_stmt_num := 30;
612: IF mrp_kanban_plan_pk.g_debug THEN
613: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
614: || to_char (mrp_kanban_plan_pk.g_stmt_num);
615: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
616: mrp_kanban_plan_pk.g_log_message :=
617: 'Entering Snapshot_Item_Locations function';
618: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
611: mrp_kanban_plan_pk.g_stmt_num := 30;
612: IF mrp_kanban_plan_pk.g_debug THEN
613: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
614: || to_char (mrp_kanban_plan_pk.g_stmt_num);
615: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
616: mrp_kanban_plan_pk.g_log_message :=
617: 'Entering Snapshot_Item_Locations function';
618: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
619: END IF;
612: IF mrp_kanban_plan_pk.g_debug THEN
613: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
614: || to_char (mrp_kanban_plan_pk.g_stmt_num);
615: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
616: mrp_kanban_plan_pk.g_log_message :=
617: 'Entering Snapshot_Item_Locations function';
618: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
619: END IF;
620:
614: || to_char (mrp_kanban_plan_pk.g_stmt_num);
615: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
616: mrp_kanban_plan_pk.g_log_message :=
617: 'Entering Snapshot_Item_Locations function';
618: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
619: END IF;
620:
621:
622: l_eco_profile := FND_PROFILE.VALUE('FLM_KANBAN_ECO') = 'Y';
630: -- if we are not replanning, then go ahead and get the initial set of items
631: -- based on the parameters passed to the concurrent program
632: -- ------------------------------------------------------------------------
633:
634: IF nvl(mrp_kanban_plan_pk.g_kanban_info_rec.replan_flag, 2 ) = 2 THEN
635:
636: -- now lets go ahead and build our dynamic sql statement based on
637: -- the item/category range and category set parameter values
638:
647:
648: -- now check if item range has been specified and add the extra condition
649: -- if necessary
650:
651: mrp_kanban_plan_pk.g_stmt_num := 40;
652: IF mrp_kanban_plan_pk.g_debug THEN
653: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
654: || to_char (mrp_kanban_plan_pk.g_stmt_num);
655: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
648: -- now check if item range has been specified and add the extra condition
649: -- if necessary
650:
651: mrp_kanban_plan_pk.g_stmt_num := 40;
652: IF mrp_kanban_plan_pk.g_debug THEN
653: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
654: || to_char (mrp_kanban_plan_pk.g_stmt_num);
655: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
656: END IF;
649: -- if necessary
650:
651: mrp_kanban_plan_pk.g_stmt_num := 40;
652: IF mrp_kanban_plan_pk.g_debug THEN
653: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
654: || to_char (mrp_kanban_plan_pk.g_stmt_num);
655: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
656: END IF;
657:
650:
651: mrp_kanban_plan_pk.g_stmt_num := 40;
652: IF mrp_kanban_plan_pk.g_debug THEN
653: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
654: || to_char (mrp_kanban_plan_pk.g_stmt_num);
655: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
656: END IF;
657:
658: IF mrp_kanban_plan_pk.g_kanban_info_rec.from_item IS NOT NULL OR
651: mrp_kanban_plan_pk.g_stmt_num := 40;
652: IF mrp_kanban_plan_pk.g_debug THEN
653: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
654: || to_char (mrp_kanban_plan_pk.g_stmt_num);
655: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
656: END IF;
657:
658: IF mrp_kanban_plan_pk.g_kanban_info_rec.from_item IS NOT NULL OR
659: mrp_kanban_plan_pk.g_kanban_info_rec.to_item IS NOT NULL THEN
654: || to_char (mrp_kanban_plan_pk.g_stmt_num);
655: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
656: END IF;
657:
658: IF mrp_kanban_plan_pk.g_kanban_info_rec.from_item IS NOT NULL OR
659: mrp_kanban_plan_pk.g_kanban_info_rec.to_item IS NOT NULL THEN
660:
661: -- call the function that builds the item where clause
662: l_ret_val := flm_util.Item_Where_Clause(
655: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
656: END IF;
657:
658: IF mrp_kanban_plan_pk.g_kanban_info_rec.from_item IS NOT NULL OR
659: mrp_kanban_plan_pk.g_kanban_info_rec.to_item IS NOT NULL THEN
660:
661: -- call the function that builds the item where clause
662: l_ret_val := flm_util.Item_Where_Clause(
663: mrp_kanban_plan_pk.g_kanban_info_rec.from_item,
659: mrp_kanban_plan_pk.g_kanban_info_rec.to_item IS NOT NULL THEN
660:
661: -- call the function that builds the item where clause
662: l_ret_val := flm_util.Item_Where_Clause(
663: mrp_kanban_plan_pk.g_kanban_info_rec.from_item,
664: mrp_kanban_plan_pk.g_kanban_info_rec.to_item,
665: 'msi',
666: l_item_where_clause,
667: l_error_buf);
660:
661: -- call the function that builds the item where clause
662: l_ret_val := flm_util.Item_Where_Clause(
663: mrp_kanban_plan_pk.g_kanban_info_rec.from_item,
664: mrp_kanban_plan_pk.g_kanban_info_rec.to_item,
665: 'msi',
666: l_item_where_clause,
667: l_error_buf);
668:
673: IF l_item_where_clause IS NOT NULL and trim(l_item_where_clause) IS NOT NULL THEN
674: l_additional_where := ' AND ' || l_item_where_clause ||
675: l_additional_where;
676:
677: IF mrp_kanban_plan_pk.g_debug THEN
678: mrp_kanban_plan_pk.g_log_message := 'Item Where Clause is : ';
679: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
680: mrp_kanban_plan_pk.g_log_message := substr(l_item_where_clause,1,2000);
681: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
674: l_additional_where := ' AND ' || l_item_where_clause ||
675: l_additional_where;
676:
677: IF mrp_kanban_plan_pk.g_debug THEN
678: mrp_kanban_plan_pk.g_log_message := 'Item Where Clause is : ';
679: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
680: mrp_kanban_plan_pk.g_log_message := substr(l_item_where_clause,1,2000);
681: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
682: END IF;
675: l_additional_where;
676:
677: IF mrp_kanban_plan_pk.g_debug THEN
678: mrp_kanban_plan_pk.g_log_message := 'Item Where Clause is : ';
679: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
680: mrp_kanban_plan_pk.g_log_message := substr(l_item_where_clause,1,2000);
681: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
682: END IF;
683: END IF;
676:
677: IF mrp_kanban_plan_pk.g_debug THEN
678: mrp_kanban_plan_pk.g_log_message := 'Item Where Clause is : ';
679: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
680: mrp_kanban_plan_pk.g_log_message := substr(l_item_where_clause,1,2000);
681: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
682: END IF;
683: END IF;
684:
677: IF mrp_kanban_plan_pk.g_debug THEN
678: mrp_kanban_plan_pk.g_log_message := 'Item Where Clause is : ';
679: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
680: mrp_kanban_plan_pk.g_log_message := substr(l_item_where_clause,1,2000);
681: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
682: END IF;
683: END IF;
684:
685: END IF;
686:
687: -- similarly check if category range has been specified and add the extra
688: -- condition if necessary
689:
690: mrp_kanban_plan_pk.g_stmt_num := 50;
691: IF mrp_kanban_plan_pk.g_debug THEN
692: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
693: || to_char (mrp_kanban_plan_pk.g_stmt_num);
694: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
687: -- similarly check if category range has been specified and add the extra
688: -- condition if necessary
689:
690: mrp_kanban_plan_pk.g_stmt_num := 50;
691: IF mrp_kanban_plan_pk.g_debug THEN
692: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
693: || to_char (mrp_kanban_plan_pk.g_stmt_num);
694: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
695: END IF;
688: -- condition if necessary
689:
690: mrp_kanban_plan_pk.g_stmt_num := 50;
691: IF mrp_kanban_plan_pk.g_debug THEN
692: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
693: || to_char (mrp_kanban_plan_pk.g_stmt_num);
694: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
695: END IF;
696:
689:
690: mrp_kanban_plan_pk.g_stmt_num := 50;
691: IF mrp_kanban_plan_pk.g_debug THEN
692: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
693: || to_char (mrp_kanban_plan_pk.g_stmt_num);
694: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
695: END IF;
696:
697: IF (mrp_kanban_plan_pk.g_kanban_info_rec.from_category IS NOT NULL OR
690: mrp_kanban_plan_pk.g_stmt_num := 50;
691: IF mrp_kanban_plan_pk.g_debug THEN
692: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
693: || to_char (mrp_kanban_plan_pk.g_stmt_num);
694: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
695: END IF;
696:
697: IF (mrp_kanban_plan_pk.g_kanban_info_rec.from_category IS NOT NULL OR
698: mrp_kanban_plan_pk.g_kanban_info_rec.to_category IS NOT NULL) AND
693: || to_char (mrp_kanban_plan_pk.g_stmt_num);
694: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
695: END IF;
696:
697: IF (mrp_kanban_plan_pk.g_kanban_info_rec.from_category IS NOT NULL OR
698: mrp_kanban_plan_pk.g_kanban_info_rec.to_category IS NOT NULL) AND
699: mrp_kanban_plan_pk.g_kanban_info_rec.category_set_id IS NOT NULL THEN
700:
701: l_ret_val := flm_util.Category_Where_Clause(
694: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
695: END IF;
696:
697: IF (mrp_kanban_plan_pk.g_kanban_info_rec.from_category IS NOT NULL OR
698: mrp_kanban_plan_pk.g_kanban_info_rec.to_category IS NOT NULL) AND
699: mrp_kanban_plan_pk.g_kanban_info_rec.category_set_id IS NOT NULL THEN
700:
701: l_ret_val := flm_util.Category_Where_Clause(
702: mrp_kanban_plan_pk.g_kanban_info_rec.from_category,
695: END IF;
696:
697: IF (mrp_kanban_plan_pk.g_kanban_info_rec.from_category IS NOT NULL OR
698: mrp_kanban_plan_pk.g_kanban_info_rec.to_category IS NOT NULL) AND
699: mrp_kanban_plan_pk.g_kanban_info_rec.category_set_id IS NOT NULL THEN
700:
701: l_ret_val := flm_util.Category_Where_Clause(
702: mrp_kanban_plan_pk.g_kanban_info_rec.from_category,
703: mrp_kanban_plan_pk.g_kanban_info_rec.to_category,
698: mrp_kanban_plan_pk.g_kanban_info_rec.to_category IS NOT NULL) AND
699: mrp_kanban_plan_pk.g_kanban_info_rec.category_set_id IS NOT NULL THEN
700:
701: l_ret_val := flm_util.Category_Where_Clause(
702: mrp_kanban_plan_pk.g_kanban_info_rec.from_category,
703: mrp_kanban_plan_pk.g_kanban_info_rec.to_category,
704: 'mcat',
705: mrp_kanban_plan_pk.g_kanban_info_rec.category_structure_id,
706: l_cat_where_clause,
699: mrp_kanban_plan_pk.g_kanban_info_rec.category_set_id IS NOT NULL THEN
700:
701: l_ret_val := flm_util.Category_Where_Clause(
702: mrp_kanban_plan_pk.g_kanban_info_rec.from_category,
703: mrp_kanban_plan_pk.g_kanban_info_rec.to_category,
704: 'mcat',
705: mrp_kanban_plan_pk.g_kanban_info_rec.category_structure_id,
706: l_cat_where_clause,
707: l_error_buf);
701: l_ret_val := flm_util.Category_Where_Clause(
702: mrp_kanban_plan_pk.g_kanban_info_rec.from_category,
703: mrp_kanban_plan_pk.g_kanban_info_rec.to_category,
704: 'mcat',
705: mrp_kanban_plan_pk.g_kanban_info_rec.category_structure_id,
706: l_cat_where_clause,
707: l_error_buf);
708:
709: IF NOT l_ret_val THEN
714: l_additional_tables := 'mtl_categories mcat, ' || l_additional_tables;
715: l_additional_where := l_additional_where || ' AND ' ||
716: ' mcat.category_id = mic.category_id AND ' ||
717: l_cat_where_clause||' ';
718: IF mrp_kanban_plan_pk.g_debug THEN
719: mrp_kanban_plan_pk.g_log_message := 'Category Where Clause is : ';
720: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
721: mrp_kanban_plan_pk.g_log_message := substr(l_cat_where_clause,1,2000);
722: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
715: l_additional_where := l_additional_where || ' AND ' ||
716: ' mcat.category_id = mic.category_id AND ' ||
717: l_cat_where_clause||' ';
718: IF mrp_kanban_plan_pk.g_debug THEN
719: mrp_kanban_plan_pk.g_log_message := 'Category Where Clause is : ';
720: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
721: mrp_kanban_plan_pk.g_log_message := substr(l_cat_where_clause,1,2000);
722: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
723: END IF;
716: ' mcat.category_id = mic.category_id AND ' ||
717: l_cat_where_clause||' ';
718: IF mrp_kanban_plan_pk.g_debug THEN
719: mrp_kanban_plan_pk.g_log_message := 'Category Where Clause is : ';
720: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
721: mrp_kanban_plan_pk.g_log_message := substr(l_cat_where_clause,1,2000);
722: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
723: END IF;
724: END IF;
717: l_cat_where_clause||' ';
718: IF mrp_kanban_plan_pk.g_debug THEN
719: mrp_kanban_plan_pk.g_log_message := 'Category Where Clause is : ';
720: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
721: mrp_kanban_plan_pk.g_log_message := substr(l_cat_where_clause,1,2000);
722: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
723: END IF;
724: END IF;
725:
718: IF mrp_kanban_plan_pk.g_debug THEN
719: mrp_kanban_plan_pk.g_log_message := 'Category Where Clause is : ';
720: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
721: mrp_kanban_plan_pk.g_log_message := substr(l_cat_where_clause,1,2000);
722: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
723: END IF;
724: END IF;
725:
726: END IF;
744: -- in the replenishment chain we specify a line for the source. We want
745: -- this to be the line that's specified in the CFM routing with priority = 1
746: -- so we end up joining bom_operational_routings table also.
747:
748: mrp_kanban_plan_pk.g_stmt_num := 60;
749: IF mrp_kanban_plan_pk.g_debug THEN
750: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
751: || to_char (mrp_kanban_plan_pk.g_stmt_num);
752: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
745: -- this to be the line that's specified in the CFM routing with priority = 1
746: -- so we end up joining bom_operational_routings table also.
747:
748: mrp_kanban_plan_pk.g_stmt_num := 60;
749: IF mrp_kanban_plan_pk.g_debug THEN
750: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
751: || to_char (mrp_kanban_plan_pk.g_stmt_num);
752: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
753: END IF;
746: -- so we end up joining bom_operational_routings table also.
747:
748: mrp_kanban_plan_pk.g_stmt_num := 60;
749: IF mrp_kanban_plan_pk.g_debug THEN
750: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
751: || to_char (mrp_kanban_plan_pk.g_stmt_num);
752: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
753: END IF;
754:
747:
748: mrp_kanban_plan_pk.g_stmt_num := 60;
749: IF mrp_kanban_plan_pk.g_debug THEN
750: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
751: || to_char (mrp_kanban_plan_pk.g_stmt_num);
752: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
753: END IF;
754:
755: l_sql_stmt :=
748: mrp_kanban_plan_pk.g_stmt_num := 60;
749: IF mrp_kanban_plan_pk.g_debug THEN
750: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
751: || to_char (mrp_kanban_plan_pk.g_stmt_num);
752: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
753: END IF;
754:
755: l_sql_stmt :=
756: 'INSERT INTO mrp_low_level_codes ( ' ||
898: dbms_sql.parse (l_cursor, l_sql_stmt, dbms_sql.native);
899:
900: -- put values into all the bind variables
901: flm_util.add_bind (':b_kanban_plan_id',
902: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id);
903: flm_util.add_bind (':b_organization_id',
904: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id);
905: flm_util.add_bind (':b_bom_effectivity',
906: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity);
900: -- put values into all the bind variables
901: flm_util.add_bind (':b_kanban_plan_id',
902: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id);
903: flm_util.add_bind (':b_organization_id',
904: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id);
905: flm_util.add_bind (':b_bom_effectivity',
906: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity);
907: flm_util.add_bind (':b_PRODUCTION_KANBAN',
908: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN);
902: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id);
903: flm_util.add_bind (':b_organization_id',
904: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id);
905: flm_util.add_bind (':b_bom_effectivity',
906: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity);
907: flm_util.add_bind (':b_PRODUCTION_KANBAN',
908: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN);
909: flm_util.add_bind (':b_PRODUCTION_SOURCE_TYPE',
910: mrp_kanban_plan_pk.G_PRODUCTION_SOURCE_TYPE);
904: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id);
905: flm_util.add_bind (':b_bom_effectivity',
906: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity);
907: flm_util.add_bind (':b_PRODUCTION_KANBAN',
908: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN);
909: flm_util.add_bind (':b_PRODUCTION_SOURCE_TYPE',
910: mrp_kanban_plan_pk.G_PRODUCTION_SOURCE_TYPE);
911: flm_util.add_bind (':b_category_set_id',
912: mrp_kanban_plan_pk.g_kanban_info_rec.category_set_id);
906: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity);
907: flm_util.add_bind (':b_PRODUCTION_KANBAN',
908: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN);
909: flm_util.add_bind (':b_PRODUCTION_SOURCE_TYPE',
910: mrp_kanban_plan_pk.G_PRODUCTION_SOURCE_TYPE);
911: flm_util.add_bind (':b_category_set_id',
912: mrp_kanban_plan_pk.g_kanban_info_rec.category_set_id);
913: flm_util.do_binds(l_cursor);
914:
908: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN);
909: flm_util.add_bind (':b_PRODUCTION_SOURCE_TYPE',
910: mrp_kanban_plan_pk.G_PRODUCTION_SOURCE_TYPE);
911: flm_util.add_bind (':b_category_set_id',
912: mrp_kanban_plan_pk.g_kanban_info_rec.category_set_id);
913: flm_util.do_binds(l_cursor);
914:
915: -- now execute the sql stmt
916: l_rows_processed := dbms_sql.execute(l_cursor);
917:
918: -- close the cursor
919: dbms_sql.close_cursor (l_cursor);
920:
921: IF mrp_kanban_plan_pk.g_debug THEN
922: mrp_kanban_plan_pk.g_log_message :=
923: '----------------------------------------------';
924: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
925: mrp_kanban_plan_pk.g_log_message :=
918: -- close the cursor
919: dbms_sql.close_cursor (l_cursor);
920:
921: IF mrp_kanban_plan_pk.g_debug THEN
922: mrp_kanban_plan_pk.g_log_message :=
923: '----------------------------------------------';
924: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
925: mrp_kanban_plan_pk.g_log_message :=
926: 'Successfully executed the Dynamic Sql Statement';
920:
921: IF mrp_kanban_plan_pk.g_debug THEN
922: mrp_kanban_plan_pk.g_log_message :=
923: '----------------------------------------------';
924: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
925: mrp_kanban_plan_pk.g_log_message :=
926: 'Successfully executed the Dynamic Sql Statement';
927: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
928: mrp_kanban_plan_pk.g_log_message := 'Inserted ' ||
921: IF mrp_kanban_plan_pk.g_debug THEN
922: mrp_kanban_plan_pk.g_log_message :=
923: '----------------------------------------------';
924: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
925: mrp_kanban_plan_pk.g_log_message :=
926: 'Successfully executed the Dynamic Sql Statement';
927: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
928: mrp_kanban_plan_pk.g_log_message := 'Inserted ' ||
929: to_char(l_rows_processed) || ' into mrp_low_level_codes table';
923: '----------------------------------------------';
924: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
925: mrp_kanban_plan_pk.g_log_message :=
926: 'Successfully executed the Dynamic Sql Statement';
927: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
928: mrp_kanban_plan_pk.g_log_message := 'Inserted ' ||
929: to_char(l_rows_processed) || ' into mrp_low_level_codes table';
930: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
931: END IF;
924: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
925: mrp_kanban_plan_pk.g_log_message :=
926: 'Successfully executed the Dynamic Sql Statement';
927: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
928: mrp_kanban_plan_pk.g_log_message := 'Inserted ' ||
929: to_char(l_rows_processed) || ' into mrp_low_level_codes table';
930: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
931: END IF;
932:
926: 'Successfully executed the Dynamic Sql Statement';
927: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
928: mrp_kanban_plan_pk.g_log_message := 'Inserted ' ||
929: to_char(l_rows_processed) || ' into mrp_low_level_codes table';
930: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
931: END IF;
932:
933: END IF; -- so we basically did all the above only if we are not replanning
934:
936: -- Now go ahead and get all the other items that are required for planning
937: -- from the bill structure
938: -- ------------------------------------------------------------------------
939:
940: IF mrp_kanban_plan_pk.g_debug THEN
941: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
942: || to_char (mrp_kanban_plan_pk.g_stmt_num);
943: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
944: END IF;
937: -- from the bill structure
938: -- ------------------------------------------------------------------------
939:
940: IF mrp_kanban_plan_pk.g_debug THEN
941: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
942: || to_char (mrp_kanban_plan_pk.g_stmt_num);
943: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
944: END IF;
945:
938: -- ------------------------------------------------------------------------
939:
940: IF mrp_kanban_plan_pk.g_debug THEN
941: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
942: || to_char (mrp_kanban_plan_pk.g_stmt_num);
943: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
944: END IF;
945:
946: l_level_count := 1;
939:
940: IF mrp_kanban_plan_pk.g_debug THEN
941: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
942: || to_char (mrp_kanban_plan_pk.g_stmt_num);
943: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
944: END IF;
945:
946: l_level_count := 1;
947:
1029: mtl_item_categories mic,
1030: bom_inventory_components mrp_bic,
1031: mrp_low_level_codes mllc
1032: WHERE mllc.plan_id =
1033: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1034: AND mllc.organization_id =
1035: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1036: AND mllc.levels_below = l_level_count
1037: AND mrp_bic.component_item_id = mllc.assembly_item_id
1031: mrp_low_level_codes mllc
1032: WHERE mllc.plan_id =
1033: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1034: AND mllc.organization_id =
1035: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1036: AND mllc.levels_below = l_level_count
1037: AND mrp_bic.component_item_id = mllc.assembly_item_id
1038: AND (nvl(mrp_bic.disable_date,
1039: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity)) +1 >=
1035: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1036: AND mllc.levels_below = l_level_count
1037: AND mrp_bic.component_item_id = mllc.assembly_item_id
1038: AND (nvl(mrp_bic.disable_date,
1039: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity)) +1 >=
1040: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1041: AND mrp_bic.effectivity_date <=
1042: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1043: AND bbom.common_bill_sequence_id = mrp_bic.bill_sequence_id
1036: AND mllc.levels_below = l_level_count
1037: AND mrp_bic.component_item_id = mllc.assembly_item_id
1038: AND (nvl(mrp_bic.disable_date,
1039: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity)) +1 >=
1040: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1041: AND mrp_bic.effectivity_date <=
1042: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1043: AND bbom.common_bill_sequence_id = mrp_bic.bill_sequence_id
1044: AND bbom.organization_id = mllc.organization_id
1038: AND (nvl(mrp_bic.disable_date,
1039: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity)) +1 >=
1040: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1041: AND mrp_bic.effectivity_date <=
1042: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1043: AND bbom.common_bill_sequence_id = mrp_bic.bill_sequence_id
1044: AND bbom.organization_id = mllc.organization_id
1045: AND ps.kanban_plan_id (+) =
1046: decode(mrp_kanban_plan_pk.g_kanban_info_rec.replan_flag,
1042: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1043: AND bbom.common_bill_sequence_id = mrp_bic.bill_sequence_id
1044: AND bbom.organization_id = mllc.organization_id
1045: AND ps.kanban_plan_id (+) =
1046: decode(mrp_kanban_plan_pk.g_kanban_info_rec.replan_flag,
1047: 2, mrp_kanban_plan_pk.G_PRODUCTION_KANBAN,
1048: 1, mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id,
1049: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN)
1050: AND ps.organization_id (+) = bbom.organization_id
1043: AND bbom.common_bill_sequence_id = mrp_bic.bill_sequence_id
1044: AND bbom.organization_id = mllc.organization_id
1045: AND ps.kanban_plan_id (+) =
1046: decode(mrp_kanban_plan_pk.g_kanban_info_rec.replan_flag,
1047: 2, mrp_kanban_plan_pk.G_PRODUCTION_KANBAN,
1048: 1, mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id,
1049: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN)
1050: AND ps.organization_id (+) = bbom.organization_id
1051: AND ps.inventory_item_id (+) = bbom.assembly_item_id
1044: AND bbom.organization_id = mllc.organization_id
1045: AND ps.kanban_plan_id (+) =
1046: decode(mrp_kanban_plan_pk.g_kanban_info_rec.replan_flag,
1047: 2, mrp_kanban_plan_pk.G_PRODUCTION_KANBAN,
1048: 1, mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id,
1049: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN)
1050: AND ps.organization_id (+) = bbom.organization_id
1051: AND ps.inventory_item_id (+) = bbom.assembly_item_id
1052: AND ps.source_type (+) = 4 /* KANBAN_PRODUCTION */
1045: AND ps.kanban_plan_id (+) =
1046: decode(mrp_kanban_plan_pk.g_kanban_info_rec.replan_flag,
1047: 2, mrp_kanban_plan_pk.G_PRODUCTION_KANBAN,
1048: 1, mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id,
1049: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN)
1050: AND ps.organization_id (+) = bbom.organization_id
1051: AND ps.inventory_item_id (+) = bbom.assembly_item_id
1052: AND ps.source_type (+) = 4 /* KANBAN_PRODUCTION */
1053: /* Fix bug 2090054
1057: ps.wip_line_id,
1058: bbom.alternate_bom_designator)
1059: */
1060: AND mic.organization_id (+) =
1061: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1062: AND mic.inventory_item_id (+) = mllc.assembly_item_id
1063: AND mic.category_set_id (+) =
1064: mrp_kanban_plan_pk.g_kanban_info_rec.category_set_id
1065: /* Avoid re-selecting items already in mrp_low_level_codes */
1060: AND mic.organization_id (+) =
1061: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1062: AND mic.inventory_item_id (+) = mllc.assembly_item_id
1063: AND mic.category_set_id (+) =
1064: mrp_kanban_plan_pk.g_kanban_info_rec.category_set_id
1065: /* Avoid re-selecting items already in mrp_low_level_codes */
1066: AND NOT EXISTS
1067: ( SELECT 'Exists'
1068: FROM mrp_low_level_codes mllc2
1066: AND NOT EXISTS
1067: ( SELECT 'Exists'
1068: FROM mrp_low_level_codes mllc2
1069: WHERE mllc2.plan_id =
1070: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1071: AND mllc2.organization_id =
1072: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1073: AND mllc2.component_item_id = mrp_bic.component_item_id )
1074: AND EXISTS(
1068: FROM mrp_low_level_codes mllc2
1069: WHERE mllc2.plan_id =
1070: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1071: AND mllc2.organization_id =
1072: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1073: AND mllc2.component_item_id = mrp_bic.component_item_id )
1074: AND EXISTS(
1075: SELECT /*+no_unnest*/ 1
1076: FROM mtl_system_items msi
1146: mtl_item_categories mic,
1147: bom_inventory_components mrp_bic,
1148: mrp_low_level_codes mllc
1149: WHERE mllc.plan_id =
1150: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1151: AND mllc.organization_id =
1152: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1153: AND mllc.levels_below = l_level_count
1154: AND mrp_bic.component_item_id = mllc.assembly_item_id
1148: mrp_low_level_codes mllc
1149: WHERE mllc.plan_id =
1150: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1151: AND mllc.organization_id =
1152: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1153: AND mllc.levels_below = l_level_count
1154: AND mrp_bic.component_item_id = mllc.assembly_item_id
1155: AND (nvl(mrp_bic.disable_date,
1156: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity)) +1 >=
1152: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1153: AND mllc.levels_below = l_level_count
1154: AND mrp_bic.component_item_id = mllc.assembly_item_id
1155: AND (nvl(mrp_bic.disable_date,
1156: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity)) +1 >=
1157: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1158: AND mrp_bic.effectivity_date <=
1159: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1160: AND NOT EXISTS (
1153: AND mllc.levels_below = l_level_count
1154: AND mrp_bic.component_item_id = mllc.assembly_item_id
1155: AND (nvl(mrp_bic.disable_date,
1156: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity)) +1 >=
1157: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1158: AND mrp_bic.effectivity_date <=
1159: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1160: AND NOT EXISTS (
1161: SELECT /*+ INDEX(bic2 BOM_INVENTORY_COMPONENTS_N1) */
1155: AND (nvl(mrp_bic.disable_date,
1156: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity)) +1 >=
1157: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1158: AND mrp_bic.effectivity_date <=
1159: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1160: AND NOT EXISTS (
1161: SELECT /*+ INDEX(bic2 BOM_INVENTORY_COMPONENTS_N1) */
1162: NULL
1163: FROM bom_inventory_components bic2
1170: mrp_bic.old_component_sequence_id,
1171: mrp_bic.component_sequence_id)
1172: OR bic2.operation_seq_num = mrp_bic.operation_seq_num)
1173: AND bic2.effectivity_date <=
1174: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1175: AND bic2.effectivity_date > mrp_bic.effectivity_date
1176: AND (bic2.implementation_date is not null OR
1177: (bic2.implementation_date is null AND EXISTS
1178: (SELECT NULL
1189: AND eri.mrp_active = 1 )))
1190: AND bbom.common_bill_sequence_id = mrp_bic.bill_sequence_id
1191: AND bbom.organization_id = mllc.organization_id
1192: AND ps.kanban_plan_id (+) =
1193: decode(mrp_kanban_plan_pk.g_kanban_info_rec.replan_flag,
1194: 2, mrp_kanban_plan_pk.G_PRODUCTION_KANBAN,
1195: 1, mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id,
1196: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN)
1197: AND ps.organization_id (+) = bbom.organization_id
1190: AND bbom.common_bill_sequence_id = mrp_bic.bill_sequence_id
1191: AND bbom.organization_id = mllc.organization_id
1192: AND ps.kanban_plan_id (+) =
1193: decode(mrp_kanban_plan_pk.g_kanban_info_rec.replan_flag,
1194: 2, mrp_kanban_plan_pk.G_PRODUCTION_KANBAN,
1195: 1, mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id,
1196: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN)
1197: AND ps.organization_id (+) = bbom.organization_id
1198: AND ps.inventory_item_id (+) = bbom.assembly_item_id
1191: AND bbom.organization_id = mllc.organization_id
1192: AND ps.kanban_plan_id (+) =
1193: decode(mrp_kanban_plan_pk.g_kanban_info_rec.replan_flag,
1194: 2, mrp_kanban_plan_pk.G_PRODUCTION_KANBAN,
1195: 1, mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id,
1196: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN)
1197: AND ps.organization_id (+) = bbom.organization_id
1198: AND ps.inventory_item_id (+) = bbom.assembly_item_id
1199: AND ps.source_type (+) = 4 /* KANBAN_PRODUCTION */
1192: AND ps.kanban_plan_id (+) =
1193: decode(mrp_kanban_plan_pk.g_kanban_info_rec.replan_flag,
1194: 2, mrp_kanban_plan_pk.G_PRODUCTION_KANBAN,
1195: 1, mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id,
1196: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN)
1197: AND ps.organization_id (+) = bbom.organization_id
1198: AND ps.inventory_item_id (+) = bbom.assembly_item_id
1199: AND ps.source_type (+) = 4 /* KANBAN_PRODUCTION */
1200: /* Fix bug 2090054
1204: ps.wip_line_id,
1205: bbom.alternate_bom_designator)
1206: */
1207: AND mic.organization_id (+) =
1208: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1209: AND mic.inventory_item_id (+) = mllc.assembly_item_id
1210: AND mic.category_set_id (+) =
1211: mrp_kanban_plan_pk.g_kanban_info_rec.category_set_id
1212: /* Avoid re-selecting items already in mrp_low_level_codes */
1207: AND mic.organization_id (+) =
1208: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1209: AND mic.inventory_item_id (+) = mllc.assembly_item_id
1210: AND mic.category_set_id (+) =
1211: mrp_kanban_plan_pk.g_kanban_info_rec.category_set_id
1212: /* Avoid re-selecting items already in mrp_low_level_codes */
1213: AND NOT EXISTS
1214: ( SELECT 'Exists'
1215: FROM mrp_low_level_codes mllc2
1213: AND NOT EXISTS
1214: ( SELECT 'Exists'
1215: FROM mrp_low_level_codes mllc2
1216: WHERE mllc2.plan_id =
1217: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1218: AND mllc2.organization_id =
1219: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1220: AND mllc2.component_item_id = mrp_bic.component_item_id )
1221: AND EXISTS(
1215: FROM mrp_low_level_codes mllc2
1216: WHERE mllc2.plan_id =
1217: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1218: AND mllc2.organization_id =
1219: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1220: AND mllc2.component_item_id = mrp_bic.component_item_id )
1221: AND EXISTS(
1222: SELECT /*+no_unnest*/ 1
1223: FROM mtl_system_items msi
1243: SET (mllc.kanban_item_flag) =
1244: (select nvl(max(decode(kbn_items.release_kanban_flag, 1, 'Y', 'Y')), 'N')
1245: from mtl_kanban_pull_sequences kbn_items
1246: where kbn_items.kanban_plan_id =
1247: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1248: and kbn_items.organization_id =
1249: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1250: and kbn_items.inventory_item_id = mllc.assembly_item_id)
1251: WHERE mllc.plan_id =
1245: from mtl_kanban_pull_sequences kbn_items
1246: where kbn_items.kanban_plan_id =
1247: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1248: and kbn_items.organization_id =
1249: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1250: and kbn_items.inventory_item_id = mllc.assembly_item_id)
1251: WHERE mllc.plan_id =
1252: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1253: AND mllc.organization_id =
1248: and kbn_items.organization_id =
1249: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1250: and kbn_items.inventory_item_id = mllc.assembly_item_id)
1251: WHERE mllc.plan_id =
1252: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1253: AND mllc.organization_id =
1254: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1255: AND mllc.kanban_item_flag is null;
1256:
1250: and kbn_items.inventory_item_id = mllc.assembly_item_id)
1251: WHERE mllc.plan_id =
1252: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1253: AND mllc.organization_id =
1254: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1255: AND mllc.kanban_item_flag is null;
1256:
1257:
1258: mrp_kanban_plan_pk.g_stmt_num := 80;
1254: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1255: AND mllc.kanban_item_flag is null;
1256:
1257:
1258: mrp_kanban_plan_pk.g_stmt_num := 80;
1259: IF mrp_kanban_plan_pk.g_debug THEN
1260: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1261: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1262: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1255: AND mllc.kanban_item_flag is null;
1256:
1257:
1258: mrp_kanban_plan_pk.g_stmt_num := 80;
1259: IF mrp_kanban_plan_pk.g_debug THEN
1260: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1261: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1262: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1263: END IF;
1256:
1257:
1258: mrp_kanban_plan_pk.g_stmt_num := 80;
1259: IF mrp_kanban_plan_pk.g_debug THEN
1260: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1261: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1262: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1263: END IF;
1264:
1257:
1258: mrp_kanban_plan_pk.g_stmt_num := 80;
1259: IF mrp_kanban_plan_pk.g_debug THEN
1260: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1261: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1262: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1263: END IF;
1264:
1265: -- now update the mrp_low_level_codes table with operation_yield
1258: mrp_kanban_plan_pk.g_stmt_num := 80;
1259: IF mrp_kanban_plan_pk.g_debug THEN
1260: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1261: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1262: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1263: END IF;
1264:
1265: -- now update the mrp_low_level_codes table with operation_yield
1266: -- and net_planning_percent from the bom_operation_sequences table.
1289: nvl(mllc.alternate_designator, 'xxx')
1290: AND mrp_bic.bill_sequence_id = bbom.common_bill_sequence_id
1291: AND mrp_bic.component_item_id = mllc.component_item_id
1292: AND (nvl(mrp_bic.disable_date,
1293: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity) +1) >=
1294: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1295: AND mrp_bic.effectivity_date <=
1296: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1297: AND NOT EXISTS (
1290: AND mrp_bic.bill_sequence_id = bbom.common_bill_sequence_id
1291: AND mrp_bic.component_item_id = mllc.component_item_id
1292: AND (nvl(mrp_bic.disable_date,
1293: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity) +1) >=
1294: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1295: AND mrp_bic.effectivity_date <=
1296: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1297: AND NOT EXISTS (
1298: SELECT NULL
1292: AND (nvl(mrp_bic.disable_date,
1293: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity) +1) >=
1294: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1295: AND mrp_bic.effectivity_date <=
1296: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1297: AND NOT EXISTS (
1298: SELECT NULL
1299: FROM bom_inventory_components bic2
1300: WHERE bic2.bill_sequence_id = mrp_bic.bill_sequence_id
1306: mrp_bic.old_component_sequence_id,
1307: mrp_bic.component_sequence_id)
1308: OR bic2.operation_seq_num = mrp_bic.operation_seq_num)
1309: AND bic2.effectivity_date <=
1310: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1311: AND bic2.effectivity_date > mrp_bic.effectivity_date
1312: AND (bic2.implementation_date is not null OR
1313: (bic2.implementation_date is null AND EXISTS
1314: (SELECT NULL
1330: AND bos.routing_sequence_id = bor.routing_sequence_id
1331: AND bos.operation_seq_num = mrp_bic.operation_seq_num
1332: AND nvl(bos.operation_type, 1) = 1
1333: AND nvl(bos.disable_date,
1334: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity) + 1
1335: >= mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1336: AND bos.effectivity_date <=
1337: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity)
1338: WHERE mllc.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id;
1331: AND bos.operation_seq_num = mrp_bic.operation_seq_num
1332: AND nvl(bos.operation_type, 1) = 1
1333: AND nvl(bos.disable_date,
1334: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity) + 1
1335: >= mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1336: AND bos.effectivity_date <=
1337: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity)
1338: WHERE mllc.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id;
1339:
1333: AND nvl(bos.disable_date,
1334: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity) + 1
1335: >= mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1336: AND bos.effectivity_date <=
1337: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity)
1338: WHERE mllc.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id;
1339:
1340: mrp_kanban_plan_pk.g_stmt_num := 90;
1341:
1334: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity) + 1
1335: >= mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity
1336: AND bos.effectivity_date <=
1337: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity)
1338: WHERE mllc.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id;
1339:
1340: mrp_kanban_plan_pk.g_stmt_num := 90;
1341:
1342:
1336: AND bos.effectivity_date <=
1337: mrp_kanban_plan_pk.g_kanban_info_rec.bom_effectivity)
1338: WHERE mllc.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id;
1339:
1340: mrp_kanban_plan_pk.g_stmt_num := 90;
1341:
1342:
1343: IF mrp_kanban_plan_pk.g_debug THEN
1344: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1339:
1340: mrp_kanban_plan_pk.g_stmt_num := 90;
1341:
1342:
1343: IF mrp_kanban_plan_pk.g_debug THEN
1344: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1345: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1346: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1347: mrp_kanban_plan_pk.g_log_message := 'Updated mrp_low_level_codes ' ||
1340: mrp_kanban_plan_pk.g_stmt_num := 90;
1341:
1342:
1343: IF mrp_kanban_plan_pk.g_debug THEN
1344: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1345: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1346: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1347: mrp_kanban_plan_pk.g_log_message := 'Updated mrp_low_level_codes ' ||
1348: 'with net planning percent and yield information';
1341:
1342:
1343: IF mrp_kanban_plan_pk.g_debug THEN
1344: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1345: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1346: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1347: mrp_kanban_plan_pk.g_log_message := 'Updated mrp_low_level_codes ' ||
1348: 'with net planning percent and yield information';
1349: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1342:
1343: IF mrp_kanban_plan_pk.g_debug THEN
1344: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1345: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1346: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1347: mrp_kanban_plan_pk.g_log_message := 'Updated mrp_low_level_codes ' ||
1348: 'with net planning percent and yield information';
1349: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1350: END IF;
1343: IF mrp_kanban_plan_pk.g_debug THEN
1344: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1345: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1346: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1347: mrp_kanban_plan_pk.g_log_message := 'Updated mrp_low_level_codes ' ||
1348: 'with net planning percent and yield information';
1349: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1350: END IF;
1351:
1345: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1346: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1347: mrp_kanban_plan_pk.g_log_message := 'Updated mrp_low_level_codes ' ||
1348: 'with net planning percent and yield information';
1349: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1350: END IF;
1351:
1352:
1353: -- ------------------------------------------------------------------------
1398: mtl_item_categories mic,
1399: mtl_kanban_pull_sequences kbn_items,
1400: mrp_low_level_codes mllc1
1401: WHERE
1402: mllc1.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id AND
1403: mllc1.organization_id =
1404: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id AND
1405: kbn_items.inventory_item_id (+) =
1406: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN AND
1400: mrp_low_level_codes mllc1
1401: WHERE
1402: mllc1.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id AND
1403: mllc1.organization_id =
1404: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id AND
1405: kbn_items.inventory_item_id (+) =
1406: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN AND
1407: kbn_items.inventory_item_id (+) = mllc1.assembly_item_id AND
1408: kbn_items.organization_id (+) = mllc1.organization_id AND
1402: mllc1.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id AND
1403: mllc1.organization_id =
1404: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id AND
1405: kbn_items.inventory_item_id (+) =
1406: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN AND
1407: kbn_items.inventory_item_id (+) = mllc1.assembly_item_id AND
1408: kbn_items.organization_id (+) = mllc1.organization_id AND
1409: mic.inventory_item_id (+) = mllc1.assembly_item_id AND
1410: mic.organization_id (+) = mllc1.organization_id AND
1408: kbn_items.organization_id (+) = mllc1.organization_id AND
1409: mic.inventory_item_id (+) = mllc1.assembly_item_id AND
1410: mic.organization_id (+) = mllc1.organization_id AND
1411: mic.category_set_id (+) =
1412: mrp_kanban_plan_pk.g_kanban_info_rec.category_set_id AND
1413: --select only the assembly items that do not exist as components
1414: NOT EXISTS
1415: (SELECT 'Exists'
1416: FROM mrp_low_level_codes mllc2
1419: mllc2.component_item_id = mllc1.assembly_item_id );
1420:
1421:
1422:
1423: mrp_kanban_plan_pk.g_stmt_num := 100;
1424: IF mrp_kanban_plan_pk.g_debug THEN
1425: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1426: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1427: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1420:
1421:
1422:
1423: mrp_kanban_plan_pk.g_stmt_num := 100;
1424: IF mrp_kanban_plan_pk.g_debug THEN
1425: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1426: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1427: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1428: END IF;
1421:
1422:
1423: mrp_kanban_plan_pk.g_stmt_num := 100;
1424: IF mrp_kanban_plan_pk.g_debug THEN
1425: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1426: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1427: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1428: END IF;
1429:
1422:
1423: mrp_kanban_plan_pk.g_stmt_num := 100;
1424: IF mrp_kanban_plan_pk.g_debug THEN
1425: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1426: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1427: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1428: END IF;
1429:
1430: -- ------------------------------------------------------------------------
1423: mrp_kanban_plan_pk.g_stmt_num := 100;
1424: IF mrp_kanban_plan_pk.g_debug THEN
1425: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1426: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1427: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1428: END IF;
1429:
1430: -- ------------------------------------------------------------------------
1431: -- Now find information in mtl_kanban_pull_sequences about inter-org and
1462: last_update_date,
1463: created_by,
1464: creation_date )
1465: SELECT DISTINCT
1466: mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id,
1467: ps.organization_id,
1468: ps.inventory_item_id,
1469: ps.subinventory_name,
1470: ps.locator_id,
1488: FROM mtl_kanban_pull_sequences ps,
1489: mrp_low_level_codes mllc
1490: WHERE ps.source_type = 3 -- only intra org replenishments
1491: AND ps.kanban_plan_id =
1492: decode(mrp_kanban_plan_pk.g_kanban_info_rec.replan_flag,
1493: 2, mrp_kanban_plan_pk.G_PRODUCTION_KANBAN,
1494: 1, mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id,
1495: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN)
1496: AND ps.organization_id = mllc.organization_id
1489: mrp_low_level_codes mllc
1490: WHERE ps.source_type = 3 -- only intra org replenishments
1491: AND ps.kanban_plan_id =
1492: decode(mrp_kanban_plan_pk.g_kanban_info_rec.replan_flag,
1493: 2, mrp_kanban_plan_pk.G_PRODUCTION_KANBAN,
1494: 1, mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id,
1495: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN)
1496: AND ps.organization_id = mllc.organization_id
1497: AND ps.inventory_item_id = mllc.component_item_id
1490: WHERE ps.source_type = 3 -- only intra org replenishments
1491: AND ps.kanban_plan_id =
1492: decode(mrp_kanban_plan_pk.g_kanban_info_rec.replan_flag,
1493: 2, mrp_kanban_plan_pk.G_PRODUCTION_KANBAN,
1494: 1, mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id,
1495: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN)
1496: AND ps.organization_id = mllc.organization_id
1497: AND ps.inventory_item_id = mllc.component_item_id
1498: AND mllc.organization_id =
1491: AND ps.kanban_plan_id =
1492: decode(mrp_kanban_plan_pk.g_kanban_info_rec.replan_flag,
1493: 2, mrp_kanban_plan_pk.G_PRODUCTION_KANBAN,
1494: 1, mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id,
1495: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN)
1496: AND ps.organization_id = mllc.organization_id
1497: AND ps.inventory_item_id = mllc.component_item_id
1498: AND mllc.organization_id =
1499: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1495: mrp_kanban_plan_pk.G_PRODUCTION_KANBAN)
1496: AND ps.organization_id = mllc.organization_id
1497: AND ps.inventory_item_id = mllc.component_item_id
1498: AND mllc.organization_id =
1499: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1500: AND mllc.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1501: AND mllc.kanban_item_flag = 'Y';
1502:
1503:
1496: AND ps.organization_id = mllc.organization_id
1497: AND ps.inventory_item_id = mllc.component_item_id
1498: AND mllc.organization_id =
1499: mrp_kanban_plan_pk.g_kanban_info_rec.organization_id
1500: AND mllc.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1501: AND mllc.kanban_item_flag = 'Y';
1502:
1503:
1504: IF mrp_kanban_plan_pk.g_debug THEN
1500: AND mllc.plan_id = mrp_kanban_plan_pk.g_kanban_info_rec.kanban_plan_id
1501: AND mllc.kanban_item_flag = 'Y';
1502:
1503:
1504: IF mrp_kanban_plan_pk.g_debug THEN
1505: mrp_kanban_plan_pk.g_log_message :=
1506: 'Completed inserting into mrp_low_level_codes table';
1507: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1508: END IF;
1501: AND mllc.kanban_item_flag = 'Y';
1502:
1503:
1504: IF mrp_kanban_plan_pk.g_debug THEN
1505: mrp_kanban_plan_pk.g_log_message :=
1506: 'Completed inserting into mrp_low_level_codes table';
1507: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1508: END IF;
1509: mrp_kanban_plan_pk.g_stmt_num := 110;
1503:
1504: IF mrp_kanban_plan_pk.g_debug THEN
1505: mrp_kanban_plan_pk.g_log_message :=
1506: 'Completed inserting into mrp_low_level_codes table';
1507: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1508: END IF;
1509: mrp_kanban_plan_pk.g_stmt_num := 110;
1510: IF mrp_kanban_plan_pk.g_debug THEN
1511: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1505: mrp_kanban_plan_pk.g_log_message :=
1506: 'Completed inserting into mrp_low_level_codes table';
1507: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1508: END IF;
1509: mrp_kanban_plan_pk.g_stmt_num := 110;
1510: IF mrp_kanban_plan_pk.g_debug THEN
1511: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1512: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1513: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1506: 'Completed inserting into mrp_low_level_codes table';
1507: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1508: END IF;
1509: mrp_kanban_plan_pk.g_stmt_num := 110;
1510: IF mrp_kanban_plan_pk.g_debug THEN
1511: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1512: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1513: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1514: END IF;
1507: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1508: END IF;
1509: mrp_kanban_plan_pk.g_stmt_num := 110;
1510: IF mrp_kanban_plan_pk.g_debug THEN
1511: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1512: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1513: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1514: END IF;
1515:
1508: END IF;
1509: mrp_kanban_plan_pk.g_stmt_num := 110;
1510: IF mrp_kanban_plan_pk.g_debug THEN
1511: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1512: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1513: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1514: END IF;
1515:
1516: -- call the check_item_locations procedure to ensure that
1509: mrp_kanban_plan_pk.g_stmt_num := 110;
1510: IF mrp_kanban_plan_pk.g_debug THEN
1511: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1512: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1513: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1514: END IF;
1515:
1516: -- call the check_item_locations procedure to ensure that
1517: -- kanban items have the from-locations populated in the
1522: IF NOT Check_Item_Locations THEN
1523: RETURN FALSE;
1524: END IF;
1525:
1526: mrp_kanban_plan_pk.g_stmt_num := 130;
1527: IF mrp_kanban_plan_pk.g_debug THEN
1528: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1529: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1530: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1523: RETURN FALSE;
1524: END IF;
1525:
1526: mrp_kanban_plan_pk.g_stmt_num := 130;
1527: IF mrp_kanban_plan_pk.g_debug THEN
1528: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1529: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1530: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1531: END IF;
1524: END IF;
1525:
1526: mrp_kanban_plan_pk.g_stmt_num := 130;
1527: IF mrp_kanban_plan_pk.g_debug THEN
1528: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1529: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1530: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1531: END IF;
1532:
1525:
1526: mrp_kanban_plan_pk.g_stmt_num := 130;
1527: IF mrp_kanban_plan_pk.g_debug THEN
1528: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1529: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1530: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1531: END IF;
1532:
1533: -- now we are ready for our low level code calculation
1526: mrp_kanban_plan_pk.g_stmt_num := 130;
1527: IF mrp_kanban_plan_pk.g_debug THEN
1528: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : '
1529: || to_char (mrp_kanban_plan_pk.g_stmt_num);
1530: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1531: END IF;
1532:
1533: -- now we are ready for our low level code calculation
1534: -- so call that procedure
1532:
1533: -- now we are ready for our low level code calculation
1534: -- so call that procedure
1535:
1536: IF mrp_kanban_plan_pk.g_debug THEN
1537: mrp_kanban_plan_pk.g_log_message := 'Calling CALC_LOW_LEVEL_code function';
1538: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1539: END IF;
1540:
1533: -- now we are ready for our low level code calculation
1534: -- so call that procedure
1535:
1536: IF mrp_kanban_plan_pk.g_debug THEN
1537: mrp_kanban_plan_pk.g_log_message := 'Calling CALC_LOW_LEVEL_code function';
1538: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1539: END IF;
1540:
1541: IF NOT Calc_Low_Level_code THEN
1534: -- so call that procedure
1535:
1536: IF mrp_kanban_plan_pk.g_debug THEN
1537: mrp_kanban_plan_pk.g_log_message := 'Calling CALC_LOW_LEVEL_code function';
1538: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1539: END IF;
1540:
1541: IF NOT Calc_Low_Level_code THEN
1542: RETURN FALSE;
1541: IF NOT Calc_Low_Level_code THEN
1542: RETURN FALSE;
1543: END IF;
1544:
1545: mrp_kanban_plan_pk.g_stmt_num := 140;
1546: IF mrp_kanban_plan_pk.g_debug THEN
1547: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : ' ||
1548: to_char (mrp_kanban_plan_pk.g_stmt_num);
1549: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1542: RETURN FALSE;
1543: END IF;
1544:
1545: mrp_kanban_plan_pk.g_stmt_num := 140;
1546: IF mrp_kanban_plan_pk.g_debug THEN
1547: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : ' ||
1548: to_char (mrp_kanban_plan_pk.g_stmt_num);
1549: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1550: mrp_kanban_plan_pk.g_log_message := 'Calling CHECK_FOR_LOOPS function';
1543: END IF;
1544:
1545: mrp_kanban_plan_pk.g_stmt_num := 140;
1546: IF mrp_kanban_plan_pk.g_debug THEN
1547: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : ' ||
1548: to_char (mrp_kanban_plan_pk.g_stmt_num);
1549: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1550: mrp_kanban_plan_pk.g_log_message := 'Calling CHECK_FOR_LOOPS function';
1551: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1544:
1545: mrp_kanban_plan_pk.g_stmt_num := 140;
1546: IF mrp_kanban_plan_pk.g_debug THEN
1547: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : ' ||
1548: to_char (mrp_kanban_plan_pk.g_stmt_num);
1549: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1550: mrp_kanban_plan_pk.g_log_message := 'Calling CHECK_FOR_LOOPS function';
1551: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1552: END IF;
1545: mrp_kanban_plan_pk.g_stmt_num := 140;
1546: IF mrp_kanban_plan_pk.g_debug THEN
1547: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : ' ||
1548: to_char (mrp_kanban_plan_pk.g_stmt_num);
1549: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1550: mrp_kanban_plan_pk.g_log_message := 'Calling CHECK_FOR_LOOPS function';
1551: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1552: END IF;
1553:
1546: IF mrp_kanban_plan_pk.g_debug THEN
1547: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : ' ||
1548: to_char (mrp_kanban_plan_pk.g_stmt_num);
1549: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1550: mrp_kanban_plan_pk.g_log_message := 'Calling CHECK_FOR_LOOPS function';
1551: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1552: END IF;
1553:
1554:
1547: mrp_kanban_plan_pk.g_log_message := 'Debug Statement Number : ' ||
1548: to_char (mrp_kanban_plan_pk.g_stmt_num);
1549: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1550: mrp_kanban_plan_pk.g_log_message := 'Calling CHECK_FOR_LOOPS function';
1551: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1552: END IF;
1553:
1554:
1555: -- after low level code calculation, if we have component items
1564:
1565: EXCEPTION
1566:
1567: WHEN OTHERS THEN
1568: mrp_kanban_plan_pk.g_log_message := 'SNAPSHOT_ITEM_LOCATIONS Sql Error ';
1569: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1570: mrp_kanban_plan_pk.g_log_message := sqlerrm;
1571: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1572: RETURN FALSE;
1565: EXCEPTION
1566:
1567: WHEN OTHERS THEN
1568: mrp_kanban_plan_pk.g_log_message := 'SNAPSHOT_ITEM_LOCATIONS Sql Error ';
1569: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1570: mrp_kanban_plan_pk.g_log_message := sqlerrm;
1571: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1572: RETURN FALSE;
1573:
1566:
1567: WHEN OTHERS THEN
1568: mrp_kanban_plan_pk.g_log_message := 'SNAPSHOT_ITEM_LOCATIONS Sql Error ';
1569: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1570: mrp_kanban_plan_pk.g_log_message := sqlerrm;
1571: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1572: RETURN FALSE;
1573:
1574: END SNAPSHOT_ITEM_LOCATIONS;
1567: WHEN OTHERS THEN
1568: mrp_kanban_plan_pk.g_log_message := 'SNAPSHOT_ITEM_LOCATIONS Sql Error ';
1569: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1570: mrp_kanban_plan_pk.g_log_message := sqlerrm;
1571: MRP_UTIL.MRP_LOG (mrp_kanban_plan_pk.g_log_message);
1572: RETURN FALSE;
1573:
1574: END SNAPSHOT_ITEM_LOCATIONS;
1575: