前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ABAP HANA BP主数据批导

ABAP HANA BP主数据批导

作者头像
matinal
发布2023-10-13 17:14:37
3180
发布2023-10-13 17:14:37
举报
文章被收录于专栏:SAP TechnicalSAP Technical

SAP hana官方推荐的创建bp主数据的类是CL_MD_BP_MAINTAIN

客户的创建具体示例代码如下:

代码语言:javascript
复制
  DATA: LT_RETURN_MAP       TYPE MDG_BS_BP_MSGMAP_T.
  DATA: LS_RETURN_MAP       TYPE MDG_BS_BP_MSGMAP.
  DATA: LS_MESSAGE_MAP      TYPE MDG_BS_BP_MSGMAP_KEY.
  DATA: LT_DATA   TYPE CVIS_EI_EXTERN_T,
        LT_RETURN TYPE BAPIRETM,
        LS_RETURN TYPE BAPIRETI,
        LS_RETMSG TYPE LINE OF BAPIRETCT,
        LV_TEXT   TYPE STRING.
  DATA: LS_DATA    LIKE LINE OF LT_DATA,
        LS_ROLE    TYPE BUS_EI_BUPA_ROLES,
        LS_PAADR   TYPE BUS_EI_BUPA_ADDRESS,
        LS_COMPANY TYPE CMDS_EI_COMPANY.
  DATA: LV_GUID    TYPE GUID_32,
        LV_PARTNER LIKE LS_DATA-PARTNER-HEADER-OBJECT_INSTANCE-BPARTNER.
  DATA: LS_FUNCTIONS_ST  TYPE CMDS_EI_FUNCTIONS,
        LS_FUNCTIONS_T   TYPE CMDS_EI_FUNCTIONS_T,
        LS_FUNCTIONS     TYPE CMDS_EI_CMD_FUNCTIONS,
        LS_SALES_DATA_ST TYPE CMDS_EI_SALES,
        LS_SALES_DATA    TYPE CMDS_EI_CMD_SALES.
  DATA: LS_PHONE          TYPE BUS_EI_BUPA_TELEPHONE.
  DATA: LT_PHONE          TYPE BUS_EI_BUPA_TELEPHONE_T.
  DATA: LS_FAX            TYPE BUS_EI_BUPA_FAX.
  DATA: LT_FAX            TYPE BUS_EI_BUPA_FAX_T.
  DATA: LS_MAIL           TYPE BUS_EI_BUPA_SMTP.
  DATA: LT_MAIL           TYPE BUS_EI_BUPA_SMTP_T.
  DATA: LS_TAX            TYPE CMDS_EI_TAX_IND.
  DATA: LT_TAX            TYPE CMDS_EI_TAX_IND_T.
  DATA: LS_SEGMENTS       TYPE UKM_EI_BP_CMS_SGM.
  DATA: LS_PROFILE        TYPE UKM_EI_BP_CMS.



  LOOP AT  GT_CUSTOMER INTO GS_CUSTOMER WHERE KUNNR IS INITIAL .
    CLEAR: LT_RETURN_MAP,
           LS_RETURN_MAP,
           LS_MESSAGE_MAP,
           LT_DATA,
           LT_RETURN,
           LS_RETURN,
           LS_RETMSG,
           LV_TEXT,
           LS_DATA,
           LS_ROLE,
           LS_PAADR,
           LS_COMPANY,
           LV_GUID,
           LV_PARTNER,
           LS_FUNCTIONS_ST,
           LS_FUNCTIONS_T,
           LS_FUNCTIONS,
           LS_SALES_DATA_ST,
           LS_SALES_DATA,
           LS_PHONE,
           LT_PHONE,
           LS_FAX,
           LT_FAX,
           LS_MAIL,
           LT_MAIL,
           LS_TAX,
           LT_TAX,
           LS_SEGMENTS,
           LS_PROFILE.

    CALL METHOD CL_SYSTEM_UUID=>IF_SYSTEM_UUID_STATIC~CREATE_UUID_C32
      RECEIVING
        UUID = LV_GUID.

* Create customer
    LS_DATA-PARTNER-HEADER-OBJECT_TASK = 'I'.
    LS_DATA-PARTNER-HEADER-OBJECT_INSTANCE-BPARTNER = LV_PARTNER.
    LS_DATA-PARTNER-HEADER-OBJECT_INSTANCE-BPARTNERGUID = LV_GUID.

*--- Partner / Central data / common ------------------------------*
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-CATEGORY = '2'. "3group "2 Organization
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-GROUPING = GS_CUSTOMER-BU_GROUP. "Grouping

    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-TITLE_KEY   = GS_CUSTOMER-AD_TITLE.        "tittle
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-SEARCHTERM1 = GS_CUSTOMER-SORT1+0(20). "Search term 1 for business partner
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-SEARCHTERM2 = GS_CUSTOMER-SORT1+20(20). "Search term 2 for business partner

    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-TITLE_KEY = ABAP_TRUE.
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-SEARCHTERM1 = ABAP_TRUE.
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-SEARCHTERM2 = ABAP_TRUE.


    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME1 = GS_CUSTOMER-NAME1+0(35).
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME2 = GS_CUSTOMER-NAME1+35(35).
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME1 = ABAP_TRUE.
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME2 = ABAP_TRUE.



