2014-05-31 BaoXinjian In Capgemini
一、摘要
custom.pll 一个每次form启动时都会调用的pll包,因此有些对标准form的客制化可以在custom.pll中实现
个人感觉和form个性化有类似性,区别是form个性化通过设定去设定,而custom.pll通过代码中实现
而且对custom.pll的修改会影响所有的form调用,所以对代码的可控性和效率要求比较高
而Form的个性化,影响的定义有function level 和 form level,所以只对所设定的function或form产生印象,修改存在问题,不会影响所有的form
其他引用了网络定义
二、案例
需求:用户要求在EBS 日记账功能菜单项中添加一个按钮
1. 下载Custom.pll文件至本地
2. 新增bxjcustom.pll文件,并添加procedure<bxj_pll_event_event>
3. 将bxj_custom.pll添加至custom.pll
4. 编译custom.pll至server上
三、案列测试
Test1. 打开Form后触发Custom.pll
Test2.新增Special
Test3. 点击Button,触发Button下的tigger
四、其他
1. 编译错误,先编译sub pll,后编译parater pll
2. 其他修改pll的例子,去form中的值,调用fnd_request打印报表
1 PROCEDURE event (event_name VARCHAR2) IS 2 form_name VARCHAR2 (30) := NAME_IN (‘system.current_form‘); 3 block_name VARCHAR2 (30) := NAME_IN (‘system.cursor_block‘); 4 BEGIN 5 IF event_name = ‘CALL_CUSTOM_EVENT‘ THEN 6 IF (form_name = ‘APXINWKB‘ AND block_name = ‘INV_SUM_FOLDER‘) THEN 7 DECLARE 8 l_group_name VARCHAR2 (60) := block_name || ‘_MULTI‘; 9 l_rec_group_id recordgroup; 10 l_curr_rec_num NUMBER; 11 l_num_records NUMBER; 12 l_invoice_id_str VARCHAR2 (2000); 13 l_curr_record NUMBER; 14 l_success BOOLEAN; 15 l_request_number NUMBER; 16 e_check_error_exception exception; 17 BEGIN 18 -- 获取选中的invoice 19 l_rec_group_id := FIND_GROUP (block_name || ‘_MULTI‘); 20 IF NOT ID_NULL (l_rec_group_id) THEN 21 l_num_records := GET_GROUP_ROW_COUNT (FIND_GROUP (l_group_name)); 22 IF l_num_records > 0 THEN 23 l_invoice_id_str := NULL; 24 -- 对选中的记录进行循环 25 FOR i IN 1 .. l_num_records LOOP 26 l_curr_rec_num := GET_GROUP_NUMBER_CELL (l_group_name || ‘.REC_NUM‘, i); 27 GO_RECORD (l_curr_rec_num); 28 -- 组合invoice id作为请求参数 29 IF l_invoice_id_str IS NULL THEN 30 l_invoice_id_str := NAME_IN (block_name || ‘.INVOICE_ID‘); 31 ELSE 32 l_invoice_id_str := l_invoice_id_str || ‘,‘ || NAME_IN (block_name || ‘.INVOICE_ID‘); 33 END IF; 34 END LOOP; 35 IF l_invoice_id_str IS NOT NULL THEN 36 l_invoice_id_str := ‘(‘ || l_invoice_id_str || ‘)‘; 37 -- 加载模板 38 l_success := fnd_request.add_layout (‘XXBG‘, ‘XXBGREQP‘,‘zh‘,‘CN‘,‘PDF‘); 39 IF l_success THEN 40 -- 设置请求的业务实体 41 fnd_request.set_org_id (l_org_id); 42 -- 提交打印付款申请请求 43 l_request_number := fnd_request.submit_request (‘XXBG‘, ‘XXBGREQP‘, ‘‘,‘‘,FALSE,l_invoice_id_str,CHR (0),‘‘,‘‘); 44 IF l_request_number = 0 THEN 45 fnd_message.retrieve; 46 fnd_message.error; 47 ELSE 48 IF app_form.quietcommit THEN 49 fnd_message.set_name (‘SQLGL‘,‘GL_REQUEST_SUBMITTED‘); 50 fnd_message.set_TOKEN (‘REQUEST_ID‘,TO_CHAR (l_request_number),FALSE); 51 fnd_message.show; 52 END IF; 53 -- 弹出请求窗口 54 fnd_function.execute (function_name => ‘FND_FNDRSRUN‘,open_flag => ‘Y‘,session_flag => ‘Y‘,other_params => ‘DODT_REQ_ID="‘|| TO_CHAR (l_request_number)|| ‘"‘); 55 END IF; 56 END IF; 57 END IF; 58 GO_RECORD (l_curr_record); 59 ELSE 60 fnd_message.set_name (‘‘, ‘Please select one record‘); 61 RAISE e_check_error_exception; 62 END IF; 63 END IF; 64 EXCEPTION WHEN e_check_error_exception THEN 65 fnd_message.error; 66 RAISE form_trigger_failure; 67 END; 68 END IF; 69 END IF; 70 END event;
Thanks and Regards
Form_通过Custom.pll新增菜单项(案例),布布扣,bubuko.com
原文:http://www.cnblogs.com/eastsea/p/3762586.html