S/4 HANA Business Partner Creation using Odata service

 

In this series of Video, you will learn, How to create the S/4 HANA Business Partner using Odata service.

with complex Type Data Model







Source Code

  method CUSTOMERSET_GET_ENTITY.

 data gs_key_tab LIKE LINE OF it_key_tab.

 data lv_BUSINESSPARTNER  type BAPIBUS1006_HEAD-BPARTNER,
        lv_cnt type i.


 read TABLE it_key_tab into gs_key_tab with KEY name 'BUSINESSPARTNER'.
 if gs_key_tab-value is NOT INITIAL.

    lv_BUSINESSPARTNER gs_key_tab-value.

 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
   EXPORTING
     input         lv_BUSINESSPARTNER
  IMPORTING
    OUTPUT        =  lv_BUSINESSPARTNER.

* BUT000, BUT020, ADRC, ADR2, ADR6
  select SINGLE a~partnera~bu_sort1a~titlea~name_first,
         b~addrnumber
   from but000 as a INNER JOIN but020 as on a~partner b~partner
   into @data(gs_partner)
   WHERE a~partner @lv_BUSINESSPARTNER.

  if gs_partner-addrnumber is NOT INITIAL.

"address selection
  select SINGLE from adrc into @data(gs_adrcWHERE addrnumber @gs_partner-addrnumber.

"mobile numbers
  select from adr2 into TABLE @data(gt_adr2WHERE addrnumber @gs_partner-addrnumber.
  select from adr6 into TABLE @data(gt_adr6WHERE addrnumber @gs_partner-addrnumber.



  endif.

  er_entity-businesspartner    =  gs_partner-partner.
  er_entity-TITLE_KEY          gs_partner-title.
  er_entity-SEARCHTERM1        gs_partner-bu_sort1.
  er_entity-FIRSTNAME          gs_partner-name_first.
*CORRESPONDLANGUAGE
*MESSAGE
  er_entity-ADDRESS-CITY       gs_adrc-city1.
  er_entity-ADDRESS-POSTL_COD1 gs_adrc-post_code1.
  er_entity-ADDRESS-STREET     gs_adrc-STREET.
  er_entity-ADDRESS-COUNTRY    gs_adrc-county.
  er_entity-ADDRESS-REGION     gs_adrc-REGION.

  clear lv_cnt.
  loop at gt_adr2 into data(gs_adr2).

  lv_cnt lv_cnt + 1.

  if lv_cnt 1.

  er_entity-MOBILE-mobile1  gs_adr2-tel_number.

  elseif lv_cnt 2.

   er_entity-MOBILE-mobile2  gs_adr2-tel_number.

  else.
    exit.
  endif.

  clear gs_adr2.
  ENDLOOP.


  clear lv_cnt.
  loop at gt_adr6 into data(gs_adr6).

  lv_cnt lv_cnt + 1.

  if lv_cnt 1.

  er_entity-EMAIL-email1  gs_adr6-smtp_addr.

  elseif lv_cnt 2.

   er_entity-EMAIL-email2  gs_adr6-smtp_addr.

  else.
    exit.
  endif.

  clear gs_adr6.
  ENDLOOP.



endif.

  endmethod.


 method CUSTOMERSET_CREATE_ENTITY.


  data wa_entity like er_entity.

  data CENTRALDATA type BAPIBUS1006_CENTRAL,
         CENTRALDATAPERSON  type  BAPIBUS1006_CENTRAL_PERSON,
         ADDRESSDATA  type  BAPIBUS1006_ADDRESS,

         GT_TELEFONDATA  TYPE STANDARD TABLE OF BAPIADTEL,
         GS_TELEFONDATA  type BAPIADTEL,

         GT_E_MAILDATA type STANDARD TABLE OF BAPIADSMTP,
         GS_E_MAILDATA type BAPIADSMTP,

         GT_RETURN type STANDARD TABLE OF BAPIRET2,
         GS_RETURN type BAPIRET2,

         BUSINESSPARTNER  type  BAPIBUS1006_HEAD-BPARTNER.


  "read entity data

  try.

  call METHOD io_data_provider->read_entry_data
    IMPORTING
      es_data wa_entity.
    .
*  CATCH /iwbep/cx_mgw_tech_exception. " mgw technical exception
*  CATCH /iwbep/cx_mgw_tech_exception. " Technical Exception


  CATCH cx_root.
  ENDTRY.

  if wa_entity-firstname is NOT INITIAL.

  CENTRALDATA-searchterm1   wa_entity-searchterm1.
  CENTRALDATA-title_key     wa_entity-title_key.

  CENTRALDATAPERSON-firstname          wa_entity-firstname.
  CENTRALDATAPERSON-correspondlanguage sy-langu.

  addressdata-standardaddress   'X'.
  addressdata-city              wa_entity-address-city.
  addressdata-postl_cod1        wa_entity-address-postl_cod1.
  addressdata-street            wa_entity-address-street.
  addressdata-country           wa_entity-address-country.
  addressdata-region            wa_entity-address-region.
  addressdata-validfromdate     sy-datum.
  addressdata-validtodate       '99991231'.

"mobiles
  if wa_entity-mobile-mobile1 is NOT INITIAL.
     GS_TELEFONDATA-country   wa_entity-address-country.
     GS_TELEFONDATA-std_no    'X'.
     GS_TELEFONDATA-telephone wa_entity-mobile-mobile1.
     GS_TELEFONDATA-r_3_user  '3'.
     append GS_TELEFONDATA to gt_telefondata.

  endif.

  if wa_entity-mobile-mobile2 is NOT INITIAL.
     GS_TELEFONDATA-country   wa_entity-address-country.
     GS_TELEFONDATA-std_no    'X'.
     GS_TELEFONDATA-telephone wa_entity-mobile-mobile2.
     GS_TELEFONDATA-r_3_user  '3'.
     append GS_TELEFONDATA to gt_telefondata.

  endif.

  if wa_entity-email-email1 is NOT INITIAL.
     GS_E_MAILDATA-std_no  'X'.
     GS_E_MAILDATA-e_mail  wa_entity-email-email1.
     GS_E_MAILDATA-std_recip =  'X'.
     append GS_E_MAILDATA to GT_E_MAILDATA.
  endif.

  if wa_entity-email-email2 is NOT INITIAL.
     GS_E_MAILDATA-std_no  'X'.
     GS_E_MAILDATA-e_mail  wa_entity-email-email2.
     GS_E_MAILDATA-std_recip =  'X'.
     append GS_E_MAILDATA to GT_E_MAILDATA.
  endif.


CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'
  EXPORTING
*   BUSINESSPARTNEREXTERN              =
    partnercategory                    '1'
*   PARTNERGROUP                       =
    centraldata                        centraldata
   CENTRALDATAPERSON                  centraldataperson
*   CENTRALDATAORGANIZATION            =
*   CENTRALDATAGROUP                   =
   ADDRESSDATA                        ADDRESSDATA
*   DUPLICATE_MESSAGE_TYPE             =
*   ACCEPT_ERROR                       = ' '
 IMPORTING
   BUSINESSPARTNER                    BUSINESSPARTNER
 TABLES
   TELEFONDATA                        GT_TELEFONDATA
*   FAXDATA                            =
*   TELETEXDATA                        =
*   TELEXDATA                          =
   E_MAILDATA                         GT_E_MAILDATA
*   RMLADDRESSDATA                     =
*   X400ADDRESSDATA                    =
*   RFCADDRESSDATA                     =
*   PRTADDRESSDATA                     =
*   SSFADDRESSDATA                     =
*   URIADDRESSDATA                     =
*   PAGADDRESSDATA                     =
*   ADDRESSNOTES                       =
*   COMMUNICATIONNOTES                 =
*   COMMUNICATIONUSAGE                 =
*   TELEFONDATANONADDRESS              =
*   FAXDATANONADDRESS                  =
*   TELETEXDATANONADDRESS              =
*   TELEXDATANONADDRESS                =
*   E_MAILDATANONADDRESS               =
*   RMLADDRESSDATANONADDRESS           =
*   X400ADDRESSDATANONADDRESS          =
*   RFCADDRESSDATANONADDRESS           =
*   PRTADDRESSDATANONADDRESS           =
*   SSFADDRESSDATANONADDRESS           =
*   URIADDRESSDATANONADDRESS           =
*   PAGADDRESSDATANONADDRESS           =
*   COMMUNICATIONNOTESNONADDRESS       =
*   COMMUNICATIONUSAGENONADDRESS       =
   RETURN                             GT_RETURN.
*   ADDRESSDUPLICATES                  =
          .

  if BUSINESSPARTNER is NOT INITIAL and GT_RETURN is INITIAL.


  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
   EXPORTING
     WAIT          ''
*   IMPORTING
*     RETURN        =
            .

             .
  CONCATENATE 'BP' BUSINESSPARTNER 'Successfully created' into wa_entity-message SEPARATED BY space.

  er_entity wa_entity.




  else.
    wa_entity-message  'Error while creating business partner'.

  endif.


  else.
    wa_entity-message  'Pass all the required parameters'.
  endif.

  endmethod.







Post a Comment

1 Comments

  1. Video 3 & 4 are missing, can you please lead me to watch video 3 & 4?

    ReplyDelete

Total Pageviews