我的EBS学习笔记

系统中成为采购员的方法... 2

分类的设置... 2

多重游标定义... 6

包的定义... 6

如何讓值集參數的一下個參數值設為上一參數的值... 8

如何使用分析函數來生成排序行... 9

PL/SQL異常處理代碼... 9

PL/SQL調試方法... 9

數據驗證代碼... 9

實現查詢的方法... 10

如何取得標簽頁的當前頁面的頁面名... 11

如何讀取配置文件的置... 11

生成表查詢的方法... 11

如何實現是查詢職責時,對數據塊進行唯讀... 11

增加設置檔文件方法... 12

FORM/消息窗口實現方法... 12

EBSform开发中实现查询功能的各种方法总结... 13

Form初始设置代码解析... 14

EBS中取保存人的方法... 15

form中用代碼修改數據塊的記錄狀態... 15

form中用代碼提交數據的方法... 15

新装电脑在第一次使用form build时,在用模板进行开发时要做的... 15

修改注冊表改變form buildoralce devlop 工具的語言。... 16

PL/SQL中如何用语言... 16

如何定義一個查詢權限的功能表... 16

数据块的循环和如何运用数组示例... 18

Form的开发中如何让手电筒不变灰的方法... 19

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2009/8/22  星期六  

 

系统中成为采购员的方法

用户如果想在EBS中做采购订单的话,首先要注册自己成为采购员,否则没法输入采购单的,如果让上级来审批采购订单的话还要设置自己的上下级职位结构,否则输入的采购单没法被审批的

以下是设置用户TESTUSER自己采购,自己审批的步骤:

 

1、以系统管理员身体登录EBS设置TESTUSER用户关联某一员工,操作就不多说

 

2、设置自己成为采购员。以PO SUPERUSER身份登录EBS,路径为:设置/人事/采购员,在弹出窗口中的采购员处,选择第1步已关联TESTUSER的员工姓名,然后保存完成设置

 

3、设置审批分配。以PO SUPERUSER身份登录EBS,路径为:设置/审批/审批分配,选择关联TESTUSER用户的员工的职位,在弹出的窗口中的单据类型处选择“标准采购订单”,然后在审批组选择“无限审批”,最后保存退出。

 

4、设置单据类型可以自己审批,以PO SUPERUSER身份登录EBS,路径为:设置/采购管理系统/单据类型,选择标准采购订单,在弹出的窗口中的属性的“责任人可以审批”处打勾就完成了“标准采购订单”自己能审批了。

 

5、最后以TESTUSER用户登录EBS,在采购订单窗口的采购员处就可以选择TESTUSER用户关联的员工,输完采购单成后可以自己审批

 

如果要让员工的上级来审批的话要设置多一步:

 

进入路径:全局超级HRMS管理器/工作结构/职位/层次结构,在弹出的职位层次结构窗口输入“测试结构”然后保存,在职位处选择要设置的用户的主管职位,然后在下属中选择关联用户的员工,最后保存退出。注意在保存后,要运行“员工层次结构”请求才能使刚才的设置生效


分类的设置

1、定义键值弹性域

庫存管理超級用戶à彈性域à定義鍵彈性域à進入如下畫面,

應用模組是:庫存管理系統,找到代碼為ITEM_CATEGORIES,標題改為物料分類,把“凍結彈性欄位定義”勾去掉,然後點擊“節段”出現如下圖所示,

SEGMENT1,SEGMENT2,SEGMENT3分別設為大、中、小類,顯示、啟用都打勾,點保存,點中上面每一類分別點“值集”設置如下圖所示,

在此之前要先新增值集;點中每一類分別點“開啟“,設置如下:

表間的關系如下

--彈性域節注冊表

select *

from FND_ID_FLEXS

where

 application_id=401

and id_flex_code='MCAT'

and id_flex_name='Item Categories';

 

--彈性域基本表

select *

from FND_ID_FLEX_STRUCTURES_VL

where application_id=401

and id_flex_code='MCAT'

and id_flex_num='101';

 

--彈性域節段

SELECT *

FROM FND_ID_FLEX_SEGMENTS_VL

WHERE

ID_FLEX_CODE = 'MCAT'

 and APPLICATION_ID = 401

 and ID_FLEX_NUM = 101;

  

--彈性域值清單 

   SELECT *

   FROM FND_FLEX_VALUES_VL

   where flex_value_set_id='1013769';

 

--物料組表 (這裡面有彈性域字段如segmentN) 

   select *

   from MTL_CATEGORIES_B;

2、定义分类集

庫存管理超級用戶à分類à分類集,出现如下图:

