壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6807|回复: 8

API到底指的啥?

[复制链接]
发表于 2007/3/21 15:03:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
最近在看api的user guide,里面称为formula api,不知道是不是就是我们通常所说的api?
另外数据库自带的api的功能,是将临时表的数据导入到接口表中,还是将接口表的数据导入到基表中?
发表于 2007/3/21 17:17:04 | 显示全部楼层
API:Application Programming Interface,应用程序编程接口,就是软件系统不同组成部分衔接的约定,是指将数据导入应用产品之前对其进行验证的程序。
    1 API的user guide里面称为formula API,应该就是我们通常所说的API。
    2 应该是第二个!将接口表的数据导入到基表中,API导入同样会经过interface table,只是最终写入了基表中。
      关于临时表中的数据怎么倒入到接口表中?一般需要自己写个程序来实现!
      愚人拙见,不对之处,请大家批评指正!
 楼主| 发表于 2007/3/21 18:00:29 | 显示全部楼层
谢谢大将军的指点。那我们一般开发的话,就是自己写程序导入数据接口表了。但是好像不是所以的oracle 模块都有所需要的api,如果是这样,那要导数据到系统的话,还得自己写程序来实现吧。能不能给这方面的资料看看?
发表于 2007/3/21 18:07:42 | 显示全部楼层
根据API创建项目


/****************************************************************************************
Created By : COOLER LEE

Creation Date : 2006-1-4

Notes : Please uncomment the dbms_output statements if needed.
This is being commented out for check in purposes.
Purpose : Create,Update item by API.
******************************************************************************************/

/*****************************************************************************************
*根据API创建项目
*创建EE 2006-1-4
*目的:该PROCEDURE用于创建项目。每次调用创建一个项目
*参数:l_template_name : 所需要应用的项目模板名称(新建项目的将从依据模板来生成项目属性)
* l_item_rec : 指定须创建项目的属性,必须先赋值再传入,如,
* l_item_rec.segment1 := 'TEST-ITEM01';
l_item_rec.description := 'LEE-CREATE-TEST-ITEM01';
l_item_rec.organization_id := 2;
l_template_name := 'ATO 选件类';
* x_item_rec :已创建好的项目. (用于在程序中返回当前项目的信息)
* x_return_status : 返回值,处理结果,成功为'*',失败为'*'
* *_error_tbl : 返回处理过程中的信息(如果处理失败)
*注意事项及用法:
* 可用的模板如,
* --ATO 模型
* --ATO 选件类
* --成品模板
* --光板
* --非标模胚
l_template_name := 'ATO 选件类';

********************************************************************************/

PROCEDURE create_item(l_template_name VARCHAR2,
l_item_rec IN inv_item_grp.item_rec_type,
x_item_rec IN OUT inv_item_grp.item_rec_type,
x_return_status IN OUT VARCHAR2,
x_msg_data OUT VARCHAR2,
x_error_tbl IN OUT inv_item_grp.error_tbl_type) IS
v_message_tmp VARCHAR2(2000);
BEGIN

inv_item_grp.create_item(p_template_name => l_template_name,
p_item_rec => l_item_rec,
x_item_rec => x_item_rec,
x_return_status => x_return_status,
x_error_tbl => x_error_tbl);

dbms_output.put_line('执行结果' || x_return_status);
COMMIT;
FOR i IN 1 .. x_error_tbl.COUNT
LOOP
x_msg_data := x_msg_data || x_error_tbl(i).message_text;
END LOOP;

--返回出错信息示例
/***********************************************************************************
j := x_error_tbl.COUNT;
dbms_output.put_line('执行结果' || x_return_status);

IF j > 0 THEN
ROLLBACK;
dbms_output.put_line('-------------------------------------------------------------');

FOR i IN 1 .. j LOOP
dbms_output.put_line(x_error_tbl(j).message_name);
dbms_output.put_line(x_error_tbl(j).message_name);
dbms_output.put_line(x_error_tbl(j).table_name);
dbms_output.put_line(x_error_tbl(j).column_name);
dbms_output.put_line(substr(x_error_tbl(j).message_text, 1, 254));
END LOOP;
dbms_output.put_line('-------------------------------------------------------------');
ELSE
COMMIT;
END IF;
*************************************************************************************/

END create_item;

----------------------------------------------------------------------------------------------

--- Test Example
--- Created on 2006-1-4 by LEE
declare
-- Local variables here
l_item_rec inv_item_grp.item_rec_type;
x_return_status VARCHAR2(200);
x_msg_data VARCHAR2(200);
x_error_tbl inv_item_grp.error_tbl_type;
x_item_rec inv_item_grp.item_rec_type;
l_template_name VARCHAR2(200);
v_message_tmp VARCHAR2(2000);
i integer;
begin
-- Test statements here

