详解EBS接口开发之供应商导入(转载)

(一)供应商常用标准表简介

 

1.1   常用标准表

如下表中列出了与供应商相关的表和说明:

 

表名

说明

其他信息

ap_suppliers

供应商头表

供应商的头信息如:供应商名、供应商编码、税号等

po_vendors

对应视图

ap_supplier_sites_all

供应商地点表

供应商的地点信息,如对应OU、地址等

po_vendor_sites_all

对应视图

pos_supp_prof_ext_b

供应商地点附加信息表

供应商地点附加信息c_ext_attr1~15,d_ext_attr1~15字段

 

 

ap_supplier_contacts

供应商联系人表

供应商联系人姓名、联系方式等

po_vendor_contacts

对应视图

hz_contact_points

供应商联系人联系信息表

供应商联系人的电话、传真、邮箱等

 

 

zx_party_tax_profile

供应商税信息表

供应商纳税类型等

 

 

hz_code_assignments

供应商税率表

供应商对应地址上的税率等

 

 

iby_external_payees_all

付款信息表

供应商对应地点上的付款方式等

 

 

iby_account_ownes

银行账户拥有者

在添加银行账户的lov

 

 

iby_pmt_instr_uses_all

供应商地点银行账户使用表

供应商地点所挂的银行账户

 

 

iby_ext_bank_accounts

供应商地点银行账户表

供应商地点银行账户信息

 

 

iby_ext_banks_v

地点银行表

地点银行信息

hz_parties

基表

Iby_ext_bank_branches_v

地点银行支行表

地点银行支行的联行号、支行名登信息

 

 

 

供应商银行信息表:IBY_EXT_BANKS_V

 

字段名

说明

BANK_PARTY_ID

银行id

BANK_NAME

银行名称

BANK_NUMBER

银行编号

 

供应商银行分行信息表:IBY_EXT_BANK_BRANCHES_V

 

字段名

说明

BRANCH_PARTY_ID

分行id

BRANCH_NUMBER

分行编号

BANK_PARTY_ID

父行id

 

供应商账户信息表:IBY_EXT_BANK_ACCOUNTS

 

字段名

说明

BRANCH_ID

分行id

BANK_ID

父行id

BANK_ACCOUNT_NUM

银行账号

 

供应商导入顺序及流程

3.1   供应商导入顺序

由于数据的先后关联依赖关系,同一供应商的信息导入必须按照一定的顺序进行:先导头信息,再导地点信息,最后导入地点下的地点附加信息、联系人、税率、银行、默认付款方法等信息。(同时有的时候需要把银行导入到供应商层而不是地点层)

 

3.2   API供应商导入流程

API供应商导入流程:

第一步:创建需要导入供应商信息的中间表,字段上提供供应商头信息、地点信息等必输字段。

第二步:向中间表中插入需要导入的供应商信息,验证需要插入的数据是否满足供应商信息规则,去除不合规范的数据。

第三步:对需要导入的数据在数据库标准表中尽行验证是否存在,不存在的供应商信息调用标准API进行导入操作,已存在的供应商根据实际需求是否进行更新。

第四步:导入完成后在界面或者后台表中查询该供应商信息,检验导入的供应商信息是否正确。

3.3  接口表供应商导入流程

接口表供应商导入流程:

第一步:将外部系统数据验证后,转化后导入到客户化CUX表。

第二步:将CUX表中数据验证,转化后插入到系统标准接口表中。

第三步:提交并发请求将数据导入系统。

第四步:调用API将供应商银行信息导入到系统中(可能是地点,地址,供应商等层次)。