*--- Partner / Central data / Address -----------------------------*
    LS_PAADR-TASK = 'I'.
    LS_PAADR-DATA_KEY-OPERATION           = 'XXDFLT'.
    LS_PAADR-DATA-POSTAL-DATA-STR_SUPPL3  = GS_CUSTOMER-UNIT.
    LS_PAADR-DATA-POSTAL-DATA-CITY        = GS_CUSTOMER-CITY1.
    LS_PAADR-DATA-POSTAL-DATA-HOUSE_NO    = GS_CUSTOMER-HOUSE_NUM1.
    LS_PAADR-DATA-POSTAL-DATA-POSTL_COD1  = GS_CUSTOMER-POST_CODE1.
    LS_PAADR-DATA-POSTAL-DATA-STREET      = GS_CUSTOMER-STREET.
    LS_PAADR-DATA-POSTAL-DATA-COUNTRY     = GS_CUSTOMER-LAND1.
    LS_PAADR-DATA-POSTAL-DATA-REGION      = GS_CUSTOMER-REGIO.
    LS_PAADR-DATA-POSTAL-DATA-TIME_ZONE   = GS_CUSTOMER-TIME_ZONE.
    LS_PAADR-DATA-POSTAL-DATA-LANGU       = GS_CUSTOMER-LANGU.

    LS_PAADR-DATA-POSTAL-DATAX-STR_SUPPL3 = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-CITY       = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-HOUSE_NO   = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-POSTL_COD1 = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-STREET     = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-COUNTRY    = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-REGION     = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-TIME_ZONE  = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-LANGU      = ABAP_TRUE.

    LS_PAADR-CURRENTLY_VALID = ABAP_TRUE.

    " Communication
    IF GS_CUSTOMER-TEL_NUMBER IS NOT INITIAL .
*第一个电话
      LS_PHONE-CONTACT-TASK = 'I'.
      LS_PHONE-CONTACT-DATA-COUNTRY = GS_CUSTOMER-LAND1.
      LS_PHONE-CONTACT-DATA-TELEPHONE = GS_CUSTOMER-TEL_NUMBER.
      LS_PHONE-CONTACT-DATAX-COUNTRY = 'X'.
      LS_PHONE-CONTACT-DATAX-TELEPHONE = 'X'.
      APPEND LS_PHONE TO LT_PHONE.
      LS_PAADR-DATA-COMMUNICATION-PHONE-PHONE = LT_PHONE.
    ENDIF.

    IF GS_CUSTOMER-FAX_NUMBER IS NOT INITIAL .
*传真
      LS_FAX-CONTACT-TASK = 'I'.
      LS_FAX-CONTACT-DATA-COUNTRY = GS_CUSTOMER-LAND1.
      LS_FAX-CONTACT-DATA-FAX = GS_CUSTOMER-FAX_NUMBER.
      LS_FAX-CONTACT-DATAX-COUNTRY = 'X'.
      LS_FAX-CONTACT-DATAX-FAX = 'X'.
      APPEND LS_FAX TO LT_FAX.
      LS_PAADR-DATA-COMMUNICATION-FAX-FAX = LT_FAX.
    ENDIF.

    IF GS_CUSTOMER-SMTP_ADDR IS NOT INITIAL .
**电子邮件
      LS_MAIL-CONTACT-TASK = 'I'.
      LS_MAIL-CONTACT-DATA-E_MAIL = GS_CUSTOMER-SMTP_ADDR.
      LS_MAIL-CONTACT-DATAX-E_MAIL = 'X'.
      APPEND LS_MAIL TO LT_MAIL.
      LS_PAADR-DATA-COMMUNICATION-SMTP-SMTP = LT_MAIL.
    ENDIF.

    APPEND LS_PAADR TO LS_DATA-PARTNER-CENTRAL_DATA-ADDRESS-ADDRESSES.



*----------------- PARTNER / CENTRAL DATA / ROLE -----------------*
*-------------- Adding multiple roles for the BP------------------*
*-------------- Partner / Central data / role --------------------*
    LS_ROLE-TASK = 'I'.
    LS_ROLE-DATA_KEY = 'GZ0001'.
    LS_ROLE-DATA-ROLECATEGORY = 'FLCU01'.
    LS_ROLE-DATA-VALID_FROM = SY-DATUM.
    LS_ROLE-DATA-VALID_TO = '99991231'.
    LS_ROLE-CURRENTLY_VALID = ABAP_TRUE.

    LS_ROLE-DATAX-VALID_FROM = ABAP_TRUE.
    LS_ROLE-DATAX-VALID_TO = ABAP_TRUE.

    APPEND LS_ROLE TO LS_DATA-PARTNER-CENTRAL_DATA-ROLE-ROLES.
    LS_DATA-PARTNER-CENTRAL_DATA-ROLE-CURRENT_STATE = ABAP_TRUE.

