ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORACLE form相关

ORACLE form相关

原创 Linux操作系统 作者:david_liao 时间:2011-07-01 00:58:04 0 删除 编辑

1.一个form调用另一个form


fnd_function.execute(FUNCTION_NAME=>'RCVRCVRC',   
                               OPEN_FLAG=>'Y',  
                               SESSION_FLAG=>'Y',
                               OTHER_PARAMS=>'TRANSACTION_ID="'||to_char(l_rcv_transaction_id)||
                                             --'"MO_ORG_ID="'||to_char(l_mo_org_id)||
                                             --'"ORG_ID="'||to_char(l_org_id)||
                                              --'"FORM_USAGE_MODE="'||'AP_DRILLDOWN'||
                                              --'"QUERY_ONLY="'||'YES'||
                                             '"');*

You should use FND_FUNCTION.EXECUTE instead of OPEN_FORM. whenever you need to open a form. programatically. Using FND_FUNCTION.EXECUTE allows you to open forms without bypassing Oracle Applications security, and takes care of finding the correct directory path for the form.

2.设置block的item是否可插入,可更改
        SET_ITEM_INSTANCE_PROPERTY('item_name', CURRENT_RECORD,UPDATE_ALLOWED,PROPERTY_TRUE);
        SET_ITEM_INSTANCE_PROPERTY('
item_name', CURRENT_RECORD,INSERT_ALLOWED,PROPERTY_TRUE);
        SET_ITEM_INSTANCE_PROPERTY('
item_name', CURRENT_RECORD,UPDATE_ALLOWED,PROPERTY_FALSE);
        SET_ITEM_INSTANCE_PROPERTY('
item_name', CURRENT_RECORD,INSERT_ALLOWED,PROPERTY_FALSE);

3.得到block的状态
GET_BLOCK_PROPERTY('
XXXXXXX',STATUS),状态有NEW, CHANGED, QUERY.

3.选择对话框
       fnd_message.set_name('FND', 'FND_GENERIC_MESSAGE');
       fnd_message.set_token('MESSAGE', ' XXXXXXX?');
       v_rt := fnd_message.question('是', '否', null, 1);
       if v_rt=2 then
          return;  --    raise form_trigger_failure;
       end if;
4.取得当前用户的id
fnd_global.USER_ID
5.取得当前用户的员工号
fnd_global.EMPLOYEE_ID
6.取得帐套id
fnd_profile.value('GL_SET_OF_BKS_ID');
7.选择框
        FND_MESSAGE.SET_NAME('FND', 'FND_GENERIC_MESSAGE');
        FND_MESSAGE.SET_TOKEN('MESSAGE', ' 是否确定取消此物料为公共资产?');
        V_RT := FND_MESSAGE.QUESTION('是', '否', NULL, 1);
        IF V_RT=2 THEN
          RETURN;  --  RAISE FORM_TRIGGER_FAILURE;
        END IF;
8.初始化
FND_GLOBAL.APPS_INITIALIZE(user_id => ,resp_id => ,resp_appl_id => );
DECLARE
    l_user_id INTEGER;
    l_resp_id INTEGER;
    l_resp_appl_id INTEGER;
BEGIN
    SELECT user_id INTO l_user_id FROM fnd_user WHERE user_name = 'OPERATIONS';
    SELECT responsibility_id INTO l_resp_id FROM fnd_responsibility_vl WHERE responsibility_key LIKE 'PAYABLES_OPERATIONS';
    SELECT application_id INTO l_resp_appl_id FROM fnd_responsibility_vl WHERE responsibility_key LIKE 'PAYABLES_OPERATIONS';
    fnd_global.apps_initialize(user_id         => l_user_id
                                        ,resp_id         => l_resp_id
                                        ,resp_appl_id => l_resp_appl_id);
END;

9.commit
form中的commit,补充一下:
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和数据库进行提交.
如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准。
4.forms_ddl('commit');
只针对代码中的update,insert,delete语句进行提交,form上面的数据变动不提交.

10.出错提示
            fnd_message.set_name('FND','FND_GENERIC_MESSAGE');
            fnd_message.set_token('MESSAGE' ,'分摊比例填写有误!');
            fnd_message.error;

11. item初始化和它在form. builder中block的位置有关。

12. form中调用PLSQL的通知
在包中设置错误 :
--初始化错误列表
FND_MSG_PUB.initialize;
--设置错误消息名
FND_MESSAGE.Set_Name('FND','FND_GENERIC_MESSAGE');
--设置 错误内容
FND_MESSAGE.SET_TOKEN('MESSAGE',v_err_msg);
--添加到错误列表中
FND_MSG_PUB.ADD;


--在form中取得错误:
--x_msg_data 为错误内容,x_msg_count为错误个数,
if FND_MSG_PUB.Count_Msg>0 then
FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
p_count => x_msg_count,
p_data => x_msg_data);
fnd_message.set_string(x_msg_data);
fnd_message.error;
raise FORM_TRIGGER_FAILURE;
end if;

12.禁用附件按钮

app_special2.enable('VIEW.ATTACHMENTS',PROPERTY_OFF);

13.oracle output
Displaying a Message from Different Tools
When developing custom extensions in Oracle Applications, you can expect to use
a variety of development tools and programming techniques such as Oracle Forms,
Reports, PL/SQL program units, OA Framework, and others. In the next few sections,
we’ll highlight the specific techniques used to display messages from different tools.
Oracle Forms
In Oracle Forms, you can use APIs from FND_MESSAGE to display the message on
the screen. Here is a simple example:
fnd_message.set_name('SQLGL', ' XX_GL_ENTRY_WRONG ');
fnd_message.set_token(' XX_PERIOD_NAME ', 'MAR-08');
fnd_message.show;
PL/SQL Concurrent Program
The same API from FND_MESSAGE can be used in PL/SQL to display the message
in output or the log file of the concurrent program:
fnd_message.clear;
fnd_message.set_name ('SQLGL', ' XX_GL_ENTRY_WRONG');
fnd_message.set_token(' XX_PERIOD_NAME ', 'MAR-08');
--Now get the final string
l_message_var := fnd_message.get;
--Display the message text in output of concurrent program
fnd_file.put_line(fnd_file.OUTPUT, l_message_var);
Java Concurrent Program
From a Java concurrent program, you can use a code snippet as shown:
public void runProgram(CpContext pCpContext) {
CpContext mCtx = pCpContext;


Chapter 3: Application Object Library (AOL) 67
Message msg = new Message("SQLGL", "XX_GL_ENTRY_WRONG");
msg.setToken(" XX_PERIOD_NAME ", "MAR-08", true);
returnMsg = msg.getMessageText(mCtx.getResourceStore());
OA Framework Controller
The controller of the OA Framework page will display the same message if you use
the following code:
String sReturnMsg = oapagecontext.getMessage("SQLGL", " XX_GL_ENTRY_
WRONG ", new MessageToken[] {new MessageToken("XX_PERIOD_NAME ", "MAR-
08") });

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/425856/viewspace-701094/,如需转载,请注明出处,否则将追究法律责任。

上一篇: FND_PROFILE.VALUE
下一篇: Oracle Form 6i开发
请登录后发表评论 登录
全部评论

注册时间:2011-06-30

  • 博文量
    17
  • 访问量
    32508