BP供应商主数据BAPI创建

需求:创建供应商主数据

前台操作:事务码BP,选择创建组织

代码:

CONSTANTS:
    g_object_task_i TYPE bus_ei_object_task VALUE 'I'.

  DATA: lv_tabix            TYPE sy-tabix,
        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,
        ls_partner          TYPE bus_ei_extern,
        ls_vendor           TYPE vmds_ei_extern,
        lt_roles            TYPE bus_ei_bupa_roles_t,
        ls_roles            TYPE bus_ei_bupa_roles,
        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_remarks          TYPE bus_ei_bupa_comrem_t,
        ls_remarks          TYPE bus_ei_bupa_comrem,
        lt_bankdetails      TYPE bus_ei_bupa_bankdetail_t,
        ls_bankdetails      TYPE bus_ei_bupa_bankdetail,
        lt_company          TYPE vmds_ei_company_t,
        ls_company          TYPE vmds_ei_company,
        lt_purchasing       TYPE vmds_ei_purchasing_t,
        ls_purchasing       TYPE vmds_ei_purchasing,
        lt_functions        TYPE vmds_ei_functions_t,
        ls_functions        TYPE vmds_ei_functions,
        lv_partner_guid     TYPE bu_partner_guid,
        ls_cvis_error       TYPE cvis_error,
        lt_bapiret2         TYPE bapiret2_t,
        ls_bapiret2         TYPE bapiret2,
* 根据伙伴GUID取出供应商编号
        lt_partnerguid_list TYPE bu_partner_guid_t,
        ls_partnerguid_list TYPE bu_partner_guid,
        lt_vendor_list      TYPE cvis_vend_link_t,
        ls_vendor_list      TYPE cvi_vend_link..

  DATA: l_str TYPE string.
*  zfmparavalsave1 'ZZMM_VENDOR_CREATE'.
*  zfmparavalsave2 'B'.



*  LOOP AT i_data.
*    CLEAR:
*      ls_data,
*      lt_data.

*    lv_tabix = sy-tabix.





*    IF i_data-title_medi IS INITIAL.
*      i_data-title_medi = '0003'.
*    ENDIF.
*
*    IF i_data-spras IS INITIAL.
*      i_data-spras = sy-langu.
*    ENDIF.
*
*    IF i_data-bukrs IS INITIAL.
*      i_data-bukrs = '1000'.
*    ENDIF.
*
DATA:LV_lifnr TYPE lfbk-lifnr.
  LV_lifnr = 'YD3'.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  =  LV_lifnr
      IMPORTING
        output = LV_lifnr.

*    SELECT SINGLE but000~partner
*      INTO ls_partner-header-object_instance-bpartner
*      FROM but000
*      WHERE partner = i_data-lifnr.
*
*    IF sy-subrc = 0.
*      i_data-zis_ok = '4'.
*      i_data-msg    = '供应商' && i_data-lifnr  && '已存在!'.
*      MODIFY i_data INDEX lv_tabix.
*      RETURN.
*    ENDIF.

    TRY .
        lv_partner_guid = cl_uuid_factory=>create_system_uuid( )->create_uuid_x16( ).
      CATCH cx_uuid_error.

        "返回消息
    ENDTRY.
    "基本信息
    ls_partner-header-object_task                  = g_object_task_i.
    ls_partner-header-object_instance-bpartner     = LV_lifnr."i_data-lifnr.
    ls_partner-header-object_instance-bpartnerguid = lv_partner_guid.
****业务合作伙伴数据的中心数据***********************************
    ls_partner-central_data-common-data-bp_control-category         = 2."2.                 "业务伙伴类别
    ls_partner-central_data-common-data-bp_control-grouping         = 'BP13'."i_data-ktokk.      "业务伙伴分组
