继吉 发表于 2015-9-22 14:07:15

Oracle EBS供应商接口导入(转)

  原文地址 Oracle EBS供应商接口导入
  1、供应商导入组成
供应商导入主要分为供应商头信息导入、供应商地点信息导入、供应商联系人导入三个部分的信息,其他按实际需求进行添加。
供应商头信息导入:导入供应商的头信息
供应商地点信息导入:导入供应商的地点、地址信息
供应商联系人信息导入:导入对应地址上的联系人信息
供应商地点附加信息导入:导入供应商对应地点上的附加信息
供应商税率导入:导入供应商地点上的税信息及税率
供应商付款方法导入:导入供应商地点上的默认付款方法
供应商银行导入:导入供应商地点上对应的银行、账户等信息
2、供应商导入顺序
由于数据的先后关联依赖关系,同一供应商的信息导入必须按照一定的顺序进行:先导头信息,再导地点信息,最后导入地点下的地点附加信息、联系人、税率、银行、默认付款方法等信息。
供应商导入流程:
第一步:创建需要导入供应商信息的中间表,字段上提供供应商头信息、地点信息等必输字段。
第二步:向中间表中插入需要导入的供应商信息,验证需要插入的数据是否满足供应商信息规则,去除不合规范的数据。
第三步:对需要导入的数据在数据库标准表中尽行验证是否存在,不存在的供应商信息调用标准API进行导入操作,已存在的供应商根据实际需求是否进行更新。
第四步:导入完成后在界面或者后台表中查询该供应商信息,检验导入的供应商信息是否正确。
3、供应商导入的接口程序
(1)、供应商头信息创建和更新



1 --供应商头信息的创建
2 l_vendor_rec ap_vendor_pub_pkg.r_vendor_rec_type;
3 --供应商类型
4 l_vendor_rec.vendor_type_lookup_code := i_vendor_type_code;
5 --供应商名称
6 l_vendor_rec.vendor_name         := i_vendor_name;
7 --供应商编码
8 l_vendor_rec.segment1            :=get_vendor_number(i_tax_no, i_vendor_type_code);
9 --供应商税号
10 l_vendor_rec.tax_reference         := i_tax_no;
11 l_vendor_rec.pay_group_lookup_code := 'STANDARD';
12 来源系统编码
13 l_vendor_rec.attribute2            := i_src_vendor_num;
14 --供应商类别
15 l_vendor_rec.attribute4            := i_vendor_classify_code;
16
17 --创建新的供应商
18 pos_vendor_pub_pkg.create_vendor
19 (
20 p_vendor_rec    => l_vendor_rec,
21 x_return_status => l_return_status, --返回的状态
22 x_msg_count   => l_msg_count,   --返回的错误数量
23 x_msg_data      => l_msg_data,      --返回的错误信息
24 x_vendor_id   => l_vendor_id,   --返回的创建的供应商id
25 x_party_id      => l_party_id);   --返回的机构id


1 l_vendor_rec ap_vendor_pub_pkg.r_vendor_rec_type;
2 --更新供应商头信息
3 pos_vendor_pub_pkg.update_vendor
4 (
5 p_vendor_rec    => l_vendor_rec,
6 x_return_status => l_return_status, --返回的状态
7 x_msg_count   => l_msg_count,   --返回的错误数量
8 x_msg_data      => l_msg_data);   --返回的错误信息
  (2)、供应商地点的创建和更新



