********************************************
1、自定义”快码设置“界面:直接定义功能,然后挂菜单就可以了
********************************************
Function name,自己取,
Type : Form,
Formname : 定义代码,
参数:VIEW_APPLICATION="PO" HELP_TARGET="PO/FNDLVMLU" LOOKUP_TYPE="DEMAND_CLASS" APPL_SHORT_NAME="BOM"
(以下参数供选择,继续收集完善中……)
VIEW_APPLICATION
LOOKUP_TYPE
APPL_SHORT_NAME--FND_APPLICATION_VL
APPLICATION
APPL_ID
VIEW_APPL_ID
TERRITORY_CODE
LOOKUP_TYPE_QF
APPLICATION_ID_QF
LOOKUP_CODE_QF
SECURITY_GROUP_ID
********************************************
2、自定义菜单:使用系统标准功能
********************************************
FORM级PRE–FORM:app_special.instantiate('SPECIAL1','&导入发票');
或:app_special.instantiate('SPECIAL1','&导入发票(&A)','bkord');
FORM级PRE–BLOCK:app_special.enable('SPECIAL1',PROPERTY_OFF);
BLOCK级PRE–BLOCK:app_special.enable('SPECIAL1',PROPERTY_ON);
BLOCK级POST-BLOCK:app_special.enable('SPECIAL1',PROPERTY_OFF);
BLOCK级SPECIAL1:功能代码
在custom.pll中使用以下:
APP_SPECIAL2.INSTANTIATE('SPECIAL15','详细信息',NULL,TRUE);
APP_SPECIAL2.ENABLE('SPECIAL15',PROPERTY_ON);
********************************************
3、使用标准数据导出功能(文件->导出)
********************************************
form级添加触发器EXPORT
app_standard.event('EXPORT');
********************************************
4、代码实现列表项
********************************************
DECLARE
rg_name VARCHAR2(40) := 'TYPE_FLAG';
rg_id RecordGroup;
X_status NUMBER;
/*
X_LOOKUP_CODE GROUPCOLUMN;
X_rowcount NUMBER DEFAULT 0;
*/
BEGIN
rg_id := Find_Group(rg_name);
IF Id_Null(rg_id) THEN
rg_id := Create_Group_From_Query(rg_name,
'SELECT FV.MEANING,FV.LOOKUP_CODE
from FND_LOOKUP_VALUES_VL FV
where FV.ENABLED_FLAG = ' || CHR(39) || 'Y' ||
CHR(39) || ' order by FV.LOOKUP_CODE');
END IF;
X_status := Populate_Group(rg_id);
set_lov_property('whse_code_from', group_name, rg_name);
Populate_List('XXX_CTL.TYPE_FLAG', rg_id);
Populate_List('LOGI_CONVEYLOG_V1.TYPE_FLAG', rg_id);
/*
X_LOOKUP_CODE := FIND_COLUMN('TYPE_FLAG.LOOKUP_CODE');--返回列的ID
X_rowcount := GET_GROUP_ROW_COUNT(rg_id);--返回记录组的记录数
GET_GROUP_NUMBER_CELL(X_LOOKUP_CODE, i);--返回的i条记录中某列的值
*/
END;
********************************************
5、Form的选择对话框功能
********************************************
FND_MESSAGE.SET_NAME('FND', '确定要取消登记吗?');
v_num := FND_MESSAGE.QUESTION('确定', NULL, '取消', 1, 3, 'STOP');
if v_num = 1 then
--事务处理
else
--事务处理
end if;
********************************************
6、在菜单上直接提交请求的功能
********************************************
1.定义一个Function :
Function name,自己取,
Type : Form,
Formname : 运行报表,
参数:
REQUEST_GROUP_CODE="" --(提交整个请求组)
REQUEST_GROUP_APPL_SHORT_NAME=""
TITLE="your description-任意"
USE_ORG="Y"
或者
CONCURRENT_PROGRAM_NAME="" --(提交单个程序)
PROGRAM_APPL_SHORT_NAME=""
TITLE=""USE_ORG="Y"
如:
CONCURRENT_PROGRAM_NAME="XXXAPSUCC"
PROGRAM_APPL_SHORT_NAME="XXX"
TITLE="核销结果"USE_ORG="N"
或
REQUEST_GROUP_CODE="XXX_CUST_REPORTS"
REQUEST_GROUP_APPL_SHORT_NAME="XXX"
TITLE="XXX_发货单" USE_ORG="N"
2,将该功能挂到你的菜单里面
(以下参数供选择,完善中……)
USE_ORG --为'Y'时在双击菜单后会出现组织选择界面,'N'则不用选
REQUEST_GROUP_CODE--请求组,说明该请求组中的所有请求都可以提交
CONCURRENT_PROGRAM_NAME--请求名称,说明只能提交指定的请求,如果报表的名称在ERP上唯一,则其他参数可以不要
PROGRAM_APPL_SHORT_NAME--应用模块的简称
TITLE--请求界面的标题
********************************************
7、用procedure作为请求来源:注意
********************************************
当请求的来源是存储过程时,必须在该过程参数前面添加2个参数
errbuf OUT VARCHAR2,
retcode OUT NUMBER,
但在挂请求时,不设置这2个参数
********************************************
8、在form调用前,需要选择组织的设置
********************************************
/*自己创建*/
1、创建记录组及LOV,该步骤与正常创建步骤同,值列表中必须包含组织ID列,
2、添加参数,该参数用来存储值列表的返回值,即组织ID。值列表选择后立即退出FORM
3、将参数的值,即组织ID传给系统标准设置,
通过在PRE-FORM或WHEN-NEW-FORM-INSTANCE中添加以下代码实现:
declare
a boolean;
begin
a:=show_lov('ORGN');--ORGN:定义的值列表,其中ID 返回给 :parameter.orgn_id
if :parameter.orgn_id is not null then--:parameter.orgn_id:定义的参数
FND_PROFILE.PUT('MFG_ORGANIZATION_ID',:parameter.orgn_id);--赋值给配置文件参数,整个session都可以使用
else
raise form_trigger_failure;
end if;
end;
/*调用系统标准*/
在FORM中必须要添加以下几个参数:ORG_ID,CHART_OF_ACCOUNTS_ID,ORG_NAME,ORG_CODE
在FORM级的PRE-FORM或WHEN-NEW-FORM-INSTANCE中添加以下代码实现:FND_ORG.CHOOSE_ORG
********************************************
9、使用日历控件
********************************************
1.subclass infomation: text_item_date
2. lov choose:
enable list lamp
validate from list ->no
3. write a trigger key-listval
calendar.show
设置日期项的初始值为$$DATE$$ ,则在添加记录时自动默认系统时间
********************************************
10、commit form的说明
********************************************
1.commit_form针对form上面的数据变动进行commit,对于代码中的类似update,insert语句也进行提交;
如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准。
2.do_key('commit_form')
会首先寻找form下的triggers中的KEY-COMMIT这个trigger,并执行KEY-COMMIT中所写的代码。
如果没有KEY-COMMIT这个trigger,则会针对form和代码一起提交。
如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准。
3.commit
对form和数据库进行提交.
4.forms_ddl('commit');
只针对代码中的update,insert,delete语句进行提交,form上面的数据变动不提交。
forms_ddl('begin commit;end;');
********************************************
11、创建临时表
********************************************
create global temporary table HEK_AA(id number,name varchar2(8)) on commit preserve rows;--会话级临时表采用
create global temporary table HEK_AA(id number(5),name varchar2(8))) on commit delete rows ;--事务级则采用
********************************************
12、Developer/2000中各键盘触发子所对应的“按键”
********************************************
Form程序:
封装过程 键触发子 含义 对应按键
ABORT_QUERY Key-EXIT [退出/取消]
BLOCK_MENU Key-MENU [块菜单] F5
CLEAR_BLOCK Key-CLRBLK [清空块] Shift+F5
CLEAR_FORM Key-CLRFRM [清空FORM] Shift+F7
CLEAR_RECORD Key-CLRREC [清空记录] Shift+F4
COMMIT_FORM Key-COMMIT [提交/存盘] F10
COUNT_QUERY Key-CQUERY [计算查询记录总数] Shift+F2
CREATE_RECORD Key-CREREC [插入新记录] F6
DELETE_RECORD Key-DELREC [删除记录] Shift+F6
DOWN Key-DOWN [下滚记录] Ctrl+l、下箭头
DUPLICATE_ITEM Key-DUP-ITEM [复制域/项] F3
DUPLICATE_RECORDKey-DUPREC [复制记录] F4
EDIT_TEXTITEM Key-EDIT [打开编辑器] Ctrl+E
ENTER Key-ENTER [Enter]
ENTER_QUERY Key-ENTQRY [输入查询条件] F7
EXECUTE_QUERY Key-EXEQRY [执行查询] F8
EXIT_FORM Key-EXIT [退出/取消查询] Ctrl+Q
HELP Key-HELP [帮助] F1
LIST_VALUES Key-LISTVAL [显示值列表LOV] F9
LOCK_RECORD Key-UPDREC [Lock Record]
NEXT_BLOCK Key-NXTBLK [下一块] Ctrl+Page Down
NEXT_ITEM Key-NEXT-ITEM [下一域/项] Ctrl+Tab、Tab、Enter
NEXT_KEY Key-NXTKEY [定位到下一个主键项] Shift+F3
NEXT_RECORD Key-NXTREC [下一条记录] Shift+Down
NEXT_SET Key-NXTSET [下一个记录集] Ctrl+>
PREVIOUS_BLOCK Key-PRVBLK [前一块] Ctrl+Page Up
PREVIOUS_ITEM Key-PREV-ITEM [前一域/项] Shift+Tab、Shift+Ctrl+Tab
PREVIOUS_RECORD Key-PRVREC [前一条记录] Shift+Up
PRINT Key-PRINT [打印当前屏幕] Shift+F8
SCROLL_DOWN Key-SCRDOWN [下翻屏] Page Down
SCROLL_UP Key-SCRUP [上翻屏] Page Up
UP Key-UP [上滚记录] Ctrl+p、上箭头
Esc 取消
Backspace 向后删除
Ctrl+U 清除域/项
Ctrl+F1 显示有效的功能键列表
Shift+F1 发生错误时,显示错误窗口
********************************************
13、配置文件
********************************************
v_user_id number:=fnd_profile.value('USER_ID');
V_LOGIN_ID NUMBER:=FND_PROFILE.VALUE('LOGIN_ID');
:parameter.p_org_id:=fnd_profile.value('MFG_ORGANIZATION_ID'); 131
:parameter.p_ou_id:=fnd_profile.value('ORG_ID'); 122
v_book_id number:=fnd_profile.value('GL_SET_OF_BKS_ID'); 1002
country_code := fnd_profile.value('JGZZ_COUNTRY_CODE');
product_code := fnd_profile.value('JGZZ_PRODUCT_CODE');
fnd_profile.put('MFG_ORGANIZATION_ID', name_in('GLOBAL.ORG_ID'));
fnd_profile.put('MFG_CHART_OF_ACCOUNTS_ID',name_in('GLOBAL.CHART_OF_ACCOUNTS_ID'));
csecgrp varchar2(15):= fnd_profile.value('SECURITY_GROUP_ID');--安全组
fnd_profile.value('RESP_ID')--取得职责ID
T.LANGUAGE = userenv('LANG')
l_session_id := USERENV('sessionid');
userenv('CLIENT_INFO')122
********************************************
14、请求中参数互相约束-实现方法
********************************************
在请求参数设置时,可以通过前一个参数值来限制后面参数的值,用以下方式
WHERE HO.ORGN_CODE=:$FLEX$.ZJ_CJ_CODE--:$FLEX$.前参数值集
********************************************
15、取得ccid
********************************************
DECLARE
L_CCID NUMBER;
V_CCID_DISP VARCHAR2(100) := '11.000000.212101.0000.0000.0000';
BEGIN
l_ccid := fnd_flex_ext.get_ccid(application_short_name => 'SQLGL',
key_flex_code => 'GL#',
structure_number => 101,
validation_date => to_char(SYSDATE,
'DD-MON-YYYY'), --to_char(sysdate),
concatenated_segments => V_CCID_DISP);
DBMS_OUTPUT.put_line(l_ccid);
END;
或
v_flag:=
fnd_flex_ext.get_combination_id(
application_short_name => 'SQLGL'
,key_flex_code => 'GL#'
,structure_number => 101
,validation_date => to_char(sysdate, 'DD-MON-YYYY')
,n_segments =>6
,segments =>gl_seg
,combination_id =>v_combination_id
,data_set =>-1);
if v_flag=true then
DBMS_OUTPUT.put_line(v_combination_id);
else
DBMS_OUTPUT.put_line('error');
end if;
********************************************
16、编译form/pll
********************************************
pll文件直接传到 ../au/11.5.0/resource路径后直接编译就可以
f60gen *.fmb userid=apps/apps
f60gen module=CUSTOM.pll userid=apps/apps module_type=LIBRARY
f60gen userid=apps/apps module=/path/xxx.fmb output_file=/path/xxx.fmx module_type=form. batch=no compile_all=special
编译.pll时module_type=library
********************************************
17、代码提交请求功能-实现
********************************************
v_req_id := fnd_request.submit_request('XXX',--应用模块简称
'XXXXXXXX',--请求可执行文件
'',
'',
FALSE,
v_emp, --用户参数,添加几个参数,就要在下面的空格中减少掉几个空格,保持总参数个数不变
chr(0), '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '',
'', '');
if (v_req_id = 0) then
/* Handle submission error */
FND_MESSAGE.RETRIEVE;
FND_MESSAGE.ERROR;
else
fnd_message.debug('您的请求已经提交,请求号为:' || to_char(v_req_id) ||
',请通过查看->请求来查看输出结果。');
end if;
********************************************
18、
********************************************
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/797362/viewspace-592684/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/797362/viewspace-592684/