*    ls_partner-central_data-common-data-bp_centraldata-title_key    = 'L称谓'."i_data-title_medi. "称谓
    ls_partner-central_data-common-data-bp_centraldata-searchterm1  = 'L检索'."i_data-sortl.      "检索项
    ls_partner-central_data-common-data-bp_organization-name1       = '名称1'."i_data-vender.     "供应商名称
    ls_partner-central_data-common-data-bp_organization-name2       = '名称2'."i_data-zbz1.       "供应商名称
    ls_partner-central_data-common-datax-bp_centraldata-searchterm1 = abap_true.
    ls_partner-central_data-common-datax-bp_organization-name1      = abap_true.
    ls_partner-central_data-common-datax-bp_organization-name2      = abap_true.


    CLEAR:lt_roles.
    ls_roles-task     = 'I'.
    ls_roles-data_key = 'FLVN00'.     "采购角色
    APPEND ls_roles TO lt_roles.
    ls_roles-task     = 'I'.
    ls_roles-data_key = 'FLVN01'.     "公司角色
    APPEND ls_roles TO lt_roles.
    ls_partner-central_data-role-roles = lt_roles.
    "地址信息
    CLEAR lt_addresses.
    ls_addresses-task = g_object_task_i.
*    ls_addresses-data-postal-data-street   = i_data-stras.            "街道
    ls_addresses-data-postal-data-country  = 'CN'."i_data-land1.            "国家
    ls_addresses-data-postal-data-langu    = 'ZH'."i_data-spras.            "语言
    ls_addresses-data-postal-datax-street  = abap_true.
    ls_addresses-data-postal-datax-country = abap_true.
    ls_addresses-data-postal-datax-langu   = abap_true.

    "手机
*    CLEAR lt_phone.
*    ls_phone-contact-task            = g_object_task_i.
*    ls_phone-contact-data-telephone  = i_data-telf1.    "电话1
*    ls_phone-contact-data-r_3_user   = '3'.             "移动电话
*    ls_phone-contact-datax-telephone = abap_true.
*    ls_phone-contact-datax-r_3_user  = abap_true.
    "手机备注1(联系人)
*    CLEAR lt_remarks.
*    ls_remarks-task             = g_object_task_i.
*    ls_remarks-data-langu       = i_data-spras.
*    ls_remarks-data-comm_notes  = i_data-contacts.
*    ls_remarks-datax-langu      = abap_true.
*    ls_remarks-datax-comm_notes = abap_true.
*    APPEND ls_remarks TO lt_remarks.
*    ls_phone-remark-remarks = lt_remarks.
*    APPEND ls_phone TO lt_phone.

*    ls_addresses-data-communication-phone-phone = lt_phone.

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

    "银行信息
    CLEAR lt_bankdetails.
*    IF i_data-banks IS NOT INITIAL.
      ls_bankdetails-task                  = g_object_task_i.
      ls_bankdetails-data_key              = '0001'.
      ls_bankdetails-data-bank_ctry        = 'CN'."i_data-banks.
      ls_bankdetails-data-bank_key         = '12334DM'."i_data-bankl.
      ls_bankdetails-data-bank_acct        = '123ZH'."i_data-bankn.
*      ls_bankdetails-data-accountholder    = 'KZM'."i_data-koinh.
*      ls_bankdetails-data-bankaccountname  = i_data-accname.

      ls_bankdetails-datax-bank_ctry       = abap_true.
      ls_bankdetails-datax-bank_key        = abap_true.
      ls_bankdetails-datax-bank_acct       = abap_true.
      ls_bankdetails-datax-accountholder   = abap_true.
      ls_bankdetails-datax-bankaccountname = abap_true.

      APPEND ls_bankdetails TO lt_bankdetails.
      ls_partner-central_data-bankdetail-bankdetails = lt_bankdetails.
*    ENDIF.
    ls_vendor-header-object_instance-lifnr = LV_lifnr."i_data-lifnr.
    ls_vendor-header-object_task           = g_object_task_i.
****公司代码数据************************************************

DATA:LV_akont TYPE lfb1-akont.
  LV_akont = '224101000'.
    CLEAR:lt_company.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'   " 统驭科目补零
      EXPORTING
        input  = LV_akont
      IMPORTING
        output = LV_akont.

    ls_company-task           = g_object_task_i.
    ls_company-data_key-bukrs = '1000'."i_data-bukrs.         "公司代码
    ls_company-data-akont     = '1123010100'."i_data-akont.         "统驭科目
*    ls_company-data-zuawa     = i_data-zuawa.         "排序码
    ls_company-data-zterm     = '0001'."i_data-zterm.         "付款条件