*------------- Partner / Central data / role ---------------------*
    LS_ROLE-TASK = 'I'.
    LS_ROLE-DATA_KEY = 'GZ0002'.
    LS_ROLE-DATA-ROLECATEGORY = 'FLCU00'.
    LS_ROLE-DATA-VALID_FROM = SY-DATUM.
    LS_ROLE-DATA-VALID_TO = '99991231'.
    LS_ROLE-CURRENTLY_VALID = ABAP_TRUE.

    LS_ROLE-DATAX-VALID_FROM = ABAP_TRUE.
    LS_ROLE-DATAX-VALID_TO   = ABAP_TRUE.

    APPEND LS_ROLE TO LS_DATA-PARTNER-CENTRAL_DATA-ROLE-ROLES.
    LS_DATA-PARTNER-CENTRAL_DATA-ROLE-CURRENT_STATE = ABAP_TRUE.


*Credit limit
*----------------- Partner / UKMBP_DATA -----------------*
          LS_ROLE-TASK = 'I'.
          LS_ROLE-DATA_KEY = 'UKM000'.
          LS_ROLE-DATA-ROLECATEGORY = 'UKM000'.
          LS_ROLE-DATA-VALID_FROM = SY-DATUM.
          LS_ROLE-DATA-VALID_TO = '99991231'.

          LS_ROLE-DATAX-VALID_FROM = ABAP_TRUE.
          LS_ROLE-DATAX-VALID_TO   = ABAP_TRUE.

          APPEND LS_ROLE TO LS_DATA-PARTNER-CENTRAL_DATA-ROLE-ROLES.


          LS_PROFILE-DATA-LIMIT_RULE = 'B2B-NEW'.
          LS_PROFILE-DATAX-LIMIT_RULE = ABAP_TRUE.

          LS_DATA-PARTNER-UKMBP_DATA-PROFILE = LS_PROFILE.

          LS_SEGMENTS-TASK = 'I'.
          LS_SEGMENTS-DATA_KEY-PARTNER      = LV_PARTNER.
          LS_SEGMENTS-DATA_KEY-CREDIT_SGMNT = GS_CUSTOMER-UKM_CREDIT_SGMNT.

          LS_SEGMENTS-DATA-CREDIT_LIMIT     = GS_CUSTOMER-LIMIT.
          LS_SEGMENTS-DATA-LIMIT_VALID_DATE = GS_CUSTOMER-DATET.
          LS_SEGMENTS-DATA-LIM_VAL_DATE_REQ = GS_CUSTOMER-DATET.
          LS_SEGMENTS-DATA-X_LIMIT_ZERO     = ABAP_TRUE.

          LS_SEGMENTS-DATAX-CREDIT_LIMIT      = ABAP_TRUE.
          LS_SEGMENTS-DATAX-LIMIT_VALID_DATE  = ABAP_TRUE.
          LS_SEGMENTS-DATAX-LIM_VAL_DATE_REQ  = ABAP_TRUE.
          LS_SEGMENTS-DATAX-X_LIMIT_ZERO      = ABAP_TRUE.
          APPEND LS_SEGMENTS TO LS_DATA-PARTNER-UKMBP_DATA-SEGMENTS-SEGMENTS.

*-------------- Customer / Header ---------------------------------*
    LS_DATA-CUSTOMER-HEADER-OBJECT_TASK = 'I'.
    LS_DATA-CUSTOMER-HEADER-OBJECT_INSTANCE = LV_PARTNER.
    LS_DATA-ENSURE_CREATE-CREATE_CUSTOMER = ABAP_TRUE.


*--------------- Customer / Company data -------------------------*
    LS_COMPANY-TASK = 'I'.
    LS_COMPANY-DATA_KEY-BUKRS   = P_BUKRS. " company code
    LS_COMPANY-DATA-ZTERM = GS_CUSTOMER-ZTERM. " terms of payment
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT  = GS_CUSTOMER-AKONT
      IMPORTING
        OUTPUT = LS_COMPANY-DATA-AKONT.

    LS_COMPANY-DATAX-ZTERM = 'X'.
    LS_COMPANY-DATAX-AKONT     = 'X'.

    APPEND LS_COMPANY TO LS_DATA-CUSTOMER-COMPANY_DATA-COMPANY.

    "TAX
    IF GS_CUSTOMER-TAXKD IS NOT INITIAL .
      LS_TAX-TASK = 'I'.
      LS_TAX-DATA_KEY-ALAND = 'CA'.
      LS_TAX-DATA_KEY-TATYP = 'CTX1' .
      LS_TAX-DATA-TAXKD = GS_CUSTOMER-TAXKD.
      LS_TAX-DATAX-TAXKD = 'X'.
      APPEND LS_TAX TO LT_TAX.
    ENDIF.


    IF GS_CUSTOMER-TAXKD1 IS NOT INITIAL .
      LS_TAX-TASK = 'I'.
      LS_TAX-DATA_KEY-ALAND = 'CA'.
      LS_TAX-DATA_KEY-TATYP = 'CTX2'.
      LS_TAX-DATA-TAXKD = '1'.
      LS_TAX-DATAX-TAXKD = GS_CUSTOMER-TAXKD1.
      APPEND LS_TAX TO LT_TAX.
    ENDIF.

    IF GS_CUSTOMER-TAXKD2 IS NOT INITIAL .
      LS_TAX-TASK = 'I'.
      LS_TAX-DATA_KEY-ALAND = 'CA'.
      LS_TAX-DATA_KEY-TATYP = 'CTX3'.
      LS_TAX-DATA-TAXKD = '1'.
      LS_TAX-DATAX-TAXKD = GS_CUSTOMER-TAXKD2.
      APPEND LS_TAX TO LT_TAX.
    ENDIF.

    LS_DATA-CUSTOMER-CENTRAL_DATA-TAX_IND-TAX_IND = LT_TAX.
