EBS開發筆記-2
新增form步驟
開啟模板TEMPLATE,將其改成自己所要的名稱,刪除Data Blacks中的BLOCKNAME,DETAILBLOCK,刪除Canvases中的BLOCKNAME,刪除Windows中的BLOCKNAME,新增自己的Windows,Canvases,DateBlacks,在form級別的PRE-FORM中將Blockname改成自己新增的window,若區分ORG,則將FND_ORG.CHOOSE_ORG;加入BLOCK的上一行,在Program_unit中開啟APP_CUSTOM,修改其中的
1.在Form的title上加上Org_code
在Form級的WHEN-NEW-FORM-INSTANCE這個trigger中加入app_window.set_title('QUERY_FIND',:parameter.org_code);即可。
2.檢視彈性欄位資料來源的路徑:system administrator-->application-->flexfield-->descriptive-->segment
3.初始化view
begin
dbms_application_info.set_client_info(188);
end;
對需要user_id才能訪問的view,需要先初始化一個合法的user_id進去
begin
fnd_global.apps_initialize(26872,56536,401);
end;
4.常用程式碼
fnd_message.debug('show message'); --show出的提示視窗
raise form_trigger_failure; --配合show message使用,中斷Form的執行
在Form open/close的時候對介面的設定
例:在close_window下寫入,來控制多window的Form在關閉子視窗時切回到那個block上去
if (wnd = 'QUERY_FIND') then --當query_find這個window關閉的時候
app_window.close_first_window; --關閉第一個window,即為關閉這個window
elsif (wnd = 'APPROVER_UPDATE') then --當approve_update這個window關閉時
go_block('QUERY_FIND'); --go_block到query_find這個block上去
end if;
在open_window下寫入以下程式碼,來控制新window開啟的方式
if (wnd = 'UPDATE_USER') then --當window UPDATE_USER被開啟時
APP_WINDOW.SET_WINDOW_POSITION('UPDATE_USER', 'CASCADE', 'APPROVER_UPDATE'); --設定UPDATE_USER這個window在APPROVER_UPDATE這個window的左上角稍偏下點,具體詳見下面的介紹
SET_WINDOW_PROPERTY('UPDATE_USER', VISIBLE, PROPERTY_TRUE);
GO_BLOCK('UPDATE_USER'); --指定要顯示的block
elsif (wnd = 'ACT') then
APP_WINDOW.SET_WINDOW_POSITION('ACT', 'CASCADE', 'APPROVER_UPDATE');
SET_WINDOW_PROPERTY('ACT', VISIBLE, PROPERTY_TRUE);
GO_BLOCK('ACT');
end if;
app_window.set_window_position詳解
procedure APP_WINDOW.SET_WINDOW_POSITION(
child_window varchar2,
style varchar2,
parent_window varchar2 default NULL);
說明:說明子視窗的顯示位置
引數:child_window 指定位置的子窗體名稱
style 子視窗的定位型別
parent_window 子視窗的上階視窗名稱
style:CASCADE 多個視窗從左上向右下排列
RIGHT,BELOW 子視窗在父視窗的右邊或者下方,且父視窗不會覆蓋子視窗
OVERLAP 子視窗和父視窗重疊,對齊父視窗左邊,但向下位移0.3
CENTER 子視窗在父視窗的中間顯示
FIRST_WINDOW 顯示在toolbar的下方,通常是主視窗
處理查詢時候,如果查詢介面欄位不下條件,就表示這個欄位為空值
方法:在顯示記錄的block下的KEY-EXEQRY這個trigger下做判斷,然後將最終的where條件賦值給這個block的default_where裡面去。程式碼如下
declare
v_default_where varchar2(400); --定義變數用來存放這個block的初始where條件
V_WHERE VARCHAR2(2000); --定義變數用來存放新的where條件
begin
v_default_where:=get_block_property(:SYSTEM.CURSOR_BLOCK,DEFAULT_WHERE);--獲取此block初始的where條件
V_WHERE:=v_default_where; --將初始的where條件賦值給V_WHERE這個變數中
if v_default_where is null then --當初始條件為空時,並條件的時候不需要加'where','and'之類
if :QUERY_FIND.EMP_CLASS_CODE is null then --如果查詢介面的那個欄位為空
V_WHERE:=V_WHERE || ' EMP_CLASS_CODE is null'; --將查詢條件並上此欄位is null
else
V_WHERE:=V_WHERE || ' EMP_CLASS_CODE='||:QUERY_FIND.EMP_CLASS_CODE;--查詢介面的欄位有值就用欄位等於的sql查詢語句
end if;
else --當初始條件不為空,並查詢條件時需要加'and'
if :QUERY_FIND.EMP_CLASS_CODE is null then
V_WHERE:=V_WHERE || ' and EMP_CLASS_CODE is null';
else
V_WHERE:=V_WHERE || ' and EMP_CLASS_CODE='||:QUERY_FIND.EMP_CLASS_CODE;
end if;
end if;
set_block_property(:SYSTEM.CURSOR_BLOCK,DEFAULT_WHERE,V_WHERE); --將新的查詢條件賦值給這個block的default_where進行查詢
clear_record; /*清空,否則Form下次查詢的時候會把前一次的條件帶入*/
EXECUTE_QUERY; --執行查詢命令
set_block_property(:SYSTEM.CURSOR_BLOCK,DEFAULT_WHERE,v_default_where); --將原預設的default_where值重新恢復回去
end;
取消lov的驗證
set_record_property(:system.trigger_record,:system.trigger_block, STATUS,QUERY_STATUS);
常用於介面上的欄位值來源於select ....into...而此欄位又有繫結lov的情況下,防止以查詢方式進入介面,沒做任何操作就需要儲存;或者介面上欄位在Table中只記錄id,用name查詢時,直接用select name into 欄位。
設定欄位屬性值
app_item_property.set_property('ACT.NEW_ACT',Required,PROPERTY_TRUE);
ACT.NEW_ACT block的欄位
Required 屬性名稱
PROPERTY_TRUE 屬性值
呼叫block的trigger
APP_RECORD.FOR_ALL_RECORDS('ACT_LIST','SELECT_COUNT');
ACT_LIST block名稱
SELECT_COUNT trigger名稱
5.當一個window上有多個canvas的時候,往往會造成某個canvas不顯示,解決此方法可用
show_view('canvas')命令,其中canvas為需要顯示的canvas名稱。
注意:當使用show_view來顯示canvas時,焦點會回到之前的canvas上,這樣在show canvas_stacked的時候就不會有問題,但在show新開啟的window的時候就會造成要顯示的window閃一下就跑到之前的window的後面去,解決此問題可以呼叫
app_custom.open_window('ACT_LIST'); 來show你要的window,其中ACT_LIST為block名稱。
6.彈出yes or no的詢問對話方塊
FND_MESSAGE.SET_STRING('此核流程中已有核人T,是否⑵h除再}u?');
v_ques_no := FND_MESSAGE.QUESTION('YES','NO',NULL);
if v_ques_no=1 then
del_lines(p_head_id);
add_lines(p_head_id,p_organization_id);
else
null;
end if;
7.單擊按鈕使得下一個要彈出的介面值清空
go_block('
clear_block(no_validate);
8.FND_STANDARD.SET_WHO; 插入建立者,建立日期,最後更新者,最後更新日前,最後登陸人等資訊
9.清空block中資料
app_find.clear;清除當前block的值,不可用go_block('
app_find.clear_detail('
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14766526/viewspace-1154296/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS開發備忘筆記 (2)iOS筆記
- 【EBS】主機併發程式開發
- EBS FORM PLL 開發入門ORM
- OS開發筆記(2)——GRUB啟動流程筆記
- J2EE開發筆記(一)—— J2EE開發環境配置筆記開發環境
- 《深入核心的敏捷開發》讀書筆記(2)敏捷筆記
- 微信小程式開發學習筆記[2]微信小程式筆記
- EBS之JTF_Grid 開發總結
- Laravel 開發筆記Laravel筆記
- uinapp 開發筆記UIAPP筆記
- Android開發筆記Android筆記
- fyne 開發筆記筆記
- golang 開發筆記Golang筆記
- Java 開發筆記16Java筆記
- 【Python】GUI開發筆記PythonGUI筆記
- 元件包開發筆記元件筆記
- ExtJS 6.2開發筆記JS筆記
- 小程式開發筆記筆記
- 【開發筆記】swift語法小記筆記Swift
- Apache Answer Plugin 開發筆記ApachePlugin筆記
- Android 開發學習筆記Android筆記
- 大資料開發筆記大資料筆記
- 公眾號開發筆記筆記
- html,css前端開發筆記HTMLCSS前端筆記
- Think.js開發筆記JS筆記
- fir-mac 開發筆記Mac筆記
- Quick-3.3 開發筆記UI筆記
- Yii2開發筆記系列二:使用module做api版本化筆記API
- HTML筆記(2)HTML筆記
- linux筆記2Linux筆記
- Day 2 筆記筆記
- docker 筆記2Docker筆記
- sqlserver筆記2SQLServer筆記
- springCloud學習筆記2(服務發現)SpringGCCloud筆記
- 開發筆記:使用 mpvue 開發鬥圖小程式筆記Vue
- hibernate《輕量級框架應用與開發--S2SH》筆記框架筆記
- springboot 開發學習筆記1Spring Boot筆記
- Amazon Selling Partner API 開發筆記API筆記
- Python筆記 開發環境搭建Python筆記開發環境