*    ls_company-data-reprf     = i_data-reprf.         "检查重复发票
    ls_company-datax-akont    = abap_true.
    ls_company-datax-zuawa    = abap_true.
    ls_company-datax-zterm    = abap_true.
    ls_company-datax-reprf    = abap_true.
    APPEND ls_company TO lt_company.

     ls_company-task           = g_object_task_i.
    ls_company-data_key-bukrs = '2000'."i_data-bukrs.         "公司代码
    ls_company-data-akont     = '1123010100'."i_data-akont.         "统驭科目
*    ls_company-data-zuawa     = i_data-zuawa.         "排序码
    ls_company-data-zterm     = '0001'."i_data-zterm.         "付款条件
*    ls_company-data-reprf     = i_data-reprf.         "检查重复发票
    ls_company-datax-akont    = abap_true.
    ls_company-datax-zuawa    = abap_true.
    ls_company-datax-zterm    = abap_true.
    ls_company-datax-reprf    = abap_true.
    APPEND ls_company TO lt_company.

    ls_vendor-company_data-company = lt_company.

****采购数据****************************************************
*    CLEAR:lt_purchasing.
*    ls_purchasing-task           = g_object_task_i.
*    ls_purchasing-data_key-ekorg = i_data-ekorg.  "采购组织
*    ls_purchasing-data-waers     = i_data-waers.  "货币
*    ls_purchasing-data-webre     = i_data-webre.  "基于收货的发票校验
*    ls_purchasing-data-zterm     = i_data-zterm.  "付款条件
*    ls_purchasing-data-ekgrp     = i_data-ekgrp.
*    ls_purchasing-datax-waers    = abap_true.
*    ls_purchasing-datax-webre    = abap_true.
*    ls_purchasing-datax-zterm    = abap_true.
*    ls_purchasing-datax-ekgrp    = abap_true.
*
*
*    CLEAR lt_functions.
*    ls_functions-task           = g_object_task_i.
*    ls_functions-data_key-parvw = 'BA'. " PANERFUNCTION中 OA 对应的输出是 BA
*    ls_functions-data-partner   = i_data-lifnr.
*    ls_functions-datax-partner  = abap_true.
*    APPEND ls_functions TO lt_functions.
*
*    ls_functions-task           = g_object_task_i.
*    ls_functions-data_key-parvw = 'RS'. " PANERFUNCTION中 RS 对应的输出是 PI
*    ls_functions-data-partner   = i_data-lifnr.
*    ls_functions-datax-partner  = abap_true.
*    APPEND ls_functions TO lt_functions.
*
*    ls_functions-task           = g_object_task_i.
*    ls_functions-data_key-parvw = 'LF'. " PANERFUNCTION中 LF 对应的输出是 VN
*    ls_functions-data-partner   = i_data-lifnr.
*    ls_functions-datax-partner  = abap_true.
*    APPEND ls_functions TO lt_functions.
*
*    ls_purchasing-functions-functions = lt_functions.
*    APPEND ls_purchasing TO lt_purchasing.
*    ls_vendor-purchasing_data-purchasing = lt_purchasing.

    ls_data-partner = ls_partner.
    ls_data-vendor  = ls_vendor.
    ls_data-ensure_create-create_vendor = abap_true.
    APPEND ls_data TO lt_data.

*call bapi创建供应商主数据
    cl_md_bp_maintain=>maintain(
      EXPORTING
        i_data   = lt_data
      IMPORTING
        e_return = lt_return ).

DATA:LV_msg TYPE char100.
*    CLEAR i_data-msg.
    LOOP AT lt_return INTO ls_return.

      LOOP AT ls_return-object_msg INTO ls_msg WHERE type = 'E' OR type = 'A'.

*        CONCATENATE i_data-msg ls_msg-message INTO DATA(LV_msg).
        LV_msg =   ls_msg-message.
      ENDLOOP.

    ENDLOOP.

*    IF i_data-msg IS INITIAL.
   IF ls_msg IS INITIAL.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = abap_true.


