SAP BP业务伙伴维护BAPI&&API

前情提要

仅列出常用的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客户
增强
BADI 功能
PARTNER_UPDATE BP创建或修改
ADDRESS_UPDATE BP地址(通信)数据维护

API示例代码(维护公司代码)

  • 维护客户
form maintain_cust_company  using  u_bp_basic type zsmdg_bp_input_basic_req
                                  u_bp_comp_tab type zmdg_bp_input_company_req_t
                            changing c_return_table type bapiret2_tab.
  "获取BP关联的客户编码,默认11
  select single partner,
         b~partner_guid,
         customer
    from but000 as b
    inner join cvi_cust_link as c
    on c~partner_guid eq b~partner_guid
    where partner eq @u_bp_basic-bp_header
    into @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_central
                            address = value #( postal = value #( data = value #(
                                                                        name = u_bp_basic-zzbpnm
                                                                        city = u_bp_basic-zzcity
                                                                        country = u_bp_basic-ref_posta
                                                                        langu = '1'
                                                                    )
                                                              datax = value #(
                                                                    name = abap_true
                                                                    city = abap_true
                                                                    country = abap_true
                                                                    langu = 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(
  exporting
    is_master_data = ls_master_data
  importing
    es_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'
      exporting
        wait = 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_req
                                  u_bp_comp_tab type zmdg_bp_input_company_req_t
                            changing c_return_table type bapiret2_tab.
  "获取BP关联的供应商编码,默认11
  select single partner,
                b~partner_guid,
                vendor
  from but000 as b
  inner join cvi_vend_link as v
  on v~partner_guid eq b~partner_guid
  where partner eq @u_bp_basic-bp_header
  into @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_central
                          address = value #( postal = value #( data = value #(
                                                                                name = u_bp_basic-zzbpnm
                                                                                city = u_bp_basic-zzcity
                                                                                country = u_bp_basic-ref_posta
                                                                                langu = '1'
                                                                              )
                                                              datax = value #(
                                                                                name = abap_true
                                                                                city = abap_true
                                                                                country = abap_true
                                                                                langu = 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(
  exporting
    is_master_data = ls_master_data
  importing
    es_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'
      exporting
        wait = abap_true.
  else.
    call function 'BAPI_TRANSACTION_ROLLBACK'.
  endif.

  append lines of ls_message-messages to c_return_table.
endform.
备注

多个BAPI连续使用的话,好像要单独commit, 比如先创建BP的中心数据,然后按顺序分配维护地址,分配角色,维护银行,维护公司代码等,如果中间步骤出错,可以考虑停止,或者是跳过错误的步骤,进行下一步。

猜你喜欢

转载自blog.csdn.net/u012232542/article/details/108617367
SAP
今日推荐