develop技术汇总

********************************************
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/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值