FORM个性化的应用实例文档作者:YangHe创建日期:5/20/2007最近更新:2/3/2020控制编号:FORM个性化V1.0文档版本:1.0审批:松下富士通汉得拷贝数_____FORM个性化V1.0FORM个性化的应用实例文档控制2CompanyConfidential-Forinternaluseonly文档控制变更记录日期作者版本变更参考5/20/2007YangHe1新创建的文档审阅姓名职位分发拷贝数姓名地点1111FORM个性化V1.0FORM个性化的应用实例文档控制3CompanyConfidential-Forinternaluseonly目录文档控制...................................................................................................................................2概述...........................................................................................................................................4安装环境............................................................................................................................4安装前准备........................................................................................................................4阅读说明及约定................................................................................................................4FORM个性化...........................................................................................................................5协亨项目ORACLE销售订单录入控制..........................................................................5协亨项目ORACLE子库存转移控制............................................................................12协亨项目ORACLE杂项事务处理控制........................................................................17添加菜单项调用系统功能..............................................................................................20已解决和未解决的问题.........................................................................................................38未解决问题......................................................................................................................38已解决问题......................................................................................................................38FORM个性化V1.0FORM个性化的应用实例概述4CompanyConfidential-Forinternaluseonly概述FORM个性化是.10新增的功能。通过个性化设置,我们可以不必去修改ORACLE的FORM源码而实现FORM标准功能的修改,因为个性化代码是独立储存在数据库表中的,FORM的升级均对此无影响。所以在项目上要对FORM进行修改时,如果能行,最好还是用FORM个性化来实现这里顺便提下两个预置文件,一个是’HideDiagnosticsmenuentry’,用来控制help菜单下的Diagnostics是否隐藏,默认为不隐藏。一个是’Utilities:Diagnostics’用来控制进入诊断模式时是否需要apps密码,默认为需要密码。根据具体需要看是否设置。FORM个性化触发器事件有五个FORM自带的触发器动作:WHEN-NEW-FORM-INSTANCE、WHEN-NEW-BLOCK-INSTANCE、WHEN-NEW-RECORD-INSTANCE、WHEN-NEW-ITEM-INSTANCE、WHEN-VALIDATE-RECORD以及MENU、SPECIAL(点击自定义的菜单动作,最后的例子中我们可以看到)。通过这些触发器事件,我们可以实现改变ITEMS\BLOCKS\CANVASES\WINDOWS\REGIONS等的属性及值、执行FORM的内置函数、显示错误\警告\MESSAGE信息、显示DEBUG信息、自定义一个菜单项来执行应用中的某功能、创建一个全局变量来传递信息等。FORM个性化操作起来比较简单,ORACLE有一个专门的文档对其进行介绍的,详见METALINKNote:279034.1。这里简单介绍一下在实际项目中的几个应用。安装环境硬件平台:IBM操作系统及版本:OracleRDBMS版本:9.2.0.6.0OracleEBS版本:11.5.10.2安装前准备以上操作,如有疑问,请向系统管理员寻求帮助。阅读说明及约定本文中蓝色字体为需要注意的内容。本文中红色字体为特别重要的内容。本文中黑色粗体10号字为输入的命令。FORM个性化V1.0FORM个性化的应用实例FORM个性化5CompanyConfidential-ForinternaluseonlyFORM个性化以下介绍的几个FORM个性化应用大部分是基于上海协亨信息科技有限公司ERP项目的实际开发。协亨项目ORACLE销售订单录入控制项目背景及业务需求:协亨手机连锁销售集团是一家主要经营手机销售的连锁零售企业。其在全国有几百家门店,当门店的POS系统上线后,日常销售都是在POS系统中完成的,通过接口传给ORACLE自动生成销售订单,在ORACLE中我们禁止手工录入这个门店的销售订单。具体的控制方法是:把订单头的销售员设置成必录字段。在离开该字段的时候添加校验:根据销售员查找门店信息,若找不到,表示这是跟门店无关的销售,不控制。若找到,则判断该门店是否已经POS上线,如果已经是POS上线的并且POS控制类型=现实门店,那么就不能通过验证。否则可以通过。销售超级用户职责/订单;退货/销售订单/帮助/诊断/自定义代码/个性化在Oracle的订单录入界面,禁止录入这个门店的销售订单。在销售订单FORM下进入FORM个性化:FORM个性化界面条件伪代码:FORM个性化V1.0FORM个性化的应用实例FORM个性化6CompanyConfidential-Forinternaluseonly销售员id在客户化表XH_SHOP_INFO中有对应的有效门店,且POS上线日期非空,且门店类型为现实门店。序号说明触发器事件触发器对象条件10FORBIDSOIMP0RTWHEN-VALIDATE-RECORDORDER:ORDER.SALESREP_IDIN(SELECTSALESREP_IDFROMXH_SHOP_INFOWHERENVL(END_DATE_ACTIVE,SYSDATE+1)TRUNC(SYSDATE))AND(SELECTPOS_ONLINE_DATEFROMXH_SHOP_INFOWHERENVL(END_DATE_ACTIVE,SYSDATE+1)TRUNC(SYSDATE)ANDSALESREP_ID=:ORDER.SALESREP_ID)ISNOTNULLAND(SELECTPOS_CONTROL_TYPEFROMXH_SHOP_INFOWHERENVL(END_DATE_ACTIVE,SYSDATE+1)TRUNC(SYSDATE)ANDSALESREP_ID=:ORDER.SALESREP_ID)='REAL'活动FORM个性化V1.0FORM个性化的应用实例FORM个性化7CompanyConfidential-Forinternaluseonly符合条件的记录在保存时报以下错误:该销售员对应的门店POS已上线,不允许在ORACLE录入订单序号类型消息类型消息文本10消息错误该销售员对应的门店POS已上线,不允许在ORACLE录入订单同时对订单行也要进行限制序号说明触发器事件触发器对象条件FORM个性化V1.0FORM个性化的应用实例FORM个性化8CompanyConfidential-Forinternaluseonly序号说明触发器事件触发器对象条件10FORBIDSOIMP0RTLINEWHEN-VALIDATE-RECORDLINE:ORDER.SALESREP_IDIN(SELECTSALESREP_IDFROMXH_SHOP_INFOWHERENVL(END_DATE_ACTIVE,SYSDATE+1)TRUNC(SYSDATE))AND(SELECTPOS_ONLINE_DATEFROMXH_SHOP_INFOWHERENVL(END_DATE_ACTIVE,SYSDATE+1)TRUNC(SYSDATE)ANDSALESREP_ID=:ORDER.SALESREP_ID)ISNOTNULLAND(SELECTPOS_CONTROL_TYPEFROMXH_SHOP_INFOWHERENVL(END_DATE_ACTIVE,SYSDATE+1)TRUNC(SYSDATE)ANDSALESREP_ID=:ORDER.SALESREP_ID)='REAL'活动序号类型消息类型消息文本10消息错误该销售员对应的门店POS已上线,不允许在ORACLE录入订单看实际中的应用情况:FORM个性化V1.0FORM个性化的应用实例FORM个性化9CompanyConfidential-Forinternaluseonly录入销售订单,销售人员为’1112073曹杨二店’,该店POS_ONLINE_DATE不为空,且POS_CONTROL_TYPE=‘REAL’,即POS上线日期非空,且门店类型为现实门店。新增一条规则,设置销售人员为必需字段序号说明触发器事件触发器对象条件10设置销售人员为必输字段WHEN-NEW-RECORD-INSTANCEORDERFORM个性化V1.0FORM个性化的应用实例FORM个性化10CompanyConfidential-Forinternaluseonly活动序号类型对象类型目标对象特性名称值10特性项目ORDER.SALESREP_MIRREQUIRED(APPLICATIONSCOVER)真FORM个性化V1.0FORM个性化的应用实例FORM个性化11CompanyConfidential-Forinternaluseonly看实际中的应用情况:当我们新建一个销售订单