说明:导入供应商的时候如果需要导入银行信息,切记不能将供应商银行数据插入接口临时表iby_temp_ext_bank_accts再一起提交并发请求,期待将数据包括账户信息导入(这是公司标准化程序,但是我们项目上我亲自验证,这将会导致系统自动验证字段iby_temp_ext_bank_accts.ibanInternational Bank Account Number 国际银行帐号】;经我调试发现将数据插入此账号临时接口表该字段即使为null也会验证,从而导致验证不过,结果数据进不去,相反如果用API倒银行信息,如果该字段为null则跳过验证,验证的程序在包IBY_EXT_BANKACCT_VALIDATIONS里有空大家可以研究一下

API

[sql]  view plain  copy
  1. 供应商头创建  
  2. pos_vendor_pub_pkg.create_vendor  
  3. (  
  4. p_vendor_rec    => l_vendor_rec,  
  5. x_return_status => l_return_status, --返回的状态  
  6. x_msg_count     => l_msg_count,     --返回的错误数量  
  7. x_msg_data      => l_msg_data,      --返回的错误信息  
  8. x_vendor_id     => l_vendor_id,     --返回的创建的供应商id  
  9. x_party_id      => l_party_id);     --返回的机构id  
  10.   
  11. 供应商头更新  
  12. l_vendor_rec ap_vendor_pub_pkg.r_vendor_rec_type;  
  13. --更新供应商头信息  
  14. pos_vendor_pub_pkg.update_vendor  
  15. (  
  16. p_vendor_rec    => l_vendor_rec,  
  17. x_return_status => l_return_status, --返回的状态  
  18. x_msg_count     => l_msg_count,     --返回的错误数量  
  19. x_msg_data      => l_msg_data);     --返回的错误信息  
[sql]  view plain  copy
  1. 供应商地点创建  
  2.   
  3.   
  4. pos_vendor_pub_pkg.create_vendor_site(  
  5.   
  6. p_vendor_site_rec=> l_vendor_site_rec,  
  7.   
  8. x_return_status   => l_return_status, --返回的导入状态  
  9.   
  10. x_msg_count       => l_msg_count,     --错误数量  
  11.   
  12. x_msg_data        => l_msg_data,      --错误信息  
  13.   
  14. x_vendor_site_id  =>l_vendor_site_id,--返回的创建成功的地点id  
  15.   
  16. x_party_site_id   => l_party_site_id, --返回机构地点id  
  17.   
  18. x_location_id     => l_location_id);    


 

[sql]  view plain  copy
  1. --更新供应商地点  
  2. pos_vendor_pub_pkg.update_vendor_site(  
  3. x_return_status   => o_return_status,   --导入状态  
  4. x_msg_count       => l_msg_count,       --错误数量  
  5. x_msg_data        => l_msg_data,        --错误信息  
  6. p_vendor_site_rec => l_vendor_site_rec);  


 

[sql]  view plain  copy
  1. --创建联系人  
  2. pos_vendor_pub_pkg.create_vendor_contact(  
  3. p_vendor_contact_rec => l_contact_rec,  
  4. x_return_status      => l_return_status,    --返回状态  
  5. x_msg_count          => l_msg_count,        --错误数量  
  6. x_msg_data           => l_msg_data,         --错误信息  
  7. x_vendor_contact_id  => l_vendor_contact_id,--联系人id  
  8. x_per_party_id       => l_per_party_id,     --联系人机构id  
  9. x_rel_party_id       => l_rel_party_id,     --关系机构id  
  10. x_rel_id             => l_rel_id,           --关系id  
  11. x_org_contact_id     => l_org_contact_id,   --地点联系人id  
  12. x_party_site_id      => l_party_site_id);   --地点id  


 

[sql]  view plain  copy
  1. pos_supp_contact_pkg.update_supplier_contact(  
  2. p_contact_party_id => l_party_id,    --联系人机构id  
  3. p_vendor_party_id  => l_vendor_party_site_id,--供应商机构id  
  4. p_last_name        => i_last_name,        --联系人姓名  
  5. p_phone_number     => i_phone,            --联系人电话  
  6. p_url              => i_id_num,           --联系人身份证号  
  7. p_fax_number       => i_fax_num,          --联系人传真号  
  8. p_email_address    => i_emial_addr,       --联系人邮箱地址  
  9. x_return_status    => l_return_status,    --返回状态  
  10. x_msg_count        => l_msg_count,        --错误数量  
  11. x_msg_data         => l_msg_data);        --错误信息  


 

[sql]  view plain  copy
  1. --创建和更新供应商默认付款方法的创建和更新  
  2. iby_disbursement_setup_pub.update_external_payee(  
  3. p_api_version          => l_api_version,     --版本号  
  4. p_init_msg_list        => 'T',  
  5. p_ext_payee_tab        => l_ext_payee_tab,  
  6. p_ext_payee_id_tab     => l_ext_payee_id_tab,  
  7. x_return_status        => l_return_status,  
  8. x_msg_count            => l_msg_count,  
  9. x_msg_data             => l_msg_data,  
  10. x_ext_payee_status_tab => l_ext_payee_status_tab);  


 

[sql]  view plain  copy
  1. --创建银行  
  2. iby_ext_bankacct_pub.create_ext_bank(  
  3. p_api_version   => l_api_version,   --版本号  
  4. p_init_msg_list => fnd_api.g_true,  --默认值’T’  
  5. p_ext_bank_rec  => p_extbank_rec,     
  6. x_bank_id       => o_bank_id,       --返回的银行id  
  7. x_return_status => o_return_status, --返回状态  
  8. x_msg_count     => l_msg_count,     --错误数量  
  9. x_msg_data      => l_msg_data,      --错误信息  
  10. x_response      => l_result_rec);  


 

[sql]  view plain  copy
  1. --创建支行  
  2. iby_ext_bankacct_pub.create_ext_bank_branch(  
  3. p_api_version         => l_api_version,      --版本号  
  4. p_init_msg_list       => fnd_api.g_true,     --‘T’  
  5. p_ext_bank_branch_rec => l_extbankbranch_rec,  
  6. x_branch_id           => o_branch_id,        --支行id  
  7. x_return_status       => o_return_status,    --返回状态  
  8. x_msg_count           => l_msg_count,        --错误数量  
  9. x_msg_data            => l_msg_data,         --错误信息  
  10. x_response            => l_result_rec);  


 

[sql]  view plain  copy
  1. --创建帐号  
  2. iby_ext_bankacct_pub.create_ext_bank_acct(  
  3. p_api_version       => '1.0',  
  4. p_init_msg_list     => fnd_api.g_true,  
  5. p_ext_bank_acct_rec => l_ext_bank_acct_rec,  
  6. x_acct_id           => l_bank_acct_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);  


 

[sql]  view plain  copy
  1. 将账户信息挂到对应地点“添加”按钮中的lov中:  
  2. iby_ext_bankacct_pub.add_joint_account_owner(  
  3. p_api_version         => p_object_version_number, --版本号  
  4. p_init_msg_list       => fnd_api.g_true,  --默认值‘T’  
  5. p_bank_account_id     => l_ext_bank_acct_rec.bank_account_id, --账户id  
  6. p_acct_owner_party_id => l_party_id,  --组织id  
  7. x_joint_acct_owner_id => l_joint_acct_owner_id, --返回的账户所有者的id  
  8. x_return_status       => l_return_status,  
  9. x_msg_count           => l_msg_count,  
  10. x_msg_data            => l_msg_data,  
  11. x_response            => l_result_rec);  


 

[sql]  view plain  copy
  1. --创建到地点上  
  2. iby_disbursement_setup_pub.set_payee_instr_assignment(  
  3. p_api_version        => '1.0',            --版本号  
  4. p_init_msg_list      => fnd_api.g_true,   --‘T’  
  5. p_commit             => fnd_api.g_true,   --‘T’  
  6. x_return_status      => l_return_status,  --返回状态  
  7. x_msg_count          => l_msg_count,      --错误数量  
  8. x_msg_data           => l_msg_data,       --错误信息  
  9. p_payee              => l_payee_rec,  
  10. p_assignment_attribs => l_assignment_attribs_rec,  
  11. x_assign_id          => l_assign_id,      --使用id  
  12. x_response           => l_result_rec);  


 

[sql]  view plain  copy
  1. (2)将供应商银行账户信息导入到其他层  
  2. l_ext_bank_acct_rec.acct_owner_party_id := v_vendor_party_id;这个必须提供,导入到地点层(1)不需要提供  
  3. iby_ext_bankacct_pub.create_ext_bank_acct(p_api_version       => '1.0',  
  4.                                                           p_init_msg_list     => fnd_api.g_true,  
  5.                                                           p_ext_bank_acct_rec => l_ext_bank_acct_rec,  
  6.                                                           p_association_level => 'S'--S:供应商层;SS:供应商地点层;A:Address; AO:Address Operating Unit  
  7.                                                           p_supplier_site_id  => NULL,  
  8.                                                           p_party_site_id     => NULL,  
  9.                                                           p_org_id            => NULL,  
  10.                                                           p_org_type          => NULL--Bug7136876: new parameter  
  11.                                                           x_acct_id           => l_bank_acct_id,  
  12.                                                           x_return_status     => l_return_status,  
  13.                                                           x_msg_count         => l_msg_count,  
  14.                                                           x_msg_data          => l_msg_data,  
  15.                                                           x_response          => l_result_rec);  


 

[sql]  view plain  copy
  1. 接口表实现导入方法  
  2. 6.1  往供应商头信息表里插数据  
  3. ap_suppliers_int  
  4. 6.2 往供应商地点信息表里插数据  
  5. ap_supplier_sites_int  
  6. 6.3往供应商地点联系人信息表里插数据  
  7. ap_sup_site_contact_int  
  8. 6.4  提交并发请求  
  9. 1.供应商导入  
  10. fnd_request.submit_request('SQLAP'--应用简称  
  11.                                                     'APXSUIMP'--并发程序  
  12.                             '',  
  13.                             '',  
  14.                             FALSE,  
  15.                             'ALL',  
  16.                             1000,  
  17.                             'N',  
  18.                             'N',  
  19.                             'N',  
  20.                                                     chr(0)) ;  
  21. 2.供应商地点导入  
  22. fnd_request.submit_request('SQLAP'--应用简称  
  23.                              'APXSSIMP'--并发程序  
  24.                              '',  
  25.                              '',  
  26.                              FALSE,  
  27.                              NULL,  
  28.                              'ALL',  
  29.                              1000,  
  30.                              'Y'--REDO  
  31.                              'Y',  
  32.                              'Y',  
  33.                              chr(0));  
  34. 3.联系人导入  
  35. fnd_request.submit_request('SQLAP'--应用简称  
  36.                              'APXSCIMP'--并发程序  
  37.                              '',  
  38.                              '',  
  39.                              FALSE,  
  40.                              'ALL',  
  41.                              1000,  
  42.                              'N',  
  43.                              'N',  
  44.                              'N',  
  45.                              chr(0));  
  46.   
  47.       6.5调用API创建银行账户信息  
  48. 参考API讲解  
  49.   
  50. 说明:关于接口表导入的接口表信息信息和字段要求可参考标准文档,或者oracle网站      

转载出处:https://blog.csdn.net/cai_xingyun/article/details/17114817


猜你喜欢

转载自blog.csdn.net/f_zhangyu/article/details/80254191