楼主: kathychen

[精华] 这个问题怎样做?在线等。

[复制链接]
论坛徽章:
18
管理团队2006纪念徽章
日期:2006-04-16 22:44:45马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36
21#
发表于 2004-8-17 21:40 | 只看该作者
修改CUSTOM.pll文件可以实现你的功能

使用道具 举报

回复
论坛徽章:
0
22#
 楼主| 发表于 2004-8-18 08:26 | 只看该作者
不好意思,没有修改过CUSTOM.PLL,kaycat 能否给些提示,或案例。

使用道具 举报

回复
论坛徽章:
18
管理团队2006纪念徽章
日期:2006-04-16 22:44:45马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36
23#
发表于 2004-8-18 08:41 | 只看该作者
procedure event(event_name varchar2) is
  --
--
  -- This procedure allows you to execute your code at specific events
  -- including:
  --
  --    ZOOM
  --    WHEN-NEW-FORM-INSTANCE
  --    WHEN-NEW-BLOCK-INSTANCE
  --    WHEN-NEW-RECORD-INSTANCE
  --    WHEN-NEW-ITEM-INSTANCE
  --    WHEN-VALIDATE-RECORD
  --
  -- Additionally, product-specific events will be passed via this
  -- interface (see the Applications Technical Reference manuals for  
  -- a list of events that are available).  
  --
  -- By default this routine must perform 'null;'.
  --
  -- Oracle Corporation reserves the right to change the events  
  -- available through this interface at any time.
  --
   
Sample code:

    form_name      varchar2(30) := name_in('system.current_form');
    block_name     varchar2(30) := name_in('system.cursor_block');  
    param_to_pass1 varchar2(255);
    param_to_pass2 varchar2(255);
  begin
    -- Zoom event opens a new session of a form and
    -- passes parameter values to the new session.  The parameters
    -- already exist in the form being opened.
    if (event_name = 'ZOOM') then   
      if (form_name = 'DEMXXEOR' and block_name = 'ORDERS') then
        param_to_pass1 := name_in('ORDERS.order_id');
        param_to_pass2 := name_in('ORDERS.customer_name');
        fnd_function.execute(FUNCTION_NAME=>'DEM_DEMXXEOR',  
                             OPEN_FLAG=>'Y',  
                             SESSION_FLAG=>'Y',  
                             OTHER_PARAMS=>'ORDER_ID="'||param_to_pass1||
                               '" CUSTOMER_NAME="'||param_to_pass2||'"');
                -- all the extra single and double quotes account for
                -- any spaces that might be in the passed values
      end if;

    -- This is an example of a product-specific event.  Note that as
    -- of Prod 15, this event doesn't exist.
    elsif (event_name = 'OE_LINES_PRICING') then
      get_custom_pricing('ORDERS.item_id', 'ORDERS.price');

    -- This is an example of enforcing a company-specific business
    -- rule, in this case, that all vendor names must be uppercase.
    elsif (event_name = 'WHEN-VALIDATE-RECORD') then
      if (form_name = 'APXVENDR') then
        if (block_name = 'VENDOR') then
          copy(upper(name_in('VENDOR.NAME')), 'VENDOR.NAME');      
        end if;
      end if;
    else
      null;
    end if;
  end event;

这个是系统的一个例子,
将'ZOOM'改成‘WHEN-VALIDATE-RECORD’
然后加些判断,最后SHOW出你的信息就可以。

使用道具 举报

回复
论坛徽章:
164
技术图书徽章
日期:2018-12-26 10:01:29指数菠菜纪念章
日期:2013-06-28 17:41:29蛋疼蛋
日期:2013-04-03 16:29:52指数菠菜纪念章
日期:2013-04-01 15:26:282013年新春福章
日期:2013-02-25 14:51:24指数菠菜纪念章
日期:2013-01-04 11:30:40指数菠菜纪念章
日期:2012-09-29 10:28:42版主6段
日期:2012-05-15 15:24:11指数菠菜纪念章
日期:2012-03-31 14:04:28茶鸡蛋
日期:2012-03-12 16:56:15
24#
发表于 2004-8-18 09:20 | 只看该作者
谢谢kaycat!

又学了一招

使用道具 举报

回复
论坛徽章:
0
25#
 楼主| 发表于 2004-8-18 09:37 | 只看该作者
傻了,还有这样用的。简直是太厉害了。不过我仍然不是很明白,我用什么打开 CUSTOM.pll ,及与CUSTOM.plx什么关系,具体怎样利用上面的过程。还有,不修改FORM了,加上这样一个过程对系统性能有多大影响,。请两位版主详细给谈谈,在下有礼了,我平时只做过FORM,,REPORT方面的工作,所以水平非常有限。

使用道具 举报

回复
论坛徽章:
0
26#
 楼主| 发表于 2004-8-18 10:39 | 只看该作者
procedure event(event_name varchar2) is