l_item_rec.segment1 := 'TEST-ITEM01';
l_item_rec.description := 'LEE-CREATE-TEST-ITEM01';
l_item_rec.organization_id := 2;
l_template_name := 'ATO 选件类';
inv_item_grp.create_item(p_template_name => l_template_name,
p_item_rec => l_item_rec,
x_item_rec => x_item_rec,
x_return_status => x_return_status,
x_error_tbl => x_error_tbl);

dbms_output.put_line('执行结果 ' || x_return_status);
if x_return_status = fnd_api.G_RET_STS_SUCCESS then
--success;
COMMIT;
DBMS_OUTPUT.put_line('success');
else
--failure;
ROLLBACK;
DBMS_OUTPUT.put_line('failure');
end if;
FOR i IN 1 .. x_error_tbl.COUNT LOOP
x_msg_data := x_msg_data || x_error_tbl(i).message_text;
dbms_output.put_line('x_msg_data is :' || x_msg_data);
END LOOP;
end;

/*****************************************************************************************
*根据API更新项目
*创建:LEE 2006-1-4
*目的:该PROCEDURE用于更新项目。每次调用更新一个项目
*参数:
* l_item_rec : 指定需要更新项目的属性,必须先赋值再传入,如,
* l_item_rec.segment1 := 'TEST-ITEM01';
l_item_rec.description := 'LEE-CREATE-TEST-ITEM01-UPDATE';
l_item_rec.organization_id := 2;
* x_item_rec :已更新好的项目. (用于在程序中返回当前项目的信息)
* x_return_status : 返回值,处理结果,成功为'*',失败为'*'
* *_error_tbl : 返回处理过程中的信息(如果处理失败)
*注意事项及用法:
指定需要更新项目的属性;

********************************************************************************/

PROCEDURE update_item(l_item_rec IN inv_item_grp.item_rec_type,
x_item_rec IN OUT inv_item_grp.item_rec_type,
x_return_status IN OUT VARCHAR2,
x_msg_data OUT VARCHAR2,
x_error_tbl IN OUT inv_item_grp.error_tbl_type) IS
v_message_tmp VARCHAR2(2000);
BEGIN

inv_item_grp.update_item(p_item_rec => l_item_rec,
x_item_rec => x_item_rec,
x_return_status => x_return_status,
x_error_tbl => x_error_tbl);

dbms_output.put_line('执行结果' || x_return_status);
COMMIT;
FOR i IN 1 .. x_error_tbl.COUNT
LOOP
x_msg_data := x_msg_data || x_error_tbl(i).message_text;
END LOOP;

--返回出错信息示例
/***********************************************************************************
j := x_error_tbl.COUNT;
dbms_output.put_line('执行结果' || x_return_status);

IF j > 0 THEN
ROLLBACK;
dbms_output.put_line('-------------------------------------------------------------');

FOR i IN 1 .. j LOOP
dbms_output.put_line(x_error_tbl(j).message_name);
dbms_output.put_line(x_error_tbl(j).message_name);
dbms_output.put_line(x_error_tbl(j).table_name);
dbms_output.put_line(x_error_tbl(j).column_name);
dbms_output.put_line(substr(x_error_tbl(j).message_text, 1, 254));
END LOOP;
dbms_output.put_line('-------------------------------------------------------------');
ELSE
COMMIT;
END IF;
*************************************************************************************/

END update_item;

----------------------------------------------------------------------------------------------

--- Test Example
--- Created on 2006-1-4 by LEE
declare
-- Local variables here
l_item_rec inv_item_grp.item_rec_type;
x_return_status VARCHAR2(200);
x_msg_data VARCHAR2(200);
x_error_tbl inv_item_grp.error_tbl_type;
x_item_rec inv_item_grp.item_rec_type;
l_template_name VARCHAR2(200);
v_message_tmp VARCHAR2(2000);
i integer;
begin
-- Test statements here

l_item_rec.segment1 := 'TEST-ITEM01';
l_item_rec.description := 'LEE-CREATE-TEST-ITEM01-UPDATE';
l_item_rec.organization_id := 2;
--l_template_name := 'ATO 选件类';
inv_item_grp.Update_Item( /*p_commit => TRUE,*/
-- p_template_name => l_template_name,
p_item_rec => l_item_rec,
x_item_rec => x_item_rec,
x_return_status => x_return_status,
x_error_tbl => x_error_tbl);

