OracleEBSForm个性化地项目的应用实例.docx

上传人:b****7 文档编号:25823575 上传时间:2023-06-15 格式:DOCX 页数:44 大小:1.10MB
下载 相关 举报
OracleEBSForm个性化地项目的应用实例.docx_第1页
第1页 / 共44页
OracleEBSForm个性化地项目的应用实例.docx_第2页
第2页 / 共44页
OracleEBSForm个性化地项目的应用实例.docx_第3页
第3页 / 共44页
OracleEBSForm个性化地项目的应用实例.docx_第4页
第4页 / 共44页
OracleEBSForm个性化地项目的应用实例.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

OracleEBSForm个性化地项目的应用实例.docx

《OracleEBSForm个性化地项目的应用实例.docx》由会员分享,可在线阅读,更多相关《OracleEBSForm个性化地项目的应用实例.docx(44页珍藏版)》请在冰豆网上搜索。

OracleEBSForm个性化地项目的应用实例.docx

OracleEBSForm个性化地项目的应用实例

FORM个性化的应用实例

文档作者:

YangHe

创建日期:

5/20/2007

最近更新:

4/28/2022

控制编号:

FORM个性化V1.0

文档版本:

1.0

 

审批:

松下

富士通

汉得

拷贝数_____

文档控制

变更记录

日期

作者

版本

变更参考

5/20/2007

YangHe

1

新创建的文档

 

审阅

姓名

职位

 

分发

拷贝数

姓名

地点

1

1

1

1

(9-Dec-96)

(9-Dec-96)

概述

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.0

OracleEBS版本:

11.5.10.2

安装前准备

以上操作,如有疑问,请向系统管理员寻求帮助。

阅读说明及约定

❑本文中蓝色字体为需要注意的内容。

❑本文中红色字体为特别重要的内容。

❑本文中黑色粗体10号字为输入的命令。

(2-Dec-96)

(2-Dec-96)

(9-Dec-96)

FORM个性化

以下介绍的几个FORM个性化应用大部分是基于上海协亨信息科技有限公司ERP项目的实际开发。

协亨项目ORACLE销售订单录入控制

项目背景及业务需求:

协亨手机连锁销售集团是一家主要经营手机销售的连锁零售企业。

其在全国有几百家门店,当门店的POS系统上线后,日常销售都是在POS系统中完成的,通过接口传给ORACLE自动生成销售订单,在ORACLE中我们禁止手工录入这个门店的销售订单。

具体的控制方法是:

把订单头的销售员设置成必录字段。

在离开该字段的时候添加校验:

根据销售员查找门店信息,若找不到,表示这是跟门店无关的销售,不控制。

若找到,则判断该门店是否已经POS上线,如果已经是POS上线的并且POS控制类型=现实门店,那么就不能通过验证。

否则可以通过。

销售超级用户职责/订单;退货/销售订单/帮助/诊断/自定义代码/个性化

在Oracle的订单录入界面,禁止录入这个门店的销售订单。

在销售订单FORM下进入FORM个性化:

FORM个性化界面

条件伪代码:

销售员id在客户化表XH_SHOP_INFO中有对应的有效门店,且POS上线日期非空,且门店类型为现实门店。

序号

说明

触发器事件

触发器对象

条件

10

FORBIDSOIMP0RT

WHEN-VALIDATE-RECORD

ORDER

:

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)ISNOTNULL

AND(SELECTPOS_CONTROL_TYPEFROMXH_SHOP_INFOWHERENVL(END_DATE_ACTIVE,SYSDATE+1)>TRUNC(SYSDATE)

ANDSALESREP_ID=:

ORDER.SALESREP_ID)='REAL'

活动

符合条件的记录在保存时报以下错误:

该销售员对应的门店POS已上线,不允许在ORACLE录入订单

序号

类型

消息类型

消息文本

10

消息

错误

该销售员对应的门店POS已上线,不允许在ORACLE录入订单

同时对订单行也要进行限制

序号

说明

触发器事件

触发器对象

条件

10

FORBIDSOIMP0RTLINE

WHEN-VALIDATE-RECORD

LINE

:

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)ISNOTNULL

AND(SELECTPOS_CONTROL_TYPEFROMXH_SHOP_INFOWHERENVL(END_DATE_ACTIVE,SYSDATE+1)>TRUNC(SYSDATE)

ANDSALESREP_ID=:

ORDER.SALESREP_ID)='REAL'

