EBS form开发常用的技巧


1.锁住当前行
  Set_Item_Instance_Property('main.import_flag',
                              CURRENT_RECORD,
                              UPDATE_ALLOWED,
                              PROPERTY_OFF);
  用在WHEN-NEW-RECORD-INSTANCE 或者POST-QUERY中。
同:app_item_property.set_property('MAIN.REF_COST',ALTERABLE,PROPERTY_ON)  
2.设置记录的颜色
  app_record.highlight('RED_REC');   
3.窗口居中
  app_window.set_window_position('WINDOW_NAME','CENTER');   
4.最大化窗口时自动扩展文件夹数据块
  在WHEN-WINDOW-RESIZED中添加以下代码即可。 
   if :system.event_window in ('MAIN')  then
       app_folder.event('WHEN-WINDOW-RESIZED'); 
   end if; 
5.Form中调用forms基本参数方式

  FND_FUNCTION.EXECUTE(FUNCTION_NAME=>'CUXSOSETUP',
                       OPEN_FLAG=>'Y',
                       SESSION_FLAG=>'Y',
                       OTHER_PARAMS=>NULL); 
  其它参数传入OTHER_PARAMS即可。 
6.动态设置当前行指定列的必输属性
Set_Item_Instance_Property(item_name, CURRENT_RECORD, REQUIRED,PROPERTY_TRUE);

如:
if :CUX_WORKHOUR_EMP.ATTRIBUTE2 <> :CUX_WORKHOUR_EMP.ATTRIBUTE1 then
    Set_Item_Instance_Property('CUX_WORKHOUR_EMP.MODIFY_REASON',
                                CURRENT_RECORD,
                                REQUIRED,PROPERTY_TRUE);
   if :CUX_WORKHOUR_EMP.MODIFY_REASON is null then     
      :CUX_WORKHOUR_EMP.MODIFY_REASON := '123';    
      :CUX_WORKHOUR_EMP.MODIFY_REASON := null    
      fnd_message.set_string('请输入调整原因.');
      fnd_message.show; 
   end if;
else 
   if :CUX_WORKHOUR_EMP.ATTRIBUTE4 = :CUX_WORKHOUR_EMP.ATTRIBUTE3 then
     Set_Item_Instance_Property('CUX_WORKHOUR_EMP.MODIFY_REASON',
                                  CURRENT_RECORD,
                                  REQUIRED,
                                  PROPERTY_FALSE);
   end if;
end if; 
7.增加菜单 在 FORM级的when-new-form-instance
  APP_SPECIAL.INSTANTIATE('SPECIAL1','取消需求行', '', TRUE, 'LINE'); 

8.LOV指定初始值后需在WHEN-NEW-RRECORD-INSTANCE用以下语句模拟验证, 否则会弹出验证框.代码如下:
app_item_property.set_property('DETAIL_D.DEMAND_STATUS_DESC',
                               ITEM_IS_VALID,
                               property_on);