dbms_output.put_line('执行结果 ' || x_return_status);
if x_return_status = fnd_api.G_RET_STS_SUCCESS then
--success;
COMMIT;
DBMS_OUTPUT.put_line('success');
else
--failure;
ROLLBACK;
DBMS_OUTPUT.put_line('failure');
end if;
FOR i IN 1 .. x_error_tbl.COUNT LOOP
x_msg_data := x_msg_data || x_error_tbl(i).message_text;
dbms_output.put_line('x_msg_data is :' || x_msg_data);
END LOOP;
end;
发表于 2007/3/21 18:08:16 | 显示全部楼层
根据API创建、展开BOM
--根据API创建BOM
--
/*******************************************************************************
*创建:COOLER LEE 2006-1-11 16:09
*目的:该PROCEDURE用于中转对标准创建BOM的API调用。每次调用创建一个BOM
*参数:l_bom_header_rec,BOM头的信息
* l_bom_component_tbl BOM组件的相关信息
* x_return_status 返回值,处理结果,成功为'S',失败为'E',警告为'W'
* x_msg_count 返回值,处理过程中的信息条数,可用代码为中示例来取信息。
*
*注意事项及用法:

赋值例子:
--BOM头
l_bom_header_rec := bom_bo_pub.g_miss_bom_header_rec;
l_bom_header_rec.transaction_type := 'CREATE';
-- l_bom_header_rec.Common_Assembly_Item_Name:=;
l_bom_header_rec.assembly_item_name := 'B';
l_bom_header_rec.organization_code := 'ITM';
l_bom_header_rec.assembly_type := 1;
-- l_bom_header_rec.Original_System_Reference:='';

--BOM行
l_bom_component_tbl(1) := bom_bo_pub.g_miss_bom_component_rec;
l_bom_component_tbl(1).transaction_type := 'CREATE';
l_bom_component_tbl(1).assembly_item_name := 'B';
l_bom_component_tbl(1).component_item_name := 'C';
l_bom_component_tbl(1).start_effective_date := SYSDATE;
l_bom_component_tbl(1).organization_code := 'ITM';
l_bom_component_tbl(1).operation_sequence_number := 1;
l_bom_component_tbl(1).item_sequence_number := 10;
l_bom_component_tbl(1).optional := 1; --选项类
l_bom_component_tbl(1).so_basis := 2; --无基准
l_bom_component_tbl(1).wip_supply_type := 1;
l_bom_component_tbl(1).quantity_per_assembly := 1;
*
* 3.在创建ATO模型时,需先创建可选件(AOC)的BOM,最后创建ATO模型.
********************************************************************************/

PROCEDURE create_bom(l_bom_header_rec IN bom_bo_pub.bom_head_rec_type,
l_bom_component_tbl IN bom_bo_pub.bom_comps_tbl_type,
x_return_status IN OUT VARCHAR2,
x_msg_data OUT VARCHAR2,
x_msg_count IN OUT NUMBER) IS

--OUT VARIBLE
x_bom_header_rec bom_bo_pub.bom_head_rec_type;
x_bom_revision_tbl bom_bo_pub.bom_revision_tbl_type;
x_bom_component_tbl bom_bo_pub.bom_comps_tbl_type;
x_bom_ref_designator_tbl bom_bo_pub.bom_ref_designator_tbl_type;
x_bom_sub_component_tbl bom_bo_pub.bom_sub_component_tbl_type;

/* x_return_status VARCHAR2(1);
x_msg_count NUMBER;
*/
BEGIN
--初始化,单独在PL/SQL中测试时需要
/**********************************************
fnd_global.apps_initialize(8949, 50186, 702);
***********************************************/
error_handler.initialize;
x_return_status := NULL;

bom_bo_pub.process_bom(p_bom_header_rec => l_bom_header_rec,
p_init_msg_list => TRUE,
p_bom_component_tbl => l_bom_component_tbl,
x_bom_header_rec => x_bom_header_rec,
x_bom_revision_tbl => x_bom_revision_tbl,
x_bom_component_tbl => x_bom_component_tbl,
x_bom_ref_designator_tbl => x_bom_ref_designator_tbl,
x_bom_sub_component_tbl => x_bom_sub_component_tbl,
x_return_status => x_return_status,
x_msg_count => x_msg_count);
/*,
--p_debug => 'Y',
--p_output_dir => '/usr/tmp',
--p_debug_filename => 'BOM_XGL_009.log'*/

