概述
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, (个人见解:若某用户是另一用户子用户,则选出的是母用户)
from fnd_responsibility
--where APPLICATION_ID = 140
where RESPONSIBILITY_KEY like '%ASSETS_VISION_OPERATIONS%';
BEGIN
fnd_global.APPS_INITIALIZE(uesr_id, resp_id, resp_appl_id);
END;
例:失效保存按钮
1.在WHEN-NEW-FORM-INSTANCE中加入
set_menu_item_property('FILE.SAVE', enabled, property_off);
如果想在保存按钮失效后保存记录,可以在自己设计的按钮触发器中写DO_KEY('COMMIT_FORM');
注意:请失效保存快捷键Ctrl+S
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;
最后
以上就是灵巧猎豹为你收集整理的EBS FORM開發總結attribute字段的全部内容,希望文章能够帮你解决EBS FORM開發總結attribute字段所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复