转一篇ERP100纵横四海的文章:
财务人员要求根据请求关闭离散任务的参数来查找到提交人员。如果从界面上来找,只能根据提交人员或提交时间等来找到并发请求,再查看提交时的参数。
经研究,发现在apps下有个对象FND_CONCURRENT_REQUESTS,记录了详细的并发请求的情况。根据此对象的ARGUMENT_TEXT列可以找出参数。
详细过程及代码见下:
早上,突然接到个电话,问能不能根据并发请求的参数,查到是谁提交的并发请求。这下麻烦了。
在EBS的界面上,可以根据并发请求的名称、提交时间、提交人等来查找并发请求,但请求参数只能在查出并发请求以后再进行查看,不能作为查询条件。只能从数据库里直接查底层表了。
并发请求的参数,应该记录在某个表中,但究竟是哪个表呢?不知道!先查了下metalink,有可能是关键字不对,没查到。只有自己试着去找了。
老规矩,直接用apps用户登陆数据库,先看下在user_objects中,有哪些名字比较象的。先把有conc的都找出来。
select object_type, object_name
from user_objects
where object_name like '%CONC%'
and object_type not in ('PACKAGE', 'PACKAGE BODY')
order by 1, 2;
恩,看到个叫FND_CONCURRENT_REQUESTS的,应该比较象。看下有哪些列:
desc FND_CONCURRENT_REQUESTS
哦,列太多了,而且也不是很明白各列具体什么含义。好在有个REQUEST_ID是能猜出来含义的。先到界面上,随便查个并发请求出来,把请求号,也就是REQUEST_ID查到,再查下这个表里对应的列的值,跟界面上的一比较,就差不多了。
select * from FND_CONCURRENT_REQUESTS
where REQUEST_ID = 967919;
一比较,就知道了:
PROGRAM_APPLICATION_ID
CONCURRENT_PROGRAM_ID
RESPONSIBILITY_APPLICATION_ID
RESPONSIBILITY_ID
组合起来,决定对应的并发请求程序;
NUMBER_OF_ARGUMENTS
ARGUMENT_TEXT
就是参数个数以及具体参数,而每个单独的参数,又在ARGUMENT1到ARGUMENT25的列中定义。
看了一下,需要查的参数对应的列为GUMENT14,这下就好办了。
根据界面查一个对应的请求出来,把
PROGRAM_APPLICATION_ID
CONCURRENT_PROGRAM_ID
RESPONSIBILITY_APPLICATION_ID
RESPONSIBILITY_ID
先确定好,再根据这些条件,就可以找到请求号了。再到界面上去根据请求号找到对应的请求,请求人也就能找到了。 --这地方有点不明白,如果知道参数的值以及对应的列,可以直接查询得出请求号啊。
其实,在FND_CONCURRENT_REQUESTS表中就有请求人的user_id,不过,要找到user_name,还要再关联fnd_user表才可以。懒得写了,直接查EBS会快些。
不过,费了半天力气,最后查出来的结果是,数据库里没有根据这个参数提交的请求。打电话给财务,他们说参数给错了,可能不是这个参数。
唉,白紧张了2个小时啊。
阅读(1495) | 评论(0) | 转发(0) |