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

 

 

1)   Custom.pll常用代码示例

Item属性修改

                                                     i.         获取当前FormBlock的名称

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界面

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

--注意:代码中用到了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上传到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

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值