数据多语言转换开发(3)
十月 7, 2008 in Oracle EBS二次开发
Oracle EBS 11.5.10.2
本文介绍数据多语言转换表单的实现。
本文只介绍和多语言转换有关的Form开发步骤,关于常规Form开发的步骤请查看 Oracle Applications 开发手册
一、Form触发器
1)在需要使用多语言项所在的BLOCK内增加触发器:PRE-BLOCK
触发器中添加如下的代码启用Translation按钮:
app_special.enable(‘TRANSLATE’);
2)在需要进行多语言转换的所在的BLOCK内增加触发器:TRANSLATION
加入如下PROCEDURE进行多语言字段的初始
FND_MULTILINGUAL.EDIT(‘FND_FORM’,
‘FORM_ID, APPLICATION_ID’,
‘USER_FORM_NAME, DESCRIPTION’,
‘*FND:ML_USER_FORM_NAME, *FND:ML_DESCRIPTION’);
参数描述:
FND_FORM:多语言数据块的名称
FORM_ID,APPLICATION_ID:多语言表的主键列,多个列用逗号(,)隔开
USER_FORM_NAME,DESCRIPTION:需要进行多语言转换的列
*FND:ML_USER_FORM_NAME, *FND:ML_DESCRIPTION: 多语言转换窗口中每列对应的标题(如下图),为了实现它也多语言,因此这里是消息字典,*FND是消息字典对应的应用,ML_USER_FORM_NAME是消息的名称
3)而外增加如下触发器及代码
Form Level
POST-FORMS-COMMIT
fnd_multilingual.save;
Block Level
POST-INSERT
fnd_multilingual.key;
WHEN-CLEAR-BLOCK
fnd_multilingual.free_block;
WHEN-REMOVE-RECORD
fnd_multilingual.free_record;
二、Table Handler
当定义一条多语言的数据时,同时会往基本信息表和多语言表插入数据。往基本信息插入一条数据,多语言表插入多条数据,系统安装了多少种语言环境,就会插入多少条,因此对于多语言转换的插入语句的写法有一点特别的地方,为了处理的方便,一般都将增删改的操作写到数据库的存储过程中。
1) 插入(Insert)
在Form块的on-insert触发器中,要同时往基本信息表和多语言表(_TL)插入数据,因此insert的存储过程中需要根据Oracle EBS系统安装的语言来决定往多语言表中插入多少条记录。通过FND_LANGUAGES表来判断。
伪代码:
INSERT INTO FND_FORM ;
INSERT INTO FND_FORM_TL
SELECT
FROM FND_LANGUAGES
where INSTALLED_FLAG in (‘I’, ‘B’)
2) 更新(Update)
更新的时候需要同时更新基本信息表和多语言表;在on-lock触发器中,需要同时对基本信息表和多语言表锁定。
伪代码:
UPDATE FND_FORM
UPDATE FND_FORM_TL
WHERE userenv(‘LANG’) in (LANGUAGE, SOURCE_LANG)
3) 删除(Delete)
删除的时候也需要同时删除基本信息和多语言信息。
伪代码:
DELETE FND_FORM
DELETE FND_FORM_TL
代码请查看数据库包fnd_form_pkg
感谢Anson Locksley 提供资料
多语言转换开发系列正式结束:
–
相关文章:

0 responses to 数据多语言转换开发(3)