Oracle EBS 根据工作日历取工作日
2012-12-26 10:06
393 查看
/*===================================================== 根据NLT工作日历 如果p_due_date 是工作日, 返回p_due_date 如果p_due_date 不是工作日,取得 p_due_date 之前最近的一个工作日,返回 Add by xiaoiqng.zhang@2012-12-05 =====================================================*/ FUNCTION get_pre_work_day(p_due_date IN DATE) RETURN DATE IS l_api_name CONSTANT VARCHAR2(30) := 'GET_PRE_WORK_DAY'; l_moudle CONSTANT VARCHAR2(100) := g_pkg_name || '.' || l_api_name || ' : '; l_fix_due_date DATE; --向前推至最近的一个“工作日”,即支付开始日 l_calendar_code VARCHAR2(100) := 'CAL_FIN'; l_due_date DATE; --待定支付开始日 BEGIN l_due_date := p_due_date; SELECT MAX(bcd.calendar_date) INTO l_fix_due_date FROM bom_calendar_dates bcd WHERE bcd.calendar_code = l_calendar_code AND NOT EXISTS (SELECT 'holiday', bce.exception_date FROM bom_calendar_exceptions bce WHERE bce.calendar_code = l_calendar_code AND bce.exception_date = bcd.calendar_date) AND bcd.calendar_date <= l_due_date AND bcd.calendar_date > l_due_date - 15 AND to_char(bcd.calendar_date, 'D') NOT IN ('1', '7'); dbms_output.put_line(to_char(l_fix_due_date, 'YYYY-MM-DD')); RETURN l_fix_due_date; EXCEPTION WHEN no_data_found THEN dbms_output.put_line(l_moudle || ' can not found!'); cux_avic_conc_utl.log_msg(l_moudle || ' can not found!'); RAISE fnd_api.g_exc_error; WHEN too_many_rows THEN dbms_output.put_line(l_moudle || ' too many rows'); cux_avic_conc_utl.log_msg(l_moudle || ' too many rows'); RAISE fnd_api.g_exc_error; WHEN OTHERS THEN dbms_output.put_line(l_moudle || 'unexception error occured!'); cux_avic_conc_utl.log_msg(l_moudle || 'unexception error occured!'); RAISE fnd_api.g_exc_error; END;
取日期之后最近的工作日
/*===================================================== 根据NLT工作日历 如果p_due_date 是工作日, 返回p_due_date 如果p_due_date 不是工作日,取得 p_due_date 之后最近的一个工作日,返回 Add by xiaoiqng.zhang@2012-12-05 =====================================================*/ FUNCTION get_after_work_day(p_due_date IN DATE) RETURN DATE IS l_api_name CONSTANT VARCHAR2(30) := 'GET_AFTER_WORK_DAY'; l_moudle CONSTANT VARCHAR2(100) := g_pkg_name || '.' || l_api_name || ' : '; l_fix_due_date DATE; --向前推至最近的一个“工作日”,即支付开始日 l_calendar_code VARCHAR2(100) := 'CAL_FIN'; l_due_date DATE; --待定支付开始日 BEGIN l_due_date := p_due_date; SELECT MIN(bcd.calendar_date) INTO l_fix_due_date FROM bom_calendar_dates bcd WHERE bcd.calendar_code = l_calendar_code AND NOT EXISTS (SELECT 'holiday', bce.exception_date FROM bom_calendar_exceptions bce WHERE bce.calendar_code = l_calendar_code AND bce.exception_date = bcd.calendar_date) AND bcd.calendar_date >= l_due_date AND bcd.calendar_date < l_due_date + 15 AND to_char(bcd.calendar_date, 'D') NOT IN ('1', '7'); dbms_output.put_line(to_char(l_fix_due_date, 'YYYY-MM-DD')); RETURN l_fix_due_date; EXCEPTION WHEN no_data_found THEN dbms_output.put_line(l_moudle || ' can not found!'); cux_avic_conc_utl.log_msg(l_moudle || ' can not found!'); RAISE fnd_api.g_exc_error; WHEN too_many_rows THEN dbms_output.put_line(l_moudle || ' too many rows'); cux_avic_conc_utl.log_msg(l_moudle || ' too many rows'); RAISE fnd_api.g_exc_error; WHEN OTHERS THEN dbms_output.put_line(l_moudle || 'unexception error occured!'); cux_avic_conc_utl.log_msg(l_moudle || 'unexception error occured!'); RAISE fnd_api.g_exc_error; END;
相关文章推荐
- 根据工作日历推算工作日的算法
- Oracle EBS 11i 表结构--我工作中常用(PO and OM Module)
- Oracle EBS R12 - 根据request_id查trace文件的SQL
- java 根据开始日期 ,需要的工作日天数 ,计算工作截止日期,并返回截止日期
- 根据工厂日历获取两日期之间的工作天数的函数
- Oracle - EBS: SQL&PL/SQL 如何根据flag参数决定是否按照某些字段group分组
- Oracle EBS - SQL&PL/SQL: 根据request id找trace文件
- Oracle EBS新建Java 并发程序(Java Concurrent Program)
- 执行commit时oracle做哪些工作
- ORACLE EBS CUX用户的创建(转)
- Java SSH 项目总结——设定工作日日历
- Oracle EBS R12.2最大的改进--Online Patching
- oracle 根据事务号 xid 如何找到对应的那个语句
- Oracle - EBS: Form开发常见问题
- 如何查看非自己提交的请求的结果 - 深入浅出Oracle EBS之杂项技术荟萃
- oracle ebs dba都做什么?
- Linq to Oracle 使用教程(一)准备工作
- Oracle EBS R12 - 利用PLSQL取得/破解apps密码和EBS中的用户密码
- Oracle EBS Add Responsibility to User by the Responsibility reference of Other User.
- Oracle EBS R12 WIP Component Issue&Return Process