IF x_msg_count > 0 THEN
FOR l_index IN 1 .. x_msg_count LOOP

DECLARE
x_index VARCHAR2(10);
x_msg_data_tmp VARCHAR2(2000);
x_entity_id VARCHAR2(10);
x_message_type VARCHAR2(10);
BEGIN
error_handler.get_message(x_entity_index => x_index,
x_message_text => x_msg_data_tmp,
x_entity_id => x_entity_id,
x_message_type => x_message_type);
dbms_output.put_line(l_index);
x_msg_data := x_msg_data || x_msg_data_tmp;

FOR i IN 1 .. round(length(x_msg_data_tmp) / 255) + 1 LOOP
dbms_output.put_line(substr(x_msg_data_tmp, (i - 1) * 254, 254));
END LOOP;
END;

END LOOP;

END IF;

-- 执行后的信息显示,如果是在PL/SQL中测试需要下段
/**********************************************************************
IF x_msg_count > 0 THEN
FOR l_index IN 1 .. x_msg_count LOOP

DECLARE
x_index VARCHAR2(10);
x_msg_data VARCHAR2(2000);
x_entity_id VARCHAR2(10);
x_message_type VARCHAR2(10);
BEGIN
error_handler.get_message(x_entity_index => x_index,
x_message_text => x_msg_data,
x_entity_id => x_entity_id,
x_message_type => x_message_type);
dbms_output.put_line(l_index);
FOR i IN 1 .. round(length(x_msg_data) / 255) + 1 LOOP
dbms_output.put_line(substr(x_msg_data, (i - 1) * 254, 254));
END LOOP;
END;

END LOOP;

END IF;
-- Check the return status
IF x_return_status = fnd_api.g_ret_sts_success THEN

dbms_output.put_line('创建BOM成功!');
--success;
COMMIT;
ELSE
-- failure;
ROLLBACK;
END IF;
**********************************************************************/

END create_bom;

--
--根据API爆开已创建的BOM
--
/*******************************************************************************
*创建:COOLER LEE 2006-1-11 16:09
*目的:该PROCEDURE用于将新创建的BOM展开到BOM_EXPLOSIONS表。每次调用展开一个多级清单
*参数:p_top_assembly_item_id,BOM中最顶层的inventory_item_id
* p_org_id 组织,如不输入,则取项目主组织
* x_err_msg 返回值,处理结果,存放出错信息,成功时为NULL
* x_err_code 返回值,存放出错代码,成功时为NULL
*
*注意事项及用法:
* 1.该过程一次可以处理整个BOM(最多20层)
* 2.对于ATO模型,必须在插入行到订单之前将ATO模型展开
********************************************************************************/

PROCEDURE exploder_bom(p_top_assembly_item_id NUMBER,
p_org_id NUMBER DEFAULT 2,
x_err_msg IN OUT VARCHAR2,
x_err_code IN OUT NUMBER) IS
v_user_id NUMBER;
BEGIN

v_user_id := nvl(fnd_global.user_id, 0);

bom_oe_exploder_pkg.be_exploder(arg_org_id => p_org_id,
arg_starting_rev_date => SYSDATE,
arg_item_id => p_top_assembly_item_id,
arg_comp_code => '-',
arg_user_id => v_user_id,
arg_err_msg => x_err_msg,
arg_error_code => x_err_code);

-- 执行后的信息显示,如果是在PL/SQL中测试需要下段
/**********************************************************************
IF err_msg IS NOT NULL THEN
dbms_output.put_line(err_code || ':' || err_msg);
ELSE
dbms_output.put_line('成功爆开BOM');
END IF;
**********************************************************************/

END exploder_bom;

评分

参与人数 1壹佰币 +1 收起 理由
310host + 1 非常感谢你的资料共享

查看全部评分

发表于 2007/3/21 18:15:31 | 显示全部楼层
Oracle ERP接口开发——Routing

routing接口开发过程及说明.pdf

198.83 KB, 下载次数: 66, 下载积分: 努力值 -5 点

评分

参与人数 1壹佰币 +1 收起 理由
310host + 1 大将军的帖子,那就是一个字 爽

查看全部评分

 楼主| 发表于 2007/3/22 18:21:23 | 显示全部楼层
请问一下在调用bom_bo_pub.process_bom的时候,怎么知道调用哪个process_bom呢?
发表于 2007/5/12 13:18:15 | 显示全部楼层
好東西,不過不是很熟悉,對這方面
发表于 2011/5/17 11:50:36 | 显示全部楼层
太谢谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 03:06 , Processed in 0.023014 second(s), 16 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表