1 --供应商地点的创建
2 l_vendor_site_rec         ap_vendor_pub_pkg.r_vendor_site_rec_type;
3
4 --赋值
5 l_vendor_site_code          := ‘TEST001’;
6 --地址编码
7 l_vendor_site_rec.vendor_site_code := l_vendor_site_code;
8 --地址名称
9 l_party_site_name               := 'TEST'
10 l_vendor_site_rec.party_site_name := l_party_site_name;
11 --国家编码
12 l_vendor_site_rec.country      := 'CN';
13   
14 --当地址的国家不是中国、香港和其他时,必输字段
15 /*IFl_country_code NOT IN ('CN', 'ZZ', 'HK') THEN
16       l_vendor_site_rec.state:= 'US';
17       l_vendor_site_rec.county := 'US';
18       l_vendor_site_rec.city   := 'New York';
19   END IF;
20 */
21 --供应商id
22 l_vendor_site_rec.vendor_id   := l_vendor_id;
23 --业务实体
24 l_vendor_site_rec.org_id      := i_org_id;
25 --详细地址
26 l_vendor_site_rec.address_line1 := l_addr;
27 --详细地址2
28 l_vendor_site_rec.address_line2 := i_detail_addr;
29 --传真
30 l_vendor_site_rec.fax         := i_fax_num;
31 --供应商类型
32 l_vendor_site_rec.attribute1    := i_vendor_type_code;
33 --来源系统编码
34 l_vendor_site_rec.attribute2    := i_src_vendor_num;
35 --供应商类别
36 l_vendor_site_rec.attribute4    := i_vendor_classify_code;
37 --付款标识
38 l_vendor_site_rec.pay_site_flag := 'Y';
39 --采购标识
40 l_vendor_site_rec.purchasing_site_flag := 'Y';
41 --付款冻结标识
42 l_vendor_site_rec.hold_all_payments_flag := 'N';
43
44 --设置成当前的业务实体
45 mo_global.set_policy_context(p_access_mode => 'S', p_org_id => i_org_id);
46
47 --创建供应商地点
48 pos_vendor_pub_pkg.create_vendor_site(
49 p_vendor_site_rec => l_vendor_site_rec,
50 x_return_status   => l_return_status, --返回的导入状态
51 x_msg_count       => l_msg_count,   --错误数量
52 x_msg_data      => l_msg_data,      --错误信息
53 x_vendor_site_id=> l_vendor_site_id,--返回的创建成功的地点id
54 x_party_site_id   => l_party_site_id, --返回机构地点id
55 x_location_id   => l_location_id);


1 --供应商地点更新
2 l_vendor_site_rec ap_vendor_pub_pkg.r_vendor_site_rec_type;
3
4 --赋值
5 --付款冻结标识
6 l_vendor_site_rec.hold_all_payments_flag   := ‘N’;
7 --业务实体
8 l_vendor_site_rec.org_id            := i_org_id;
9 --详细地址1
10 l_vendor_site_rec.address_line1       := l_address_line1;
11 --详细地址2
12 l_vendor_site_rec.address_line2       := l_address_line2;
13 --地点id
14 l_vendor_site_rec.vendor_site_id      := i_vendor_site_id;
15 --地址名称
16 l_vendor_site_rec.party_site_name    := i_party_site_name;
17 --付款账户组合id
18 l_vendor_site_rec.accts_pay_code_combination_id := l_accts_pay_code_combination_id;
19 --与付款账户组合id
20 l_vendor_site_rec.prepay_code_combination_id    := i_prepay_code_combination_id;
21
22 --更新供应商地点
23 pos_vendor_pub_pkg.update_vendor_site(
24 x_return_status   => o_return_status,   --导入状态
25 x_msg_count       => l_msg_count,       --错误数量
26 x_msg_data      => l_msg_data,      --错误信息
27 p_vendor_site_rec => l_vendor_site_rec);
  (3)、供应商联系人信息的创建和更新



1 --联系人新建
2 l_contact_rec          ap_vendor_pub_pkg.r_vendor_contact_rec_type;
3
4 --赋值
5 --供应商id
6 l_contact_rec.vendor_id      := l_vendor_id;
7 --联系人姓名
8 l_contact_rec.person_last_name := i_last_name;
9 --联系人身份证号
10 l_contact_rec.url         := i_id_num;
11 --联系人电话
12 l_contact_rec.phone         := i_phone;
13 --联系人传真号
14 l_contact_rec.fax_phone   := i_fax_num;
15 --联系人邮箱
16 l_contact_rec.email_address := i_emial_addr;
17 --将联系人创到地点
18 l_contact_rec.org_party_site_id := l_party_site_id;
19
20 --创建联系人
21 pos_vendor_pub_pkg.create_vendor_contact(
22 p_vendor_contact_rec => l_contact_rec,
23 x_return_status      => l_return_status,    --返回状态
24 x_msg_count          => l_msg_count,      --错误数量
25 x_msg_data         => l_msg_data,         --错误信息
26 x_vendor_contact_id=> l_vendor_contact_id,--联系人id
27 x_per_party_id       => l_per_party_id,   --联系人机构id
28 x_rel_party_id       => l_rel_party_id,   --关系机构id
29 x_rel_id             => l_rel_id,         --关系id
30 x_org_contact_id   => l_org_contact_id,   --地点联系人id
31 x_party_site_id      => l_party_site_id);   --地点id