**---------------SALES ORG AND DIST & DIVISION MANDATORY FIELDS-----*

    LS_SALES_DATA_ST-TASK = 'I'.
    LS_SALES_DATA_ST-DATA_KEY-VKORG = GS_CUSTOMER-VKORG.
    LS_SALES_DATA_ST-DATA_KEY-VTWEG = GS_CUSTOMER-VTWEG.
    LS_SALES_DATA_ST-DATA_KEY-SPART = GS_CUSTOMER-SPART.

    LS_SALES_DATA_ST-DATA-KALKS   = GS_CUSTOMER-KALKS.
    LS_SALES_DATA_ST-DATA-INCO1   = GS_CUSTOMER-INCO1.
    LS_SALES_DATA_ST-DATA-INCOV   = GS_CUSTOMER-INCOV.
    LS_SALES_DATA_ST-DATA-INCO2_L = GS_CUSTOMER-INCO2_L.
    LS_SALES_DATA_ST-DATA-VKBUR   = GS_CUSTOMER-VKBUR.
    LS_SALES_DATA_ST-DATA-WAERS   = GS_CUSTOMER-WAERS.
    LS_SALES_DATA_ST-DATA-ZTERM   = GS_CUSTOMER-ZTERM.
    LS_SALES_DATA_ST-DATA-LPRIO   = GS_CUSTOMER-LPRIO.
    LS_SALES_DATA_ST-DATA-KZAZU   = ABAP_TRUE.
    LS_SALES_DATA_ST-DATA-AWAHR   = '100'.



    LS_SALES_DATA_ST-DATAX-KALKS   = ABAP_TRUE.
    LS_SALES_DATA_ST-DATAX-INCO1   = ABAP_TRUE.
    LS_SALES_DATA_ST-DATAX-INCOV   = ABAP_TRUE.
    LS_SALES_DATA_ST-DATAX-INCO2_L = ABAP_TRUE.
    LS_SALES_DATA_ST-DATAX-VKBUR   = ABAP_TRUE.
    LS_SALES_DATA_ST-DATAX-WAERS   = ABAP_TRUE.
    LS_SALES_DATA_ST-DATAX-ZTERM   = ABAP_TRUE.
    LS_SALES_DATA_ST-DATAX-LPRIO   = ABAP_TRUE.
    LS_SALES_DATA_ST-DATAX-KZAZU   = ABAP_TRUE.
    LS_SALES_DATA_ST-DATAX-AWAHR   = ABAP_TRUE.

**------------------- Business Partner Details -------------------*

    LS_FUNCTIONS_ST-DATA_KEY-PARVW = 'AG'.
    LS_FUNCTIONS_ST-DATA-DEFPA = 'X'.
    APPEND LS_FUNCTIONS_ST TO LS_FUNCTIONS_T.

    LS_FUNCTIONS_ST-DATA_KEY-PARVW = 'RE'.
    LS_FUNCTIONS_ST-DATA-DEFPA = 'X'.
    APPEND LS_FUNCTIONS_ST TO LS_FUNCTIONS_T.

    LS_FUNCTIONS_ST-DATA_KEY-PARVW = 'RG'.
    LS_FUNCTIONS_ST-DATA-DEFPA = 'X'.
    APPEND LS_FUNCTIONS_ST TO LS_FUNCTIONS_T.

    LS_FUNCTIONS_ST-DATA_KEY-PARVW = 'WE'.
    LS_FUNCTIONS_ST-DATA-DEFPA = 'X'.
    APPEND LS_FUNCTIONS_ST TO LS_FUNCTIONS_T.

    LS_FUNCTIONS-FUNCTIONS = LS_FUNCTIONS_T.
    LS_SALES_DATA_ST-FUNCTIONS = LS_FUNCTIONS.
    LS_SALES_DATA_ST-FUNCTIONS-CURRENT_STATE = 'X'.

    APPEND LS_SALES_DATA_ST TO LS_SALES_DATA-SALES.

    APPEND LS_FUNCTIONS_ST TO LS_FUNCTIONS-FUNCTIONS.
    LS_DATA-CUSTOMER-SALES_DATA = LS_SALES_DATA.



**--------------End of sales data---------------------------*

**-----------Finally fill the main data structure-----------*

    APPEND LS_DATA TO LT_DATA.

**----------------validating BP data------------------------*

    CALL METHOD CL_MD_BP_MAINTAIN=>VALIDATE_SINGLE
      EXPORTING
        I_DATA        = LS_DATA "lt_data
*       i_data_db     =
*       iv_suppress_taxjur_check = 'X'
      IMPORTING
        ET_RETURN_MAP = LT_RETURN_MAP. "lt_return.

