EBS FORM開發總結

原创 2011年10月14日 13:46:30

1. 系统的标准form在还没有获得组织参数时会先弹出更改组织的窗口,选取了组织后会继续弹出自己的form窗口,请问这是怎么实现的。

    增加Choose ORG功能:
(1):首先在parameter中加上CHART_OF_ACCOUNTS_ID,ORG_NAME,ORG_CODE,ORG_ID四个参数
(2):在form level 的trigger中的pre—form中加上FND_ORG.CHOOSE_ORG;
(3):在form level 的trigger中的when—new—form—instance中加上
APP_WINDOW.SET_TITLE('ADJ_RECEIVE',:PARAMETER.ORG_CODE);其中ADJ_RECEIVE是window 的名字,用于设置window的title

2.Oracle EBS—PL/SQL環境初始化之 fnd_global.apps_initialize

  我们经常会遇到在pl/sql中运行某个视图,不能显示出数据,但是在界面上确有数据,这主要是因为视图是OU屏蔽的,因此需要你在pl/sql中初始化你的身份,初始化的程序如下,这样你就可以在任何pl/sql环境中运行EBS的视图了,例如PO_HEADERS,PO_LINES等

   fnd_global.apps_initialize(user_ID, Responsibility_id,Responsibility_application_id);

   这条语句的作用简单地说就是在PL/SQL中假装已经登录了EBS,如下面的语句不使用fnd_global.apps_initialize会报错

     SELECT PAPF.Full_Name -----当前操作用户 
        INTO PRINTER
        FROM PER_ALL_PEOPLE_F PAPF,
             FND_USER         FU
       WHERE FU.EMPLOYEE_ID = PAPF.PERSON_ID
         AND FU.USER_ID = FND_GLOBAL.USER_ID
         AND SYSDATE BETWEEN EFFECTIVE_START_DATE AND EFFECTIVE_END_DATE;

参数user_ID:

用户ID,  (个人见解:若某用户是另一用户子用户,则选出的是母用户)

参数获得:
  参数一,用户ID 
    select user_id
    from fnd_user
    where user_name like '%OPERATIONS%'; -- ID of OPERATIONS:1318
 
  参数二,职责编号(responsibility id)
    select RESPONSIBILITY_ID, APPLICATION_ID, RESPONSIBILITY_KEY
    from fnd_responsibility
    --where APPLICATION_ID = 140
    where RESPONSIBILITY_KEY like '%ASSETS_VISION_OPERATIONS%';
 
  参数三,代表该职责所属的应用程序(application)的编号
    上面的SQL取得
 
  方便的方法:Help->Diagnostics->Examin, Block: $PROFILES$, Field: RESP_ID(以及其他)
 
运行:
BEGIN
  fnd_global.APPS_INITIALIZE(uesr_id, resp_id, resp_appl_id);
END;
 
测试:
  select fnd_profile.value('GL_SET_OF_BKS_ID') FROM DUAL;
  select fnd_profile.value('USER_ID') from dual; --对应刚才的user_id
或者 select  fnd_global.user_name from dual;
 
 
 
客制化工具栏(新建/保存/删除/清空)

例:失效保存按钮
1.在WHEN-NEW-FORM-INSTANCE中加入
set_menu_item_property('FILE.SAVE', enabled, property_off);

如果想在保存按钮失效后保存记录,可以在自己设计的按钮触发器中写DO_KEY('COMMIT_FORM');

注意:请失效保存快捷键Ctrl+S

KEY-COMMIT
NULL; 

2.与 此类似的还有。
set_menu_item_property('Edit.delete', enabled, property_off); 失效"Deletes Recode
set_menu_item_property('Edit.Clear', enabled, property_off); 失效"Clear Recode"

 

3.也可以隐藏掉

set_menu_item_property('Edit.delete', displayed, property_off);

set_menu_item_property('FILE.NEW', displayed, property_off);

 

从属值集的用法

目标
比如 值集省份中有
山东
甘肃
广东

值集城市中有
济南,青岛,淄博
兰州,天水,白银
广州,佛山,韶关,汕头

假设我们选择了 山东,那么值集城市中只能出现 济南,青岛,淄博。。。。
实现步骤
1\ 定义独立值集 CSG_HR_PROVINCE_1
  设置独立值集的值
山东
甘肃
广东
2\ 定义从事值集 CSG_HR_CITY_1
选择验证类型为 从属,然后点击编辑信息
选择独立值集 CSG_HR_PROVINCE_1,可以给个默认值,比如0,防止从属值集什么都没设置的时候还有个默认值
3\  应用 --> 验证 --> 值
  创建 从属值集 CSG_HR_CITY_1 的值 ,
   然后点击 独立值,选择 比如选择山东
  然后创建值 如图
4\ 把值集应用到 弹性域或者并发程序等 各个用到值集的地方。

 

attribute字段

  问题:EBS中表的attribute的字段是有限的,那么如何在有限的字段尽可能地发挥这几个字段的最大作用呢?

  EBS中的attribute字段的使用是有技巧的,比如说在订单中如果新增8%类型的订单,需要在弹性域中设置配送商,之后在新增9%类型的订单也需要填写配送商(或备注),这时候是否新增使用attribute2呢?还是和8%类型订单一起使用attribute1呢?

  这时候就要考虑8%类型和9%类型的业务是否会重复,结论是不会重复的,8%和9%类型都使用同一个table,从单行来说:8%类型的attribute1和9%类型的attribute1是不会冲突的。