活动

序号

类型

消息类型

消息文本

10

消息

错误

该销售员对应的门店POS已上线,不允许在ORACLE录入订单

看实际中的应用情况:

录入销售订单,销售人员为’1112073曹杨二店’,该店POS_ONLINE_DATE不为空,且POS_CONTROL_TYPE=‘REAL’,即POS上线日期非空,且门店类型为现实门店。

新增一条规则,设置销售人员为必需字段

序号

说明

触发器事件

触发器对象

条件

10

设置销售人员为必输字段

WHEN-NEW-RECORD-INSTANCE

ORDER

活动

序号

类型

对象类型

目标对象

特性名称

10

特性

项目

ORDER.SALESREP_MIR

REQUIRED(APPLICATIONSCOVER)

看实际中的应用情况:

当我们新建一个销售订单,可以看到,销售人员变成了必输字段。

 

协亨项目ORACLE子库存转移控制

业务需求:

协亨门店的POS上线前,直接在ORACLE中做子库存转移。

POS系统上线后,所有的调拨业务都是在POS中进行的,通过接口传给ORACLE自动做子库存转移,在ORACLE中禁止手工录入该门店对应的子库转移。

库存超级用户职责/事务处理/子库存转移/事务处理行/帮助/诊断/自定义代码/个性化

在子库存转移界面,在[子库存]及[目标子库存]两个字段上,在离开该字段的时候添加校验:

根据子库存的门弹性域查找门店信息,判断该门店是否已经POS上线,如果已经是POS上线的并且POS控制类型=现实门店,那么就不能通过验证。

否则可以通过。

即如果在对应门店已上线的子库做子库存转移,在保存时会出现以下错误:

序号

说明

触发器事件

触发器对象

条件

10

FORBIDSUBINVTRANSFER

WHEN-VALIDATE-RECORD

MTL_TRX_LINE

(SELECTPOS_ONLINE_DATEFROMXH_SHOP_INFOXS

WHERENVL(END_DATE_ACTIVE,SYSDATE+1)>TRUNC(SYSDATE)

ANDXS.SHOP_NUMBER=(SELECTMSI.ATTRIBUTE1FROMMTL_SECONDARY_INVENTORIESMSI

WHERENVL(MSI.DISABLE_DATE,SYSDATE)>TRUNC(SYSDATE)

ANDMSI.SECONDARY_INVENTORY_NAME=:

MTL_TRX_LINE.SUBINVENTORY_CODE))ISNOTNULL

AND(SELECTPOS_CONTROL_TYPEFROMXH_SHOP_INFOXS

WHERENVL(END_DATE_ACTIVE,SYSDATE+1)>TRUNC(SYSDATE)

ANDXS.SHOP_NUMBER=(SELECTMSI.ATTRIBUTE1FROMMTL_SECONDARY_INVENTORIESMSI

WHERENVL(MSI.DISABLE_DATE,SYSDATE)>TRUNC(SYSDATE)

ANDMSI.SECONDARY_INVENTORY_NAME=:

MTL_TRX_LINE.SUBINVENTORY_CODE))='REAL'

活动

序号

类型

消息类型

消息文本

10

消息

错误

子库存对应的门店POS已上线,不允许在ORACLE中进行子库存转移

序号

说明

触发器事件

触发器对象

条件

10

FORBIDSUBINVTRANSFER2

WHEN-VALIDATE-RECORD

MTL_TRX_LINE

(SELECTPOS_ONLINE_DATEFROMXH_SHOP_INFOXS

WHERENVL(END_DATE_ACTIVE,SYSDATE+1)>TRUNC(SYSDATE)

ANDXS.SHOP_NUMBER=(SELECTMSI.ATTRIBUTE1FROMMTL_SECONDARY_INVENTORIESMSI

WHERENVL(MSI.DISABLE_DATE,SYSDATE)>TRUNC(SYSDATE)

ANDMSI.SECONDARY_INVENTORY_NAME=:

MTL_TRX_LINE.TRANSFER_SUBINVENTORY))ISNOTNULL

AND(SELECTPOS_CONTROL_TYPEFROMXH_SHOP_INFOXS

WHERENVL(END_DATE_ACTIVE,SYSDATE+1)>TRUNC(SYSDATE)

ANDXS.SHOP_NUMBER=(SELECTMSI.ATTRIBUTE1FROMMTL_SECONDARY_INVENTORIESMSI

WHERENVL(MSI.DISABLE_DATE,SYSDATE)>TRUNC(SYSDATE)

ANDMSI.SECONDARY_INVENTORY_NAME=:

MTL_TRX_LINE.TRANSFER_SUBINVENTORY))='REAL'