设置如上所示后保存。

3、预设分类集

庫存管理超級用戶à分類à预设分类集

把存货指派给Invertory,这样设置后,物料的分类的默认就为Inventory了。

 

2009/09/07

原物料交易表和入库交易表的关系transaction_id ß> rcv_transaction_id

 

select *

from inv.mtl_material_transactions b,

rcv_transactions a

where a.transaction_id = b.rcv_transaction_id

 

 

 

 

 

 

 

 

 

 

2009/10/09

多重游标定义

 

declare

  cursor st(s varchar2) is

   select * from mtl_system_items_b where segment1 like s||'%';

   cursor st1(s varchar2) is

   select * from mtl_system_items_b where segment1 like s||'%';

   v_item varchar2(100);

begin

  for r in st('AA') loop

    dbms_output.put_line(r.segment1);

    v_item:=r.segment1;

        for r in st1(v_item) loop

         dbms_output.put_line('    '||r.segment1);

 

 end loop;

  end loop;

end;

 

 

2009/10/10   星期六     

包的定义

定义包的某个过程时此过程一定要带两个系统缺省参数,如下

(ERRBUF OUT VARCHAR2,RETCODE OUT NUMBER)

名称和类型要全完参昭上面。

示例如下:

create or replace package CUX_WIP_HOUSPROPORTION_PKG

 is

/*

  -- Author  : fxj

  -- Created : 2009/10/09 20:47:33

  -- Purpose : 

  此包用于工时回报的分摊

  */

  procedure WIP_HOUSPROPORTION_PKG(ERRBUF OUT VARCHAR2,RETCODE OUT NUMBER);

end CUX_WIP_HOUSPROPORTION_PKG;

create or replace package body CUX_WIP_HOUSPROPORTION_PKG is

 procedure WIP_HOUSPROPORTION_PKG(ERRBUF OUT VARCHAR2,RETCODE OUT NUMBER)

  is

end CUX_WIP_HOUSPROPORTION_PKG;

 

 

2009/10/19 星期一 

 

Pl/sql中如何實現某些and語句跟參數啟作用和不啟作用示例

declare c number;

      v number;

begin        

 v:=1;          

select count(*) c

into c

from (

select 1 a,2 b,'y' y,'n' y1,'y' y2

from dual

union all

select 2 a,3 b,'y' y,'n' y1,'y' y2

from dual

union all

select 3 a,4 b,'n' y,'n' y1,'y' y2

from dual

union all

select 3 a,4 b,'n' y,'n' y1,'y' y2

from dual

)

where 1=1

and ((v=1)  or (1=1 and not( y='n')));

dbms_output.put_line(to_char(c));

end;

 

2009/10/29     

如何讓值集參數的一下個參數值設為上一參數的值

把預設型態設為:SQL陳述式,在預設值中輸入下面內容

SELECT :$FLEX$.CUX_BOM_DEPARTMENT FROM DUAL

CUX_BOM_DEPARTMENT它是上一參數的值集

2009/11/05

給日期類型的ITEM賦初始值方法:在init處寫入$$DATE$$

 

 

 

 

 

 

 

 

 

2009/11/9

如何用代碼實現執行系統函數和請求,示例如下

下面是執行函數,一般用于formprocedure...
fnd_function.execute(FUNCTION_NAME=>'FND_FNDFLUPL',
                                     OPEN_FLAG => 'Y',
                                     SESSION_FLAG => 'Y',
                                     OTHER_PARAMS =>ls_parameter);

下面是用来提交一个请求的,它返回一个NUMBER
          Ln_Request_Id := Fnd_Request.Submit_Request('XXCPQ',
                                                    'XXOMPO012',
                                                    :P_CONC_REQUEST_ID,
                                                    '',
                                                    FALSE,
                                                    'OTHER',
                                                    'o'||To_Char(:P_CONC_REQUEST_ID)||'.out',
                                                    'SCJOQ_'||:P_OU||'_'||:P_DATE_TYPE||'.txt',                                                                                                        
                                                    Chr(0),'',
                                                    '','','','','','','','','','',
                                                    '','','','','','','','','','',
                                                    '','','','','','','','','','',
                                                    '','','','','','','','','','',
                                                    '','','','','','','','','','',
                                                    '','','','','','','','','','',
                                                    '','','','','','','','','','',
                                                    '','','','','','','','','','',
                                                    '','','','','','','','','','',
                                                    '','','','',''
                                                    );
  

  COMMIT;
  Srw.message(100,'Ln_Request_Id = '||Ln_Request_Id);

 

2009/11/11  

