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~partner, a~bu_sort1, a~title, a~name_first,
b~addrnumber
from but000 as a INNER JOIN but020 as b 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_adrc) WHERE addrnumber = @gs_partner-addrnumber.
"mobile numbers
select * from adr2 into TABLE @data(gt_adr2) WHERE addrnumber = @gs_partner-addrnumber.
select * from adr6 into TABLE @data(gt_adr6) WHERE 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.
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~partner, a~bu_sort1, a~title, a~name_first,
b~addrnumber
from but000 as a INNER JOIN but020 as b 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_adrc) WHERE addrnumber = @gs_partner-addrnumber.
"mobile numbers
select * from adr2 into TABLE @data(gt_adr2) WHERE addrnumber = @gs_partner-addrnumber.
select * from adr6 into TABLE @data(gt_adr6) WHERE 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.
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.
1 Comments
Video 3 & 4 are missing, can you please lead me to watch video 3 & 4?
ReplyDelete