**------------------Creating BP ----------------------------*
    IF LT_RETURN_MAP IS INITIAL.

      CALL METHOD CL_MD_BP_MAINTAIN=>MAINTAIN
        EXPORTING
          I_DATA   = LT_DATA
*         i_test_run =
        IMPORTING
          E_RETURN = LT_RETURN.
**------------------Commit BAPI ----------------------------*
      IF LT_RETURN IS INITIAL.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

        WHILE LV_PARTNER IS INITIAL .
          SELECT SINGLE PARTNER
            INTO LV_PARTNER FROM BUT000
            WHERE PARTNER_GUID = LV_GUID.
        ENDWHILE.


        IF LV_PARTNER IS NOT INITIAL .
          GS_CUSTOMER-MESSAGE = 'SUCCESSFULLY CREATED BP'.
          GS_CUSTOMER-KUNNR = LV_PARTNER.
          GS_CUSTOMER-ICONS = ICON_GREEN_LIGHT.
        ELSE.
          GS_CUSTOMER-KUNNR = LV_PARTNER.
          GS_CUSTOMER-ICONS = ICON_RED_LIGHT.
        ENDIF.


      ELSE.
        LOOP AT LT_RETURN INTO LS_RETURN.
          LOOP AT LS_RETURN-OBJECT_MSG INTO LS_RETMSG.
            CLEAR: LV_TEXT.
            CALL FUNCTION 'MESSAGE_TEXT_BUILD'
              EXPORTING
                MSGID               = LS_RETMSG-ID
                MSGNR               = LS_RETMSG-NUMBER
                MSGV1               = LS_RETMSG-MESSAGE_V1
                MSGV2               = LS_RETMSG-MESSAGE_V2
                MSGV3               = LS_RETMSG-MESSAGE_V3
                MSGV4               = LS_RETMSG-MESSAGE_V4
              IMPORTING
                MESSAGE_TEXT_OUTPUT = LV_TEXT.
            CONCATENATE GS_CUSTOMER-MESSAGE LV_TEXT INTO GS_CUSTOMER-MESSAGE.
          ENDLOOP.
        ENDLOOP.
        GS_CUSTOMER-ICONS = ICON_RED_LIGHT.

      ENDIF.

    ELSE.

      LOOP AT LT_RETURN_MAP INTO LS_RETURN_MAP.
        CLEAR: LV_TEXT.
        CALL FUNCTION 'MESSAGE_TEXT_BUILD'
          EXPORTING
            MSGID               = LS_RETURN_MAP-ID
            MSGNR               = LS_RETURN_MAP-NUMBER
            MSGV1               = LS_RETURN_MAP-MESSAGE_V1
            MSGV2               = LS_RETURN_MAP-MESSAGE_V2
            MSGV3               = LS_RETURN_MAP-MESSAGE_V3
            MSGV4               = LS_RETURN_MAP-MESSAGE_V4
          IMPORTING
            MESSAGE_TEXT_OUTPUT = LV_TEXT.
        CONCATENATE GS_CUSTOMER-MESSAGE LV_TEXT INTO GS_CUSTOMER-MESSAGE.
      ENDLOOP.
      GS_CUSTOMER-ICONS = ICON_RED_LIGHT.
    ENDIF.

    MODIFY GT_CUSTOMER FROM GS_CUSTOMER.
  ENDLOOP.

供应商BP创建实例代码如下

代码语言:javascript
复制
DATA : LT_RETURN_MAP      TYPE MDG_BS_BP_MSGMAP_T.
  DATA : LS_RETURN_MAP      TYPE MDG_BS_BP_MSGMAP.
  DATA : LS_MESSAGE_MAP     TYPE MDG_BS_BP_MSGMAP_KEY.
  DATA : LT_DATA   TYPE CVIS_EI_EXTERN_T,
         LT_RETURN TYPE BAPIRETM,
         LS_RETURN TYPE BAPIRETI,
         LS_RETMSG TYPE LINE OF BAPIRETCT,
         LV_TEXT   TYPE STRING.
  DATA: LS_DATA    LIKE LINE OF LT_DATA,
        LS_ROLE    TYPE BUS_EI_BUPA_ROLES,
        LS_PAADR   TYPE BUS_EI_BUPA_ADDRESS,
        LS_COMPANY TYPE VMDS_EI_COMPANY.
  DATA: LV_GUID    TYPE GUID_32,
        LV_PARTNER LIKE LS_DATA-PARTNER-HEADER-OBJECT_INSTANCE-BPARTNER.
  DATA: LS_FUNCTIONS_ST    TYPE VMDS_EI_FUNCTIONS,
        LS_FUNCTIONS_T     TYPE VMDS_EI_FUNCTIONS_T,
        LS_FUNCTIONS       TYPE VMDS_EI_VMD_FUNCTIONS,
        LS_PURCHASING_DATA TYPE VMDS_EI_PURCHASING,
        LT_PURCHASING_DATA TYPE VMDS_EI_PURCHASING_T.
  DATA:  LS_PHONE           TYPE BUS_EI_BUPA_TELEPHONE.
  DATA:  LT_PHONE           TYPE BUS_EI_BUPA_TELEPHONE_T.
  DATA:  LS_FAX             TYPE BUS_EI_BUPA_FAX.
  DATA:  LT_FAX             TYPE BUS_EI_BUPA_FAX_T.
  DATA:  LS_MAIL            TYPE BUS_EI_BUPA_SMTP.
  DATA:  LT_MAIL            TYPE BUS_EI_BUPA_SMTP_T.



  LOOP AT  GT_VENDOR INTO GS_VENDOR WHERE LIFNR IS INITIAL .
    CLEAR:LT_RETURN_MAP,
          LS_RETURN_MAP,
          LS_MESSAGE_MAP,
          LT_DATA,
          LT_RETURN,
          LS_RETURN,
          LS_RETMSG,
          LV_TEXT,
          LS_DATA,
          LS_ROLE,
          LS_PAADR,
          LS_COMPANY,
          LV_GUID,
          LV_PARTNER,
          LS_FUNCTIONS_ST,
          LS_FUNCTIONS_T,
          LS_FUNCTIONS,
          LS_PURCHASING_DATA,
          LT_PURCHASING_DATA,
          LS_PHONE,
          LT_PHONE,
          LS_FAX,
          LT_FAX,
          LS_MAIL,
          LT_MAIL.

    CALL METHOD CL_SYSTEM_UUID=>IF_SYSTEM_UUID_STATIC~CREATE_UUID_C32
      RECEIVING
        UUID = LV_GUID.