* 根据伙伴GUID取出供应商编号
      CLEAR: lt_partnerguid_list,lt_vendor_list.
      ls_partnerguid_list = ls_partner-header-object_instance-bpartnerguid.
      APPEND ls_partnerguid_list TO lt_partnerguid_list.
      lt_vendor_list = cvi_mapper=>get_instance( )->get_assigned_vendors_for_bps(
                                                i_partner_guids = lt_partnerguid_list ).
      IF lt_vendor_list IS NOT INITIAL.
        READ TABLE lt_vendor_list INTO ls_vendor_list INDEX 1 .
        IF sy-subrc EQ 0.
          CONCATENATE '供应商' ls_vendor_list-vendor '创建成功!' INTO ls_msg.
*          i_data-lifnr  = ls_vendor_list-vendor.
*          i_data-zis_ok = '0'.

        ENDIF.
      ELSE.
        "可能创建成功了BP,但未创建成功Vendor

        ls_cvis_error = cvi_mapper=>get_instance( )->undo_assignments(
                                                i_for_partners = lt_partnerguid_list ).

        LV_msg    = '供应商创建出错,供应商部分数据出错,请检查是否是BP伙伴功能问题'.
*        i_data-zis_ok = '4'.

      ENDIF.

    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
*      i_data-zis_ok = '4'.
    ENDIF.

WRITE:LV_msg.
*    SHIFT i_data-lifnr  LEFT DELETING LEADING '0'.
*    SHIFT i_data-akont LEFT DELETING LEADING '0'.

*    MODIFY i_data INDEX lv_tabix.

*  ENDLOOP.

*  MODIFY zmm_vendor_log FROM TABLE i_data.
*
*  zfmparavalsave2 'R'.

关键代码解析:

注意点是:

这段代码所对应屏幕字段:

对应屏幕字段,其中银行代码,必须要F4存在的,不然会报错,就是已经存在的银行账号主数据,前台可以随便命名是因为点击会自动创建银行账号主数据。

 

代码如下,想要添加多个公司代码就添加多几行到内表

供应商角色组

关于这个角色组我就被坑了,这个角色组需要在img配置那里去查,哪两个角色,当时不知道,call bapi一直失败

代码如下:

修改供应商主数据代码:


DATA:lv_a             TYPE char3,
*地址信息bapi
     l_bpartner       LIKE  bapibus1006_head-bpartner,
     l_partn_cat      LIKE  bapibus1006_head-partn_cat,
     l_partn_grp      LIKE  bapibus1006_head-partn_grp,
     ls_central       LIKE  bapibus1006_central,
*CENTRALDATAPERSON  LIKE  BAPIBUS1006_CENTRAL_PERSON
     ls_central_organ LIKE  bapibus1006_central_organ,
*CENTRALDATAGROUP LIKE  BAPIBUS1006_CENTRAL_GROUP
     ls_address       LIKE  bapibus1006_address,
     ls_address_x     LIKE  bapibus1006_address_x,
     lt_return1       LIKE TABLE OF  bapiret2,
     lt_return2       LIKE TABLE OF  bapiret2, "银行信息
     lt_return3       LIKE TABLE OF  bapiret2, "银行信息
     lt_return4       LIKE TABLE OF  bapiret2,
     lt_return5       LIKE TABLE OF  bapiret2.

*银行信息
DATA:"l_bpartner       LIKE  bapibus1006_head-bpartner,
*     bankdetailid     LIKE  bapibus1006_head-bankdetailid,
  ls_bapibus1006_bankdetail   LIKE  bapibus1006_bankdetail,
  ls_bapibus1006_bankdetail_x LIKE  bapibus1006_bankdetail_x.

DATA:return_message TYPE char100,
     l_msg1         TYPE char100.

DATA:ls_centraldata_x             LIKE  bapibus1006_central_x,
*centraldataperson_x LIKE  bapibus1006_central_person_x
     ls_centraldataorganization_x LIKE  bapibus1006_central_organ_x.
*centraldatagroup_x  LIKE  bapibus1006_central_group_x.

DATA:
  lt_master_data TYPE vmds_ei_main,
  ls_master_data TYPE LINE OF vmds_ei_extern_t,
  lt_company     TYPE  vmds_ei_company_t,
  ls_company     TYPE vmds_ei_company.

DATA:l1 TYPE  vmds_ei_main,
     l2 TYPE  cvis_message,
     l3 TYPE  vmds_ei_main,
     l4 TYPE  cvis_message.


CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
  EXPORTING
    input            = 'ZH'
  IMPORTING
    output           = ls_address-langu "语言
  EXCEPTIONS
    unknown_language = 1
    OTHERS           = 2.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  EXPORTING
    input  = l_bpartner "srm_supplier_in-partner
  IMPORTING
    output = l_bpartner.

SELECT SINGLE *
FROM but000 INTO @DATA(LV_bpartner)
WHERE partner = @l_bpartner
AND bu_group = 'BP13'.

l_bpartner = 'YD5'.
IF sy-subrc NE 0.
*srm_supplier_return-lifnr = l_bpartner.
*srm_supplier_return-info = '业务合作伙伴' && l_bpartner && '在SAP中不存在,不允许修改.'.
*return-zmess = '业务合作伙伴' && l_bpartner && '在SAP中不存在,不允许修改.'.
*return-zisok = 'N'.
*return-znum = znum.
*return-datum = sy-datum.
*return-uzeit = sy-uzeit.

ENDIF.

l_partn_cat = '2'.
l_partn_grp = 'BP13'.
*ls_central-title_key = '0003'. "称谓
*ls_centraldata_x-title_key = 'X'.
ls_central_organ-name1 = '名称2'. "srm_supplier_in-name_org1. "名称1
ls_centraldataorganization_x-name1 = 'X'.
*IF srm_supplier_in-bu_sort1 IS INITIAL.
*ls_central-searchterm1 = srm_supplier_in-name_org1(20). "检索项
*ELSE.
ls_central-searchterm1 =  '检修改'."srm_supplier_in-bu_sort1. "检索项
*ENDIF.
ls_centraldata_x-searchterm1 = 'X'.
*IF srm_supplier_in-ztype = 'D'.
*ls_central-centralarchivingflag = 'X'. "中心归档标记
*ENDIF.
ls_address-street = '街道修改'."srm_supplier_in-street. "街道
ls_address-city = '城市修改'."srm_supplier_in-city1. "城市
ls_address-country = 'CN'. "国家
*sy-langu = '1'.
CALL FUNCTION 'BAPI_BUPA_CENTRAL_CHANGE'
  EXPORTING
    businesspartner           = l_bpartner
    centraldata               = ls_central
    centraldataorganization   = ls_central_organ
    centraldata_x             = ls_centraldata_x
    centraldataorganization_x = ls_centraldataorganization_x
  TABLES
    return                    = lt_return1.
CLEAR:return_message, l_msg1.                               "20160721新增
LOOP AT lt_return1 INTO DATA(ls_return) WHERE type CA 'AEX'.

  CALL FUNCTION 'MESSAGE_TEXT_BUILD'
    EXPORTING
      msgid               = ls_return-id
      msgnr               = ls_return-number
      msgv1               = ls_return-message_v1
      msgv2               = ls_return-message_v2
      msgv3               = ls_return-message_v3
      msgv4               = ls_return-message_v4
    IMPORTING
      message_text_output = return_message.
  l_msg1 = l_msg1 && '##' && return_message.
  CLEAR return_message.
ENDLOOP.
IF l_msg1 IS INITIAL.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' "commit--信息提交
    EXPORTING
      wait = 'X'. "地址信息提交

  CLEAR ls_bapibus1006_bankdetail.
  ls_bapibus1006_bankdetail-bank_key = '12334DM'."srm_supplier_in-bankl.
  ls_bapibus1006_bankdetail-bank_ctry = 'CN'. "银行国家