--联系人的更新
l_contact_rec          ap_vendor_pub_pkg.r_vendor_contact_rec_type;
pos_supp_contact_pkg.update_supplier_contact(
p_contact_party_id => l_party_id,    --联系人机构id
p_vendor_party_id=> l_vendor_party_site_id,--供应商机构id
p_last_name      => i_last_name,      --联系人姓名
p_phone_number   => i_phone,            --联系人电话
p_url            => i_id_num,         --联系人身份证号
p_fax_number       => i_fax_num,          --联系人传真号
p_email_address    => i_emial_addr,       --联系人邮箱地址
x_return_status    => l_return_status,    --返回状态
x_msg_count      => l_msg_count,      --错误数量
x_msg_data         => l_msg_data);      --错误信息
  (4)、供应商付款方法创建和更新



1 --付款方法的创建和更新
2 l_external_payee_rec_type iby_disbursement_setup_pub.external_payee_rec_type;
3   l_ext_payee_id_rec_type   iby_disbursement_setup_pub.ext_payee_id_rec_type;
4   l_ext_payee_tab         iby_disbursement_setup_pub.external_payee_tab_type;
5   l_ext_payee_id_tab      iby_disbursement_setup_pub.ext_payee_id_tab_type;
6   l_ext_payee_status_tab    iby_disbursement_setup_pub.ext_payee_update_tab_type;
7
8 --赋值
9 --update site level ext pay infor
10 l_ext_payee_id_rec := NULL;
11 l_ext_payee_id_tab.delete;
12 l_external_payee_rec := NULL;
13 l_ext_payee_tab.delete;
14 --init param p_ext_payee_id_tab
15 --付款方法id
16 l_ext_payee_id_rec.ext_payee_id := i_ext_payee_id;
17 l_ext_payee_id_tab(1) := l_ext_payee_id_rec_type;
18 --init param p_ext_payee_tab
19 --地点付款方法id
20 l_external_payee_rec.payee_party_site_id := i_party_site_id;
21 l_external_payee_rec.payee_party_id := r_payment_method.party_id; --p_party_id;
22 --付款功能
23 l_external_payee_rec.payment_function    := i_payment_function;
24 --付款业务实体
25 l_external_payee_rec.payer_org_id      := i_org_id;
26 --供应商地点id
27 l_external_payee_rec.supplier_site_id    := i_supplier_site_id;
28 --供应商业务实体类型
29 l_external_payee_rec.payer_org_type    := i_org_type;
30 l_external_payee_rec.exclusive_pay_flag:= ‘Y’;
31 --默认付款方法
32 l_external_payee_rec.default_pmt_method:=i_method_code;
33 l_ext_payee_tab(1) := l_external_payee_rec_type;
34
35 --创建和更新
36 iby_disbursement_setup_pub.update_external_payee(
37 p_api_version          => l_api_version,   --版本号
38 p_init_msg_list      => 'T',
39 p_ext_payee_tab      => l_ext_payee_tab,
40 p_ext_payee_id_tab   => l_ext_payee_id_tab,
41 x_return_status      => l_return_status,
42 x_msg_count            => l_msg_count,
43 x_msg_data             => l_msg_data,
44 x_ext_payee_status_tab => l_ext_payee_status_tab);
  (5)、供应商地点银行信息的创建



1 --供应商银行的创建
2 l_result_rec            iby_fndcpt_common_pub.result_rec_type;
3 l_extbank_rec             iby_ext_bankacct_pub.extbank_rec_type;
4
5 --赋值
6 l_extbank_rec         := NULL;
7 --银行名称
8 l_extbank_rec.bank_name := i_bank_name;
9 --版本号
10 l_extbank_rec.object_version_number := 1;
11 --国家
12 l_extbank_rec.country_code          := l_country_code;
13 --类型
14 l_extbank_rec.institution_type      := 'BANK';
15
16 --创建银行
17 iby_ext_bankacct_pub.create_ext_bank(
18 p_api_version   => l_api_version,   --版本号
19 p_init_msg_list => fnd_api.g_true,--默认值’T’
20 p_ext_bank_rec=> p_extbank_rec,   
21 x_bank_id       => o_bank_id,       --返回的银行id
22 x_return_status => o_return_status, --返回状态
23 x_msg_count   => l_msg_count,   --错误数量
24 x_msg_data      => l_msg_data,      --错误信息
25 x_response      => l_result_rec);
  供应商支行的创建