* Create customer
    LS_DATA-PARTNER-HEADER-OBJECT_TASK = 'I'.
    LS_DATA-PARTNER-HEADER-OBJECT_INSTANCE-BPARTNER = LV_PARTNER.
    LS_DATA-PARTNER-HEADER-OBJECT_INSTANCE-BPARTNERGUID = LV_GUID.

*--- Partner / Central data / common ------------------------------*
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-CATEGORY = '2'. "3group "2 Organization
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-GROUPING = GS_CUSTOMER-BU_GROUP. "Grouping

    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-TITLE_KEY   = GS_VENDOR-AD_TITLE.        "tittle
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-SEARCHTERM1 = GS_VENDOR-SORT1+0(20). "Search term 1 for business partner
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-SEARCHTERM2 = GS_VENDOR-SORT1+20(20). "Search term 2 for business partner

    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-TITLE_KEY   = ABAP_TRUE.
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-SEARCHTERM1 = ABAP_TRUE.
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-SEARCHTERM2 = ABAP_TRUE.


    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME1 = GS_VENDOR-NAME1+0(35).
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME2 = GS_VENDOR-NAME1+35(35).
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME1 = ABAP_TRUE.
    LS_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME2 = ABAP_TRUE.



*--- Partner / Central data / Address -----------------------------*
    LS_PAADR-TASK = 'I'.
    LS_PAADR-DATA_KEY-OPERATION           = 'XXDFLT'.
    LS_PAADR-DATA-POSTAL-DATA-STR_SUPPL3  = GS_VENDOR-UNIT.
    LS_PAADR-DATA-POSTAL-DATA-CITY        = GS_VENDOR-CITY1.
    LS_PAADR-DATA-POSTAL-DATA-HOUSE_NO    = GS_VENDOR-HOUSE_NUM1.
    LS_PAADR-DATA-POSTAL-DATA-POSTL_COD1  = GS_VENDOR-POST_CODE1.
    LS_PAADR-DATA-POSTAL-DATA-STREET      = GS_VENDOR-STREET.
    LS_PAADR-DATA-POSTAL-DATA-COUNTRY     = GS_VENDOR-LAND1.
    LS_PAADR-DATA-POSTAL-DATA-REGION      = GS_VENDOR-REGIO.
    LS_PAADR-DATA-POSTAL-DATA-TIME_ZONE   = GS_VENDOR-TIME_ZONE.
    LS_PAADR-DATA-POSTAL-DATA-LANGU       = GS_VENDOR-LANGU.

    LS_PAADR-DATA-POSTAL-DATAX-STR_SUPPL3 = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-CITY       = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-HOUSE_NO   = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-POSTL_COD1 = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-STREET     = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-COUNTRY    = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-REGION     = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-TIME_ZONE  = ABAP_TRUE.
    LS_PAADR-DATA-POSTAL-DATAX-LANGU      = ABAP_TRUE.

    LS_PAADR-CURRENTLY_VALID = ABAP_TRUE.

    " Communication
    IF GS_VENDOR-TEL_NUMBER IS NOT INITIAL .
*第一个电话
      LS_PHONE-CONTACT-TASK = 'I'.
      LS_PHONE-CONTACT-DATA-COUNTRY = GS_VENDOR-LAND1.
      LS_PHONE-CONTACT-DATA-TELEPHONE = GS_VENDOR-TEL_NUMBER.
      LS_PHONE-CONTACT-DATAX-COUNTRY = 'X'.
      LS_PHONE-CONTACT-DATAX-TELEPHONE = 'X'.
      APPEND LS_PHONE TO LT_PHONE.
      LS_PAADR-DATA-COMMUNICATION-PHONE-PHONE = LT_PHONE.
    ENDIF.

    IF GS_VENDOR-FAX_NUMBER IS NOT INITIAL .