*ls_bapibus1006_bankdetail-BANK_REF = ''."银行帐户的参考规定
*ls_bapibus1006_bankdetail-accountholder = srm_supplier_in-koinh. "账户持有人
  ls_bapibus1006_bankdetail-bank_acct =  '12344234ZH'."srm_supplier_in-bank_no. "银行账户

  CLEAR ls_bapibus1006_bankdetail_x.
  ls_bapibus1006_bankdetail_x-bank_key = 'X'.
  ls_bapibus1006_bankdetail_x-bank_ctry = 'X'.
  ls_bapibus1006_bankdetail_x-accountholder = 'X'.
  ls_bapibus1006_bankdetail_x-bank_acct = 'X'.
  CLEAR: lt_return3, lt_return3[].
  CALL FUNCTION 'BAPI_BUPA_BANKDETAIL_CHANGE' "银行信息
    EXPORTING
      businesspartner  = l_bpartner
      bankdetailid     = '0001'
      bankdetaildata   = ls_bapibus1006_bankdetail
      bankdetaildata_x = ls_bapibus1006_bankdetail_x
    TABLES
      return           = lt_return3.

  DATA:l_msg3 TYPE char100.
  CLEAR l_msg3.
  LOOP AT lt_return3 INTO DATA(ls_return3) WHERE type = 'E' OR type = 'A'. " OR TYPE = 'W'.
    CONCATENATE ls_return3-message l_msg3 INTO l_msg3 SEPARATED BY ';'. "银行信息修改不成功
    CONDENSE l_msg3.
  ENDLOOP.
  IF l_msg3 = ''.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'. "银行信息提交(即银行信息修改成功)

    CLEAR: ls_address, ls_address_x.
    ls_address-country = 'CN'.
    ls_address-city = '城市修改'."srm_supplier_in-city1.
    ls_address-street =  '街道修改'."srm_supplier_in-street.
    ls_address-langu = 1.

    ls_address_x-country = 'X'.
    ls_address_x-city = 'X'.
    ls_address_x-street = 'X'.
    ls_address_x-langu = 'X'.
*CLEAR lt_bapiadtel.
*lt_bapiadtel-std_no = 'X'.

* LT_BAPIADTEL-EXTENSION = GS_ITAB-TEL_EXTENS. "电话-分机
*APPEND lt_bapiadtel.

*CLEAR lt_bapiadtel_x.
*lt_bapiadtel_x-std_no = 'X'.
*lt_bapiadtel_x-telephone = 'X'. "电话
*APPEND lt_bapiadtel_x.

    CALL FUNCTION 'BAPI_BUPA_ADDRESS_CHANGE'
      EXPORTING
        businesspartner = l_bpartner
        addressdata     = ls_address
        addressdata_x   = ls_address_x
      TABLES
*bapiadtel = lt_bapiadtel
*bapiadfax = lt_bapiadfax
*bapiadtel_x = lt_bapiadtel_x
*bapiadfax_x = lt_bapiadfax_x
        return          = lt_return2.
    DATA:l_msg4 TYPE char100.
    CLEAR l_msg4.                                           "20160721新增
    LOOP AT lt_return2 INTO DATA(ls_return2) WHERE type = 'E' OR type = 'A'. " OR TYPE = 'W'.
      CONCATENATE ls_return2-message l_msg4 INTO l_msg4 SEPARATED BY ';'.
      CONDENSE l_msg4.
    ENDLOOP.
    IF l_msg4 = ''.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.

      CLEAR: ls_master_data,ls_company,lt_master_data.
      ls_master_data-header-object_task = 'M'.
      ls_master_data-header-object_instance-lifnr = l_bpartner.

*ls_master_data-central_data-central-data-ktokk = 'ST07'. "供应商帐户组
*ls_master_data-central_data-central-data-stenr = srm_supplier_in-taxnum."社会信用号

*ls_master_data-central_data-central-datax-ktokk = 'X'. "供应商帐户组
*ls_master_data-central_data-central-datax-stenr = 'X'."社会信用号
*IF srm_supplier_in-ztype = 'F'.
*ls_master_data-central_data-central-data-sperr = 'X'."中心记账冻结
*ls_master_data-central_data-central-data-sperm = 'X'."采购组织冻结
*ls_master_data-central_data-central-datax-sperr = 'X'."记账冻结
*ls_master_data-central_data-central-datax-sperm = 'X'."采购组织冻结
*ENDIF.

      ls_master_data-central_data-address-postal-data-name = '名称1'."srm_supplier_in-name_org1+0(35). "名称1
*ls_master_data-central_data-address-postal-data-name_2 = srm_supplier_in-name_org1+35(5). "名称2
*IF srm_supplier_in-bu_sort1 IS INITIAL.
*ls_master_data-central_data-address-postal-data-sort1 = srm_supplier_in-name_org1(20). "检索项
*ELSE.
      ls_master_data-central_data-address-postal-data-sort1 = '检索项修改'."srm_supplier_in-bu_sort1. "属性(SAP为搜索项 1)
