EBS常用技术开发技巧总结

Form常用开发小技巧

1:如何设置一个数据块为只显:

set_block_property('PRICE_LINES_NDOOR', insert_allowed, property_off); 
set_block_property('PRICE_LINES_NDOOR', update_allowed, property_off);
set_block_property('PRICE_LINES_NDOOR', delete_allowed, property_off);

2:如何设置一个数据块的某一项为只显:

set_item_property('PRICE_LINES_NDOOR.INIT_PRICE',INSERT_ALLOWED, PROPERTY_FALSE);         set_item_property('PRICE_LINES_NDOOR.INIT_PRICE',UPDATE_ALLOWED, PROPERTY_FALSE);

3:如何设置一个数据块的某一行的字段为只显:

set_item_instance_property('PRICE_HEADERS.PROJECT_NAME'
                                ,current_record
                                ,insert_allowed
                                ,property_off);
set_item_instance_property('PRICE_HEADERS.PROJECT_NAME'
                                ,current_record
                                ,update_allowed
                                ,property_off);

4:如何查询一个日期范围内的数据:

App_Find.Query_Date_Range(Low_Value => :MAIN_QF.ASKED_DATE_FROM
			            ,High_Value   => (:MAIN_QF.ASKED_DATE_TO)
			            ,Db_Fieldname => 'PRICE_HEADERS.ASKED_DATE');

5:如何在from中拼凑一个查询SQL:

app_query.reset('PRICE_HEADERS');
l_sql := '1=1';
l_sql := l_sql || 'AND status_code IN(cux_po_price_pub.get_status_confirm
                              ,cux_po_price_pub.get_status_quoted)';

app_query.append('PRICE_HEADERS', l_sql);

6:如何校验界面有未保存数据

IF :system.form_status = 'CHANGED' THEN
        fnd_message.set_string('先保存数据');
        fnd_message.error;
        RAISE form_trigger_failure;
      ELSE
//   这里是你要进行的操作
END IF;

7:如何设置询问弹窗功能

fnd_message.set_string('是否确认价表取价?');
          IF fnd_message.question('确定', '取消', '', 1,2) = 1 THEN
            IF NOT app_form.quietcommit THEN
              RAISE form_trigger_failure;
            END IF;
//这里是你要进行的操作
          ELSE
            RAISE form_trigger_failure;
          END IF;

需要进行删除数据时进行提示,并删除界面数据,不影响后台数据库数据
在触发器KEY-DELREC中添加如下代码

   fnd_message.set_string('是否确认删除?');
          IF fnd_message.question('确定', '取消', '', 1,2) = 1 THEN
          IF NOT app_form.quietcommit THEN
           RAISE form_trigger_failure;
          END IF;
        --  execute_trigger('ON-DELETE');
         -- form_pub.Refresh_Ui('OA_INFO');
         delete_record;
          ELSE
            RAISE form_trigger_failure;
          END IF;

8:如何在重新查询的时候把之前的查询条件都保留下来(标准代码,参数是你要查询的那个数据块名)

