CREATE OR REPLACE procedure APPS.PM as cursor c1 is select * from dev_eam_pm; CUR c1%rowtype; l_pm_schedule_rec eam_pmdef_pub.PM_Scheduling_Rec_Type; l_pm_activities_tbl eam_pmdef_pub.pm_activities_grp_tbl_type; l_pm_day_interval_rules_tbl eam_pmdef_pub.pm_rule_tbl_type; l_pm_runtime_rules_tbl eam_pmdef_pub.pm_rule_tbl_type; l_pm_list_date_rules_tbl eam_pmdef_pub.pm_rule_tbl_type; l_return_status VARCHAR2(240) ; l_msg_count NUMBER ; l_msg_data VARCHAR2(240) ; --l_pm_activities_tbl number; l_new_pm_schedule_id number ; l_sch_id number ; l_rule_id number ; begin open c1; loop fetch c1 into CUR; exit when c1%notfound; select EAM_PM_SCHEDULINGS_S.nextval into l_sch_id from dual; select EAM_PM_SCHEDULING_RULES_S.nextval into l_rule_id from dual; l_pm_schedule_rec.PM_SCHEDULE_ID := l_sch_id; l_pm_schedule_rec.ACTIVITY_ASSOCIATION_ID := CUR.ACTIVITY_ASSOCIATION_ID; l_pm_schedule_rec.NON_SCHEDULED_FLAG := CUR.NON_SCHEDULED_FLAG; l_pm_schedule_rec.FROM_EFFECTIVE_DATE := CUR.FROM_EFFECTIVE_DATE; l_pm_schedule_rec.TO_EFFECTIVE_DATE := CUR.TO_EFFECTIVE_DATE; l_pm_schedule_rec.RESCHEDULING_POINT := CUR.RESCHEDULING_POINT; l_pm_schedule_rec.LEAD_TIME := CUR.LEAD_TIME; l_pm_schedule_rec.DAY_TOLERANCE := CUR.DAY_TOLERANCE; l_pm_schedule_rec.SOURCE_CODE := CUR.SOURCE_CODE; l_pm_schedule_rec.SOURCE_LINE := CUR.SOURCE_LINE; l_pm_schedule_rec.DEFAULT_IMPLEMENT := CUR.DEFAULT_IMPLEMENT; l_pm_schedule_rec.WHICHEVER_FIRST := CUR.WHICHEVER_FIRST; l_pm_schedule_rec.INCLUDE_MANUAL := CUR.INCLUDE_MANUAL; l_pm_schedule_rec.SET_NAME_ID := CUR.SET_NAME_ID; l_pm_schedule_rec.SCHEDULING_METHOD_CODE := CUR.SCHEDULING_METHOD_CODE; l_pm_schedule_rec.TYPE_CODE := CUR.TYPE_CODE; l_pm_schedule_rec.NEXT_SERVICE_START_DATE := CUR.NEXT_SERVICE_START_DATE; l_pm_schedule_rec.NEXT_SERVICE_END_DATE := CUR.NEXT_SERVICE_END_DATE; l_pm_schedule_rec.SOURCE_TMPL_ID := CUR.SOURCE_TMPL_ID; l_pm_schedule_rec.AUTO_INSTANTIATION_FLAG := CUR.AUTO_INSTANTIATION_FLAG; l_pm_schedule_rec.NAME := CUR.NAME; l_pm_schedule_rec.TMPL_FLAG := CUR.TMPL_FLAG; l_pm_schedule_rec.GENERATE_WO_STATUS := CUR.GENERATE_WO_STATUS; if CUR.TYPE_CODE = '20' then l_pm_list_date_rules_tbl(1).rule_id := l_rule_id; l_pm_list_date_rules_tbl(1).PM_SCHEDULE_ID := l_sch_id; l_pm_list_date_rules_tbl(1).RULE_TYPE := CUR.RULE_TYPE; l_pm_list_date_rules_tbl(1).DAY_INTERVAL := NULL; l_pm_list_date_rules_tbl(1).METER_ID := NULL; l_pm_list_date_rules_tbl(1).RUNTIME_INTERVAL := NULL; l_pm_list_date_rules_tbl(1).LAST_SERVICE_READING := NULL; l_pm_list_date_rules_tbl(1).EFFECTIVE_READING_FROM := NULL; l_pm_list_date_rules_tbl(1).EFFECTIVE_READING_TO := NULL; l_pm_list_date_rules_tbl(1).EFFECTIVE_DATE_FROM := NULL; l_pm_list_date_rules_tbl(1).EFFECTIVE_DATE_TO := NULL; l_pm_list_date_rules_tbl(1).LIST_DATE := CUR.LIST_DATE; l_pm_list_date_rules_tbl(1).LIST_DATE_DESC := CUR.LIST_DATE_DESC; else l_pm_day_interval_rules_tbl(1).rule_id := l_rule_id; l_pm_day_interval_rules_tbl(1).PM_SCHEDULE_ID := l_sch_id; l_pm_day_interval_rules_tbl(1).RULE_TYPE := CUR.RULE_TYPE; l_pm_day_interval_rules_tbl(1).DAY_INTERVAL := CUR.DAY_INTERVAL; l_pm_day_interval_rules_tbl(1).METER_ID := NULL; l_pm_day_interval_rules_tbl(1).RUNTIME_INTERVAL := NULL; l_pm_day_interval_rules_tbl(1).LAST_SERVICE_READING := NULL; l_pm_day_interval_rules_tbl(1).EFFECTIVE_READING_FROM := NULL; l_pm_day_interval_rules_tbl(1).EFFECTIVE_READING_TO := NULL; l_pm_day_interval_rules_tbl(1).EFFECTIVE_DATE_FROM := CUR.EFFECTIVE_DATE_FROM; l_pm_day_interval_rules_tbl(1).EFFECTIVE_DATE_TO := CUR.EFFECTIVE_DATE_TO; l_pm_day_interval_rules_tbl(1).LIST_DATE := NULL; l_pm_day_interval_rules_tbl(1).LIST_DATE_DESC := NULL; end if; eam_pmdef_pub.create_pm_def(p_api_version => 1, p_init_msg_list => NULL, p_commit => 'T', p_validation_level => NULL, x_return_status => l_return_status, x_msg_count => l_msg_count, x_msg_data => l_msg_data, p_pm_schedule_rec => l_pm_schedule_rec, p_pm_activities_tbl => l_pm_activities_tbl, p_pm_day_interval_rules_tbl => l_pm_day_interval_rules_tbl, p_pm_runtime_rules_tbl => l_pm_runtime_rules_tbl, p_pm_list_date_rules_tbl => l_pm_list_date_rules_tbl, x_new_pm_schedule_id => l_new_pm_schedule_id ); dbms_output.put_line(l_return_status); dbms_output.put_line(l_msg_count); dbms_output.put_line(l_msg_data); for i in 1..nvl(l_msg_count,0) loop dbms_output.put_line(Fnd_Msg_Pub.Get(i, Fnd_Api.G_FALSE )); end loop; end loop; end ; /