87: -- MIDPOINT_BACKWARDS CONSTANT NUMBER := 8;
88: -- CURRENT_OP CONSTANT NUMBER := 9;
89: -- CURRENT_SUB_GRP CONSTANT NUMBER := 11;
90: --
91: -- - If p_scheduleMode = WIP_CONSTANTS.CURRENT_OP,
92: -- p_opSeqNum must be given, only operation
93: -- p_opSeqNum will be scheduled
94: -- - If p_scheduleMode = WIP_CONSTANTS.MIDPOINT,
95: -- p_opSeqNum must be given, all the current and
90: --
91: -- - If p_scheduleMode = WIP_CONSTANTS.CURRENT_OP,
92: -- p_opSeqNum must be given, only operation
93: -- p_opSeqNum will be scheduled
94: -- - If p_scheduleMode = WIP_CONSTANTS.MIDPOINT,
95: -- p_opSeqNum must be given, all the current and
96: -- future operations will be scheduled
97: -- - If p_scheduleMode = WIP_CONSTANTS.MIDPOINT_FORWARDS,
98: -- p_opSeqNum must be given, all operations after and
93: -- p_opSeqNum will be scheduled
94: -- - If p_scheduleMode = WIP_CONSTANTS.MIDPOINT,
95: -- p_opSeqNum must be given, all the current and
96: -- future operations will be scheduled
97: -- - If p_scheduleMode = WIP_CONSTANTS.MIDPOINT_FORWARDS,
98: -- p_opSeqNum must be given, all operations after and
99: -- include p_opSeqNum will be scheduled
100: -- - If p_scheduleMode = WIP_CONSTANTS.MIDPOINT_BACKWARDS,
101: -- p_opSeqNum must be given, all operations before and
96: -- future operations will be scheduled
97: -- - If p_scheduleMode = WIP_CONSTANTS.MIDPOINT_FORWARDS,
98: -- p_opSeqNum must be given, all operations after and
99: -- include p_opSeqNum will be scheduled
100: -- - If p_scheduleMode = WIP_CONSTANTS.MIDPOINT_BACKWARDS,
101: -- p_opSeqNum must be given, all operations before and
102: -- include p_opSeqNum will be scheduled
103: -- - If p_scheduleMode = WIP_CONSTANTS.CURRENT_SUB_GRP,
104: -- p_opSeqNum and p_resSeqNum must be given, only
99: -- include p_opSeqNum will be scheduled
100: -- - If p_scheduleMode = WIP_CONSTANTS.MIDPOINT_BACKWARDS,
101: -- p_opSeqNum must be given, all operations before and
102: -- include p_opSeqNum will be scheduled
103: -- - If p_scheduleMode = WIP_CONSTANTS.CURRENT_SUB_GRP,
104: -- p_opSeqNum and p_resSeqNum must be given, only
105: -- resources with the same (substitute_group_number,
106: -- replacement_group_number) as this resource will be
107: -- scheduled
104: -- p_opSeqNum and p_resSeqNum must be given, only
105: -- resources with the same (substitute_group_number,
106: -- replacement_group_number) as this resource will be
107: -- scheduled
108: -- - If p_scheduleMode = WIP_CONSTANTS.FORWARDS, all the
109: -- current and future operations will be forward
110: -- scheduled,
111: -- p_startDate must be given
112: -- - If p_scheduleMode = WIP_CONSTANTS.BACKWARDS, all the
108: -- - If p_scheduleMode = WIP_CONSTANTS.FORWARDS, all the
109: -- current and future operations will be forward
110: -- scheduled,
111: -- p_startDate must be given
112: -- - If p_scheduleMode = WIP_CONSTANTS.BACKWARDS, all the
113: -- current and future operations will be backward
114: -- scheduled,
115: -- p_endDate must be given
116: --
187: begin
188:
189: l_stmt_num := 5;
190: savepoint SP_WSMIFS_0;
191: if (l_logLevel <= wip_constants.trace_logging) then
192: l_params(1).paramName := 'p_wipEntityID';
193: l_params(1).paramValue := p_wipEntityID;
194: l_params(2).paramName := 'p_orgID';
195: l_params(2).paramValue := p_orgID;
217: if(fnd_api.to_boolean(nvl(p_initMsgList, fnd_api.g_true))) then
218: fnd_msg_pub.initialize;
219: end if;
220:
221: if (l_logLevel <= wip_constants.full_logging) then
222: wip_logger.log('reading lot based job...', l_retStatus);
223: end if;
224:
225: l_copy_type := WSMPUTIL.get_internal_copy_type(p_wipEntityID);
287: into l_job_status
288: from wip_discrete_jobs
289: where wip_entity_id = p_wipEntityID;
290:
291: if(l_job_status = WIP_CONSTANTS.UNRELEASED) then
292: l_stmt_num := 30.2;
293: -- get OP_SEQ_NUM_INCREMENT
294: select nvl(OP_SEQ_NUM_INCREMENT, 10)
295: into l_op_seq_incr
298:
299: l_curJobOpSeqNum := l_op_seq_incr;
300: l_curJobOpSeqid := l_strRtgOpSeqId;
301:
302: else -- l_job_status <> WIP_CONSTANTS.UNRELEASED
303: if( p_opSeqNum < 0 and p_scheduleMode = WIP_CONSTANTS.CURRENT_OP) then
304: -- will trust parameter given by caller
305: l_stmt_num := 30.3;
306: -- get current operation in WO
299: l_curJobOpSeqNum := l_op_seq_incr;
300: l_curJobOpSeqid := l_strRtgOpSeqId;
301:
302: else -- l_job_status <> WIP_CONSTANTS.UNRELEASED
303: if( p_opSeqNum < 0 and p_scheduleMode = WIP_CONSTANTS.CURRENT_OP) then
304: -- will trust parameter given by caller
305: l_stmt_num := 30.3;
306: -- get current operation in WO
307: select operation_seq_num,
323: and (quantity_in_queue <> 0 or
324: quantity_running <> 0 or
325: quantity_waiting_to_move <> 0);
326: end if;
327: end if; -- l_job_status <> WIP_CONSTANTS.UNRELEASED
328:
329: --OPTII-PERF: Check if charges exists is already known
330: -- call discrete_charges_exist
331: if p_charges_exist = 1 THEN
333: elsif p_charges_exist = 2 THEN
334: g_discrete_charges_exist := false;
335: else
336: --charges exist is NULL..
337: if(l_job_status = WIP_CONSTANTS.UNRELEASED) then
338: g_discrete_charges_exist := false;
339: elsif(l_job_status IN (WIP_CONSTANTS.COMPLETED, WIP_CONSTANTS.CLOSED)) then
340: g_discrete_charges_exist := true;
341: else
335: else
336: --charges exist is NULL..
337: if(l_job_status = WIP_CONSTANTS.UNRELEASED) then
338: g_discrete_charges_exist := false;
339: elsif(l_job_status IN (WIP_CONSTANTS.COMPLETED, WIP_CONSTANTS.CLOSED)) then
340: g_discrete_charges_exist := true;
341: else
342: g_discrete_charges_exist := WSM_LBJ_INTERFACE_PVT.discrete_charges_exist(
343: p_wipEntityID,
378: else
379: g_update_current_op := false;
380: end if;
381:
382: if (l_logLevel <= wip_constants.full_logging) then
383: if g_update_current_op then
384: wip_logger.log('schedule: g_update_current_op = true', l_retStatus);
385: else
386: wip_logger.log('schedule: g_update_current_op = false', l_retStatus);
421: raise e_skip_sche;
422: end if;
423: -- EA: BUG3195950
424:
425: if (l_logLevel <= wip_constants.full_logging) then
426: wip_logger.log('scheduling lot based job...', l_retStatus);
427: end if;
428:
429: if(l_resTbls.opSeqNum.count <> 0) then
441: if(x_returnStatus <> fnd_api.g_ret_sts_success) then
442: raise fnd_api.g_exc_unexpected_error;
443: end if;
444:
445: if (l_logLevel <= wip_constants.full_logging) then
446: wip_logger.log('writing lot based job...', l_retStatus);
447: end if;
448: end if;
449:
468: raise fnd_api.g_exc_unexpected_error;
469: end if;
470:
471: l_stmt_num := 70;
472: if (l_logLevel <= wip_constants.trace_logging) then
473: wip_logger.exitPoint(
474: p_procName => 'wsm_infinite_scheduler_pvt.schedule',
475: p_procReturnStatus => x_returnStatus,
476: p_msg => 'success',
501: x_returnStatus := fnd_api.g_ret_sts_unexp_error;
502: wip_utilities.get_message_stack(
503: p_msg => x_errorMsg,
504: p_delete_stack => fnd_api.g_false);
505: if (l_logLevel <= wip_constants.trace_logging) then
506: wip_logger.exitPoint(
507: p_procName => 'wsm_infinite_scheduler_pvt.schedule',
508: p_procReturnStatus => x_returnStatus,
509: p_msg => 'error: ' || x_errorMsg,
525: p_error_text => SQLERRM);
526: wip_utilities.get_message_stack(
527: p_msg => x_errorMsg,
528: p_delete_stack => fnd_api.g_false);
529: if (l_logLevel <= wip_constants.trace_logging) then
530: wip_logger.exitPoint(
531: p_procName => 'wsm_infinite_scheduler_pvt.schedule',
532: p_procReturnStatus => x_returnStatus,
533: p_msg => 'unexp error: ' || x_errorMsg,
689: bdr.available_24_hours_flag,
690: --Bug 4554494
691: --l_hrVal * nvl(muc.conversion_rate,0)
692: nvl(muc.conversion_rate,0)
693: * decode(wor.basis_type, wip_constants.per_lot, 1, wdj.start_quantity)
694: * wor.usage_rate_or_amount
695: / ( 24 * nvl(l_hrVal,1)*least(wor.assigned_units, bdr.capacity_units)
696: * nvl(bdr.utilization, 1) * nvl(bdr.efficiency, 1) ),
697: wor.basis_type,
747: bdr.available_24_hours_flag,
748: --Bug 4554494
749: --l_hrVal * nvl(muc.conversion_rate,0)
750: nvl(muc.conversion_rate,0)
751: * decode(wcor.basis_type, wip_constants.per_lot, 1, wdj.start_quantity)
752: * wcor.usage_rate_or_amount
753: / ( 24 * nvl(l_hrVal,1)* least(wcor.assigned_units, bdr.capacity_units)
754: * nvl(bdr.utilization, 1) * nvl(bdr.efficiency, 1) ),
755: wcor.basis_type,
824:
825: BEGIN
826:
827: l_stat_num := 10;
828: if (l_logLevel <= wip_constants.trace_logging) then
829: l_params(1).paramName := 'p_wipEntityID';
830: l_params(1).paramValue := p_wipEntityID;
831: l_params(2).paramName := 'p_orgID';
832: l_params(2).paramValue := p_orgID;
1023: end if;
1024:
1025: l_stat_num := 70;
1026: -- set the parameters to open the cursor
1027: if(p_scheduleMode = WIP_CONSTANTS.FORWARDS) then
1028: --if(l_cur_job_op_seq IS NOT NULL) then
1029: -- p_opSeqNum := -l_cur_job_op_seq;
1030: --else
1031: -- p_opSeqNum := p_strRtgOpSeqNum;
1031: -- p_opSeqNum := p_strRtgOpSeqNum;
1032: --end if;
1033: p_opSeqNum := null;
1034: p_resSeqNum := null;
1035: elsif(p_scheduleMode = WIP_CONSTANTS.BACKWARDS) then
1036: --p_opSeqNum := p_endRtgOpSeqNum;
1037: p_opSeqNum := null;
1038: p_resSeqNum := null;
1039: elsif(p_scheduleMode = WIP_CONSTANTS.MIDPOINT_FORWARDS) then
1035: elsif(p_scheduleMode = WIP_CONSTANTS.BACKWARDS) then
1036: --p_opSeqNum := p_endRtgOpSeqNum;
1037: p_opSeqNum := null;
1038: p_resSeqNum := null;
1039: elsif(p_scheduleMode = WIP_CONSTANTS.MIDPOINT_FORWARDS) then
1040: if( p_opSeqNum > 0) then
1041: -- should always ignore current op
1042: l_cur_job_op_seq := null;
1043: l_fst_rec_seq_num := l_the_rec_seq_num;
1041: -- should always ignore current op
1042: l_cur_job_op_seq := null;
1043: l_fst_rec_seq_num := l_the_rec_seq_num;
1044: end if;
1045: elsif(p_scheduleMode = WIP_CONSTANTS.MIDPOINT_BACKWARDS) then
1046: if(p_opSeqNum > 0) then
1047: -- should fetch up to p_opSeqNum
1048: l_lst_rec_seq_num := l_the_rec_seq_num;
1049: else
1048: l_lst_rec_seq_num := l_the_rec_seq_num;
1049: else
1050: l_fst_rec_seq_num := null;
1051: end if;
1052: elsif(p_scheduleMode in (WIP_CONSTANTS.CURRENT_OP,
1053: WIP_CONSTANTS.CURRENT_SUB_GRP)) then
1054: if(p_opSeqNum > 0) then
1055: -- should always ignore current op, fetch p_opSeqNum only
1056: l_cur_job_op_seq := null;
1049: else
1050: l_fst_rec_seq_num := null;
1051: end if;
1052: elsif(p_scheduleMode in (WIP_CONSTANTS.CURRENT_OP,
1053: WIP_CONSTANTS.CURRENT_SUB_GRP)) then
1054: if(p_opSeqNum > 0) then
1055: -- should always ignore current op, fetch p_opSeqNum only
1056: l_cur_job_op_seq := null;
1057: l_fst_rec_seq_num := l_the_rec_seq_num;
1059: else
1060: l_fst_rec_seq_num := null;
1061: end if;
1062:
1063: if(p_scheduleMode = WIP_CONSTANTS.CURRENT_SUB_GRP) then
1064: l_res_seq_num := p_resSeqNum;
1065: if(p_opSeqNum > 0) then
1066: l_stat_num := 70.1;
1067: select substitute_group_num,
1114: -- update totalDaysUsg based on scheduled quantity
1115: l_idx := x_resTbls.opSeqNum.first;
1116: while (l_idx IS NOT NULL)
1117: loop
1118: if(l_baseTypes(l_idx) <> wip_constants.per_lot) then
1119: x_resTbls.totalDaysUsg(l_idx) :=
1120: x_resTbls.totalDaysUsg(l_idx)
1121: * g_opQty(x_resTbls.opSeqNum(l_idx))/l_job_start_qty;
1122: end if;
1200: close c_WCORI;
1201: end if;
1202: end if;
1203:
1204: if (l_logLevel <= wip_constants.trace_logging) then
1205: wip_logger.exitPoint(p_procName => 'wsm_infinite_scheduler_pvt.wsmJobReader',
1206: p_procReturnStatus => x_returnStatus,
1207: p_msg => 'success',
1208: x_returnStatus => l_retStatus);
1210:
1211: EXCEPTION
1212: -- BA: BUG3195950
1213: when e_skip_sche then
1214: if (l_logLevel <= wip_constants.trace_logging) then
1215: wip_logger.exitPoint(p_procName => 'wsm_infinite_scheduler_pvt.wsmJobReader',
1216: p_procReturnStatus => x_returnStatus,
1217: p_msg => 'success',
1218: x_returnStatus => l_retStatus);
1224: fnd_msg_pub.add_exc_msg(
1225: p_pkg_name => 'wsm_infinite_scheduler_pvt',
1226: p_procedure_name => 'wsmJobReader',
1227: p_error_text => SQLERRM || ' (reader #' || l_stat_num || ')' );
1228: if (l_logLevel <= wip_constants.trace_logging) then
1229: wip_logger.exitPoint(
1230: p_procName => 'wsm_infinite_scheduler_pvt.wsmJobReader',
1231: p_procReturnStatus => x_returnStatus,
1232: p_msg => 'unexp error: ' || SQLERRM || ' (reader #' || l_stat_num || ')',
1297:
1298: x_returnCode := 0;
1299:
1300: l_stat_num := 10;
1301: if (l_logLevel <= wip_constants.trace_logging) then
1302: l_params(1).paramName := 'p_wipEntityID';
1303: l_params(1).paramValue := p_wipEntityID;
1304: l_params(2).paramName := 'p_orgID';
1305: l_params(2).paramValue := p_orgID;
1338:
1339: if(x_resTbls.opSeqNum.count <> 0) then
1340: l_stat_num := 30;
1341:
1342: if p_scheduleMode = WIP_CONSTANTS.CURRENT_SUB_GRP then
1343:
1344: l_OpStartDate.extend(1);
1345: l_OpEndDate.extend(1);
1346: l_OpQty.extend(1); -- bug 3585783 must initialize this
1377: l_minDate := l_OpStartDate(1);
1378: l_maxDate := l_OpEndDate(1);
1379:
1380:
1381: else -- p_scheduleMode <> WIP_CONSTANTS.CURRENT_SUB_GRP
1382:
1383: l_minDate := null;
1384: l_maxDate := null;
1385: l_minDateYes := null;
1460: l_OpEndDate(i) := l_hashOpEDate(l_curOp);
1461: l_OpQty(i) := g_opQty(l_curOp);
1462: end loop;
1463:
1464: end if; -- p_scheduleMode <> WIP_CONSTANTS.CURRENT_SUB_GRP
1465:
1466: else -- x_resTbls.opSeqNum.count = 0
1467: l_stat_num := 40;
1468: l_OpStartDate.extend(p_opTbl.count);
1580: program_update_date = l_sysDate
1581: where wip_entity_id = p_wipEntityID
1582: and organization_id = p_orgID;
1583:
1584: if(l_logLevel <= wip_constants.full_logging) then
1585: wip_logger.log('wrote job', l_retStatus);
1586: end if;
1587: end if;
1588:
1606: program_update_date = l_sysDate
1607: where wip_entity_id = p_wipEntityID
1608: and organization_id = p_orgID
1609: and operation_seq_num = -p_opTbl(i);
1610: if(l_logLevel <= wip_constants.full_logging) then
1611: wip_logger.log('wrote WO', l_retStatus);
1612: end if;
1613:
1614:
1629: program_update_date = l_sysDate
1630: where wip_entity_id = p_wipEntityID
1631: and organization_id = p_orgID
1632: and operation_seq_num = p_opTbl(i);
1633: if(l_logLevel <= wip_constants.full_logging) then
1634: wip_logger.log('wrote WCO', l_retStatus);
1635: end if;
1636:
1637: --bug 6345672: begin
1652: where wip_entity_id = p_wipEntityID
1653: and organization_id = p_orgID
1654: and operation_seq_num = -p_opTbl(l_cnt_wo);
1655:
1656: if(l_logLevel <= wip_constants.full_logging) then
1657: wip_logger.log('wrote WCO for current op', l_retStatus);
1658: end if;
1659: end if;
1660: --bug 6345672: end
1675: program_update_date = l_sysDate
1676: where wip_entity_id = p_wipEntityID
1677: and organization_id = p_orgID
1678: and operation_seq_num = -p_opTbl(i);
1679: if(l_logLevel <= wip_constants.full_logging) then
1680: wip_logger.log('wrote WRO', l_retStatus);
1681: end if;
1682:
1683: l_stat_num := 100;
1695: program_update_date = l_sysDate
1696: where wip_entity_id = p_wipEntityID
1697: and organization_id = p_orgID
1698: and operation_seq_num = p_opTbl(i);
1699: if(l_logLevel <= wip_constants.full_logging) then
1700: wip_logger.log('wrote WCRO', l_retStatus);
1701: end if;
1702:
1703: --bug 6345672: begin
1716: where wip_entity_id = p_wipEntityID
1717: and organization_id = p_orgID
1718: and operation_seq_num = -p_opTbl(l_cnt_wo);
1719:
1720: if(l_logLevel <= wip_constants.full_logging) then
1721: wip_logger.log('wrote WCRO for current op', l_retStatus);
1722: end if;
1723: end if;
1724: --bug 6345672: end
1751: where wip_entity_id = p_wipEntityID
1752: and organization_id = p_orgID
1753: and operation_seq_num = -x_resTbls.opSeqNum(i)
1754: and resource_seq_num = x_resTbls.resSeqNum(i);
1755: if(l_logLevel <= wip_constants.full_logging) then
1756: wip_logger.log('wrote WOR', l_retStatus);
1757: end if;
1758:
1759: l_stat_num := 120;
1773: where wip_entity_id = p_wipEntityID
1774: and organization_id = p_orgID
1775: and operation_seq_num = x_resTbls.opSeqNum(i)
1776: and resource_seq_num = x_resTbls.resSeqNum(i);
1777: if(l_logLevel <= wip_constants.full_logging) then
1778: wip_logger.log('wrote WCOR', l_retStatus);
1779: end if;
1780:
1781: --bug 6345672: begin
1796: and organization_id = p_orgID
1797: and operation_seq_num = -x_resTbls.opSeqNum(l_cnt_wor)
1798: and resource_seq_num = x_resTbls.resSeqNum(l_cnt_wor);
1799:
1800: if(l_logLevel <= wip_constants.full_logging) then
1801: wip_logger.log('wrote WCOR for current op', l_retStatus);
1802: end if;
1803: end if;
1804: --bug 6345672: end
1817: where wip_entity_id = p_wipEntityID
1818: and organization_id = p_orgID
1819: and operation_seq_num = -x_resTbls.opSeqNum(i)
1820: and resource_seq_num = x_resTbls.resSeqNum(i);
1821: if(l_logLevel <= wip_constants.full_logging) then
1822: wip_logger.log('wrote WORI', l_retStatus);
1823: end if;
1824:
1825: l_stat_num := 140;
1835: where wip_entity_id = p_wipEntityID
1836: and organization_id = p_orgID
1837: and operation_seq_num = x_resTbls.opSeqNum(i)
1838: and resource_seq_num = x_resTbls.resSeqNum(i);
1839: if(l_logLevel <= wip_constants.full_logging) then
1840: wip_logger.log('wrote WCORI', l_retStatus);
1841: end if;
1842:
1843: --bug 6345672: begin
1853: where wip_entity_id = p_wipEntityID
1854: and organization_id = p_orgID
1855: and operation_seq_num = -x_resTbls.opSeqNum(l_cnt_wor)
1856: and resource_seq_num = x_resTbls.resSeqNum(l_cnt_wor);
1857: if(l_logLevel <= wip_constants.full_logging) then
1858: wip_logger.log('wrote WCORI for current op', l_retStatus);
1859: end if;
1860: end if;
1861: --bug 6345672: end
1912: l_progID,
1913: l_sysdate);
1914: end if;
1915: end loop;
1916: if(l_logLevel <= wip_constants.full_logging) then
1917: wip_logger.log('wrote WORU', l_retStatus);
1918: end if;
1919:
1920: l_stat_num := 170;
1968: and woru.wip_entity_id = p_wipEntityID
1969: and woru.organization_id = p_orgID
1970: and wori.operation_seq_num = -x_resTbls.opSeqNum(i)
1971: and wori.resource_seq_num = x_resTbls.resSeqNum(i);
1972: if(l_logLevel <= wip_constants.full_logging) then
1973: wip_logger.log('wrote ' || SQL%ROWCOUNT || ' WROU', l_retStatus);
1974: end if;
1975:
1976:
2035: l_progID,
2036: l_sysdate);
2037: end if;
2038: end loop;
2039: if(l_logLevel <= wip_constants.full_logging) then
2040: wip_logger.log('wrote WCORU', l_retStatus);
2041: end if;
2042:
2043: --bug 6345672: begin
2083: l_progID,
2084: l_sysdate);
2085: end if;
2086:
2087: if(l_logLevel <= wip_constants.full_logging) then
2088: wip_logger.log('wrote WCORU for current op', l_retStatus);
2089: end if;
2090: end if;
2091: --bug 6345672: end
2141: and wcoru.wip_entity_id = p_wipEntityID
2142: and wcoru.organization_id = p_orgID
2143: and wcori.operation_seq_num = x_resTbls.opSeqNum(i)
2144: and wcori.resource_seq_num = x_resTbls.resSeqNum(i);
2145: if(l_logLevel <= wip_constants.full_logging) then
2146: wip_logger.log('wrote ' || SQL%ROWCOUNT || ' WCORU', l_retStatus);
2147: end if;
2148:
2149: --bug 6345672: begin
2198: and wcoru.wip_entity_id = p_wipEntityID
2199: and wcoru.organization_id = p_orgID
2200: and wcori.operation_seq_num = -x_resTbls.opSeqNum(l_cnt_wor)
2201: and wcori.resource_seq_num = x_resTbls.resSeqNum(l_cnt_wor);
2202: if(l_logLevel <= wip_constants.full_logging) then
2203: wip_logger.log('wrote ' || SQL%ROWCOUNT || ' WCORU for current op', l_retStatus);
2204: end if;
2205:
2206: end if;
2207: --bug 6345672: end
2208:
2209: end if;
2210:
2211: if (l_logLevel <= wip_constants.trace_logging) then
2212: wip_logger.exitPoint(
2213: p_procName => 'wsm_infinite_scheduler_pvt.wsmJobWriter',
2214: p_procReturnStatus => x_returnStatus,
2215: p_msg => 'success',
2223: fnd_msg_pub.add_exc_msg(
2224: p_pkg_name => 'wsm_infinite_scheduler_pvt',
2225: p_procedure_name => 'wsmJobWriter',
2226: p_error_text => SQLERRM || ' (writer #' || l_stat_num || ')' );
2227: if (l_logLevel <= wip_constants.trace_logging) then
2228: wip_logger.exitPoint(
2229: p_procName => 'wsm_infinite_scheduler_pvt.wsmJobWriter',
2230: p_procReturnStatus => x_returnStatus,
2231: p_msg => 'unexp error: ' || SQLERRM || ' (writer #' || l_stat_num || ')',