*ENDIF.

      ls_master_data-central_data-address-postal-data-street = '街道修改'.""srm_supplier_in-street. "街道/门牌号
      ls_master_data-central_data-address-postal-data-city = '城市修改'.""srm_supplier_in-city1. "城市
      ls_master_data-central_data-address-postal-data-country = 'CN'. "国家

      ls_master_data-central_data-address-postal-data-langu = 1.

      ls_master_data-central_data-address-postal-datax-name = 'X'. "名称1
*ls_master_data-central_data-address-postal-datax-name_2 = 'X'. "名称2
      ls_master_data-central_data-address-postal-datax-sort1 = 'X'. "属性(SAP为搜索项 1)
      ls_master_data-central_data-address-postal-datax-street = 'X'. "街道/门牌号
      ls_master_data-central_data-address-postal-datax-city = 'X'. "城市
      ls_master_data-central_data-address-postal-datax-country = 'X'. "国家
      ls_master_data-central_data-address-postal-datax-langu = 'X'. "语言

      ls_company-task = 'M'.
      ls_company-data_key-bukrs = '1000'. "公司代码
      ls_company-data-akont = '2241010000'. "统驭科目
      ls_company-datax-akont = 'X'.
      ls_company-data-zterm = '0001'."srm_supplier_in-zterm. "付款条件
      ls_company-datax-zterm = 'X'.
*ls_company-data-zwels = 'BEFGHIJKLM'. "付款方式
*ls_company-datax-zwels = 'X'.
      APPEND ls_company TO ls_master_data-company_data-company.
      ls_company-data_key-bukrs = '3000'. "公司代码
      APPEND ls_company TO ls_master_data-company_data-company.
      ls_company-data_key-bukrs = '4000'. "公司代码
      APPEND ls_company TO ls_master_data-company_data-company.
      ls_company-data_key-bukrs = '2000'. "公司代码
*APPEND ls_company TO ls_master_data-company_data-company.
*ls_company-data_key-bukrs = '9020'. "公司代码

      APPEND ls_company TO ls_master_data-company_data-company.


      APPEND ls_master_data TO lt_master_data-vendors[].

      vmd_ei_api=>initialize( ).

      CALL METHOD vmd_ei_api=>maintain_bapi
        EXPORTING
          is_master_data           = lt_master_data
        IMPORTING
          es_master_data_correct   = l1
          es_message_correct       = l2
          es_master_data_defective = l3
          es_message_defective     = l4.

      IF l4-is_error = ''.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.

*******采购组织
*        FREE: ls_master_data,lt_master_data."ls_purchasing,
*        CLEAR: ls_master_data,lt_master_data,lt_master_data-vendors[]."ls_purchasing,
*        CALL FUNCTION 'BAPI_BUPA_ROLE_ADD_2'
*          EXPORTING
*            businesspartner             = l_bpartner
*            businesspartnerrolecategory = 'FLVN01'
*            businesspartnerrole         = 'FLVN01'
*          TABLES
*            return                      = lt_return5.
*        DATA:l_msg5 TYPE char100.
*        LOOP AT lt_return5 INTO DATA(LS_return5) WHERE type = 'E' OR type = 'A'.
*          CONCATENATE LS_return5-message l_msg5 INTO l_msg4 SEPARATED BY ';'.
*          CONDENSE l_msg5.
*        ENDLOOP.
*        IF l_msg5 = ''.
*          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' "角色信息提交(即角色创建成功)
*            EXPORTING
*              wait = 'X'.
*ls_master_data-header-object_task = 'M'.
*ls_master_data-header-object_instance-lifnr = l_bpartner.
*ls_master_data-central_data-central-data-ktokk = 'ST07'. "供应商帐户组
*ls_master_data-central_data-central-datax-ktokk = 'X'. "供应商帐户组
*"采购数据
*ls_master_data-purchasing_data-current_state = 'X'. "采购完成数据的标识
*ls_purchasing-functions-current_state = 'X'."合作伙伴完成数据的标识
*ls_purchasing-task = 'M'.
*ls_purchasing-data_key-ekorg = '6010'.
*ls_purchasing-data-waers = 'CNY'.
*ls_purchasing-datax-waers = 'X'.
*ls_purchasing-data-zterm = srm_supplier_in-zterm.
*ls_purchasing-datax-zterm = 'X'.
*ls_purchasing-data-verkf = srm_supplier_in-verkf.
*ls_purchasing-datax-verkf = 'X'.
*ls_purchasing-data-telf1 = srm_supplier_in-telf1.
*ls_purchasing-datax-telf1 = 'X'.

