Oracle EBS ERP之报表开发—条件筛选按钮和组件开发
当我们进行报表开发的时候,进行条件筛选在业务上是必要的。这不仅可以让用户快速得到自己想要的报表数据,并且进行筛选后,数据查询的速度将会得到不同程度的提升。
这项业务功能关键分为2部分:筛选按钮的开发和筛选条件输入框的开发,各自的实现如下,都是很简单的技术:
一 筛选按钮
假设我例子中,报表开发的过程代码是:cux_ordersum_report_pkg.sales_comp
首先进入FORM中,对于筛选按钮,我们需要对其创建一个触发器:
WHEN-BUTTON-PRESSED
填入下面的模板内容:
DECLAREv_request_id NUMBER;BEGINif :item.PLAN_DATE_FROM is not null and :item.PLAN_DATE_TO is null then
fnd_message.set_name('FND','请输入日期 ');fnd_message.show;raise form_trigger_failure;
end if;if :item.PLAN_DATE_FROM is null and :item.PLAN_DATE_TO is not null then
fnd_message.set_name('FND','请输入日期 ');fnd_message.show;raise form_trigger_failure;
end if;v_request_id := submit_request('CUX','CUX_ORDERSUM_SALES_COMP','','',FALSE,:item.ou,:item.ORDER_DATE_FROM,:item.ORDER_DATE_TO,:item.PLAN_DATE_FROM,:item.PLAN_DATE_TO,:item.order_type,:item.order_number,:item.sale_number,:item.currency,:item.SALESREP,:item.CRM_YEJI_DEP,:item.CUSTOMER1,:item.CUSTOMER2,:item.CUSTOMER3,:item.CUSTOMER4,:item.CUSTOMER5,:item.IDELIVERY_ORDER_TYPE,:item.ACCOUNT_NAME,:item.ATTRIBUTE19,chr(0));IF v_request_id = 0 THENfnd_message.retrieve;fnd_message.error;ELSE:item.request_id := v_request_id;fnd_message.set_name('FND','并发请求ID: ' || v_request_id);fnd_message.show;END IF;COMMIT;clear_message;fnd_function.execute(function_name => 'FND_FNDRSRUN',open_flag => 'Y',session_flag => 'Y',other_params => 'DODT_REQ_ID="' || v_request_id || '"');
END;
代码功能分析
-
输入验证:检查计划日期范围的完整性
-
提交并发请求:使用
SUBMIT_REQUEST
函数提交一个并发程序。(值得注意的是:在EBS中,CUX_ORDERSUM_SALES_COMP这个位置填入的
是并发程序的简称(Short Name),而不是存储过程名。) -
处理返回结果:获取请求ID并显示给用户
-
打开请求查看器:使用
FND_FUNCTION.EXECUTE自动
打开请求查看窗口
二 筛选条件输入框
这就是平平无奇的 普通的 配置的了 不同类型的输入框配置可以参考下面文章:
FORM开发指南-第四弹:参数、List、LOV、字段和记录控制、日历_ebsform 列表的值在哪设置-CSDN博客