FUNCTION Z_BP_MAINTENANCE. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(I_TYPE) TYPE CHAR10 DEFAULT 'GET' *" EXPORTING *" VALUE(E_RESULT) TYPE CHAR10 *" TABLES *" ET_ADDR_DETAILS STRUCTURE BAPIBUS1006_ADDRESS OPTIONAL *" ET_DATA_ORGAN STRUCTURE BAPIBUS1006_CENTRAL_ORGAN OPTIONAL *" ET_DATA_PERSON STRUCTURE BAPIBUS1006_CENTRAL_PERSON OPTIONAL *" ET_BP_HEAD STRUCTURE BAPIBUS1006_HEAD OPTIONAL *" ET_BP_CENTRAL STRUCTURE BAPIBUS1006_CENTRAL OPTIONAL *" ET_RETURN STRUCTURE BAPIRET2 OPTIONAL *" ET_BP_CENTRAL_X STRUCTURE BAPIBUS1006_CENTRAL_X OPTIONAL *" ET_DATA_ORGAN_X STRUCTURE BAPIBUS1006_CENTRAL_ORGAN_X OPTIONAL *" ET_DATA_PERSON_X STRUCTURE BAPIBUS1006_CENTRAL_PERSON_X *" OPTIONAL *"---------------------------------------------------------------------- data: lt_SEARCHRESULT type table of BAPIBUS1006_BP_ADDR, lt_CENTRALDATA_PERSON type table of BAPIBUS1006_ADDRESS, lt_RETURN type table of BAPIRET2, lt_up_return type table of BAPIRET2. data: ls_centraldata type BAPIBUS1006_CENTRAL_SEARCH, ls_ET_ADDR_DETAILS type BAPIBUS1006_ADDRESS, ls_ET_DATA_ORGAN type BAPIBUS1006_CENTRAL_ORGAN, ls_ET_DATA_PERSON type BAPIBUS1006_CENTRAL_PERSON, ls_ET_BP_CENTRAL type BAPIBUS1006_CENTRAL, ls_ET_BP_HEAD type BAPIBUS1006_HEAD, ls_SEARCHRESULT type BAPIBUS1006_BP_ADDR, ls_RETURN type BAPIRET2, ls_up_return type BAPIRET2, ls_ET_BP_CENTRAL_X type BAPIBUS1006_CENTRAL_X, ls_ET_DATA_ORGAN_X type BAPIBUS1006_CENTRAL_ORGAN_X, ls_ET_DATA_PERSON_X type BAPIBUS1006_CENTRAL_PERSON_X. data: lv_category type BU_TYPE, lv_partner type BU_PARTNER, inc type i. * I_TYPE = GET ( Search All ) * I_TYPE = EDT ( Edit = Add or Update ) case I_TYPE. when 'GET'. * Get All partners * "*" - means search all ls_centraldata-MC_NAME1 = '*'. * 1) get person data lv_cat = 1 * 2) get company data lv_cat = 2 do. lv_category = sy-index. ls_centraldata-PARTNERCATEGORY = lv_category. CALL FUNCTION 'BAPI_BUPA_SEARCH' EXPORTING * TELEPHONE = * EMAIL = * URL = * ADDRESSDATA = CENTRALDATA = ls_centraldata * BUSINESSPARTNERROLE = * COUNTRY_FOR_TELEPHONE = * FAX_DATA = * OTHERS = TABLES SEARCHRESULT = lt_SEARCHRESULT RETURN = ET_RETURN. loop at lt_SEARCHRESULT into ls_SEARCHRESULT. ls_ET_BP_HEAD-BPARTNER = ls_SEARCHRESULT-PARTNER. ls_ET_BP_HEAD-PARTN_CAT = lv_category. APPEND ls_ET_BP_HEAD TO ET_BP_HEAD. endloop. if sy-index = 2. exit. endif. enddo. * Get partners details loop at ET_BP_HEAD into ls_ET_BP_HEAD. lv_partner = ls_ET_BP_HEAD-BPARTNER. CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL' EXPORTING BUSINESSPARTNER = lv_partner * VALID_DATE = SY-DATLO IMPORTING * CENTRALDATA = CENTRALDATAPERSON = ls_ET_DATA_PERSON CENTRALDATAORGANIZATION = ls_ET_DATA_ORGAN * CENTRALDATAGROUP = * CENTRALDATAVALIDITY = * TABLES * TELEFONDATANONADDRESS = * FAXDATANONADDRESS = * TELETEXDATANONADDRESS = * TELEXDATANONADDRESS = * E_MAILDATANONADDRESS = * RMLADDRESSDATANONADDRESS = * X400ADDRESSDATANONADDRESS = * RFCADDRESSDATANONADDRESS = * PRTADDRESSDATANONADDRESS = * SSFADDRESSDATANONADDRESS = * URIADDRESSDATANONADDRESS = * PAGADDRESSDATANONADDRESS = * COMMUNICATIONNOTESNONADDRESS = * COMMUNICATIONUSAGENONADDRESS = * RETURN = . CALL FUNCTION 'BUPA_ADDRESS_GET_DETAIL' EXPORTING IV_PARTNER = lv_partner * IV_PARTNER_GUID = * IV_ADDRNUMBER = * IV_ADDRGUID = * IV_VALDT = SY-DATLO IMPORTING ES_ADDRESS = ls_ET_ADDR_DETAILS * TABLES * ET_ADTEL = * ET_ADFAX = * ET_ADTTX = * ET_ADTLX = * ET_ADSMTP = * ET_ADRML = * ET_ADX400 = * ET_ADRFC = * ET_ADPRT = * ET_ADSSF = * ET_ADURI = * ET_ADPAG = * ET_AD_REM = * ET_COMREM = * ET_ADUSE = * ET_ADDR_VERS_ORG = * ET_ADDR_VERS_PERS = * ET_ADDR_COMM_USE = * ET_RETURN = . APPEND ls_ET_ADDR_DETAILS TO ET_ADDR_DETAILS. APPEND ls_ET_DATA_PERSON TO ET_DATA_PERSON. APPEND ls_ET_DATA_ORGAN TO ET_DATA_ORGAN. endloop. when 'EDT'. * PARTN_CAT = 1 - PERSON * PARTN_CAT = 2 - ORGAN * ET_BP_HEAD contains all bp and cp, with different partn_cat * partner number (1...5) loop at ET_BP_HEAD into ls_ET_BP_HEAD. * ls_ET_BP_HEAD-BPARTNER = lv_partner. * Check category of partner if ls_ET_BP_HEAD-PARTN_CAT = 1. clear ls_ET_DATA_ORGAN. read table ET_DATA_PERSON into ls_ET_DATA_PERSON index SY-TABIX. else. clear ls_ET_DATA_PERSON. read table ET_DATA_ORGAN into ls_ET_DATA_ORGAN index SY-TABIX. endif. * Read rest of object read table ET_ADDR_DETAILS into ls_ET_ADDR_DETAILS index SY-TABIX. read table ET_BP_CENTRAL into ls_ET_BP_CENTRAL index SY-TABIX. if ls_ET_BP_HEAD-BPARTNER is not initial. read table ET_BP_CENTRAL_X into ls_ET_BP_CENTRAL_X index SY-TABIX. read table ET_DATA_ORGAN_X into ls_ET_DATA_ORGAN_X index SY-TABIX. read table ET_DATA_PERSON_X into ls_ET_DATA_PERSON_X index SY-TABIX. CALL FUNCTION 'BAPI_BUPA_CENTRAL_CHANGE' EXPORTING BUSINESSPARTNER = ls_ET_BP_HEAD-BPARTNER CENTRALDATA = ls_ET_BP_CENTRAL CENTRALDATAPERSON = ls_ET_DATA_PERSON CENTRALDATAORGANIZATION = ls_ET_DATA_ORGAN * * CENTRALDATAGROUP = CENTRALDATA_X = ls_ET_BP_CENTRAL_X CENTRALDATAPERSON_X = ls_ET_DATA_PERSON_X CENTRALDATAORGANIZATION_X = ls_ET_DATA_ORGAN_X * * CENTRALDATAGROUP_X = * * VALID_DATE = SY-DATLO * * DUPLICATE_MESSAGE_TYPE = TABLES * * TELEFONDATANONADDRESS = * * FAXDATANONADDRESS = * * TELETEXDATANONADDRESS = * * TELEXDATANONADDRESS = * * E_MAILDATANONADDRESS = * * RMLADDRESSDATANONADDRESS = * * X400ADDRESSDATANONADDRESS = * * RFCADDRESSDATANONADDRESS = * * PRTADDRESSDATANONADDRESS = * * SSFADDRESSDATANONADDRESS = * * URIADDRESSDATANONADDRESS = * * PAGADDRESSDATANONADDRESS = * * COMMUNICATIONNOTESNONADDRESS = * * COMMUNICATIONUSAGENONADDRESS = * * TELEFONDATANONADDRESSX = * * FAXDATANONADDRESSX = * * TELETEXDATANONADDRESSX = * * TELEXDATANONADDRESSX = * * E_MAILDATANONADDRESSX = * * RMLADDRESSDATANONADDRESSX = * * X400ADDRESSDATANONADDRESSX = * * RFCADDRESSDATANONADDRESSX = * * PRTADDRESSDATANONADDRESSX = * * SSFADDRESSDATANONADDRESSX = * * URIADDRESSDATANONADDRESSX = * * PAGADDRESSDATANONADDRESSX = * * COMMUNICATIONNOTESNONADDRESSX = * * COMMUNICATIONUSAGENONADDRESSX = RETURN = lt_up_return * * ADDRESSDUPLICATES = . if lt_up_return is not initial. loop at lt_up_return into ls_up_return. append ls_up_return to ET_RETURN. endloop. else. ls_up_return-message = 'Updated'. append ls_up_return to ET_RETURN. endif. else. * Add new partner CALL FUNCTION 'BUPA_CREATE_FROM_DATA' EXPORTING IV_CATEGORY = ls_ET_BP_HEAD-PARTN_CAT IS_DATA = ls_ET_BP_CENTRAL IS_DATA_ORGAN = ls_ET_DATA_ORGAN IS_DATA_PERSON = ls_ET_DATA_PERSON IS_ADDRESS = ls_ET_ADDR_DETAILS IMPORTING EV_PARTNER = lv_partner TABLES ET_RETURN = lt_RETURN. * add comments or error message if lt_RETURN is not initial. loop at lt_RETURN into ls_RETURN. append ls_RETURN to ET_RETURN. endloop. clear lt_RETURN. else. ls_RETURN-message = 'Added'. append ls_RETURN to ET_RETURN. endif. * fill new nr_partner * if lv_partner co '1234567890 '. * unpack lv_partner to lv_partner. * endif. ls_ET_BP_HEAD-BPARTNER = lv_partner. modify ET_BP_HEAD from ls_ET_BP_HEAD. endif. endloop. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'. endcase. E_RESULT = 'SUCCESS'. ENDFUNCTION.