Oracle-ERP11i(OPM)
—表结构、API接口笔记
Author:Jarwang(王重东)
Create Date:July5th,2008
Update Date:
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
Preface5
Application Developer6
Lookups6
Data Table6
E-R Diagram6
Frequently-Used SQL6
OPM Process Execution8
Formula8
Data Table8
E-R Diagram8
Recipe8
Data Table8
E-R Diagram9
Production Document9
Data Table9
E-R Diagram10
Frequently-Used SQL10
Frequently-Used API10
Create Batches API10 OPM Inventory15
Item Master15
Data Table15
E-R Diagram15 Purchase Order16
Requisition16
Data Table16
E-R Diagram16
Purchase Document16
Data Table16
E-R Diagram17
Receiving17
Data Table17
E-R Diagram18
Position Hierarchy18
Data Table18
E-R Diagram19 Order Management20
Sales Orders20
Data Table20
E-R Diagram20
Deliver20
Data Table20
E-R Diagram21
Frequently-Used API21
Create Sales Order API22
Query Profit Center26
Data Table27 E-R Diagram28
General Legder30
Journals30 Data Table30 E-R Diagram30
Account Receivable32
Customer32 Data Table32 E-R Diagram32 Transaction33 Data Table33 E-R Diagram34 Receipts34 Data Table34 E-R Diagram35 Frequently-Used API35 Create AR Invoices API35 Create AR Receipts API35 Apply AR Receipts API37 Accounts Payable39 Supplier39 Data Table39 E-R Diagram39 Invoices39 Data Table39 E-R Diagram40 Payment40 Data Table40 E-R Diagram41 Frequently-Used SQL41 Query Vendor Liability41 Query Unpaid Prepayment42 Query UnApplied Prepayment42 Frequently-Used API45 Create AP Invoice API45 Other Notes46
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.sodocs.net/doc/1011466555.html,/pls/etrm/etrm_search.search
https://www.sodocs.net/doc/1011466555.html,/technology/documentation/applications.html
Application Developer
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
根据类别查找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');
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配方行明细包括配料、副产品、产品的定义
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处方有效性规则表不同工厂的处方生产规则。通过有
效性规则来创建工单。
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生产工单物料明细表
3GME.GME_BATCH_STEPS生产工单批步骤表
4GME.GME_BATCH_STEP_ACTIVITIES生产工单批活动表
5GME.GME_BATCH_STEP_RESOURCES生产工单批资源表
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.sodocs.net/doc/1011466555.html,n_code
into p_orgn_code
where https://www.sodocs.net/doc/1011466555.html,er_id=https://www.sodocs.net/doc/1011466555.html,er_id
and https://www.sodocs.net/doc/1011466555.html,er_name='FELIX'--用户名
and https://www.sodocs.net/doc/1011466555.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_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;
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离散物料编码多语言表
5INV.MTL_SYSTEM_ITEMS_B离散物料编码表如果ITEM有分配多个库存组织,
inventory_item_id会保持一致。
E-R Diagram
物料定义关联E-R图
提示:Item_id与inventory_item_id并不会相同,两都关联只能通过ITEM_NO来实现。
Purchase Order
Requisition
Data Table
请购订单
NO.TableName Description Note
1PO.PO_REQUISITION_HEADERS_ALL请购单题头表
2PO.PO_REQUISITION_LINES_ALL请购单行表
3PO.PO_REQ_DISTRIBUTIONS_ALL请购单分配表
E-R Diagram
请购订单关联E-R图
Purchase Document
Data Table
采购订单
NO.TableName Description Note
1PO.PO_HEADERS_ALL采购订单题头表
2PO.PO_LINES_ALL采购订单行明细表
3PO.PO_LINE_LOCATIONS_ALL采购订单的发运表PO科目的计算单价
Price_override
4PO.PO_DISTRIBUTIONS_ALL采购订单的分配表
5PO.PO_RELEASES_ALL订划订单或一揽子订单表只有为计划或一揽子订
单时,才会更新此表
E-R Diagram
采购订单关联E-R图
Receiving
Data Table
接收有三种方式:直接交货、标准接收、检验接收。
NO.TableName Description Note
1PO.RCV_TRANSACTIONS接收、接受、交货
事务表inspection_status_code 会记录当前的接收方式
2PO.RCV_SHIPMENT_HEADERS接收货物头表
4PO.RCV_SUPPLY已接收,但尚未接
受或检验的PO表
5PO.RCV_ACCOUNTING_EVENTS接收科目事件表
6PO.RCV_RECEIVING_SUB_LEDGER接收会计科目表
E-R Diagram
接收关联E-R图
Position Hierarchy
Data Table
PO层次结构相关的表:员工、职务、职位、职位层次、审批组、职位审批组分配。
NO.TableName Description Note
1HR.PER_ALL_PEOPLE_F HR员工定义表
2HR.PER_ALL_ASSIGNMENTS_F HR员工职位分配表
3HR.PER_ALL_POSITIONS HR职位定义表
4HR.PER_JOBS HR职务定义表PER_JOBS_TL多语言
表
5HR.PER_POSITION_STRUCTURES职位层级题头表
6HR.PER_POS_STRUCTURE_VERSIONS职位层级版本表
7HR.PER_POS_STRUCTURE_ELEMENTS职位层级关系表定义职位的上下级关系
E-R Diagram
PO层次结构关联E-R图
Order Management
Sales Orders
Data Table
销售订单
NO.TableName Description Note
1ONT.OE_ORDER_HEADERS_ALL订单题头表
2ONT.OE_ORDER_LINES_ALL订单行明细表
3ONT.OE_ORDER_HOLDS_ALL订单暂挂表信用额度超出,被暂
挂。
4ONT.OE_TRANSACTION_TYPES_ALL订单类型表
E-R Diagram
销售订单关联E-R图
Deliver
Data Table
OM挑库表
NO.TableName Description Note
1WSH.WSH_DELIVERY_DETAILS订单出库明细表BOOK时写入订单数据。挑
库发放时写回物料搬运单
号(batch_id)。
订单行允许分解。
2WSH.WSH_DELIVERY_ASSIGNMENTS订单出库分配表BOOK时写入订单数据。挑
库发放时写回交货单号
(Delivery_id)。
3WSH.WSH_NEW_DELIVERIES订单交货表挑库发放后写入数据。
4WSH.WSH_DELIVERY_LEGS交货行程关联表发运确认后写入数据,关
联交货表、行程表。
5WSH.WSH_TRIPS行程表
6WSH.WSH_TRIP_STOPS行程停靠表
E-R Diagram
OM挑库关联E-R图
Frequently-Used API
OM常用的API接口
Create Sales Order API
创建销售订单
declare
--订单头
l_header_rec apps.oe_order_pub.header_rec_type:=
OE_ORDER_PUB.G_MISS_HEADER_REC;
--订单行
l_line_tbl apps.oe_order_pub.line_tbl_type:=OE_ORDER_PUB.G_MISS_LINE_TBL;
p_action_request_tbl apps.oe_order_pub.request_tbl_type:=
apps.oe_order_pub.g_miss_request_tbl;
l_action_request_tbl apps.oe_order_pub.request_tbl_type:=
apps.oe_order_pub.g_miss_request_tbl;
x_return_status VARCHAR2(30);
x_msg_count NUMBER;
x_msg_data VARCHAR2(2000);
x_debug_file VARCHAR2(100);
l_msg_data VARCHAR2(1000);
l_msg_index_out NUMBER;
l_header_val_rec apps.oe_order_pub.header_val_rec_type;--:=
OE_ORDER_PUB.G_MISS_HEADER_VAL_REC;
l_header_adj_tbl apps.oe_order_pub.header_adj_tbl_type;--:=
OE_ORDER_PUB.G_MISS_HEADER_ADJ_TBL;
l_header_adj_val_tbl apps.oe_order_pub.header_adj_val_tbl_type;--:=
OE_ORDER_PUB.G_MISS_HEADER_ADJ_VAL_TBL;
l_header_price_att_tbl apps.oe_order_pub.header_price_att_tbl_type;--:=
OE_ORDER_PUB.G_MISS_HEADER_PRICE_ATT_TBL;
l_header_adj_att_tbl apps.oe_order_pub.header_adj_att_tbl_type;--:=
OE_ORDER_PUB.G_MISS_HEADER_ADJ_ATT_TBL;
l_header_adj_assoc_tbl apps.oe_order_pub.header_adj_assoc_tbl_type;--:=
OE_ORDER_PUB.G_MISS_HEADER_ADJ_ASSOC_TBL;
l_header_scredit_tbl apps.oe_order_pub.header_scredit_tbl_type;--:=
OE_ORDER_PUB.G_MISS_HEADER_SCREDIT_TBL;
l_header_scredit_val_tbl apps.oe_order_pub.header_scredit_val_tbl_type;--:=
OE_ORDER_PUB.G_MISS_HEADER_SCREDIT_VAL_TBL;
l_line_val_tbl apps.oe_order_pub.line_val_tbl_type;--:=
OE_ORDER_PUB.G_MISS_LINE_VAL_TBL;
l_line_adj_tbl apps.oe_order_pub.line_adj_tbl_type;--:=
OE_ORDER_PUB.G_MISS_LINE_ADJ_TBL;
l_line_adj_val_tbl apps.oe_order_pub.line_adj_val_tbl_type;--:=
OE_ORDER_PUB.G_MISS_LINE_ADJ_VAL_TBL;