序号

类型

消息类型

消息文本

10

消息

错误

目标子库存对应的门店POS已上线,不允许在ORACLE中进行子库存转移

 

协亨项目ORACLE杂项事务处理控制

业务需求:

协亨门店的POS上线前,可以直接在ORACLE中做杂项事务处理。

POS系统上线后,门店的盘点是在POS中做的,通过接口传给ORACLE自动做杂项事务处理。

此时在ORACLE中禁止手工录入该门店对应的杂项事务处理。

库存超级用户职责/事务处理/杂项事务处理/事务处理行/帮助/诊断/自定义代码/个性化

在杂项库存事务处理界面,在[子库存]字段上,在离开该字段的时候添加校验:

根据子库存的门弹性域查找门店信息,判断该门店是否已经POS上线,如果已经是POS上线的并且POS控制类型=现实门店,那么就不能通过验证。

否则可以通过。

即如果在对应门店已上线的子库做子库存转移,在保存时会出现以下错误:

序号

说明

触发器事件

触发器对象

条件

10

FORBIDMISCELLTRANSFER

WHEN-VALIDATE-RECORD

MTL_TRX_LINE

(SELECTPOS_ONLINE_DATEFROMXH_SHOP_INFOXS

WHERENVL(END_DATE_ACTIVE,SYSDATE+1)>TRUNC(SYSDATE)

ANDXS.SHOP_NUMBER=(SELECTMSI.ATTRIBUTE1FROMMTL_SECONDARY_INVENTORIESMSI

WHERENVL(MSI.DISABLE_DATE,SYSDATE)>TRUNC(SYSDATE)

ANDMSI.SECONDARY_INVENTORY_NAME=:

MTL_TRX_LINE.SUBINVENTORY_CODE))ISNOTNULL

AND(SELECTPOS_CONTROL_TYPEFROMXH_SHOP_INFOXS

WHERENVL(END_DATE_ACTIVE,SYSDATE+1)>TRUNC(SYSDATE)

ANDXS.SHOP_NUMBER=(SELECTMSI.ATTRIBUTE1FROMMTL_SECONDARY_INVENTORIESMSI

WHERENVL(MSI.DISABLE_DATE,SYSDATE)>TRUNC(SYSDATE)

ANDMSI.SECONDARY_INVENTORY_NAME=:

MTL_TRX_LINE.SUBINVENTORY_CODE))='REAL'

活动

序号

类型

消息类型

消息文本

10

消息

错误

子库存对应的门店POS已上线,不允许在ORACLE中进行杂项事务处理

 

添加菜单项调用系统功能

同时对订单行也要进行限制

以下是个性化的执行效果。

在tools菜单里增加了一个菜单项Executable,点击可以调出该并发程序所对应的可执行界面。

调出结果如下:

整体逻辑:

打开并发程序定义界面,在Tools菜单栏下新加一个菜单项。

点击该菜单时,如果并发程序名为空,则报一个错误。

如果可执行名非空,增加一个全局变量,储存可执行的名称。

点击新增的菜单项,可以打开可执行FORM。

当打开可执行FORM时,对上述定义的全局变量进行初始化。

进入查询模式。

将全局变量的值赋予可执行名称项值。

进行查询。

清除全局变量的值。

以下是step_by_step编辑详情

1、打开并发程序定义界面,再打开FORM个性化界面,定义一个名为Executable的个性化规则,对应的触发器事件为WHEN-NEW-FORM-INSTANCE

2、在Actions里,增加一个Menu类型,其中MenuEntry选择’SPECIAL1’(SPECIAL1至15是在Tools菜单下,16至30是在Reports菜单下,31至45在Actions菜单下),MenuLabel输入’Executable’(即菜单项标签),IconName为’CONC_PROG’即并发程序FORM对应的BLOCK

3、保存,打开可执行界面,可以看到新增的菜单项,点击,没有事件发生。

4、在可执行界面下,打开FORM个性化界面,我们增加一个事件为,如果可执行的名称为空,则报一个错误’PleaseEnterExecutableName!

