1.在需要消息字典的应用框架下新建一个文件夹(也许已经存在)/d01/oracle/VIS/apps/apps_st/appl/cux/12.0.0/mesg(一般命名为mesg)
2.
定义消息Application Developer 职责下 Application -> Messages相关参数
Current Message Text (可以是带token【与参数有点类似】 的文本内容)
3.创建消息文件 (suchas US.msb) ApplicationDeveloper 职责下 Other -> Request -> Run 在Submit a New Request 对话框中 点击OK
显示 SubmitRequest 窗口
4.设置和显示消息
三步
---将要使用的消息MYDIRECTOR放入消息栈中
FND_MESSAGE.SET_NAME ('CUX', 'MYDIRECTORY');
--如果消息文本【Current MessageText】中有token【PROCEDURE】时,使用下面一句,使用文本值在把token替换掉
FND_MESSAGE.SET_TOKEN ('PROCEDURE', 'Compiling thisflexfield');
--显示给客户
FND_MESSAGE.SHOW;
Ps:Form 客户端维护了一个消息栈的东西
前两句的作用是从服务器端把显示消息传递到客户端,放在消息栈中后一句的作用就是提取消息
效果:
其他知识
1. FND_MESSAGE.warn:
以选择信息的方式显示给用户。
可以选择Ok或者Cancel,返回值分别是TRUE和FALSE
例:
if FND_MESSAGE.warn then
fnd_message.debug('True');
else
fnd_message.debug('False');
end if;
执行效果如下:
点击OK会弹出 True
点击Cancel会弹出 False
IF (NOT FND_MESSAGE.WARN) THEN
Raise FORM_TRIGGER_FAILURE;
END IF;
2. FND_MESSAGE.question
function QUESTION(BUTTON1 in varchar2 default 'YES',
BUTTON2 in varchar2 default 'NO',
BUTTON3 in varchar2 default 'CANCEL',
DEFAULT_BTN in number default 1,
CANCEL_BTN in number default 3,
ICON in varchar2 default 'question')
return number
调用:
declare
v_result number;
begin
APPS.XXFORM_ADIO_TEST_PKG.RETURN_MESSAGE;
FND_MESSAGE.retrieve;
v_result:=FND_MESSAGE.QUESTION('Yes','No','Cancel',null,null,'Question');
fnd_message.debug(v_result);
Example:
FND_MESSAGE.SET_NAME(’FND’,’ATCHMT-COMMIT BEFORE INVOKING’);
IF FND_MESSAGE.QUESTION
(’YES’,’CANCEL’,NULL,1,2,NULL) = 2 THEN
RAISE FORM_TRIGGER_FAILURE;
END IF;
3. FND_MESSAGE.SET_NAME设置信息:
-- 语法:
procedure FND_MESSAGE.SET_NAME
(application_shortname IN varchar2,
message_name IN varchar2);
作用:从Message Dictionary获取一条信息 一般情况下在FORM中显示出错信息使用以下代码:
FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,
MESSAGE_NAME) ;
FND_MESSAGE.ERROR ;
FND_MESSAGE.SET_NAME(’SQLAP’,’AP_PAY_MULTI_PAY_VOID’);
4.fnd_message.retrieve
作用: 取得一条数据库中的等待信息
5.Fnd_message.set_string(value IN Varchar2)
作用:将字符串放到消息栈中,
6.FND_MESSAGE.SET_TOKEN
作用:用值替换message的信息中的变量
语法:
procedure FND_MESSAGE.SET_TOKEN
(token_name IN VARCHAR2, value IN VARCHAR2
translate IN boolean default FALSE);
REC_COUNT:= <NUMBER OF PAYMENTS>;
FND_MESSAGE.SET_TOKEN(’NUM_OF_RECS’,REC_COUNT);
7.FND_MESSAGE.SHOW
作用:显示信息,与 FND_MESSAGE.debug效果相同
8.FND_MESSAGE.GET
作用:取得在message中设置好的message信息
9. FND_MESSAGE.hint
这种方式不会弹出对话框给用户,而是显示在左下脚的状态栏上面
10.FND_MESSAGE.error
以Error信息的方式显示给用户
示例一:弹出消息窗口,等待用户选择后进行下一步的处理;
fnd_message.set_string('该物料多发和欠发的物料总成本,占物料需求总成本的比重,' ||
chr(10) || '已经超过预设允差!' ||
chr(10) ||
chr(10) ||' 是否继续?');
v_choose := fnd_message.question('确定', NULL, '取消', 1, 3,'NOTE');
IF v_choose = 3 THEN
RETURN;
ELSIF v_choose = 1 THEN
Your Code;
End if;
要点:
1、chr(10)代表分行;
2、fnd_message.question默认为Yes,No,Cancel,如果不要其中一项就用Null替代;
示例二:弹出错误提示窗口
Fnd_Message.Set_Name('FND','日期不能为空!');
Fnd_Message.Error;
Raise Form_Trigger_Failure;