ABAP HANA BP Main Data Prospect

tags: ABAP  html  c++  html5  sap

SAP HANA officially recommended category category of BP main data is CL_MD_BP_MAINTAIN

The customer's creation specific sample code is as follows:

  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 .
 * First phone
      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 .
 * Fax
      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 .
 **e-mail
      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.

The supplier BP creation instance code is as follows

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 .
* First phone
      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 .
 * Fax
      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 .
 ** Email
      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.

Intelligent Recommendation

ABAP ON HANA CDS Association and Path EXPRESSION

This article describes the concept of ABAP CDS Association and shows a method of writing a path expression (path expression) code in the CDS view and the SQL statement. I will also explain how to spec...

BPC development: ABAP reads HANA VIEW

The view written at the HANA DB level can be used to get the return result with the ABAP call. Mainly used in CL_SQL_CONNECTION, CL_SQL_STATEMENT, CL_SQL_RESULT_SET, etc. Package it: Method code Actua...

SAP RFC_CVI_EI_INBOUND_MAIN BP main data creation example (only demonstration customer)

1. Global input and output structure (data transmitted through JSON String) Define global structure 2. Pass parameter Json 3. The interface function (the example is a single ledger, please add a loop ...

Main concepts of SAP HANA Database

The three main concepts of the SAP HANA database are as follows: 1. Column Store and Row Store 2. Compression of the Column Store 3. Insert only on Delta & Delta Merge of the Column Store Column a...

HANA import data

Problem scenario: Create test data in HANA, which can be imported using a .csv file or an exported file. 1, using a .csv file Step1 select new-import Step2 Select Data from Local File -> next  ...

More Recommendation

SAP BP Business Practice and ABAP Sharing

BP's experience BP concept Business program practice data processing ABAP implementation of BP object 1. Used type object 2. BP maintenance theme process `` ` 3. Role information 4. BP basic informati...

ABAP HANA system built on SAP CAL (Cloud Application Library)

https://cal.sap.com/ ABAP keyword search: Select SAP NetWeaver AS ABAP and SAP BW 7.5 SP01 on SAP HANA SP10 in the results, click on the Create instance: Select the field in the Cloud provider AWS or ...

Difference between SAP ABAP CDS view and HANA CDS view

Both technologies are specific implementations of the "Code pushdown" concept proposed by SAP. SAP ABAP CDS view is located at the ABAP application server layer, using OPEN SQL, the supporte...

Introduction to SAP AMDP-HANA database process hosted by ABAP

Recently, Jerry’s situation can be described by the name of a popular FPS game on the campus at the beginning of the century and when he first went to university after 1980s: "Half-Life&quo...

Use ABAP (ADBC) and Java (JDBC) to connect to SAP HANA database

Maintain a record in the table DBCON, pointing to the HANA database. Fill in the host name and port number of the HANA database in con_ENV. Such as vmXXXX: 30015 The Java implementation is similar: Co...

Copyright  DMCA © 2018-2026 - All Rights Reserved - www.programmersought.com  User Notice

Top