新增一个个性化规则CheckExecutableName,TriggerEvent为SPECIAL1,条件为可执行名称为空。

即’:

CONC_PROG.EXECUTABLE_NAMEISNULL’

5、在Actions下,设置一个Meassage类型,MessageType为Error,MessageText为PleaseEnterExecutableName!

6、保存。

打开并发程序定义界面,ExecutableName项为空,直接点击Executable。

7、出现错误信息:

PleaseEnterExecutableName!

8、在并发定义界面下,打开FORM个性化界面。

我们先定义一个全局变量,储存可执行的名称,在后面中要用到。

新增一个名为ExcutableEntered的个性化规则,TriggerEvent为SPECIAL1,条件为:

CONC_PROG.EXECUTABLE_NAMEisnotnull

9、在Actions里加入一个Property类型,ObjectType为GlobalVariable即全局变量,变量名为XX_XH_EXECUTABLE_NAME,为了便于区分,我们FORM个性化的全局变量全部以XX_开头。

PropertyName为VALUE,Value为=:

CONC_PROG.EXECUTABLE_NAME(前面有=号,如果不加等号的话,会被赋值为’:

CONC_PROG.EXECUTABLE_NAME’)。

10、再增加一个Builtin类型,BuiltinType为LunchaFunction即调用一个功能,FunctionCode为FND_FNDCPMFE即可执行对应的功能,FunctionName会被自动调出。

11、保存。

打开并发程序界面,查找一个并发程序,点击Tools>Executable,可以看到可执行定义界面被调出,但是没有数据。

12、关闭并发请求界面,打开可执行界面,再打开FORM个性化界面。

新增加一个FORM个性化规则INITXX_XH_EXECUTABLE_NAME,触发器事件为WHEN-NEW-FORM-INSTANCE。

我们做这个个性化规则的目的是初始化全局变量INITXX_XH_EXECUTABLE_NAME。

13、在Actions下,增加一个Property类型,ObjectType为GlobalVariable,变量名为XX_XH_EXECUTABLE_NAME。

PropertyName为INITIALVALUE(注意与VALUE的区别,VALUE是直接赋值,而INITIALVALUE为如果该变量为null或未被创建,会被赋初值,如果有值的话,则不会覆盖),Value为=null。

这个个性化的目的是为了直接打开该FORM时,后面定义的用到此全局变量的个性化规则有效。

14、新增一条名为EnterQuery的个性化规则。

触发器的事件为WHEN-NEW-FORM-INSTANCE,条件为:

global.XX_XH_EXECUTABLE_NAMEisnotnull。

即上面定义的那个全局变量的值不为空时才会执行。

15、在Actions,设置一个Builtin类型,BuiltinType为DO_KEY,就像在FORM中直接执行的语句。

设置Argument为ENTER_QUERY即进入查询模式。

16、新增一条名为’ExecuteQuery’个性化规则,触发器项为WHEN-NEW-RECORD-INSTANCE,对象为FND_EXECUTABLES,条件为:

global.XX_XH_EXECUTABLE_NAMEisnotnull。

ProcessingMode改为OnlyinEnter-QueryMode。

主要是能在查询模式下继续执行该代码,如果不改在并发程序界面调出可执行界面时,可执行会停在查询模式里。

17、在Actions里,设置type为Property,ObjectType为Item,TargetObject为FND_EXECUTABLES.EXECUTABLE_NAME,PropertyName为VALUE,Value为=:

global.XX_XH_EXECUTABLE_NAME。

18、增加一个Builtin类型,BuiltinType为DO_KEY,Argument为EXECUTE_QUERY。

即进行FND_EXECUTABLES.EXECUTABLE_NAME的值等于全局变量的查询。

19、新增一条名为ClearXX_XH_EXECUTABLE_NAMEValue个性化规则。

触发器事件为WHEN-NEW-RECORD-INSTANCE,对象为FND_EXECUTABLES,条件为:

global.XX_XH_EXECUTABLE_NAMEisnotnull

20、在Actions里,设置Type为Property,ObjectType为GlobalVariable,TargetObjectXX_XH_EXECUTABLE_NAME,PropertyName为VALUE,Value为=null,即查询完之后将该全局变量的值清空。

21、以下是执行情况。

 

已解决和未解决的问题

未解决问题

编号

问题

解决方法

责任人

完成日期

影响

 

已解决问题

编号

问题

解决方法

责任人

完成日期

影响

(9-Dec-96)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1