S4 BP客户主数据创建

本文介绍了在SAP系统中如何使用S4BP功能创建客户主数据,包括处理新增和修改记录、设置业务伙伴属性、关联银行信息、地址、联系方式以及增值税和销售数据的配置过程。
摘要由CSDN通过智能技术生成

S4 BP客户主数据创建

 " 固定的参数
  CONSTANTS : c_parvw1 TYPE parvw VALUE 'SP', " 售达方
              c_parvw2 TYPE parvw VALUE 'BP', " 收票方
              c_parvw3 TYPE parvw VALUE 'PY', " 付款方
              c_parvw5 TYPE parvw VALUE 'SH'. " 送达方
  CONSTANTS: lc_insert TYPE c VALUE 'I',
             lc_update TYPE c VALUE 'U',
             lc_modify TYPE c VALUE 'M'.

  DATA : lv_bpartnerguid TYPE bu_partner_guid_bapi.
  DATA : lt_data   TYPE  cvis_ei_extern_t,
         ls_data   TYPE  cvis_ei_extern,
         lt_return TYPE  bapiretm,
         ls_return TYPE  bapireti,
         ls_msg    TYPE bapiretc.
  DATA : lv_msg TYPE string.
  DATA : ls_partner	 TYPE bus_ei_extern,
         ls_customer TYPE cmds_ei_extern.
  DATA : lt_roles         TYPE bus_ei_bupa_roles_t,
         ls_roles         TYPE bus_ei_bupa_roles,
         lt_banks         TYPE bus_ei_bupa_bankdetail_t,
         ls_banks         TYPE bus_ei_bupa_bankdetail,
         lt_taxs          TYPE bus_ei_bupa_taxnumber_t,
         ls_taxs          TYPE bus_ei_bupa_taxnumber,
         lt_ident_numbers TYPE bus_ei_bupa_identification_t,
         ls_ident_numbers TYPE bus_ei_bupa_identification,
         lt_addresses     TYPE bus_ei_bupa_address_t,
         ls_addresses     TYPE bus_ei_bupa_address,
         lt_phone         TYPE bus_ei_bupa_telephone_t,
         ls_phone         TYPE bus_ei_bupa_telephone,
         lt_fax           TYPE bus_ei_bupa_fax_t,
         ls_fax           TYPE bus_ei_bupa_fax,
         lt_smtp          TYPE bus_ei_bupa_smtp_t,
         ls_smtp          TYPE bus_ei_bupa_smtp,
         ls_central       TYPE cmds_ei_cmd_central,
         lt_company       TYPE cmds_ei_company_t,
         ls_company       TYPE cmds_ei_company,
         lt_sales         TYPE cmds_ei_sales_t,
         ls_sales         TYPE cmds_ei_sales,
         lt_functions     TYPE cmds_ei_functions_t,
         ls_functions     TYPE cmds_ei_functions,
         lt_texts         TYPE cvis_ei_text_t,
         ls_texts         TYPE cvis_ei_text,
         lt_tab           TYPE tline_tab,
         ls_tab           TYPE tline,
         lt_tax_ind       TYPE cmds_ei_tax_ind_t,
         ls_tax_ind       TYPE cmds_ei_tax_ind,
         ls_remarks       TYPE bus_ei_bupa_comrem,
         lt_remarks       TYPE bus_ei_bupa_comrem_t.
  DATA : lt_partnerguid_list TYPE bu_partner_guid_t,
         ls_partnerguid_list LIKE LINE OF lt_partnerguid_list.
  DATA : lt_customer_list TYPE cvis_cust_link_t,
         ls_customer_list TYPE cvi_cust_link.
  DATA : ls_header       TYPE cmds_ei_header,
         ls_central_data TYPE cmds_ei_central_data,
         ls_company_data TYPE cmds_ei_cmd_company,
         ls_sales_data   TYPE cmds_ei_cmd_sales.
  DATA : lv_guid TYPE but000-partner_guid.
  DATA: lv_object_task TYPE c.
  DATA: lv_task TYPE c.
  DATA: lv_functions_task TYPE c.

  CLEAR: lv_object_task,
         lv_guid.
  " 转换程内码 补前导零
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = ps_tab-partner
    IMPORTING
      output = ps_tab-partner.
  " 根据传入的处理类型 进行判断 I 新增 U 修改
  CASE ps_tab-zczlx.
    WHEN 'I'." 新增
      " 新增的时候获取 GUID
      TRY .
          CLEAR lv_bpartnerguid.
          lv_bpartnerguid = cl_uuid_factory=>create_system_uuid( )->create_uuid_x16( ).
        CATCH cx_uuid_error.
          "返回消息
      ENDTRY.
      lv_object_task = lc_insert." 新增
      lv_task        = lc_insert." 新增
      lv_functions_task = lc_insert.
    WHEN 'U'." 修改
      " 修改的时候已经有GUID了需要获取已有的GUID
      CLEAR lv_guid.
      SELECT SINGLE partner_guid INTO lv_guid
              FROM but000 WHERE partner = ps_tab-partner.
      lv_bpartnerguid = lv_guid.

      lv_object_task = lc_update." 修改
      lv_task        = lc_update." 修改
      lv_functions_task = lc_update.
    WHEN OTHERS.
  ENDCASE.

  CLEAR: ls_partner.

  ls_partner-header-object_task = lv_object_task." 更新标识
  ls_partner-header-object_instance-bpartnerguid = lv_bpartnerguid." GUID
  ls_partner-header-object_instance-bpartner     = ps_tab-partner." 客户编码

  ls_partner-central_data-common-data-bp_control-category = '2'.                 "业务伙伴类别(1代表人员,2代表组织,3代表组)

  ls_partner-central_data-common-data-bp_control-grouping        = ps_tab-bu_group.  "业务伙伴分组 账户组
  ls_partner-central_data-common-data-bp_centraldata-title_key   = ps_tab-title.     "称谓
  ls_partner-central_data-common-data-bp_centraldata-searchterm1 = ps_tab-bu_sort1.  "检索项1
  ls_partner-central_data-common-data-bp_organization-name1      = ps_tab-name_org1. "名称1

  ls_partner-central_data-common-datax-bp_centraldata-title_key   = abap_true.
  ls_partner-central_data-common-datax-bp_centraldata-searchterm1 = abap_true.
  ls_partner-central_data-common-datax-bp_organization-name1      = abap_true.


  CLEAR lt_roles[].
  CLEAR:ls_roles.
  ls_roles-task = lv_task.
  ls_roles-data_key = 'FLCU01'.     "销售角色
  APPEND ls_roles TO lt_roles.
  CLEAR:ls_roles.
  ls_roles-task = lv_task.
  ls_roles-data_key = 'FLCU00'.     "公司角色
  APPEND ls_roles TO lt_roles.
  ls_partner-central_data-role-roles = lt_roles.

  " 银行数据
  CLEAR: lt_banks[].
  CLEAR: ls_banks.
  ls_banks-task = lv_task.
  ls_banks-data-bank_ctry        = ps_tab-banks.   "银行国家代码
  ls_banks-data-bank_key         = ps_tab-bankl.   "银行代码
  ls_banks-data-bank_acct        = ps_tab-bankn.   "银行帐户号码
  ls_banks-data-bankaccountname  = ps_tab-banka.   "开户行
  ls_banks-data-accountholder    = ps_tab-koinh.   "银行户主
  ls_banks-datax-bank_ctry       = 'X'.
  ls_banks-datax-bank_key        = 'X'.
  ls_banks-datax-bank_acct       = 'X'.
  ls_banks-datax-bankaccountname = 'X'.
  ls_banks-datax-accountholder   = 'X'.
  APPEND ls_banks TO lt_banks.
  ls_partner-central_data-bankdetail-bankdetails = lt_banks.

  " 地址基础信息
  CLEAR: lt_addresses[].
  CLEAR: ls_addresses.
  SELECT SINGLE *
    INTO @DATA(ls_020)
    FROM but020
   WHERE partner = @ps_tab-partner.
  IF sy-subrc = 0.
    ls_addresses-data_key-guid  =   ls_020-address_guid.
  ENDIF.
  ls_addresses-task = lv_task." 更新标识
  CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
    EXPORTING
      input            = ps_tab-spras
    IMPORTING
      output           = ls_addresses-data-postal-data-langu " 语言
    EXCEPTIONS
      unknown_language = 1.
  ls_addresses-data-postal-data-languiso     = ps_tab-spras.  " 语言
  ls_addresses-data-postal-data-street       = ps_tab-stras.  " 街道
  ls_addresses-data-postal-data-city         = ps_tab-ort01.  " 城市
  ls_addresses-data-postal-data-district     = ps_tab-city2.  " 区域
  ls_addresses-data-postal-data-postl_cod1   = ps_tab-pstlz.  " 邮政编码
  ls_addresses-data-postal-data-country      = ps_tab-land1.  " 国家代码
  ls_addresses-data-postal-data-region       = ps_tab-regio.  " 地区代码
  ls_addresses-data-postal-data-c_o_name     = ps_tab-name_co." 代收人

  ls_addresses-data-postal-datax-langu_iso   = abap_true. " 语言
  ls_addresses-data-postal-datax-langu       = abap_true. " 语言
  ls_addresses-data-postal-datax-street      = abap_true. " 街道
  ls_addresses-data-postal-datax-city        = abap_true. " 城市
  ls_addresses-data-postal-datax-district    = abap_true. " 区域
  ls_addresses-data-postal-datax-postl_cod1  = abap_true. " 邮政编码
  ls_addresses-data-postal-datax-country     = abap_true. " 国家代码
  ls_addresses-data-postal-datax-region      = abap_true. " 地区代码
  ls_addresses-data-postal-datax-c_o_name    = abap_true. " 代收人
  " 电话
  CLEAR:ls_phone,lt_phone[].
  ls_phone-contact-task = lv_task.
  ls_phone-contact-data-telephone  = ps_tab-tel_number2.  "电话1
  ls_phone-contact-data-country    = ps_tab-land1.
  ls_phone-contact-data-consnumber = '001'.
  ls_phone-contact-data-r_3_user   = '1'.

  ls_phone-contact-datax-telephone  = abap_true.
  ls_phone-contact-datax-country    = abap_true.
  ls_phone-contact-datax-consnumber = abap_true.
  ls_phone-contact-datax-r_3_user   = abap_true.
  APPEND ls_phone TO lt_phone.

  CLEAR:ls_phone.
  ls_phone-contact-task = lv_task.
  ls_phone-contact-data-telephone  = ps_tab-tel_number."手机1
  ls_phone-contact-data-country    = ps_tab-land1.
  ls_phone-contact-data-consnumber = '002'.
  ls_phone-contact-data-r_3_user = '3'.    "3表示移动电话

  ls_phone-contact-datax-telephone  = abap_true.
  ls_phone-contact-datax-country    = abap_true.
  ls_phone-contact-datax-consnumber = abap_true.
  ls_phone-contact-datax-r_3_user   = abap_true.
  APPEND ls_phone TO lt_phone.
  ls_addresses-data-communication-phone-phone = lt_phone.

  "传真1
  CLEAR:lt_fax.
  CLEAR:ls_fax.
  ls_fax-contact-task = lv_task.
  ls_fax-contact-data-fax = ps_tab-fax_number.     "传真号
  ls_fax-contact-datax-fax = abap_true.
  APPEND ls_fax TO lt_fax.
  ls_addresses-data-communication-fax-fax = lt_fax.

  "邮件1
  CLEAR:lt_smtp.
  CLEAR:ls_smtp.
  ls_smtp-contact-task = lv_task.
  ls_smtp-contact-data-e_mail  = ps_tab-email. "邮件
  ls_smtp-contact-datax-e_mail = abap_true.
  APPEND ls_smtp TO lt_smtp.
  ls_addresses-data-communication-smtp-smtp = lt_smtp.


  APPEND ls_addresses TO lt_addresses.
  ls_partner-central_data-address-addresses = lt_addresses.

  "
  CLEAR: ls_header,
         ls_customer,
         ls_central,
         ls_central_data.
  ls_header-object_task = lv_object_task.
  ls_header-object_instance-kunnr = ps_tab-partner.
  ls_customer-header = ls_header.

  ls_central-data-stcd5  = ps_tab-stceg.  "增值税登记号
  ls_central-datax-stcd5 = abap_true.
  ls_central-data-kukla  = ps_tab-kukla.  "客户分类
  ls_central-datax-kukla = abap_true.
  ls_central-data-vbund  = ps_tab-vbund.  "贸易伙伴(6)
  ls_central-datax-vbund = abap_true.


  CLEAR:ls_tax_ind,lt_tax_ind[].
  ls_tax_ind-task           = lv_task.
  ls_tax_ind-data_key-aland = 'CN'.
  ls_tax_ind-data_key-tatyp = 'MWST'.
  ls_tax_ind-data-taxkd     = ps_tab-taxkd.
  ls_tax_ind-datax-taxkd    = abap_true.
  APPEND ls_tax_ind TO lt_tax_ind.
  ls_central_data-tax_ind-tax_ind = lt_tax_ind.


  ls_central_data-central = ls_central.

  ls_customer-central_data = ls_central_data.

  CLEAR: lt_company[],
         ls_company.
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'   " 统驭科目补零
    EXPORTING
      input  = ps_tab-hkont
    IMPORTING
      output = ps_tab-hkont.

  ls_company-task = lv_task.
  ls_company-data_key-bukrs = ps_tab-bukrs.   "公司代码
  ls_company-data-akont     =  ps_tab-hkont.  "统驭科目
  ls_company-data-zterm     = ps_tab-zterm.   "付款条件

  ls_company-datax-akont = abap_true.
  ls_company-datax-zterm = abap_true.
  APPEND ls_company TO lt_company.

  ls_company_data-company = lt_company.

  ls_customer-company_data = ls_company_data.

  " 销售数据
  CLEAR: lt_sales[],
         ls_sales.
  ls_sales-task = lv_task.
  ls_sales-data_key-vkorg = ps_tab-vkorg."销售组织
  ls_sales-data_key-vtweg = ps_tab-vtweg."分销渠道
  ls_sales-data_key-spart = ps_tab-spart."产品组

  ls_sales-data-vkbur = ps_tab-vkbur."销售部门
  ls_sales-data-vkgrp = ps_tab-vkgrp."销售组
  ls_sales-data-waers = ps_tab-waers."货币
  ls_sales-data-kalks = ps_tab-kalks."定价过程
  ls_sales-data-vwerk = ps_tab-werks."工厂
  ls_sales-data-vsbed = ps_tab-vsbed."装运条件
  ls_sales-data-inco1 = ps_tab-inco1."国际贸易条款1
  ls_sales-data-inco2 = ps_tab-inco2."国际贸易条款2
  ls_sales-data-ktgrd = ps_tab-ktgrd."账户分配组
  ls_sales-data-kdgrp = ps_tab-kdgrp."客户组
  ls_sales-data-zterm = ps_tab-zterm."付款条件

  ls_sales-datax-vkbur = abap_true."销售部门
  ls_sales-datax-vkgrp = abap_true."销售组
  ls_sales-datax-waers = abap_true."货币
  ls_sales-datax-kalks = abap_true."定价过程
  ls_sales-datax-vwerk = abap_true."工厂
  ls_sales-datax-vsbed = abap_true."装运条件
  ls_sales-datax-inco1 = abap_true."国际贸易条款1
  ls_sales-datax-inco2 = abap_true."国际贸易条款2
  ls_sales-datax-zterm = abap_true."账户分配组
  ls_sales-datax-ktgrd = abap_true."客户组
  ls_sales-datax-zterm = abap_true."付款条件

  "Function伙伴功能
  CLEAR ls_functions.
  ls_functions-task = lv_functions_task.
  CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT'
    EXPORTING
      input  = c_parvw1  "SP  售达方
    IMPORTING
      output = ls_functions-data_key-parvw.
  APPEND ls_functions TO lt_functions.

  CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT'
    EXPORTING
      input  = c_parvw2 "BP	收票方
    IMPORTING
      output = ls_functions-data_key-parvw.
  APPEND ls_functions TO lt_functions.

  CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT'
    EXPORTING
      input  = c_parvw5 "PY	付款方
    IMPORTING
      output = ls_functions-data_key-parvw.
  APPEND ls_functions TO lt_functions.

  CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT'
    EXPORTING
      input  = c_parvw3 "SH	送达方
    IMPORTING
      output = ls_functions-data_key-parvw.
  APPEND ls_functions TO lt_functions.

  ls_sales-functions-functions = lt_functions.

  APPEND ls_sales TO lt_sales.
  ls_sales_data-sales = lt_sales.
  ls_customer-sales_data = ls_sales_data.

  ls_data-partner = ls_partner.
  ls_data-customer = ls_customer.
  APPEND ls_data TO lt_data.

  CALL FUNCTION 'CVI_EI_INBOUND_MAIN'
    EXPORTING
      i_data   = lt_data
    IMPORTING
      e_return = lt_return.
根据伙伴guid取出客户编号
    ls_partnerguid_list = ls_partner-header-object_instance-bpartnerguid.
    APPEND ls_partnerguid_list TO lt_partnerguid_list.
    lt_customer_list = cvi_mapper=>get_instance( )->get_assigned_customers_for_bps(
                                              i_partner_guids = lt_partnerguid_list ).
" 增值税登记号
DATA :lt_taxr TYPE TABLE OF bapiret2 WITH HEADER LINE.
          DATA :lv_taxmsg TYPE char100.
          DATA: iv_taxtype   TYPE  bapibus1006tax-taxtype,
                iv_taxnumber TYPE  bapibus1006tax-taxnumber.
          iv_taxtype = 'CN0'.
          iv_taxnumber =  ps_tab-stceg.
          IF ps_tab-zczlx = 'I'.
            CALL FUNCTION 'BAPI_BUPA_TAX_ADD'
              EXPORTING
                businesspartner = ps_tab-partner
                taxtype         = iv_taxtype
                taxnumber       = iv_taxnumber
              TABLES
                return          = lt_taxr.
  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值