Oracle-ERP11i表结构、API接口笔记
Oracle-ERP11i(OPM)
—表结构、API接口笔记
Author:Jarwang(王重东)
Create Date:July5th,2008
Update Date:November20th,2010
Control No:
Current Edition: 1.0
声明:本文可以任意免费转载、复制、传播。但您务必保持其完整性!If you copy this document,you ought to keep the document completely.
Document Control
Modify Record
Date Author Version Modified reference
July5th,2008jarwang 1.0
Approved
Name Position signature
Distribute
Num Name Location&Position
1
2
3
4
Index
Document Control2
Modify Record2
Approved2
Index3
Preface6
Application Developer7
Value Set7
Data Table7
Lookups7
Data Table7
E-R Diagram7
Frequently-Used SQL8
Query Lookup8
Query ValueSet8
Values Set8
Data Table8
E-R Diagram9 OPM Process Execution10
Formula10
Data Table10
E-R Diagram10
Recipe10
Data Table10
E-R Diagram11
Production Document11
Data Table11
E-R Diagram12
Frequently-Used SQL12
Frequently-Used API12
Create Batches API13
Batches completedAPI16 OPM Inventory17
Item Master17
Data Table17
E-R Diagram17
Organization18
Data Table18
E-R Diagram18
Inventory Quantity19
Data Table19
Frequently-Used SQL19
Query OPM Organization19
Query Lot Status20
Frequently-Used API20
OPM Adjust Immediate API20
OPM Move Immediate API22 Human Resource25
HR Employee25
Frequently-Used API25
Create HR Employee API25
Create HR Employee API--FULL27 Purchase Order33
Requisition33
Data Table33 E-R Diagram33 Purchase Document33 Data Table33 E-R Diagram34 Quotation34 Data Table34 Receiving35 Data Table35 E-R Diagram35 Position Hierarchy35 Data Table35 E-R Diagram36 Frequently-Used SQL36 PO relation ITEM36 Query PO37 Query PO Quotation40 Frequently-Used API40 Create PO By Interface40 Order Management41 Sales Orders41 Data Table41 E-R Diagram41 Deliver41 Data Table41 E-R Diagram42 Frequently-Used API42 Create Sales Order API43 Frequently-Used SQL47 Query Order47 Query Profit Center50 Query Monthy Sale Amount50 Workflow52 Workflow User&Role52 Data Table52 E-R Diagram53 General Legder55 Journals55 Data Table55 E-R Diagram55 Frequently-Used SQL56 Query GL56 OPM GL drilldown PO58 Account Receivable59 Customer59 Data Table59 E-R Diagram59 Transaction60 Data Table60 E-R Diagram61 Receipts61 Data Table61 E-R Diagram62 Frequently-Used SQL62 Query Customer62 Query Customer Address63 Frequently-Used API63 Create AR Invoices API63 Create AR Receipts API63 Apply AR Receipts API65 Accounts Payable67
Supplier67 Data Table67 E-R Diagram67 Invoices67 Data Table67 E-R Diagram68 Payment68 Data Table68 E-R Diagram69 Bank69 Data Table69 E-R Diagram69 Frequently-Used SQL70 Query Vendor Liability70 Query Unpaid Prepayment70 Query UnApplied Prepayment70 Frequently-Used API74 Create AP Invoice Interface table74 OPM Cost75 Cost Event75 Data Table75 E-R Diagram75 Cost Detail76 Data Table76 Frequently-Used SQL76 Query Cost77 Subledger Query-PO78 System83 System Administrator83 Frequently-Used API83 Create AR Invoices API83 Frequently-Used SQL83 Query Request83 Other Notes85
Preface
Oracle ERP本身异常庞大,因此Oracle ERP的表结构也异常庞大。使用下述语句,可以得到Oracle ERP的表数量有1W多(此方法不精确,但也可以说明表的庞大)。
select count(*)from dba_tables dt where dt.tablespace_name='APPS_TS_TX_DATA'
另外,EBS大多数表都没有Primary Key,Foregin Key,并且大多数表都会有100多列。熟悉EBS全部的表结构有点不太可能,事实上要画出Oracle ERP完整E-R图几乎不可能。对于常用模块的表结构还是得掌握的,否则不熟悉表结构,对Oracle ERP进行二次开发,就无异于难上加难。
本文是基于Oracle EBS11.5.10.2。
参考文档:https://www.360docs.net/doc/604362164.html,/pls/etrm/etrm_search.search
https://www.360docs.net/doc/604362164.html,/technology/documentation/applications.html
Application Developer
Value Set
Data Table
值集表
NO.TableName Description Note
1APPS.FND_FLEX_VALUE_SETS值集题头表
2APPS.FND_FLEX_VALUES值集行明细表视图:
FND_FLEX_VALUES_VL 3APPS.FND_FLEX_VALUES_TL值集多语言表
Lookups
Data Table
EBS中所谓Lookups主要是指提供给LOV组件作为数据源。例如:AP发票的Invoice Type。主要
涉及二张表:APPLSYS.FND_LOOKUP_TYPES和APPLSYS.FND_LOOKUP_VALUES,由于EBS
的多语言,所以还有一张多语言表APPLSYS.FND_LOOKUP_TYPES_TL。
另外Lookups定义时分为系统级、用户级、可扩展级。对于系统级Lookups是不允许修改的。
NO.TableName Description Note
1APPLSYS.FND_LOOKUP_TYPES查找代码题头表
2APPLSYS.FND_LOOKUP_VALUES查找代码行明细表
3APPLSYS.FND_LOOKUP_TYPES_TL查找代码多语言表
E-R Diagram
Lookups关联E-R图
Frequently-Used SQL
Query Lookup
根据类别查找Lookup的值
select FLV.LOOKUP_CODE,FLV.MEANING,FLV.DESCRIPTION
from APPLSYS.FND_LOOKUP_VALUES flv
where flv.lookup_type='VENDOR TYPE'--查找代码类别
and language=userenv('LANG');
Query ValueSet
Values Set
Data Table
EBS值集定义表
NO.TableName Description Note
1APPLSYS.FND_FLEX_VALUE_SETS值集表
2APPLSYS.FND_FLEX_VALUES_TL值表一般使用视图
FND_FLEX_VALUES_VL 3APPLSYS.FND_FLEX_VALUES值多语言表
E-R Diagram 关联E-R图
OPM Process Execution
Formula
Data Table
配方关联表:
NO.TableName Description Note
1GMD.FM_FORM_MST_B配方题头表Formula_NO与GMI.IC_ITEM_MST_B的
ITEM_NO实现弱关联。
2GMD.FM_FORM_MST_TL配方题头多语言表
3GMD.FM_MATL_DTL配方行明细LINE_TYPE字段标识出配料(-1)、副产品(2)、
产品(1)
E-R Diagram
配方关联E-R图
Recipe
Data Table
处方关联表:
NO.TableName Description Note
1GMD.GMD_RECIPES_TL处方题头多语言表
2GMD.GMD_RECIPES_B处方题头表
3GMD.GMD_RECIPE_ROUTING_STEPS处方步骤数量表
4GMD.GMD_RECIPE_PROCESS_LOSS处方组织表
5GMD.GMD_RECIPE_VALIDITY_RULES处方有效性规则表不同工厂的处方生产规则。通过有
效性规则来创建工单。
6APPS.GMD_ROUTINGS_VL工艺路线一般使用此视图
E-R Diagram
处方关联E-R图
Production Document
Data Table
1.生产工单创建的业务过程:
n要加工什么?这涉及到车间任务的来源。)
n怎样加工?(用到处方,包括配方和工艺路线)
ü工艺路线:工艺路线定义了生产该产品所采用的方法或步骤。工艺路线由工序步骤组
成。
ü工序:工序是一条工艺路线的一道工序步骤。工序步骤由活动组成。
ü活动:活动就是一道工序步骤中所做的各种动作活动。
ü资源:资源指的是对应活动所使用的生产设备以及相关设备所耗用的各种费用构成(例
如水、电、汽、人工等)。
n怎样控制加工过程?(物料控制、资源控制、步骤控制)
2.生产工单关联的表(常用):
NO.TableName Note
1GME.GME_BATCH_HEADER生产工单表
2GME.GME_MATERIAL_DETAILS生产工单物料明细表。LINE_TYPE字
段标识出配料(-1)、副产品(2)、产品(1)
3GME.GME_BATCH_STEPS生产工单批步骤表
4GME.GME_BATCH_STEP_ACTIVITIES生产工单批活动表
5GME.GME_BATCH_STEP_RESOURCES生产工单批资源表
6GME.GME_INVENTORY_TXNS_GTMP生产工单分配表此表只是临时表,真正库存信息是
在gmi.ic_tran_pnd表中
E-R Diagram
生产工单关联E-R图
Frequently-Used SQL
PE模块常用SQL语句
Frequently-Used API
PE常用的API接口
Create Batches API
通过处方的有效性规则来创建生产工单。
创建生产工单
declare
l_api_version CONSTANT NUMBER:=gme_api_pub.api_version;
l_validation_level NUMBER:=gme_api_pub.max_errors;
l_init_msg_list BOOLEAN:=FALSE;
l_commit BOOLEAN:=FALSE;
x_message_count NUMBER;
x_message_list V ARCHAR2(100);
x_return_status V ARCHAR2(2);
l_msg_index_out NUMBER;
--生产工单
l_batch_header gme_batch_header%ROWTYPE;
--返回生产工单
x_batch_header gme_batch_header%ROWTYPE;
--工单数量
l_batch_size NUMBER:=10;
--单位
l_batch_size_uom V ARCHAR2(10):='箱';
--工单创建模式:RECIPE、PRODUCT、TOTAL_OUTPUT、TOTAL_INPUT
l_creation_mode V ARCHAR2(50):='PRODUCT';
--当工单超过能力计划时,是否仍要创建工单
l_ignore_qty_below_cap BOOLEAN:=TRUE;
--当然为TRUE时,不返回未分配的物料
l_ignore_shortages BOOLEAN:=FAlSE;
x_unallocated_material gme_api_pub.unallocated_materials_tab;
p_orgn_code varchar2(10);
p_recipe_validity_rule_id number;
begin
DBMS_OUTPUT.ENABLE(1000000);
APPS.FND_GLOBAL.apps_initialize
(
user_id=>1115,--ERP用户的ID
resp_id=>APPS.FND_GLOBAL.resp_id,
resp_appl_id=>APPS.FND_GLOBAL.resp_appl_id
);
--工厂
select https://www.360docs.net/doc/604362164.html,n_code
into p_orgn_code
from FND_USER fu,SY_ORGN_USR sou
where https://www.360docs.net/doc/604362164.html,er_id=https://www.360docs.net/doc/604362164.html,er_id
and https://www.360docs.net/doc/604362164.html,er_name='FELIX'--用户名
and https://www.360docs.net/doc/604362164.html,n_code='F001';--制造厂
l_batch_header.plant_code:=p_orgn_code;
--工单类型:0批、1l固定计划单
l_batch_header.batch_type:=0;
--工单计划日期
l_batch_header.plan_start_date:=sysdate+1;
--工单完工日期
l_batch_header.plan_cmplt_date:=sysdate+2;
--工单必须完工日期
l_batch_header.due_date:=sysdate+2;
--处方的有效规则
select grvr.recipe_validity_rule_id
into p_recipe_validity_rule_id
from GMD_RECIPE_V ALIDITY_RULES grvr
where grvr.recipe_id in
(select gr.RECIPE_ID
from gmd_recipes gr
where gr.RECIPE_NO='2101001001'and gr.RECIPE_STATUS=700)--已审批
and rownum=1;--如果有多个有效性规则,则要选择一个
l_batch_header.recipe_validity_rule_id:=p_recipe_validity_rule_id;
--创建生产工单
gme_api_pub.create_batch(--standard input parameters
p_api_version=>l_api_version
,p_validation_level=>l_validation_level
,p_init_msg_list=>l_init_msg_list
,p_commit=>l_commit
--stand output parameters
,x_message_count=>x_message_count
,x_message_list=>x_message_list
,x_return_status=>x_return_status
--Batch parameters
,p_batch_header=>l_batch_header
,x_batch_header=>x_batch_header
,p_batch_size=>l_batch_size
,p_batch_size_uom=>l_batch_size_uom
,p_creation_mode=>l_creation_mode
,p_ignore_qty_below_cap=>l_ignore_qty_below_cap
,p_ignore_shortages=>l_ignore_shortages
,x_unallocated_material=>x_unallocated_material);
--创建是否成功
dbms_output.put_line('x_return_status:'||x_return_status);
IF x_return_status<>FND_API.g_ret_sts_success THEN
--输出错误提示信息
if X_message_count>0then
apps.FND_MSG_PUB.Get(p_msg_index=>apps.FND_MSG_PUB.G_LAST,
p_data=>X_message_list,
p_encoded=>apps.FND_API.G_FALSE,
p_msg_index_out=>l_msg_index_out);
dbms_output.put_line('工单创建失败:'||X_message_list);
end if;
ROLLBACK;
ELSE
DBMS_OUTPUT.PUT_LINE('A new batch'||x_batch_header.batch_no||'has been created');
IF x_unallocated_material.count>0THEN
DBMS_OUTPUT.PUT_LINE('Items failing auto allocation:');
FOR i IN1..x_unallocated_material.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('Line Type:'||x_unallocated_material(i).line_type||'Line No:'||x_unallocated_material(i).line_no||
'Item:'||x_unallocated_material(i).item_no||'
Allocated:'||x_unallocated_material(i).alloc_qty||
'Unalloc:'||x_unallocated_material(i).unalloc_qty||' UOM:'||x_unallocated_material(i).alloc_uom);
END LOOP;
END IF;
END IF;
EXCEPTION
WHEN OTHERS THEN
x_return_status:=FND_API.g_ret_sts_unexp_error;
x_message_count:=1;
x_message_list:=SQLERRM;
dbms_output.put_line('Have Error'||TO_CHAR(SQLCODE)||':'||SQLERRM);
END;
Batches completedAPI
实现工单完工入库界面上勾选标志。
fnd_global.apps_initialize(USER_ID=>p_user_id,
resp_id=>NULL,
resp_appl_id=>NULL);
gme_api_pub.update_line_allocation(p_Api_Version=>Gme_Api_Pub.Api_Version,
p_Validation_Level=>Gme_Api_Pub.Max_Errors,
p_Init_Msg_List=>True,
p_Commit=>True,--需要立即提交
x_Message_Count=>Apimsgcount,
x_Message_List=>Apimsgdata,
x_Return_Status=>Apireturnstatus,
p_Tran_Row=>In_Trxn,
x_Material_Detail=>Out_Details,
x_Tran_Row=>Out_Trxn,
x_Def_Tran_Row=>Out_Def_Trxn);
OPM Inventory
Item Master
Data Table
物料定义表:如果启用了OPM,就会有两个界面定义物料编码。从OPM界面录入或修改的物料,
会自动同步离散的物料定义表中。反之,就不可以啦。
NO.TableName Description Note
1GMI.IC_ITEM_MST_TL OPM物料编码多语言表一般使用IC_ITEM_MST_VL视图。
2GMI.IC_ITEM_MST_B OPM物料编码表
3GMI_ITEM_CATEGORIES OPM物料类别表
4INV.MTL_SYSTEM_ITEMS_TL离散物料编码多语言表一般使用MTL_SYSTEM_ITEMS_FVL
5INV.MTL_SYSTEM_ITEMS_B离散物料编码表如果ITEM有分配多个库存组织,
inventory_item_id会保持一致,
因此其他表关联时应加入类似条件
organization_id=123。
E-R Diagram
物料定义关联E-R图
提示:Item_id与inventory_item_id并不会相同,两都关联只能通过ITEM_NO来实现。
Organization
Data Table
OPM组织定义表:
NO.TableName Description Note
1GMA.SY_ORGN_MST_TL OPM组织语言表一般使用SY_ORGN_MST_VL视图即
可。
2GMA.SY_ORGN_MST_B OPM组织表
3HR.HR_ALL_ORGANIZATION_UNITS_TL HR组织语言表视图:
HR_ORGANIZATION_UNITS_V
4HR.HR_ALL_ORGANIZATION_UNITS HR组织表
5INV.MTL_PARAMETERS库存组织参数表
6GMA.SY_ORGN_USR OPM用户组织权限表
7hr_operating_units OU视图此视图只含有OU。
E-R Diagram
OPM组织定义关联E-R图
Inventory Quantity
Data Table
OPM库存事务处理表:
NO.TableName Description Note
1gmi.ic_tran_pnd OPM库存事务处理表如:生产入库、销售出库等2gmi.ic_loct_inv OPM库存批次表
3gmi.ic_lots_mst PM库存批次描述表
Frequently-Used SQL
OPM库存模块常用SQL语句
Query OPM Organization
查询OPM组织下的库存组织。
SELECT https://www.360docs.net/doc/604362164.html,N_CODE,https://www.360docs.net/doc/604362164.html,anization_code
FROM SY_ORGN_MST_VL som,INV.MTL_PARAMETERS mp
where https://www.360docs.net/doc/604362164.html,N_CODE=mp.process_orgn_code
and https://www.360docs.net/doc/604362164.html,N_CODE='F002'--OPM组织
Query Lot Status
查询库存组织某一批次的状态信息
SELECT loct_onhand,loct_onhand2,lot_status
FROM ic_loct_inv
WHERE item_id=284--vitem_id物料ID
AND lot_id=113934--vlot_id批次ID
AND whse_code='FT2'--vwhse_code仓库
AND location='A'--vlocation;货位
Frequently-Used API
OPM Adjust Immediate API
OPM提供了两个package,来完成OPM库存数量变动。
1、GMIPAPI.Inventory_Posting:通用的API包:如库存调整、移动等
2、GMIGAPI.Inventory_Posting:组级别的API包
例:
declare
--standdar parameters
l_api_version NUMBER:=3.0;
l_init_msg_list V ARCHAR2(150):=FND_API.G_FALSE;
l_commit V ARCHAR2(150):=FND_API.G_FALSE;
l_validation_level NUMBER:=FND_API.G_V ALID_LEVEL_FULL;
--standdar parameters
v_return_status V ARCHAR2(20);
v_msg_count NUMBER;
v_msg_data V ARCHAR2(500);
v_dummy_cnt number;
l_qty_rec GMIGAPI.qty_rec_typ;
v_ic_jrnl_mst_row ic_jrnl_mst%ROWTYPE;
v_ic_adjs_jnl_row1ic_adjs_jnl%ROWTYPE;
v_ic_adjs_jnl_row2ic_adjs_jnl%ROWTYPE;
begin
GMIGUTL.api_version:=3.0;--GMI api version must match api_version
/*1-createinventory immediate,
2-adjust inventory immediate,
3-move inventory immediate,
4-change lot status immediate,
5-change QC grade immediate,