*传真
      LS_FAX-CONTACT-TASK          = 'I'.
      LS_FAX-CONTACT-DATA-COUNTRY  = GS_VENDOR-LAND1.
      LS_FAX-CONTACT-DATA-FAX      = GS_VENDOR-FAX_NUMBER.
      LS_FAX-CONTACT-DATAX-COUNTRY = 'X'.
      LS_FAX-CONTACT-DATAX-FAX     = 'X'.
      APPEND LS_FAX TO LT_FAX.
      LS_PAADR-DATA-COMMUNICATION-FAX-FAX = LT_FAX.
    ENDIF.

    IF GS_VENDOR-SMTP_ADDR IS NOT INITIAL .
**电子邮件
      LS_MAIL-CONTACT-TASK         = 'I'.
      LS_MAIL-CONTACT-DATA-E_MAIL  = GS_VENDOR-SMTP_ADDR.
      LS_MAIL-CONTACT-DATAX-E_MAIL = 'X'.
      APPEND LS_MAIL TO LT_MAIL.
      LS_PAADR-DATA-COMMUNICATION-SMTP-SMTP = LT_MAIL.
    ENDIF.

    APPEND LS_PAADR TO LS_DATA-PARTNER-CENTRAL_DATA-ADDRESS-ADDRESSES.



*----------------- PARTNER / CENTRAL DATA / ROLE -----------------*
*-------------- Adding multiple roles for the BP------------------*
*-------------- Partner / Central data / role --------------------*
    LS_ROLE-TASK = 'I'.
    LS_ROLE-DATA_KEY = 'GZ0003'.
    LS_ROLE-DATA-ROLECATEGORY = 'FLVN00'.
    LS_ROLE-DATA-VALID_FROM = SY-DATUM.
    LS_ROLE-DATA-VALID_TO = '99991231'.
    LS_ROLE-CURRENTLY_VALID = ABAP_TRUE.

    LS_ROLE-DATAX-VALID_FROM = ABAP_TRUE.
    LS_ROLE-DATAX-VALID_TO = ABAP_TRUE.

    APPEND LS_ROLE TO LS_DATA-PARTNER-CENTRAL_DATA-ROLE-ROLES.
    "LS_DATA-PARTNER-CENTRAL_DATA-ROLE-CURRENT_STATE = ABAP_TRUE.

*------------- Partner / Central data / role ---------------------*
    LS_ROLE-TASK = 'I'.
    LS_ROLE-DATA_KEY = 'GZ0004'.
    LS_ROLE-DATA-ROLECATEGORY = 'FLVN01'.
    LS_ROLE-DATA-VALID_FROM = SY-DATUM.
    LS_ROLE-DATA-VALID_TO = '99991231'.
    LS_ROLE-CURRENTLY_VALID = ABAP_TRUE.

    LS_ROLE-DATAX-VALID_FROM = ABAP_TRUE.
    LS_ROLE-DATAX-VALID_TO   = ABAP_TRUE.

    APPEND LS_ROLE TO LS_DATA-PARTNER-CENTRAL_DATA-ROLE-ROLES.
    "LS_DATA-PARTNER-CENTRAL_DATA-ROLE-CURRENT_STATE = ABAP_TRUE.


*-------------- Vendor / Header ---------------------------------*
    LS_DATA-VENDOR-HEADER-OBJECT_TASK = 'I'.
    LS_DATA-VENDOR-HEADER-OBJECT_INSTANCE = LV_PARTNER.
    LS_DATA-ENSURE_CREATE-CREATE_VENDOR = ABAP_TRUE.


*--------------- Vendor  / Company data -------------------------*
    LS_COMPANY-TASK = 'I'.
    LS_COMPANY-DATA_KEY-BUKRS   = P_BUKRS. " company code
    LS_COMPANY-DATA-ZTERM = GS_VENDOR-ZTERM. " terms of payment
    LS_COMPANY-DATA-REPRF = GS_VENDOR-REPRF. " terms of payment
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT  = GS_VENDOR-AKONT
      IMPORTING
        OUTPUT = LS_COMPANY-DATA-AKONT.

    LS_COMPANY-DATAX-ZTERM = 'X'.
    LS_COMPANY-DATAX-AKONT = 'X'.
    LS_COMPANY-DATAX-REPRF = 'X'.

    APPEND LS_COMPANY TO LS_DATA-VENDOR-COMPANY_DATA-COMPANY.


**---------------Purchasing Data----------------------*

    LS_PURCHASING_DATA-TASK = 'I'.
    LS_PURCHASING_DATA-DATA_KEY-EKORG = GS_VENDOR-EKORG.

    LS_PURCHASING_DATA-DATA-INCO1   = GS_VENDOR-INCO1.
    LS_PURCHASING_DATA-DATA-INCOV   = GS_VENDOR-INCOV.
    LS_PURCHASING_DATA-DATA-INCO2_L = GS_VENDOR-INCO2_L.
    LS_PURCHASING_DATA-DATA-WAERS   = GS_VENDOR-WAERS.
    LS_PURCHASING_DATA-DATA-ZTERM   = GS_VENDOR-ZTERM.


    LS_PURCHASING_DATA-DATAX-INCO1   = ABAP_TRUE.
    LS_PURCHASING_DATA-DATAX-INCOV   = ABAP_TRUE.
    LS_PURCHASING_DATA-DATAX-INCO2_L = ABAP_TRUE.
    LS_PURCHASING_DATA-DATAX-WAERS   = ABAP_TRUE.
    LS_PURCHASING_DATA-DATAX-ZTERM   = ABAP_TRUE.