如何使用分析函數來生成排序行

示例如下

row_number() over(partition by pah.object_id||pah.action_code order by pah.object_id)  r_num

 

2009/11/12 

PL/SQL異常處理代碼

EXCEPTION

              WHEN NO_DATA_FOUND THEN

           RAISE Form_Trigger_Failure;

PL/SQL調試方法

fnd_message.debug(‘’);

 

數據驗證代碼

declare

  v_dep varchar2(10);

begin

  if :system.mode <> 'QUERY' then

    if :APPROVED.DEPT_DES is not NULL THEN

      begin

        SELECT F.FLEX_VALUE

          INTO v_dep

          FROM FND_FLEX_VALUE_SETS S, CUX.CUX_FND_FLEX_VALUES_V F

         WHERE S.FLEX_VALUE_SET_NAME = '3G_IPD_REPORT_DEPT'

           AND S.FLEX_VALUE_SET_ID = F.FLEX_VALUE_SET_ID

           AND F.DESCRIPTION = :APPROVED.DEPT_DES;        

      EXCEPTION

        WHEN NO_DATA_FOUND THEN

          fnd_message.set_string('對不起,沒有此部門!');

          fnd_message.error;

          :APPROVED.DEPT_DES := null;

          RAISE Form_Trigger_Failure;

      end;

    END IF;

  end if;

end;

 

2009/11/23  

實現查詢的方法

app_folder.event('PRE-QUERY');--此處是標准

if :parameter.g_query_find = 'TRUE' then  --此處是標准(我的理解為有點類似如按F11)

app_find.query_range(:ORDERS_QF.order_number_from,:ORDERS_QF.order_number_to,'QF_ORDERS_HEADERS.order_number');--此處是查詢范圍的方法,想當於between  and

          copy(:ORDERS_QF.CUSTOMER_ID,'QF_ORDERS_HEADERS.CUSTOMER_ID');

         copy(:ORDERS_QF.AGENT_ID,'QF_ORDERS_HEADERS.AGENT_ID');

          copy(:ORDERS_QF.ORDER_TYPE_ID,'QF_ORDERS_HEADERS.ORDER_TYPE_ID');

       

          copy(:ORDERS_QF.DEMAND_SOURCE,'QF_ORDERS_HEADERS.DEMAND_SOURCE');

          copy(:ORDERS_QF.ZONE_CODE,'QF_ORDERS_HEADERS.ZONE_CODE');

          copy(:ORDERS_QF.CUSTOMER_LEVEL,'QF_ORDERS_HEADERS.CUSTOMER_LEVEL');

          copy(:ORDERS_QF.SALESREP,'QF_ORDERS_HEADERS.SALESREP');

          copy(:ORDERS_QF.BRAND_CODE,'QF_ORDERS_HEADERS.BRAND_CODE');

          copy(:ORDERS_QF.CUSTOMER_STYLE,'QF_ORDERS_HEADERS.CUSTOMER_STYLE');

          copy(:ORDERS_QF.FACTORY_STYLE,'QF_ORDERS_HEADERS.FACTORY_STYLE');

          copy(:ORDERS_QF.FACTORY_STYLE_MIR,'QF_ORDERS_HEADERS.FACTORY_STYLE_MIR');

          copy(:ORDERS_QF.FACTORY_STYLE_MIR_DESC,'QF_ORDERS.FACTORY_STYLE_MIR_DESC');

          copy(:ORDERS_QF.LAST_CODE,'QF_ORDERS_HEADERS.LAST_CODE');

          copy(:ORDERS_QF.HEEL,'QF_ORDERS_HEADERS.HEEL');

          copy(:ORDERS_QF.SHOE_LATHE,'QF_ORDERS_HEADERS.SHOE_LATHE');

          copy(:ORDERS_QF.SOLE,'QF_ORDERS_HEADERS.SOLE');

          copy(:ORDERS_QF.DEPARTMENT_CODE,'QF_ORDERS_HEADERS.DEPARTMENT_CODE');

          copy(:ORDERS_QF.AREA_CODE,'QF_ORDERS_HEADERS.AREA_CODE');

          app_find.query_range(:ORDERS_QF.ORDERED_DATE_FROM,:ORDERS_QF.ORDERED_DATE_TO,'QF_ORDERS_HEADERS.ORDERED_DATE');

          copy(:ORDERS_QF.ORDER_STATUS,'QF_ORDERS_HEADERS.ORDER_STATUS');

          :parameter.g_query_find := 'FALSE'; --此處是標准

end if;

 

如何取得標簽頁的當前頁面的頁面名

