客商维护BAPIAPI"/>
SAP BP客商维护BAPIAPI
前情提要
仅列出常用的BAPI,大家可以到具体的函数组中发现更多用法;角色可以创建的时候直接维护,或者单独维护;找不到BAPI的,比如公司代码,使用API来维护。
BAPI清单
创建BP
BAPI | 功能 |
---|
BAPI_BUPA_CREATE_FROM_DATA | 创建BP, 包括中心数据、地址等 |
BAPI_BUPA_FS_CREATE_FROM_DATA2 | 功能同上,多一个角色分配功能 |
角色维护
BAPI | 功能 |
---|
BAPI_BUPA_ROLES_GET_2 | 获取分配的Role(按日期) |
BAPI_BUPA_ROLE_ADD_2 | 添加Role |
BAPI_BUPA_ROLE_CHANGE | 修改已存在的Role属性 |
BAPI_BUPA_ROLE_EXIST_CHECK_2 | 校验Role是否存在 |
BAPI_BUPA_ROLE_REMOVE | 删除已分配的Role |
中心数据维护
BAPI | 功能 |
---|
BAPI_BUPA_CENTRAL_GETDETAIL | 获取中心数据 |
BAPI_BUPA_CENTRAL_CHANGE | 修改中心数据 |
地址信息维护
BAPI | 功能 |
---|
BAPI_BUPA_ADDRESSES_GET | 获取所有地址信息 |
BAPI_BUPA_ADDRESS_ADD | 添加地址信息 |
BAPI_BUPA_ADDRESS_CHANGE | 修改已存在的地址信息 |
BAPI_BUPA_ADDRESS_GETDETAIL | 获取某个地址的详细信息 |
BAPI_BUPA_ADDRESS_GET_NUMBERS | 获取地址对应的address number |
BAPI_BUPA_ADDRESS_REMOVE | 删除地址信息 |
银行信息维护
BAPI | 功能 |
---|
BAPI_BUPA_BANKDETAILS_GET | 获取所有的银行信息 |
BAPI_BUPA_BANKDETAIL_ADD | 添加银行信息 |
BAPI_BUPA_BANKDETAIL_CHANGE | 修改银行信息 |
BAPI_BUPA_BANKDETAIL_GETDETAIL | 获取单个银行的详细信息 |
BAPI_BUPA_BANKDETAIL_NUMBERS | 获取银行ID |
BAPI_BUPA_BANKDETAIL_REMOVE | 删除银行信息 |
Identification Number(标识号/证件号码)
BAPI | 功能 |
---|
BAPI_IDENTIFICATIONDETAILS_GET | 获取所有标识号 |
BAPI_IDENTIFICATION_GET_DETAIL | 获取单个标识号的详细信息 |
BAPI_IDENTIFICATION_ADD | 新增标识号 |
BAPI_IDENTIFICATION_CHANGE | 修改标识号 |
BAPI_IDENTIFICATION_REMOVE | 删除标识号 |
API
API | 功能 |
---|
CMD_EI_API_EXTRACT | 读取BP客户信息 |
VMD_EI_API_EXTRACT | 读取BP供应商信息 |
VMD_EI_API | 维护BP供应商 |
CMD_EI_API | 维护BP客户 |
CL_MD_BP_MAINTAIN | 维护BP(较全功能) |
增强
BADI | 功能 |
---|
PARTNER_UPDATE | BP创建或修改 |
ADDRESS_UPDATE | BP地址(通信)数据维护 |
表清单(更新中)
BP
客户
供应商
API示例代码(维护公司代码)
form maintain_cust_company using u_bp_basic type zsmdg_bp_input_basic_requ_bp_comp_tab type zmdg_bp_input_company_req_tchanging c_return_table type bapiret2_tab."获取BP关联的客户编码,默认1对1select single partner,b~partner_guid,customerfrom but000 as binner join cvi_cust_link as con c~partner_guid eq b~partner_guidwhere partner eq @u_bp_basic-bp_headerinto @data(ls_bp_cust).data:ls_master_data type cmds_ei_main,ls_customer type cmds_ei_extern,ls_central type cmds_ei_cmd_central,ls_company type cmds_ei_company,lt_company type cmds_ei_company_t,ls_message type cvis_message.clear ls_master_data.clear ls_customer.loop at u_bp_comp_tab into data(ls_bp_comp).ls_company-task = 'M'.ls_company-data_key-bukrs = ls_bp_comp-company.ls_company-data-akont = '1122010000'.ls_company-data-loevm = ls_bp_comp-loevm_b.ls_company-datax-akont = abap_true.ls_company-datax-loevm = abap_true.append ls_company to lt_company.endloop.ls_central-data-ktokd = 'DEBI'.ls_central-datax-ktokd = abap_true.ls_customer = value #(header = value #(object_instance = value #( kunnr = ls_bp_cust-customer )object_task = 'M' )central_data = value #(central = ls_centraladdress = value #( postal = value #( data = value #(name = u_bp_basic-zzbpnmcity = u_bp_basic-zzcitycountry = u_bp_basic-ref_postalangu = '1')datax = value #(name = abap_truecity = abap_truecountry = abap_truelangu = abap_true))))company_data = value #( company = lt_company current_state = abap_true )).append ls_customer to ls_master_data-customers.cmd_ei_api=>initialize( ).cmd_ei_api=>lock( iv_kunnr = ls_bp_cust-customer ).cmd_ei_api=>maintain(exportingis_master_data = ls_master_dataimportinges_error = ls_message).cmd_ei_api=>unlock( iv_kunnr = ls_bp_cust-customer ).read table ls_message-messages transporting no fields with key type = 'E'.if sy-subrc ne 0.call function 'BAPI_TRANSACTION_COMMIT'exportingwait = abap_true.else.call function 'BAPI_TRANSACTION_ROLLBACK'.endif.append lines of ls_message-messages to c_return_table.
endform.
form maintain_ven_company using u_bp_basic type zsmdg_bp_input_basic_requ_bp_comp_tab type zmdg_bp_input_company_req_tchanging c_return_table type bapiret2_tab."获取BP关联的供应商编码,默认1对1select single partner,b~partner_guid,vendorfrom but000 as binner join cvi_vend_link as von v~partner_guid eq b~partner_guidwhere partner eq @u_bp_basic-bp_headerinto @data(ls_bp_vend).data:ls_master_data type vmds_ei_main,ls_vendor type vmds_ei_extern,ls_company type vmds_ei_company,lt_company type vmds_ei_company_t,ls_central type vmds_ei_vmd_central,ls_message type cvis_message.clear ls_master_data.clear ls_vendor.loop at u_bp_comp_tab into data(ls_bp_comp).ls_company-task = 'M'.ls_company-data_key-bukrs = ls_bp_comp-company.ls_company-data-akont = '2202020000'.ls_company-data-loevm = ls_bp_comp-loevm_b.ls_company-datax-akont = abap_true.ls_company-datax-loevm = abap_true.append ls_company to lt_company.endloop.ls_central-data-ktokk = 'KRED'.ls_central-datax-ktokk = abap_true.ls_vendor = value #(header = value #(object_instance = value #( lifnr = ls_bp_vend-vendor )object_task = 'M' )central_data = value #(central = ls_centraladdress = value #( postal = value #( data = value #(name = u_bp_basic-zzbpnmcity = u_bp_basic-zzcitycountry = u_bp_basic-ref_postalangu = '1')datax = value #(name = abap_truecity = abap_truecountry = abap_truelangu = abap_true))))company_data = value #( company = lt_company current_state = abap_true )).append ls_vendor to ls_master_data-vendors.vmd_ei_api=>initialize( ).vmd_ei_api=>lock( iv_lifnr = ls_bp_vend-vendor ).vmd_ei_api=>maintain(exportingis_master_data = ls_master_dataimportinges_error = ls_message).vmd_ei_api=>unlock( iv_lifnr = ls_bp_vend-vendor ).read table ls_message-messages transporting no fields with key type = 'E'.if sy-subrc ne 0.call function 'BAPI_TRANSACTION_COMMIT'exportingwait = abap_true.else.call function 'BAPI_TRANSACTION_ROLLBACK'.endif.append lines of ls_message-messages to c_return_table.
endform.
备注
多个BAPI连续使用的话,好像要单独commit, 比如先创建BP的中心数据,然后按顺序分配维护地址,分配角色,维护银行,维护公司代码等,如果中间步骤出错,可以考虑停止,或者是跳过错误的步骤,进行下一步。
发布评论