EBS菜单繁多,有时候难免找不到北,下面以实际例子来说明查找方法。
54.2 解决方案
假设在某个职责下通过Ctrl+L找到某个功能,如下,其实Ctrl+L查找的是功能名,假设我查到的功能名称是HEL:物料编码申请,
当然如果打开看了界面,通过菜单栏的帮助>关于Oracle Applications查看,比如查看到的表单名是HELINVIC.fmx,那么该表单的简称按照规范应该是HELINVIC。
然后使用应用开发员职责,打开应用产品>表单,通过刚才查询到的表单简称HELINVIC查询到结果如下,看到了用户表单名是HEL:物料编码申请,
然后再打开应用产品>功能 ,根据用户功能名 HEL:物料编码申请 查询到的结果如下,当然如果是按照规范的话,也可以根据表单简称HELINVIC 作为表单查询项也可以查询到同样的结果:
在该界面的菜单栏 帮助>诊断>检查 的弹出框中,字段选择FUNCTION_ID,则可查到该功能的ID,是27191。
然后通过如下SQL语句可以查询到哪些菜单用到了这个功能,注意更改红色部分为上步所查找到的功能ID:
SELECT fmv.MENU_ID,
fmv.MENU_NAME,
fmv.USER_MENU_NAME,
fmv.TYPE,
fmv.DESCRIPTION
FROM FND_MENUS_VL fmv
where exists (SELECT fmev.MENU_ID
FROM FND_MENU_ENTRIES_VL fmev
where fmev.FUNCTION_ID = 27191
and fmev.MENU_ID = fmv.MENU_ID)
然后这些菜单在哪些职责中呢?职责对应哪个菜单可以通过系统管理员职责的安全性>责任>定义界面看到,一个责任名对应哪个菜单呢?
可以通过如下语句查看,将红色部分换成你需要查看的职责名:
SELECT RESPONSIBILITY_NAME,
RESPONSIBILITY_KEY,
DESCRIPTION,
MENU_ID
FROM FND_RESPONSIBILITY_VL
WHERE (version = '4' or version = 'W' or version = 'M')
and RESPONSIBILITY_NAME=' HELC_客户化开发'
但是这样找到职责对应的菜单没有用,你还无法确认该职责是否会包含你要查找的功能。
下面我介绍一种查出所有包含该功能的职责及其菜单ID的方法,红色部分换成你找到的功能ID,本例是27191:请注意写法:一定要用IN,若换成EXISTS的话就会很慢,甚至不能出来结果,所以啊,不能盲目迷信EXISTS一定比IN好。
frv.DESCRIPTION,
frv.MENU_ID,
fmv.MENU_NAME,
fmv.USER_MENU_NAME
from FND_RESPONSIBILITY_VL frv
inner join FND_MENUS_VL fmv on frv.MENU_ID = fmv.MENU_ID
where (frv.version = '4' or frv.version = 'W' or frv.version = 'M')
and frv.MENU_ID in
(select fmev.MENU_ID
from FND_MENU_ENTRIES_VL fmev
connect by prior fmev.MENU_ID = fmev.SUB_MENU_ID
start with fmev.FUNCTION_ID = 27191)
不要以为现在万事大吉了,那么我到这些菜单中去找到功能就OK拉,这样还是不方便,刚才查出来的结果有30多个职责用到了这个功能,这些职责不乏菜单较多,层级也较多的,那么一层层一个个找到这个最底层的菜单可能比较费力。比如HELC_客户化开发 这个职责能使用的功能就超过了一万个,你要一个个找,那就费事费时了,所以这里提供一种更加方便的方法,假设我要查找其中一个职责比如是HELC_客户化开发 职责下这个菜单在哪儿?根据刚才的语句我知道这个职责对应的MENU_ID是80573,根据下面这个语句我就知道是这个职责对应菜单的路径,第一个红色部分为功能ID,第二个红色部分为职责对应的MENU_ID。
select level,a.* from
(select fmev.MENU_ID, fmev.SUB_MENU_ID, fmev.PROMPT
from FND_MENU_ENTRIES_VL fmev
connect by prior fmev.MENU_ID = fmev.SUB_MENU_ID
start with fmev.FUNCTION_ID = 27191) a
connect by prior a.sub_menu_id=a.menu_id
start with a.menu_id=80573
下面这句是查找功能id得方法
SELECT FUNCTION_ID
FROM FND_FORM_FUNCTIONS_VL
WHERE USER_FUNCTION_NAME = '你的功能名'
54.2 解决方案
假设在某个职责下通过Ctrl+L找到某个功能,如下,其实Ctrl+L查找的是功能名,假设我查到的功能名称是HEL:物料编码申请,
当然如果打开看了界面,通过菜单栏的帮助>关于Oracle Applications查看,比如查看到的表单名是HELINVIC.fmx,那么该表单的简称按照规范应该是HELINVIC。
然后使用应用开发员职责,打开应用产品>表单,通过刚才查询到的表单简称HELINVIC查询到结果如下,看到了用户表单名是HEL:物料编码申请,
然后再打开应用产品>功能 ,根据用户功能名 HEL:物料编码申请 查询到的结果如下,当然如果是按照规范的话,也可以根据表单简称HELINVIC 作为表单查询项也可以查询到同样的结果:
在该界面的菜单栏 帮助>诊断>检查 的弹出框中,字段选择FUNCTION_ID,则可查到该功能的ID,是27191。
然后通过如下SQL语句可以查询到哪些菜单用到了这个功能,注意更改红色部分为上步所查找到的功能ID:
SELECT fmv.MENU_ID,
fmv.MENU_NAME,
fmv.USER_MENU_NAME,
fmv.TYPE,
fmv.DESCRIPTION
FROM FND_MENUS_VL fmv
where exists (SELECT fmev.MENU_ID
FROM FND_MENU_ENTRIES_VL fmev
where fmev.FUNCTION_ID = 27191
and fmev.MENU_ID = fmv.MENU_ID)
然后这些菜单在哪些职责中呢?职责对应哪个菜单可以通过系统管理员职责的安全性>责任>定义界面看到,一个责任名对应哪个菜单呢?
可以通过如下语句查看,将红色部分换成你需要查看的职责名:
SELECT RESPONSIBILITY_NAME,
RESPONSIBILITY_KEY,
DESCRIPTION,
MENU_ID
FROM FND_RESPONSIBILITY_VL
WHERE (version = '4' or version = 'W' or version = 'M')
and RESPONSIBILITY_NAME=' HELC_客户化开发'
但是这样找到职责对应的菜单没有用,你还无法确认该职责是否会包含你要查找的功能。
下面我介绍一种查出所有包含该功能的职责及其菜单ID的方法,红色部分换成你找到的功能ID,本例是27191:请注意写法:一定要用IN,若换成EXISTS的话就会很慢,甚至不能出来结果,所以啊,不能盲目迷信EXISTS一定比IN好。
select frv.RESPONSIBILITY_NAME,
frv.RESPONSIBILITY_KEY,frv.DESCRIPTION,
frv.MENU_ID,
fmv.MENU_NAME,
fmv.USER_MENU_NAME
from FND_RESPONSIBILITY_VL frv
inner join FND_MENUS_VL fmv on frv.MENU_ID = fmv.MENU_ID
where (frv.version = '4' or frv.version = 'W' or frv.version = 'M')
and frv.MENU_ID in
(select fmev.MENU_ID
from FND_MENU_ENTRIES_VL fmev
connect by prior fmev.MENU_ID = fmev.SUB_MENU_ID
start with fmev.FUNCTION_ID = 27191)
不要以为现在万事大吉了,那么我到这些菜单中去找到功能就OK拉,这样还是不方便,刚才查出来的结果有30多个职责用到了这个功能,这些职责不乏菜单较多,层级也较多的,那么一层层一个个找到这个最底层的菜单可能比较费力。比如HELC_客户化开发 这个职责能使用的功能就超过了一万个,你要一个个找,那就费事费时了,所以这里提供一种更加方便的方法,假设我要查找其中一个职责比如是HELC_客户化开发 职责下这个菜单在哪儿?根据刚才的语句我知道这个职责对应的MENU_ID是80573,根据下面这个语句我就知道是这个职责对应菜单的路径,第一个红色部分为功能ID,第二个红色部分为职责对应的MENU_ID。
select level,a.* from
(select fmev.MENU_ID, fmev.SUB_MENU_ID, fmev.PROMPT
from FND_MENU_ENTRIES_VL fmev
connect by prior fmev.MENU_ID = fmev.SUB_MENU_ID
start with fmev.FUNCTION_ID = 27191) a
connect by prior a.sub_menu_id=a.menu_id
start with a.menu_id=80573
下面这句是查找功能id得方法
SELECT FUNCTION_ID
FROM FND_FORM_FUNCTIONS_VL
WHERE USER_FUNCTION_NAME = '你的功能名'