*ls_functions-task = 'M'.
*ls_functions-data_key-parvw = 'BA'.
*APPEND ls_functions TO ls_purchasing-functions-functions.
*
*ls_functions-data_key-parvw = 'LF'.
*APPEND ls_functions TO ls_purchasing-functions-functions.
*
*ls_functions-data_key-parvw = 'RS'.
*APPEND ls_functions TO ls_purchasing-functions-functions.
*
*APPEND ls_purchasing TO ls_master_data-purchasing_data-purchasing.
*
*ls_purchasing-data_key-ekorg = '9010'.

*APPEND ls_purchasing TO ls_master_data-purchasing_data-purchasing.

*APPEND ls_master_data TO lt_master_data-vendors[].

*vmd_ei_api=>initialize( ).
*
*CALL METHOD vmd_ei_api=>maintain_bapi
*EXPORTING
*iv_collect_messages = 'X'
*is_master_data = lt_master_data
*IMPORTING
*es_master_data_correct = l1
*es_message_correct = l2
*es_master_data_defective = l3
*es_message_defective = l5.

*IF l5-is_error = ''.
*CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
*EXPORTING
*wait = 'X'.
*srm_supplier_return-lifnr = l_bpartner.
*srm_supplier_return-info = '供应商主数据修改成功'.
*return-zmess = '供应商主数据修改成功'.
*return-zisok = 'Y'.
*ELSE.
*CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
*
*LOOP AT l5-messages INTO ls_l5 WHERE type = 'E' OR type = 'A'.
*CONCATENATE l_msgl5 ls_l5-message INTO l_msgl5 SEPARATED BY ';'.
*CONDENSE l_msgl5.
*ENDLOOP.
*srm_supplier_return-lifnr = l_bpartner.
*srm_supplier_return-info = l_msgl5 .
*return-zmess = '业务伙伴修改成功,修改采购视图失败'.
*return-zisok = 'N'.
*ENDIF.

*        ELSE.
**          srm_supplier_return-lifnr = l_bpartner.
**          srm_supplier_return-info = l_msgl5 .
**          return-zmess = '业务伙伴修改成功,修改采购视图基础失败'.
**          return-zisok = 'N'.
*
*        ENDIF.

      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

        DATA: ls_l4   LIKE LINE OF l4-messages,
              l_msgl4 TYPE char100.
        LOOP AT l4-messages INTO ls_l4 WHERE type = 'E' OR type = 'A'.
          CONCATENATE l_msgl4 ls_l4-message INTO l_msgl4 SEPARATED BY ';'.
          CONDENSE l_msgl4.
        ENDLOOP.
*srm_supplier_return-lifnr = l_bpartner.
*srm_supplier_return-info = l_msgl4 .
*return-zmess = '供应商主数据修改成功,修改财务视图失败'.
*return-zisok = 'N'.

      ENDIF.

    ELSE.
      ROLLBACK WORK.
*srm_supplier_return-lifnr = l_bpartner.
*srm_supplier_return-info = l_msg4.
*return-zmess = '供应商主数据修改成功,修改财务视图基础失败'.
*return-zisok = 'N'.
    ENDIF.

  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
*srm_supplier_return-lifnr = l_bpartner.
*srm_supplier_return-info = l_msg3 .
*return-zmess = '修改业务合作伙伴成功,修改银行信息失败'.
*return-zisok = 'N'.
  ENDIF.

ELSE.
  ROLLBACK WORK.
  CLEAR:return_message.
*srm_supplier_return-lifnr = l_bpartner.
*srm_supplier_return-info = l_msg1.
*return-zmess = '业务伙伴修改失败'.
*return-zisok = 'N'.
ENDIF.
*return-znum = znum.
*return-datum = sy-datum.
*return-uzeit = sy-uzeit.

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值