您的位置:首页 > 数据库 > Oracle

TEC1303.Form个性化技术总结 - 第四部分 Custom.pll个性化开发实例

2016-12-29 13:48 477 查看
 


         第四部分
Custom.pll个性化开发实例

 

1)   Custom.pll常用代码示例


Item属性修改

                                                     i.         获取当前Form和Block的名称
PROCEDUREevent(event_nameVARCHAR2)IS
form_nameVARCHAR2(30)
:= name_in('system.current_form');
block_nameVARCHAR2(30)
:= name_in('system.cursor_block');
BEGIN
NULL;
END;
                                                    ii.         强制字段大写
app_item_property2.set_property('vendor.name', case_restriction,uppercase);
                                                   iii.         更改字段提示
app_item_property2.set_property('vendor.name', PROMPT_TEXT,'Supplier
Name');

                                                   iv.         更改按钮标签
app_item_property2.set_property('vendors.details', LABEL,'More
Details');

                                                    v.         更改字段背景颜色
app_item_property2.set_property('vendor.note',BACKGROUND_COLOR, 'r255g255b0');--
bright yellow

                                                   vi.         隐藏字段
app_item_property2.set_property('vendor.note', DISPLAYED,PROPERTY_OFF);--
hide Notes field

                                                  vii.         设置不可更新和输入
set_block_property(block_name,insert_allowed, property_false);
--不可插入
set_block_property(block_name,update_allowed, property_false);
--不可更新
                                                 viii.         添加菜单
app_special2.instantiate('SPECIAL15','Print
Order &Again', '',TRUE,'LINE');

                                                   ix.         菜单项是否可用
app_special2.enable('SPECIAL15',PROPERTY_ON);--菜单项可用app_special2.enable('SPECIAL15',PROPERTY_OFF);--菜单项不可用


小案例

为菜单添加逻辑
BEGIN
IF(event_name
='SPECIAL15')THEN
IF(form_name
='DEMXXEOR'ANDblock_name
='ORDERS')THEN
/* Add your Print Order
logic here */
RAISEform_trigger_failure;
END IF;
END IF;
END;
复选框菜单
BEGIN
IF(event_name
='WHEN-NEW-FORM-INSTANCE')THEN
--普通菜单
app_special2.instantiate('SPECIAL30', '供应商历史采购cust',NULL,TRUE);
app_special2.enable('SPECIAL30',
property_on);
--带复选框菜单
app_special2.instantiate('SPECIAL4_CHECKBOX',   'TEST_CHECKBOX','',TRUE,'LINE');
--设置复选框勾选
app_special2.set_checkbox('SPECIAL4_CHECKBOX','TRUE');
--获取复选框状态
IFapp_special.get_checkbox('SPECIAL4_CHECKBOX')='TRUE'THEN
fnd_message.debug('Special
4 is True!');
ELSE
fnd_message.debug('Special
4 is False!');
END IF;
END IF;
END;
测试函数或功能是否定义
BEGIN
IF(event_name
='WHEN-NEW-FORM-INSTANCE')THEN
IF(form_name
='DEMXXEOR')THEN
IF(fnd_function.test('DEM_DEMXXEOR_AUTHORIZED'))THEN
/* Add your logic here */
END IF;
END IF;
END IF;
END;
在Event事件中调用外部库的方法
BEGIN
IFfnd_profile.value('USERNAME')
= 'CUST01'THEN
 custom01.event(event_name);
ELSIFfnd_profile.value('USERNAME')
= 'CUST2'THEN
 custom2.event(event_name);
END IF;
END;
给字段赋值
PROCEDUREevent(event_nameVARCHAR2)IS
l_block_nameVARCHAR2(35)
:= name_in('SYSTEM.CURSOR_BLOCK');
--采购单位
l_ordered_uomVARCHAR2(30)
:= name_in('RCV_TRANSACTION.ORDERED_UOM_TL');
--接收数量
l_quantityVARCHAR2(50)
:= name_in('RCV_TRANSACTION.TRANSACTION_QUANTITY');
BEGIN
IFevent
='WHEN-VALIDATE-RECORD'THEN
IFl_block_name
='RCV_TRANSACTION'THEN
copy(l_ordered_uom,'RCV_TRANSACTION.ATTRIBUTE1');
copy(l_quantity,'RCV_TRANSACTION.ATTRIBUTE2');--清空数量
copy(NULL,'RCV_TRANSACTION.ATTRIBUTE3');
END IF;
END IF;
ENDevent;
属性综合应用
PROCEDUREevent(event_nameVARCHAR)IS
form_nameVARCHAR(0)
:= name_in('system.current_form');
block_nameVARCHAR(0)
:= name_in('system.cursor_block');
BEGIN
IF(event_name
='WHEN-NEW-FORM-INSTANCE')THEN
IF(form_name
='FNDSCAUS')THEN
-- hide the Fax field
app_item_property.set_property('user.fax', displayed,
property_off);
-- force E-Mail field to
uppercase
app_item_property.set_property('user.email_address', case_restriction,uppercase);
-- make Description field
required
app_item_property.set_property('user.description', required,
property_on);
-- make Person field magenta
  app_item_property.set_property('user.employee_name', background_color,'rg0b');
-- change prompt of Supplier
field
app_item_property.set_property('user.supplier_name', prompt_text,'Vendor
Name');
END IF;
END IF;
ENDevent;
 

2)   调用并发请求并弹出请求Form界面

案例需求:采购接收界面直接打印采购入库单,并需要直接调出请求查看界面,查看当前请求。


在Custom.pll中编写代码

--注意:代码中用到了app_special2,所以需要加载APPCORE2.pll库

PROCEDURE event(event_nameVARCHAR2)IS
form_name  VARCHAR2(30):= name_in('system.current_form');
block_name VARCHAR2(30):= name_in('system.cursor_block');
BEGIN
/* start个性化调用请求打印入库单*/
IF event_name='WHEN-NEW-FORM-INSTANCE'THEN
IF form_name='RCVTXERT'THEN
app_special2.instantiate('SPECIAL45','打印入库单',NULL,TRUE);
app_special2.enable('SPECIAL45', property_on);
ENDIF;
ENDIF;
IF event_name='SPECIAL45'THEN
IF(form_name='RCVTXERT'AND block_name='RCV_TRANSACTION')THEN
DECLARE
ln_person_id  NUMBER;
lb_boolean    BOOLEANDEFAULTFALSE;
l_org_id      NUMBER;
ln_request_id NUMBER;
BEGIN
--根据库存组织id反求OU
l_org_id := name_in('PARAMETER.ORG_ID');
BEGIN
SELECT ood.operating_unit
INTO l_org_id
FROM org_organization_definitions ood
WHERE ood.organization_id= l_org_id;
EXCEPTION
WHENOTHERSTHEN
l_org_id :=NULL;
END;
lb_boolean := fnd_request.add_layout(template_appl_name=>'HDSP',
template_code      =>'HDSP0025',
template_language  =>'zh',
template_territory =>'CN',
output_format      =>'PDF');
IF lb_booleanTHEN
--给并发请求的业务实体赋值
fnd_request.set_org_id(l_org_id);
--调用报表
ln_request_id := fnd_request.submit_request('HDSP',
'HDSP0025',
NULL,
to_char(SYSDATE,'YYYY/MM/DD HH24:MI:SS'),
FALSE,
'VENDOR',
name_in('PARAMETER.ORG_ID'),
'',
name_in('OVERFLOW_AREA.RECEIPT_NUM'),
name_in('OVERFLOW_AREA.RECEIPT_NUM'),
'',
'',
'',
'',
name_in('RCV_TRANSACTION.TRANSACTION_DATE_NB'),
name_in('RCV_TRANSACTION.TRANSACTION_DATE_NB'),
fnd_global.user_id,
7);
COMMIT;
--弹出请求窗口
fnd_function.execute(function_name=>'FND_FNDRSRUN',
open_flag     =>'Y',
session_flag  =>'Y',
other_params  =>'CONCURRENT_PROGRAM_NAME="HDSP0025"
PROGRAM_APPL_SHORT_NAME="HDSP"
DODT_REQ_ID="'|| to_char(ln_request_id)||'"');
ENDIF;
END;
ENDIF;
ENDIF;
/* end个性化调用请求打印入库单*/
END event;



编译Custom,pll

把custom.pll上传到au目录下面的resource路径中;
工作目录切换到$AU_TOP/resource下编译:

frmcmp_batch Module=$AU_TOP/resource/CUSTOM.pll Userid=apps/apps Module_Type=LIBRARY output_file=$AU_TOP/resource/CUSTOM.plx


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息