506629361 发表于 2015-9-23 09:42:26

EBS form的一些知识

  尽管Oracle的Developer工具已经升级到9i、10g,但EBS中使用的Forms Server和Forms Builder版本还是6i,今后的开发将逐步转移到Java,Oracle将来也不会在EBS中使用高于6i的Forms。
  Developer 6i的安装不够友好,必须安装到Default Home,为避免手工修改注册表的烦恼,最好先安装6i,再安装其他Oracle产品。
  使用Form创建一些数据对象
      
[*]创建List   

  其中,Mspping of Other Values 这个属性,他的意思是,
  从数据库中读出来的数据,不在这个列表内(这里是I和E),那么要映射为I还是E,如果不映射,那么该条记录将无法在Form中显示出来,表现出来的现象就是“数据库和View中明明有,界面却看不到”。
  删除List中的条目,使用Ctrl+Shift+<删除快捷键
       
[*]LOV 注意事项:   
  不管是自动选择还是手工选择,只有“选择”了,才会触发LOV中各列的值返回给对   
应的目标Item;而不验证的LOV就要注意了,因为其可能没有经过“选择”这一步。
  LOV还有个麻烦的问题,如果清空了Item的值,因为空值不触发验证,这样之前返回   
到各个目标Item上的值并没有自动被清空,需要写代码处理。
       
[*]字段和记录的控制   
  字段的控制,最常见的就是默认值、是否必需、是否可以更新、是否可以F11查询。其   
他的都可以顾名思义,可直接看各个属性。
  字段控制实例:
  Customer、Sales Person、Price List在状态为非“Entered”的情况下,才不可更新   
的,这需要用代码实现。在Block的WHEN-NEW-RECORD-INSTANCE触发器中写入      
下代码,最好写成program unit:      
      
       if :ORDER_HEADERS.FLOW_STATUS_CODE = 'ENTERED' then
app_item_property.set_property('ORDER_HEADERS.CUSTOMER_NAME',UPDATE_ALLOWED,PROPERTY_TRUE);
app_item_property.set_property('ORDER_HEADERS.SALESREP_NAME',UPDATE_ALLOWED,PROPERTY_TRUE);
app_item_property.set_property('ORDER_HEADERS.PRICE_LIST_NAME',UPDATE_ALLOWED,PROPERTY_TRUE);
else
app_item_property.set_property('ORDER_HEADERS.CUSTOMER_NAME',UPDATE_ALLOWED,PROPERTY_FALSE);
app_item_property.set_property('ORDER_HEADERS.SALESREP_NAME',UPDATE_ALLOWED,PROPERTY_FALSE);
app_item_property.set_property('ORDER_HEADERS.PRICE_LIST_NAME',UPDATE_ALLOWED,PROPERTY_FALSE);
end if


  记录的控制,最常见就是显示条数、是否可增/删/改/查、是否可以F11查询、是否显
示滚动条。本例需要实现,在状态为非“Entered”的情况下,记录不可删除,这样需
要在Block的WHEN-NEW-RECORD-INSTANCE触发器中追加代码(红色部分),最
好写成program unit:



if :ORDER_HEADERS.FLOW_STATUS_CODE = 'ENTERED' then
app_item_property.set_property('ORDER_HEADERS.CUSTOMER_NAME',UPDATE_ALLOWED,PROPERTY_TRUE);
app_item_property.set_property('ORDER_HEADERS.SALESREP_NAME',UPDATE_ALLOWED,PROPERTY_TRUE);
app_item_property.set_property('ORDER_HEADERS.PRICE_LIST_NAME',UPDATE_ALLOWED,PROPERTY_TRUE);
set_block_property('ORDER_HEADERS',DELETE_ALLOWED,PROPERTY_TRUE);
else
app_item_property.set_property('ORDER_HEADERS.CUSTOMER_NAME',UPDATE_ALLOWED,PROPERTY_FALSE);
app_item_property.set_property('ORDER_HEADERS.SALESREP_NAME',UPDATE_ALLOWED,PROPERTY_FALSE);
app_item_property.set_property('ORDER_HEADERS.PRICE_LIST_NAME',UPDATE_ALLOWED,PROPERTY_FALSE);
set_block_property('ORDER_HEADERS',DELETE_ALLOWED,PROPERTY_FALSE);
end if;


[*]日历控件
  1、 编写Item的KEY-LISTVAL触发器:calendar.show;
2、 设置Item的List of Values属性:ENABLE_LIST_LAMP
3、 设置Item的Validate from List属性:No


[*]
页: [1]
查看完整版本: EBS form的一些知识