所以9%类型订单可以和8%类型订单共同使用attribute1字段。

 

有一些view用到org環境參數的,一般要如下設定後,才能select到記錄:
begin
dbms_application_info.set_client_info(:org_id);--如1,2,3之類的
end;

或者

BEGIN
fnd_client_info.set_org_context(82);
END;

 

例外处理问题

有很多人喜欢在处理exception时,置为'null',应该说这是一个很不好的习惯,如果没有定义特定的exception,最起码应该把数据库的错误信息完整的报出来。
错误的写法:
         EXCEPTION
          WHEN OTHERS THEN
            NULL;
         END;
正确的写法:
         EXCEPTION
           WHEN OTHERS THEN
              FND_FILE.PUT_LINE(FND_FILE.OUTPUT, SQLCODE);
              FND_FILE.PUT_LINE(FND_FILE.OUTPUT, SQLERRM);
         END;

并发请求的OUTPUT和LOG不分

有的同学在并发请求输出的时候,不知道如何把日志输出出来,其实很简单:
输出到请求的输出:FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'XXXXXXX');
输出到请求的日志:FND_FILE.PUT_LINE(FND_FILE.LOG, 'XXXXXX');
一般情况是把报表的内容输出到OUTPUT,把报表中间的debug逻辑输出到log中

 

创建行记录时,自动创建连续的序列号

WHEN-NEW-RECORD-INSTANCE:

  IF NVL(:BLK_LINE.LINE_ID,0) = 0 and :BLK_LINE.ROW_NUM is null THEN
    :BLK_LINE.ROW_NUM := :SYSTEM.TRIGGER_RECORD;
    set_record_property(:system.trigger_record,:system.trigger_block ,STATUS,NEW_STATUS);
  END IF;

 

挣值管理理论与实践

作为项目经理,在项目管理过程中,经常会被问到这些问题:我们的项目现在是否符合进度要求?是否符合预算?现在项目进度偏差是多少?项目预算的偏差是多少?出现偏差的原因是什么?是谁的责任?项目发展的趋势是什么样的?本课程将带来解答这些问题的方法。
  • 2017年09月19日 14:28

Oracle Forms开发手札:特殊的默认值 $$variables$$

Oracle Forms 提供了六个特殊的系统变量,均为提供日期和时间的信息的变量,他们是: $$DATE$$$$TIME$$$$DATETIME$$$$DBDATE$$$$DBTIME$$$$...
  • meunsina
  • meunsina
  • 2014-07-17 16:30:10
  • 861

FND_ORG.CHOOSE_ORG

增加Choose ORG功能:  (1):首先在parameter中加上CHART_OF_ACCOUNTS_ID,ORG_NAME,ORG_CODE,ORG_ID四个参数  (2):在form l...
  • meunsina
  • meunsina
  • 2015-05-13 10:40:47
  • 958

打开FORM时选择组织

实现功能:      选择一个FORM打开时先选择组织。    打开这个FORM后,关闭再打开时不再选择组织,若需要更改组织则要在Change Organization 去实现。 实现方法: ...
  • zfj0597
  • zfj0597
  • 2015-08-14 10:14:30
  • 247

EBS FORM開發總結

1. 系统的标准form在还没有获得组织参数时会先弹出更改组织的窗口,选取了组织后会继续弹出自己的form窗口,请问这是怎么实现的。     增加Choose ORG功能: (1):首先在param...
  • rfb0204421
  • rfb0204421
  • 2011-10-14 13:46:30
  • 2667

PLSQL_R12 MOAC多组织的四个应用(案例)

一、摘要 R12 Form 或者其他二次开发时,很多情况下会涉及R12 MOAC多组织开发,以下介绍了4个常见的应用,如有遗漏还请学友继续补充 1. 开发时打开Form自动弹出组织选择...
  • caixingyun
  • caixingyun
  • 2014-11-06 11:40:34
  • 1104

Oracle EBS值集

1、从值集中取值 SELECT ffv.flex_value, ffv.description   FROM fnd_flex_values_vl ffv, fnd_flex_valu...
  • gh320
  • gh320
  • 2013-12-03 15:38:22
  • 2710

FORM开发入门4——查找窗口实现

知识点: 如何增加查询条件:Country Name, p_START_DATE_from,p_START_DATE_to 1.手工创建新的数据块 2、重新命名块:QUERY,并...
  • Hehuyi_In
  • Hehuyi_In
  • 2016-08-15 13:04:19
  • 183

EBS Form : 消息字典 fnd_message. (转)

1. FND_MESSAGE.warn : 以选择信息的方式显示给用户。 可以选择Ok或者Cancel,返回值分别是TRUE和FALSE 例: if FND_MESSAGE.warn then...
  • SMJ3901080114
  • SMJ3901080114
  • 2013-05-03 10:04:51
  • 1528

EBS条形码打印

Oracle  提供两种方式实现 128 码的编码 第一种方式是使用 Reports Builder 实现对 128 码编码, 在 Metalink 305090.1[1]  有 比较详尽的描述,其中...
  • caixingyun
  • caixingyun
  • 2014-07-31 19:37:41
  • 5990
收藏助手
不良信息举报
您举报文章:EBS FORM開發總結
举报原因:
原因补充:

(最多只允许输入30个字)