1 --定义
2 l_result_rec            iby_fndcpt_common_pub.result_rec_type;
3 l_extbankbranch_rec       iby_ext_bankacct_pub.extbankbranch_rec_type;
4
5 --赋值
6 --银行id
7 l_extbankbranch_rec.bank_party_id    := i_bank_id;
8 --支行名称
9 l_extbankbranch_rec.branch_name:= nvl(i_bank_branch_name, i_branch_number);
10 --联行号
11 l_extbankbranch_rec.branch_number    := i_branch_number;
12 --支行类型
13 l_extbankbranch_rec.branch_type      := 'SWIFT';
14 --支行版本号
15 l_extbankbranch_rec.bch_object_version_number := 1;
16
17 --创建支行
18 iby_ext_bankacct_pub.create_ext_bank_branch(
19 p_api_version         => l_api_version,      --版本号
20 p_init_msg_list       => fnd_api.g_true,   --‘T’
21 p_ext_bank_branch_rec => l_extbankbranch_rec,
22 x_branch_id         => o_branch_id,      --支行id
23 x_return_status       => o_return_status,    --返回状态
24 x_msg_count         => l_msg_count,      --错误数量
25 x_msg_data            => l_msg_data,         --错误信息
26 x_response            => l_result_rec);
  将银行账户挂到对应地点的‘添加’LOV值集中



1 iby_ext_bankacct_pub.add_joint_account_owner(
2 p_api_version         => p_object_version_number, --版本号
3 p_init_msg_list       => fnd_api.g_true,--默认值‘T’
4 p_bank_account_id   => l_ext_bank_acct_rec.bank_account_id, --账户id
5 p_acct_owner_party_id => l_party_id,--组织id
6 x_joint_acct_owner_id => l_joint_acct_owner_id, --返回的账户所有者的id
7 x_return_status       => l_return_status,
8 x_msg_count         => l_msg_count,
9 x_msg_data            => l_msg_data,
10 x_response            => l_result_rec);
  将已经挂到对应lov下的账户挂到对应地点上



1 --定义
2 l_payee_rec               iby_disbursement_setup_pub.payeecontext_rec_type;
3 l_instrument_rec          iby_fndcpt_setup_pub.pmtinstrument_rec_type;
4 l_assignment_attribs_reciby_fndcpt_setup_pub.pmtinstrassignment_rec_type;
5
6 --赋值
7 --init param p_payee record
8 --付款的机构id
9 l_payee_rec.party_id         := l_party_id; --p_party_id;
10 --付款方式
11 l_payee_rec.payment_function := 'PAYABLES_DISB';
12 --供应商地点id
13 l_payee_rec.supplier_site_id := l_vendor_site_id;
14 --机构地点id
15 l_payee_rec.party_site_id    := l_party_site_id;
16 --业务实体
17 l_payee_rec.org_id         := i_org_id;
18 --实体类型
19 l_payee_rec.org_type         := 'OPERATING_UNIT';
20         
21 --initparam p_assignment_attribs record
22 --付款类型
23 l_instrument_rec.instrument_type    := 'BANKACCOUNT';
24 --账户id
25 l_instrument_rec.instrument_id      := l_bank_acct_id;
26 --created in create_ext_bank_acct
27 l_assignment_attribs_rec.instrument := l_instrument_rec;
28 l_assignment_attribs_rec.priority   := 1;
29 --有效期自
30 l_assignment_attribs_rec.start_date := SYSDATE;
31
32 --创建到地点上
33 iby_disbursement_setup_pub.set_payee_instr_assignment(
34 p_api_version      => '1.0',            --版本号
35 p_init_msg_list      => fnd_api.g_true,   --‘T’
36 p_commit             => fnd_api.g_true,   --‘T’
37 x_return_status      => l_return_status,--返回状态
38 x_msg_count          => l_msg_count,      --错误数量
39 x_msg_data         => l_msg_data,       --错误信息
40 p_payee            => l_payee_rec,
41 p_assignment_attribs => l_assignment_attribs_rec,
42 x_assign_id          => l_assign_id,      --使用id
43 x_response         => l_result_rec);
  
页: [1]
查看完整版本: Oracle EBS供应商接口导入(转)