form_name varchar2(30) := name_in('system.current_form');
block_name varchar2(30) := name_in('system.cursor_block');
param_to_pass1 varchar2(255);

begin
if (event_name = 'WHEN-VALIDATE-RECORD') then
if (form_name = 'MRPFFDIF' and block_name = 'FOLDER') then
param_to_pass1 := name_in('FOLDER.INVENTORY_ITEM_ID');
fnd_function.execute(FUNCTION_NAME=>'MRP_ITEMFUN',  
OTHER_PARAMS=>'ITEM_ID="'||param_to_pass1');
else
null;
end if;
end event;

函数
create or replace function mrp_itemfun (item_id number) return varchar2 is
cursor c is select 1 from wip_entities we
where we.primary_item_id=item_id;
vv   c%rowtype;
begin
open c;
fetch c into vv;
if (c%notfound) then
return('这个物料没有生产过');
--dbms_output.put_line('这个物料没有生产过');
else
null;
end if;
close c;
end;


肯定有问题,但不会了,请版主指点一下,谢了先?

使用道具 举报

回复
论坛徽章:
18
管理团队2006纪念徽章
日期:2006-04-16 22:44:45马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36
27#
发表于 2004-8-18 10:49 | 只看该作者
互相学习!

CUSTOM.pll文件的应用的可能性主要有下面几个方面:
1.在重要的应用中加入必须的处理
2.改变应用的字段属性;隐藏字段,改变颜色
3.增加字段额外的验证
4.改变缺省的LOV或条件子句
5.基于某些应用或SERVER上的计算而自动组合字段
6.直接写审计日志
7.从核心应用中调用新应用
8.操作必须的条件字段
9.操作互斥字段
10.设置缺省值
11.在字段中计算
12.在事件点执行处理
13.修改不可进入的字段
14.调用SERVER端的过程

具体的用法在《Oracle Applications Developer’s Guide》第28章
Using the CUSTOM Library
有非常详细的介绍。

使用道具 举报

回复
论坛徽章:
18
管理团队2006纪念徽章
日期:2006-04-16 22:44:45马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36
28#
发表于 2004-8-18 11:01 | 只看该作者
最初由 kathychen 发布
[B]procedure event(event_name varchar2) is

form_name varchar2(30) := name_in('system.current_form');
block_name varchar2(30) := name_in('system.cursor_block');
param_to_pass1 varchar2(255);

begin
if (event_name = 'WHEN-VALIDATE-RECORD') then
if (form_name = 'MRPFFDIF' and block_name = 'FOLDER') then
param_to_pass1 := name_in('FOLDER.INVENTORY_ITEM_ID');
fnd_function.execute(FUNCTION_NAME=>'MRP_ITEMFUN',  
OTHER_PARAMS=>'ITEM_ID="'||param_to_pass1');
else
null;
end if;
end event;

函数
create or replace function mrp_itemfun (item_id number) return varchar2 is
cursor c is select 1 from wip_entities we
where we.primary_item_id=item_id;
vv   c%rowtype;
begin
open c;
fetch c into vv;
if (c%notfound) then
return('这个物料没有生产过');
--dbms_output.put_line('这个物料没有生产过');
else
null;
end if;
close c;
end;


肯定有问题,但不会了,请版主指点一下,谢了先? [/B]


你看是不是这样的
PROCEDURE event(event_name VARCHAR2) IS

v_form_name  VARCHAR2(30) := NAME_IN('system.current_form');
v_block_name VARCHAR2(30) := NAME_IN('system.cursor_block');
v_item_id    varchar2(30) := name_in('folder.inventory_item_id');
CURSOR c
  IS
    SELECT 1
      FROM wip_entities we
     WHERE we.primary_item_id = v_item_id;
v_c_item C%ROWTYPE;

BEGIN
  IF (event_name = 'WHEN-VALIDATE-RECORD') THEN
     IF (form_name = 'MRPFFDIF' AND block_name = 'FOLDER') THEN
     OPEN c;
     FETCH c INTO v_c_item;
       IF (C%NOTFOUND) THEN
          fnd_message.set_name('FND','这个物料没有生产过';');
          fnd_message.show;
       ELSE
         NULL;
       END IF;
     CLOSE C;
  ELSE
    NULL;
  END IF;
END event;

使用道具 举报

回复
论坛徽章:
0
29#
 楼主| 发表于 2004-8-18 11:12 | 只看该作者
我忽然间明白了,非常感谢 kaycat,我也知道怎样打开,怎样建立了。非常感谢!
今天真高兴!

使用道具 举报

回复
招聘 : 技术/实施/服务顾问
论坛徽章:
5
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34会员2007贡献徽章
日期:2007-09-26 18:42:102009新春纪念徽章
日期:2009-01-04 14:52:28ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41
30#
发表于 2004-8-18 11:28 | 只看该作者

fnd_function.execute

中function 是指在application中注册的function

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表