供应商主数据创建参考接口

FUNCTION zzmm_vendor_create.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  TABLES
*"      I_DATA STRUCTURE  ZMM_VENDOR_LOG
*"----------------------------------------------------------------------
  CONSTANTS:
    g_object_task_i TYPE bus_ei_object_task VALUE 'I'.

  DATAlv_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..

  DATAl_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.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  i_data-lifnr
      IMPORTING
        output i_data-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     i_data-lifnr.
    ls_partner-header-object_instance-bpartnerguid lv_partner_guid.
****业务合作伙伴数据的中心数据***********************************
    ls_partner-central_data-common-data-bp_control-category         2.                 "业务伙伴类别
    ls_partner-central_data-common-data-bp_control-grouping         i_data-ktokk.      "业务伙伴分组
    ls_partner-central_data-common-data-bp_centraldata-title_key    i_data-title_medi"称谓
    ls_partner-central_data-common-data-bp_centraldata-searchterm1  i_data-sortl.      "检索项
    ls_partner-central_data-common-data-bp_organization-name1       i_data-vender.     "供应商名称
    ls_partner-central_data-common-data-bp_organization-name2       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 'ZLVN00'.     "采购角色
    APPEND ls_roles TO lt_roles.
    ls_roles-task     'I'.
    ls_roles-data_key 'ZLVN01'.     "公司角色
    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  i_data-land1.            "国家
    ls_addresses-data-postal-data-langu    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        i_data-banks.
      ls_bankdetails-data-bank_key         i_data-bankl.
      ls_bankdetails-data-bank_acct        i_data-bankn.
      ls_bankdetails-data-accountholder    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 i_data-lifnr.
    ls_vendor-header-object_task           g_object_task_i.
****公司代码数据************************************************
    CLEAR:lt_company.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'   " 统驭科目补零
      EXPORTING
        input  i_data-akont
      IMPORTING
        output i_data-akont.

    ls_company-task           g_object_task_i.
    ls_company-data_key-bukrs i_data-bukrs.         "公司代码
    ls_company-data-akont     i_data-akont.         "统驭科目
    ls_company-data-zuawa     i_data-zuawa.         "排序码
    ls_company-data-zterm     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.

    cl_md_bp_maintain=>maintain(
      EXPORTING
        i_data   lt_data
      IMPORTING
        e_return lt_return ).

    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 i_data-msg.

      ENDLOOP.

    ENDLOOP.

    IF i_data-msg IS INITIAL.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait abap_true.


* 根据伙伴GUID取出供应商编号
      CLEARlt_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 .
        IF sy-subrc EQ 0.
          CONCATENATE '供应商' ls_vendor_list-vendor '创建成功!' INTO i_data-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 ).

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

      ENDIF.

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

    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'.