**------------------- Business Partner Details -------------------*

    LS_FUNCTIONS_ST-DATA_KEY-PARVW = 'BA'.
    LS_FUNCTIONS_ST-DATA-DEFPA = 'X'.
    APPEND LS_FUNCTIONS_ST TO LS_FUNCTIONS_T.

    LS_FUNCTIONS_ST-DATA_KEY-PARVW = 'LF'.
    LS_FUNCTIONS_ST-DATA-DEFPA = 'X'.
    APPEND LS_FUNCTIONS_ST TO LS_FUNCTIONS_T.

    LS_FUNCTIONS_ST-DATA_KEY-PARVW = 'RS'.
    LS_FUNCTIONS_ST-DATA-DEFPA = 'X'.
    APPEND LS_FUNCTIONS_ST TO LS_FUNCTIONS_T.



    LS_FUNCTIONS-FUNCTIONS = LS_FUNCTIONS_T.
    LS_PURCHASING_DATA-FUNCTIONS = LS_FUNCTIONS.
    LS_PURCHASING_DATA-FUNCTIONS-CURRENT_STATE = 'X'.

    APPEND LS_PURCHASING_DATA TO LS_DATA-VENDOR-PURCHASING_DATA-PURCHASING.


**--------------End of sales data---------------------------*

**-----------Finally fill the main data structure-----------*

    APPEND LS_DATA TO LT_DATA.

**----------------validating BP data------------------------*

    CALL METHOD CL_MD_BP_MAINTAIN=>VALIDATE_SINGLE
      EXPORTING
        I_DATA        = LS_DATA "lt_data
*       i_data_db     =
*       iv_suppress_taxjur_check = 'X'
      IMPORTING
        ET_RETURN_MAP = LT_RETURN_MAP. "lt_return.

**------------------Creating BP ----------------------------*
    IF LT_RETURN_MAP IS INITIAL.

      CALL METHOD CL_MD_BP_MAINTAIN=>MAINTAIN
        EXPORTING
          I_DATA   = LT_DATA
*         i_test_run =
        IMPORTING
          E_RETURN = LT_RETURN.
**------------------Commit BAPI ----------------------------*
      IF LT_RETURN IS INITIAL.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

        WHILE LV_PARTNER IS INITIAL .
          SELECT SINGLE PARTNER
            INTO LV_PARTNER FROM BUT000
            WHERE PARTNER_GUID = LV_GUID.
        ENDWHILE.


        GS_VENDOR-MESSAGE = 'SUCCESSFULLY CREATED BP'.
        GS_VENDOR-LIFNR = LV_PARTNER.
        GS_VENDOR-ICONS = ICON_GREEN_LIGHT.
      ELSE.
        LOOP AT LT_RETURN INTO LS_RETURN.
          LOOP AT LS_RETURN-OBJECT_MSG INTO LS_RETMSG.
            CLEAR: LV_TEXT.
            CALL FUNCTION 'MESSAGE_TEXT_BUILD'
              EXPORTING
                MSGID               = LS_RETMSG-ID
                MSGNR               = LS_RETMSG-NUMBER
                MSGV1               = LS_RETMSG-MESSAGE_V1
                MSGV2               = LS_RETMSG-MESSAGE_V2
                MSGV3               = LS_RETMSG-MESSAGE_V3
                MSGV4               = LS_RETMSG-MESSAGE_V4
              IMPORTING
                MESSAGE_TEXT_OUTPUT = LV_TEXT.
            CONCATENATE GS_VENDOR-MESSAGE LV_TEXT INTO GS_VENDOR-MESSAGE.
          ENDLOOP.
        ENDLOOP.
        GS_VENDOR-ICONS = ICON_RED_LIGHT.

      ENDIF.

    ELSE.

      LOOP AT LT_RETURN_MAP INTO LS_RETURN_MAP.
        CLEAR: LV_TEXT.
        CALL FUNCTION 'MESSAGE_TEXT_BUILD'
          EXPORTING
            MSGID               = LS_RETURN_MAP-ID
            MSGNR               = LS_RETURN_MAP-NUMBER
            MSGV1               = LS_RETURN_MAP-MESSAGE_V1
            MSGV2               = LS_RETURN_MAP-MESSAGE_V2
            MSGV3               = LS_RETURN_MAP-MESSAGE_V3
            MSGV4               = LS_RETURN_MAP-MESSAGE_V4
          IMPORTING
            MESSAGE_TEXT_OUTPUT = LV_TEXT.
        CONCATENATE GS_VENDOR-MESSAGE LV_TEXT INTO GS_VENDOR-MESSAGE.
      ENDLOOP.
      GS_VENDOR-ICONS = ICON_RED_LIGHT.
    ENDIF.

    MODIFY GT_VENDOR  FROM GS_VENDOR.
  ENDLOOP.
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档