技术开发 频道

ORACLEERP开发基础之EBS开发基础

  调用会计科目弹性域

  1.首先在创建数据表时,添一个字段用来保存会计科目的ID。如:CODE_COMBINATION_ID

  2.在FORM相应的数据块增加两个ITEM,用来显示科目NUMBER与DESCRITION。

  例:GL_CODE_NUMBER、GL_CODE_DESC

  注 : ENABLE_LIST_LAMP是TEMPLATE模板自带的,无须手工去定义。 将GL_CODE_NUMBER项的LOV设成“ENABLE_LIST_LAMP”,数据库项设为“否”。 将GL_CODE_NUMBER“从列表中验证”属性设成否。

  3.在Form Level 的WHEN-NEW-FORM-INSTANCE Trigger初始化弹性域

  FND_KEY_FLEX.DEFINE(BLOCK => 'BlockName ',

  FIELD => 'GL_CODE_NUMBER',

  ID => 'CODE_COMBINATION_ID',

  DESCRIPTION => 'GL_CODE_DESC',

  APPL_SHORT_NAME => 'SQLGL',

  CODE => 'GL#', NUM => 101, --STRUCTURE Number REQUIRED => 'N' );

  说明:APPL_SHORT_NAME查找:系统管理员=>应用=>注册

  CODE查找:应用开发员=>键=>注册

  NUM查

  4.可以在GL_CODE_NUMBER项的WHEN-VALIDATE-ITEM触发器中,对所选择的科目进行核查。

  IF : BlockName.CODE_COMBINATION_ID = -1 then

  fnd_message.debug('所选科目组合无效!');

  raise form_trigger_failure;

  end if;

  5、完成效果:

  键弹性域与说明性弹性域明显的区别。就是使用键弹性域的数据表只保留了ID。以会计科目弹性域为例,数据表只保存了ID(即CODE_COMBINATION_ID,这个字段是对应会计科目的ID)。GL_CODE_NUMBER、GL_CODE_DESC都只是控制块的ITEM,通过CODE_COMBINATION_ID来查询对应的科目。

  EBS11i FormMVC模式

  一个同事在的视频会议上提到,在做EBS开发时,要用MVC模式来满足不断在变化的业务需求。很有意思的话题,值得展开讨论。JAVA设计模式的书偶看了N次,但只会在JAVA应用,但从未想过在其他的4GL编程语言实现。以下是我的理解。 首先,按JAVA的那一套,MVC是指MODEL(模型层)、VIEW(表现层)、CONTROLLER(控制层)的缩写。编写软件为什么分层,这个是软件工程的需求。也就是说分层的目的是提高软件的可维护性,避免“动一牵百”的修改软件。 其次,按照这种软件分层原理,在JAVA中比较容易实现。Struts就是这类比较典型应用。模型层可以用实体类来实现,表现层可以用JSP+STRUTS标签实现,控制层可以action类实现。那么在ORACL FORMS如何实现分层呢?以下对号入座的想法。 MODEL用数据块来实现、VIEW用FORM界面实现、控制层呢?MVC中最为关键的是CONTROLLER。因为CONTROLLER实现业务逻辑与流程流转。并且按照设计模式的要求,CONTROLLER又被分成若干小层,如DAO层、SERVICES层等等,并且带来的“面向接口编程”之方法。ORACLE FORM实现业务逻辑与界面分离是通过程序单元来实现,控制层具体表现在ORACLE FORMS当中没有,只能通过繁琐的PL/SQL语句实现。 不知道这种理解对不对。这个话题是很有意思的,大家觉得呢?欢迎讨论哦。

  EBS预警功能自定义开发

  EBS预警分为事件预警和定期预警。预警功能非常强大,本例以订单录入后,以邮件的形式通知财务主管进行“订单登记”审核。

  1、 定义预警。

  操作路径:预警系统管理器=>预警=>定义

  2、 编写SQL语句(注:SQL必须包含INTO、where rowid=:rowid)

  select ORDER_NUMBER into &order_number from OE_ORDER_HEADERS_all head WHERE rowid = :ROWID

  3、 点击上图中的“活动按钮”。

  4、 点击上图中的“活动详细资料”按钮。

  5、 定义活动集。

  6、 预警安装

  点击“预警详细资料”按钮。

  7、 完成效果如下:

6
相关文章