PROCEDURE Refresh_Ui(P_Block_Name IN VARCHAR2) IS
	  L_Cursor_Block   VARCHAR2(50);
	  L_Cursor_Record  NUMBER;
	  L_Cursor_Item    VARCHAR2(50);
	  L_Trigger_Record NUMBER;
	  L_Default_Where  VARCHAR2(4000);
	  L_Last_Query     VARCHAR2(4000);
	  L_Where_Anchor   NUMBER;
	  L_Order_Anchor   NUMBER;
	  L_Where_Clause   VARCHAR2(4000);
	  L_Message_Level  NUMBER;
	BEGIN
	  L_Cursor_Item    := Name_In('system.cursor_item');
	  L_Cursor_Record  := Name_In('system.cursor_record');
	  L_Cursor_Block   := Name_In('system.cursor_block');
	  L_Trigger_Record := L_Cursor_Record;
	  L_Message_Level  := :System.Message_Level;
	  IF L_Cursor_Block <> P_Block_Name THEN
	    L_Trigger_Record := Get_Block_Property(P_Block_Name, Current_Record);
	    Go_Block(P_Block_Name);
	    IF Name_In('system.cursor_block') <> P_Block_Name THEN
	      Fnd_Message.Debug('developer error :TO SELECT records in another BLOCK ,you must be able TO navigate.');
	      RAISE Form_Trigger_Failure;
	    END IF;
	  END IF;
	  L_Default_Where := Get_Block_Property(P_Block_Name, Default_Where);
	  L_Last_Query    := Get_Block_Property(P_Block_Name, Last_Query);
	  --order by
	  IF Instr(Upper(L_Last_Query), 'ORDER BY') = 0 THEN
	    L_Order_Anchor := Length(L_Last_Query);
	  ELSE
	    L_Order_Anchor := Instr(Upper(L_Last_Query), 'ORDER BY') - 1;
	  END IF;
	  IF Instr(Upper(L_Last_Query), 'WHERE') = 0 THEN
	    L_Where_Anchor := L_Order_Anchor - 5;
	  ELSE
	    L_Where_Anchor := Instr(Upper(L_Last_Query), 'WHERE') - 1;
	  END IF;
	  L_Where_Clause := Substr(L_Last_Query
	                          ,L_Where_Anchor + 6
	                          ,L_Order_Anchor - L_Where_Anchor - 5);
	  Set_Block_Property(P_Block_Name, Default_Where, L_Where_Clause);
	  :System.Message_Level := 25;
	  Execute_Query;
	  :System.Message_Level := L_Message_Level;
	  Set_Block_Property(P_Block_Name, Default_Where, L_Default_Where);
	  Go_Block(P_Block_Name);
	  Go_Record(L_Trigger_Record);
	  Go_Block(L_Cursor_Block);
	  Go_Record(L_Cursor_Record);
	  Go_Item(L_Cursor_Item);
	END; --//Refresh_Ui

9:如何判断调用包的返回结果并给出相应的提示

IF l_return_status <> 'S' THEN
              fnd_message.set_string(l_msg_data);
              fnd_message.error;
              RAISE form_trigger_failure;
            ELSE
              IF NOT app_form.quietcommit THEN
                RAISE form_trigger_failure;
              END IF;
              fnd_message.set_string('已提交成功');
              fnd_message.show;
            END IF;

10:如何在一打开form就给其中的参数赋值,
在pre-form触发器中添加赋值语句

:parameter.p_role_type := fnd_profile.value('CUX_PO_PRICE_ROLE_TYPE');

11:如何给窗口显示他所在的责任
在WHEN-NEW-FORM-INSTANCE触发器中添加

set_window_property('MAIN'
                         ,title
                         ,'询价单(' || fnd_profile.value('RESP_NAME') || ')');

12:如何定义Folder的数据块语法:
在WHEN-NEW-FORM-INSTANCE触发器中添加

app_folder.define_folder_block('PRICE_LINES_NDDOR'
                                    ,'PRICE_LINES_NDOOR'
                                    ,'PRICE_LINES_NDOOR_PROMPT'
                                    ,'PRICE_LINES_
  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle EBS是一个大型的企业资源计划(ERP)系统,包含了许多功能模块,许多的信息是通过值集进行管理的。在Oracle EBS中,值集是被定义为用于数据输入限制的一组已定义的值,用于限制用户在对某个字段输入数据时可使用的值。 Oracle EBS常用的值集包括以下几个方面: 1. 表型值集(Table-validated value set):通过数据表定义值集的方式是最常使用的形式,它可以从一个数据表通过查询数据的方式获得值列表,这种值集可以在业务流程中定位到一个或多个值。 2. 基于SQL的值集(SQL-based value set):当需要对值集的产生加以限制时,这种值集是最有意义和灵活的。通过SQL语句实现了规则的限定。 3. 常量值集(Fixed value set):固定的,不变的值集,就像是从一个定义好的列表中选择值一样。 4. 组值集(Dependent value set):主要用于依赖的数据表之间,即一个表之间的值是建立在一个或多个其他表的基础之上的。 5. 计算型值集(Translatable independent value set):这种值集定义在一个特定语言环境下,并且每个值还有它在各种语言环境下的翻译。在多语言环境下使用这种值集。 总之,Oracle EBS中的值集是非常重要的,它们是控制业务数据输入限制的关键。通过上述常用的值集,可以满足不同的需求和格式的限制。它们能够和其他模块进行良好的集成和交互,实现企业的信息共享和资源优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值