declare

      curr_tab VARCHAR2(30) := get_canvas_property('ORDER_REGIONS',

                                                      topmost_tab_page);

如何讀取配置文件的置

fnd_profile.value('CUX_DEMAND_ORDER')='Y'

注:首先要在設定檔中定義CUX_DEMAND_ORDER.

2009/12/03  

生成表查詢的方法

CREATE TABLE CUX.CUX_IPD_RECIPE_CONFIG AS

   SELECT * FROM CUX.CUX_IPD_RECIPE_CONFIG@dev.US.ORACLE.COM S

用此法可以從一個數據庫的表遷移到另一數據庫,可以把索引一起移過去,但觸發器移不過去。

 

 

 

 

 

 

2009/11/23 

如何實現是查詢職責時,對數據塊進行唯讀

如下:

if  upper(:Parameter.QUERY_ONLY)='YES' THEN--用於查詢職責時實現只能查詢。

                       SET_BLOCK_PROPERTY('HEADER', DELETE_ALLOWED , PROPERTY_FALSE);

                                                    SET_BLOCK_PROPERTY('HEADER', UPDATE_ALLOWED , PROPERTY_FALSE);

                                                    SET_BLOCK_PROPERTY('HEADER', INSERT_ALLOWED , PROPERTY_FALSE);

                                                    SET_BLOCK_PROPERTY('ROUTE', DELETE_ALLOWED , PROPERTY_FALSE);

                                                    SET_BLOCK_PROPERTY('ROUTE', UPDATE_ALLOWED , PROPERTY_FALSE);

                                                    SET_BLOCK_PROPERTY('ROUTE', INSERT_ALLOWED , PROPERTY_FALSE);

                                                    SET_BLOCK_PROPERTY('APPROVED', DELETE_ALLOWED , PROPERTY_FALSE);

                                                    SET_BLOCK_PROPERTY('APPROVED', UPDATE_ALLOWED , PROPERTY_FALSE);

                                                    SET_BLOCK_PROPERTY('APPROVED', INSERT_ALLOWED , PROPERTY_FALSE);

END IF;

其中Parameter.QUERY_ONLY是系統標准功能,此參數通過定義表單時定義。

 

2010/01/10 

增加設置檔文件方法

進入應用開發管理-->設定檔,設置內容如下

SQL驗證代碼如下:

SQL="SELECT MEANING /"Installed/", LOOKUP_CODE

into :visible_option_value,

:profile_option_value

from fnd_lookups

where lookup_type = 'YES_NO'"

COLUMN="/"Installed/"(10)"

 

2010/01/11 

FORM/消息窗口實現方法

form中的 ,T_LOVELOAD,然後設置T_OVERLOAD的屬性如下:

示例代碼:

al_id := Find_Alert('T_OVERLOAD');

al_button := Show_Alert(al_id);   

 IF al_button = ALERT_BUTTON2 THEN                    

     return;

END IF;

 

 

2010/01/20  

EBSform开发中实现查询功能的各种方法总结

1、要在参数中定义G_Query_find参数,此参数是标准参数,只要用下面的代码就可以把数据块置为查询状态。

:parameter.G_query_find := 'TRUE';

app_find.find('CUXIPDCOLOR');

:parameter.G_query_find := 'FALSE';

 

2、执行查询的方法有如下几种

Aapp_find.find('CUXIPDCOLOR');

Bexecute_query;

   用此方法时一定要指定当前数据块

Capp_find.query_find('WEIGHTS',

     'QUERY_FIND',

     'QUERY_FIND');

 

