今天学到在系统中定义的消息不仅可以当作普通的消息来引用展示(如文章以下所有内容),还可以把它当作一个固定变量来使用 ,通过使用FND_MESSAGE.SET_NAME和FND_MESSAGE.GET。
例如以下代码是把系统中定义的GME_TRANSACT的消息值当作button1的标签:
FND_MESSAGE.SET_NAME('GME','GME_TRANSACT');
SET_ITEM_PROPERTY('GME_BATCH_HEADER.button1',LABEL, FND_MESSAGE.GET);
消息的使用,我经常看到有的同学喜欢在FORM中直接使用FND_MESSAGE.DEBUG('xxxxx');来显示错误或提示信息,实际上这是非常不正确的做法。
顾名思及DEBUG是用来调试的,并不是用来进行人机交互的友好的方式,也不符合Oracle的标准用法。
Oracle的标准用法是使用FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;
一般情况下在FORM中显示出错信息使用以下代码:
FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;
FND_MESSAGE.ERROR ;
在PACKAGE中显示出错信息一般使用以下代码:
FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;
APP_EXCEPTION.RAISE_EXCEPTION ;
然后在EBS的应用开发者下定义中文和英文消息,然后提交请求"生成信息"来生成消息,使用这种方式可以适用于多语言和修改人机界面的提示信息,而不用去修改源程序。
下面給大家收集一下相關Oracle Form的消息提示
1. FND_MESSAGE.SET_STRING(‘<Message>’)。
此消息一定要結合FND_MESSAGE.SHOW或FND_MESSAGE.ERROR或FND_MESSAGE.HINT或FND_MESSAGE.WARN或FND_MESSAGE.QUESTION使用才能彈出對話窗口或顯示消息。
例如:
FND_MESSAGE.SET_STRING(‘陳顯平測試Oracle Form的消息,’ || Chr(10) ||
‘大家看一下是否成功?’);
FND_MESSAGE.SHOW;
2.FND_MESSAGE.SET_NAME(‘<APP_SHORT_NAME>’,’<Message_CODE>’)
此消息也要結合FND_MESSAGE.SHOW或FND_MESSAGE.ERROR或FND_MESSAGE.HINT或FND_MESSAGE.WARN或FND_MESSAGE.QUESTION使用才能彈出對話窗口或顯示消息。
參數說明:
<APP_SHORT_NAME>:用應產品簡稱.如下圖紅色圓框:
<Message_CODE>:消息代碼。若在系統表中找不對應消息說明,則消息說明自動默認為<Message_CODE>。還有,消息代碼使用前自動轉換大寫。
為何Oracle Form要內置此函數?它是為了系統定義多語言版本。
例如:
FND_MESSAGE.SET_NAME(‘FPT’,’ORACLE_001’);
FND_MESSAGE.ERROR;
3.FND_MESSAGE.DUBEG(‘<Message>’);
它是用於調試的,效果等同於FND_MESSAGE.SET_NAME或FND_MESSAGE.SET_STRING結合FND_MESSAGE.SHOW使用。
例如:
FND_MESSAGE.DEBUG(‘陳顯平測試Oracle Form的消息,’ || Chr(10) ||
‘大家看一下是否成功?’);
4.FND_MESSAGE.SHOW、FND_MESSAGE.ERROR、FND_MESSAGE.HINT和FND_MESSAGE.WARN的區別
FND_MESSAGE.SHOW提示的是注意消息,如下圖
FND_MESSAGE.ERROR提示的是誤錯消息,如下圖
FND_MESSAGE.HINT是顯示在表單中的狀態欄,如下圖
FND_MESSAGE.WARN提示有“確認”和“取消”二個按鈕,按确认向下执行,按取消停止向下执行。,它與FND_MESSAGE.QUESTION類似。
例如:如下代码可以达到以上效果。
FND_MESSAGE.SET_NAME('GMA', 'SY_NOFUTUREDATE');
IF NOT FND_MESSAGE.WARN THEN
RAISE FORM_TRIGGER_FAILURE;
END IF;
5.FND_MESSAGE.QUESTION(BUTTON1 IN VARCHAR2,BUTTON2 IN VARCHAR2,BUTTON3 IN VARCHAR2,DEFAULT_BTN IN NUMBER,CANCEL_BTN IN NUMBER,ICON IN VARCHAR2)
用於自定義對話按鈕,比FND_MESSAGE.WARN要靈活多了。
例如:
FND_MESSAGE.SET_STRING(‘陳顯平測試Oracle Form的消息,’ || Chr(10) || ‘大家看一下是否成功?’);
Int_Choose:=FND_MESSAGE.QUESTION(‘確定’,null,’取消’,1,2,’NOTE’);
If Int_Choose=2 Then
Null;
ElseIf Int_Choose=1 Then
Null;
End If;