ENDFUNCTION.
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: MDM数据管理系统是一种用于集中管理和维护企业核心数据的系统。它能够对企业中的数据(如客户、供应商、产品等)进行标准化、集成和协调管理,从而确保各个业务系统之间的数据一致性和可靠性。 MDM数据管理系统的需求规格说明书应包含以下内容: 1.系统概述:对MDM数据管理系统的总体概述,包括系统目标、功能范围、用户角色和参与者等内容进行介绍。 2.功能需求:对MDM数据管理系统的各种功能进行细化描述,如数据采集、数据清洗、数据标准化、数据同步等功能。 3.性能需求:对MDM数据管理系统的性能要求进行说明,包括系统的响应时间、数据处理能力、并发性能等方面。 4.安全需求:对MDM数据管理系统的安全性要求进行描述,包括数据的保密性、完整性和可用性保障等方面。 5.可用性和可靠性需求:对MDM数据管理系统的可用性和可靠性要求进行说明,包括系统的故障恢复能力、备份和恢复策略等方面。 6.界面需求:对MDM数据管理系统的用户界面要求进行说明,包括用户友好性、界面风格、操作流程等方面。 7.数据需求:对MDM数据管理系统的数据需求进行描述,包括数据的结构、属性、关系、数据质量要求等方面。 8.集成需求:对MDM数据管理系统与其他业务系统的集成要求进行说明,包括系统之间的数据交互方式、接口规范等方面。 9.维护需求:对MDM数据管理系统的维护要求进行描述,包括系统的维护频率、升级策略、系统备份等方面。 10.测试需求:对MDM数据管理系统的测试要求进行说明,包括测试方法、测试环境、测试数据等方面。 综上所述,MDM数据管理系统的需求规格说明书应全面而详细地描述系统的各项需求,以确保系统能够满足企业对数据管理的要求,并提供高效的数据管理、标准化和集成能力。同时,需求规格说明书还为后续的系统开发、实施和维护工作提供了指导。 ### 回答2: MDM数据管理系统需求规格说明书是一份详述系统功能和性能要求的文档。该文档旨在明确系统的需求和目标,为开发人员提供清晰的指导,最终保证系统的质量和功能。 首先,在需求规格说明书中,需要明确系统的基本功能,包括数据收集、存储、整合和清洗等。同时,还要详细描述系统所支持的数据对象,如产品、客户、供应商等,并明确其属性和关系。 其次,需要规定系统的数据管理流程和权限控制。这包括数据创建、修改、删除和查询等操作权限的设定,以确保数据的准确性和安全性。此外,还应定义数据质量管理机制,包括数据验证、数据补全和数据标准化等,以提高数据质量。 第三,需求规格说明书中应规定系统的性能要求和可扩展性。这包括处理数据量的能力、响应时间和系统的可靠性等方面。通过明确性能要求,可以确保系统满足用户的需求,并具备良好的用户体验。 最后,需求规格说明书还应指定系统的界面和报表设计要求。界面设计要符合用户习惯,布局合理、易用性高。报表设计要满足用户的需求,能够直观地反映数据情况,并支持自定义报表的生成。 需要强调的是,需求规格说明书是系统开发的基础,它需要与用户、开发人员和测试人员等各方进行充分的沟通和协调。只有明确了系统的需求和目标,才能保证系统在开发和测试过程中的有效性和可靠性。 ### 回答3: MDM数据管理系统需求规格说明书是一份详尽描述MDM数据管理系统所需功能和性能的文件。它要用于指导系统开发和项目实施过程中的需求分析、设计和验证。 在编写MDM数据管理系统需求规格说明书时,首先需要明确系统的目标和范围,明确系统所要管理的数据类型以及相关业务流程。然后,对于每个数据类型,需进一步考虑以下方面的需求: 1. 数据采集与整合:系统应能够收集、整合和清洗来自各个业务系统的数据,确保数据的准确性、完整性和一致性。 2. 数据存储与索引:系统应提供稳定可靠的数据存储机制,能够高效地存储和索引数据。这包括选择合适的数据库技术和优化数据结构。 3. 数据质量管理:系统应具备数据质量管理功能,能够自动发现和纠正数据错误、重复和冲突,并提供相应的数据质量仪表盘和报告。 4. 数据访问与权限控制:系统应提供安全可靠的数据访问和权限控制机制,确保只有授权人员能够访问和操作相关数据。 5. 数据同步与发布:系统应支持数据的同步和发布功能,能够将更新的数据分发给相关业务系统,并确保数据的一致性和及时性。 6. 数据管理工作流:系统应提供灵活的数据管理工作流,能够根据业务需求自定义流程,实现数据的审核、审批和发布。 7. 报表和分析功能:系统应提供丰富的报表和分析功能,能够帮助用户了解数据的情况和趋势,并支持快速决策。 8. 数据备份与恢复:系统应具备完备的数据备份与恢复机制,确保数据的安全和可靠。 除了以上要需求外,还需要考虑系统的性能、可扩展性、稳定性、易用性和可维护性等方面的需求。 总结而言,MDM数据管理系统需求规格说明书应该清晰准确地描述了系统的功能需求、性能要求和非功能性需求,以及相关的业务规则和限制。它是系统开发和实施过程中的重要参考依据,可确保开发团队和用户之间的沟通一致性,促进项目顺利推进。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值