3、添加查詢條件的方法。

  A        app_query.append(:system.trigger_block,'ITEM_NUMBER>='''||NAME_IN('QUERY_FIND.P_ITEM_NUMBER_FROM')||'''');

函数解析:

参数一:要查询的数据块

参数二:查询语句

 

B

app_find.query_range(:ORDERS_QF.order_number_from,:ORDERS_QF.order_number_to,'QF_ORDERS.order_number');

函数解析:

 

参数一:查询条件取值从

参数二:查询条件取值至

参数三:要查询的栏位

C

copy(:ORDERS_QF.AGENT_ID,'QF_ORDERS.AGENT_ID');

函数解析:

参数1:复制来源

参数2:复制目的地

 

D

  set_block_property('CUX_PACKING_HEADERS_ALL_V',default_where,'FILE_ID ='|| :COPY.NEW_FILE_ID);

函数解析:

参数1:要查询的数据块

参数2:固定常量

参数3:语句

这个方法用之前和用完后要把default_where清空,如下

set_block_property('CUX_PACKING_HEADERS_ALL_V',default_where,'’);

如果要多个条件,用中间变量叠加生成查询条件语句,如下:

v_where:=v_where +’’

set_block_property('CUX_PACKING_HEADERS_ALL_V',default_where,v_where);

 

 

 

 

 

 

 

 

 

 

2010/01/21 

Form初始设置代码解析

打开组织选择窗口

FND_ORG.CHOOSE_ORG;

窗口显示位置

          app_window.set_window_position('query_find', 'FIRST_WINDOW');

显示窗口

          SHOW_VIEW('QUERY_FIND');

设置窗口属性(title)

SET_WINDOW_PROPERTY('QUERY_FIND', TITLE ,:PARAMETER.ORG_NAME);

 

 

 

 

 

EBS中取保存人的方法

SELECT p.LAST_NAME||p.FIRST_NAME --REPLACE(MAX(p.full_name), ',', '')

  INTO p_name

   FROM per_people_f p, fnd_user u

  WHERE u.employee_id = p.person_id

    AND u.user_id = fnd_profile.VALUE('USER_ID');

 

form中用代碼修改數據塊的記錄狀態

SET_RECORD_PROPERTY(1,'HEADER',STATUS,CHANGED_STATUS);

 

form中用代碼提交數據的方法

COMMIT_FORM;  

 

新装电脑在第一次使用form build时,在用模板进行开发时要做的

1 进入注册表

“我的电脑/HKEY_LOCAL_JACHINE/SOFTWARE/ORACLE/KEY_DevSuiteHome1”,(或用 FORM_PATH进行搜索)下的FORM_PATH中,加入C:/sysERP/resource,此路径代表模板源,打开模板时要调用到里面的一些文件,不然会报错。

2 要设置数据库链结字符串

用记事本打开/DevSuiteHome_1/NETWORK/ADMIN/tnsnames

在其中添加连结字符串,如下:

erp_test =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.9)(PORT = 1601))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = test)

    )

  )

 

erp_dev =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = testerp.topgloria.com)(PORT = 1571))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = dev)

    )

  )

修改注冊表改變form buildoralce devlop 工具的語言。

路徑:“我的电脑/HKEY_LOCAL_JACHINE/SOFTWARE/ORACLE/KEY_DevSuiteHome1”

鍵值:NLS_LANG

TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950(繁體)

AMERICAN_AMERICA.UTF8(英語)

 

PL/SQL中如何用语言

LANGUAGE = USERENV('LANG');

 

如何定義一個查詢權限的功能表

第一步:定義表單

應用模組開發員>>应用模组>>表單(注意:表單名不能隨意寫,要和form名一致)

 

 

第二步:定義功能函數

應用模組開發員>>應用模組>>函數,參數處要輸入QUERY_ONLY="YES"

 

 

 

步:尋找職責所對應的功能表

系統管理員>>安全性>>職責>>定義,查詢職責所對應的功能表如下圖所示

 

 

步:在功能表中添加子菜單

系統管理員>>應用模組>>功能表

 

数据块的循环和如何运用数组示例

PROCEDURE check_packing_file is

  type v_line_record is record

  (

    item_id  integer,

    packing_file_id integer

  ); 

  type v_line_table IS TABLE OF v_line_record INDEX BY BINARY_INTEGER;

  p_lines_tbl v_line_table;

  i integer;

  j integer;

  v_item_id integer;

  v_file_id integer;

 BEGIN

  Go_Block('LINES');

  First_Record;

  i:=0;

   loop

        i:=p_lines_tbl.count + 1;

        p_lines_tbl(i).item_id:= :LINES.ITEM_ID;

        p_lines_tbl(i).packing_file_id:= :LINES.packing_file_id;

        EXIT WHEN :system.last_record = 'TRUE';

     Next_Record;          

  END loop;

  for i in 1 .. p_lines_tbl.count loop

    v_item_id:= p_lines_tbl(i).item_id;

    v_file_id:= p_lines_tbl(i).packing_file_id;

    for j in 1 .. p_lines_tbl.count loop

    if i<>j and v_item_id=p_lines_tbl(j).item_id and v_file_id<>p_lines_tbl(j).packing_file_id then

               fnd_message.set_string(''||i||'行和第'||j||'行成品料號相同,不可以有不同的包裝編號,請修改');

          fnd_message.error;

          RAISE form_trigger_failure;

    end if;

    end loop;

  end loop;

 

 END check_packing_file;

 

Form的开发中如何让手电筒不变灰的方法

在数据块的WHEN_NEW_RECORD_INSTANCE中,添加如下代码

app_standard.synchronize;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值