Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *"* local class implementation for public class
- *"* use this source file for the implementation part of
- *"* local helper classes
- CLASS lcl_1o_service IMPLEMENTATION.
- METHOD build_status_com.
- INCLUDE : crm_object_names_con.
- DATA : ls_status_com TYPE crmt_status_com,
- ls_status_key TYPE crmt_status_logical_key,
- ls_input_fields TYPE crmt_input_field,
- ls_field_names TYPE crmt_input_field_names.
- * build status communication data
- ls_status_com-ref_guid = io_crm_order->get_crm_obj_guid( ).
- ls_status_com-ref_kind = io_crm_order->get_crm_obj_kind( ).
- ls_status_com-user_stat_proc = iv_status_profile.
- ls_status_com-status = iv_status.
- ls_status_com-activate = abap_true.
- INSERT ls_status_com INTO TABLE ct_status_com.
- * build input fields
- ls_input_fields-ref_guid = io_crm_order->get_crm_obj_guid( ).
- ls_input_fields-ref_kind = io_crm_order->get_crm_obj_kind( ).
- ls_input_fields-objectname = gc_object_name-status.
- MOVE-CORRESPONDING ls_status_com TO ls_status_key.
- ls_input_fields-logical_key = ls_status_key.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'STATUS'.
- INSERT ls_field_names INTO TABLE ls_input_fields-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'USER_STAT_PROC'.
- INSERT ls_field_names INTO TABLE ls_input_fields-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'ACTIVATE'.
- INSERT ls_field_names INTO TABLE ls_input_fields-field_names.
- INSERT ls_input_fields INTO TABLE ct_input_fields.
- ENDMETHOD. "build_status_com
- METHOD build_partner_com.
- INCLUDE : crm_object_names_con.
- DATA : lv_object_guid TYPE crmt_object_guid,
- lv_object_kind TYPE crmt_object_kind,
- ls_partner_wrk TYPE crmt_partner_external_wrk,
- ls_partner_com TYPE crmt_partner_com,
- ls_partner_key TYPE crmt_partner_logic_partner_key,
- ls_input_fields TYPE crmt_input_field,
- ls_field_names TYPE crmt_input_field_names.
- * read current partner details
- IF iv_new_partner = abap_false.
- lv_object_guid = io_crm_order->get_crm_obj_guid( ).
- lv_object_kind = io_crm_order->get_crm_obj_kind( ).
- CALL FUNCTION 'CRM_PARTNER_READ_OW'
- EXPORTING
- iv_ref_guid = lv_object_guid
- iv_ref_kind = lv_object_kind
- iv_partner_fct = iv_partner_fct
- IMPORTING
- es_partner_wrk = ls_partner_wrk
- EXCEPTIONS
- error_occurred = 1
- parameter_error = 2
- entry_does_not_exist = 3
- OTHERS = 4.
- ENDIF.
- * build partner communication data
- MOVE-CORRESPONDING ls_partner_wrk TO ls_partner_com.
- ls_partner_com-ref_guid = io_crm_order->get_crm_obj_guid( ).
- ls_partner_com-ref_kind = io_crm_order->get_crm_obj_kind( ).
- ls_partner_com-partner_no = iv_partner.
- ls_partner_com-partner_fct = iv_partner_fct.
- ls_partner_com-display_type = 'BP'.
- ls_partner_com-no_type = 'BP'.
- INSERT ls_partner_com INTO TABLE ct_partner_com.
- * build input fields
- ls_input_fields-ref_guid = io_crm_order->get_crm_obj_guid( ).
- ls_input_fields-ref_kind = io_crm_order->get_crm_obj_kind( ).
- ls_input_fields-objectname = gc_object_name-partner.
- MOVE-CORRESPONDING ls_partner_com TO ls_partner_key.
- ls_input_fields-logical_key = ls_partner_key.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'PARTNER_NO'.
- INSERT ls_field_names INTO TABLE ls_input_fields-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'PARTNER_FCT'.
- INSERT ls_field_names INTO TABLE ls_input_fields-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'DISPLAY_TYPE'.
- INSERT ls_field_names INTO TABLE ls_input_fields-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'NO_TYPE'.
- INSERT ls_field_names INTO TABLE ls_input_fields-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'REF_PARTNER_NO'.
- INSERT ls_field_names INTO TABLE ls_input_fields-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'REF_PARTNER_FCT'.
- INSERT ls_field_names INTO TABLE ls_input_fields-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'REF_DISPLAY_TYPE'.
- INSERT ls_field_names INTO TABLE ls_input_fields-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'REF_NO_TYPE'.
- INSERT ls_field_names INTO TABLE ls_input_fields-field_names.
- INSERT ls_input_fields INTO TABLE ct_input_fields.
- ENDMETHOD. "build_partner_com
- METHOD build_text_com.
- INCLUDE : crm_object_names_con, crm_object_kinds_con.
- DATA : ls_text_com TYPE crmt_text_com,
- ls_input_fields TYPE crmt_input_field,
- ls_field_names TYPE crmt_input_field_names.
- * build text communication data
- ls_text_com-ref_guid = io_crm_order->get_crm_obj_guid( ).
- ls_text_com-ref_kind = io_crm_order->get_crm_obj_kind( ).
- ls_text_com-tdid = iv_text_id.
- ls_text_com-tdspras = sy-langu.
- ls_text_com-tdstyle = 'SYSTEM'.
- ls_text_com-tdform = 'SYSTEM'.
- ls_text_com-lines = it_text.
- ls_text_com-mode = 'A'.
- INSERT ls_text_com INTO TABLE ct_text_com.
- * build input fields
- ls_input_fields-ref_guid = io_crm_order->get_crm_obj_guid( ).
- ls_input_fields-ref_kind = io_crm_order->get_crm_obj_kind( ).
- ls_input_fields-objectname = gc_object_name-texts.
- ls_input_fields-logical_key = ls_input_fields-ref_guid.
- IF ls_input_fields-ref_kind = gc_object_kind-orderadm_h.
- CONCATENATE 'CRM_ORDERH' ls_input_fields-logical_key
- INTO ls_input_fields-logical_key.
- ELSE.
- CONCATENATE 'CRM_ORDERI' ls_input_fields-logical_key
- INTO ls_input_fields-logical_key.
- ENDIF.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'LINES'.
- INSERT ls_field_names INTO TABLE ls_input_fields-field_names.
- INSERT ls_input_fields INTO TABLE ct_input_fields.
- ENDMETHOD. "build_text_com
- METHOD build_lead_com.
- INCLUDE : crm_object_names_con.
- DATA : lv_lead_h_guid TYPE crmt_object_guid,
- ls_lead_h_wrk TYPE crmt_lead_h_wrk,
- ls_lead_com TYPE crmt_lead_h_com,
- ls_input_fields TYPE crmt_input_field,
- ls_field_names TYPE crmt_input_field_names.
- lv_lead_h_guid = io_crm_order->get_crm_obj_guid( ).
- * read Lead header from object buffer
- CALL FUNCTION 'CRM_LEAD_H_READ_OW'
- EXPORTING
- iv_ref_guid = lv_lead_h_guid
- IMPORTING
- es_lead_h_wrk = ls_lead_h_wrk
- EXCEPTIONS
- lead_header_not_found = 1
- OTHERS = 2.
- * build lead communication data
- MOVE-CORRESPONDING ls_lead_h_wrk TO ls_lead_com.
- ls_lead_com-ref_guid = io_crm_order->get_crm_obj_guid( ).
- ls_lead_com-importance = iv_priority.
- ls_lead_com-lead_type = iv_lead_group.
- INSERT ls_lead_com INTO TABLE ct_lead_h_com.
- * build input fields
- ls_input_fields-ref_guid = io_crm_order->get_crm_obj_guid( ).
- ls_input_fields-ref_kind = io_crm_order->get_crm_obj_kind( ).
- ls_input_fields-objectname = gc_object_name-lead_h.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'IMPORTANCE'.
- INSERT ls_field_names INTO TABLE ls_input_fields-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'LEAD_TYPE'.
- INSERT ls_field_names INTO TABLE ls_input_fields-field_names.
- INSERT ls_input_fields INTO TABLE ct_input_fields.
- ENDMETHOD. "build_lead_com
- METHOD build_orderadm_i_com.
- INCLUDE : crm_object_names_con,
- crm_object_kinds_con,
- crm_changeable_con,
- crm_mode_con.
- DATA : lv_orderadm_h_guid TYPE crmt_object_guid,
- lv_item_guid TYPE crmt_object_guid,
- lv_item_handle TYPE crmt_handle,
- ls_lead_h_wrk TYPE crmt_orderadm_i_com,
- ls_orderadm_i TYPE crmt_orderadm_i_com,
- ls_schedlin_i TYPE crmt_schedlin_i_com,
- ls_product_i TYPE crmt_product_i_com,
- ls_pricing_i TYPE crmt_pricing_i_com,
- ls_pricing TYPE crmt_pricing_com,
- ls_orderadm_h TYPE crmt_orderadm_h_wrk,
- ls_pridoc TYPE crmt_pridoc_com,
- lt_cond_add TYPE prct_cond_external_input_t,
- ls_cond_add TYPE prct_cond_external_input,
- lt_input_field TYPE crmt_input_field_tab,
- ls_input_field TYPE crmt_input_field,
- ls_field_names TYPE crmt_input_field_names.
- DATA : ls_partner_com TYPE crmt_partner_com,
- ls_partner_key TYPE crmt_partner_logic_partner_key,
- lv_ordered_prod TYPE comt_product_id.
- * CONSTANTS : lc_ordered_prod TYPE comt_product_id VALUE 'SPORDTEST'. "'CERMUG288'
- lv_orderadm_h_guid = io_crm_order->get_crm_obj_guid( ).
- CALL FUNCTION 'CRM_ORDERADM_H_READ_OW'
- EXPORTING
- iv_orderadm_h_guid = lv_orderadm_h_guid
- IMPORTING
- es_orderadm_h_wrk = ls_orderadm_h
- EXCEPTIONS
- admin_header_not_found = 1
- OTHERS = 2.
- SELECT SINGLE product_id INTO lv_ordered_prod FROM zisa_sp_product
- WHERE process_type = ls_orderadm_h-process_type.
- CALL FUNCTION 'CRM_GUID_CREATE'
- IMPORTING
- ev_guid = lv_item_guid.
- ls_orderadm_i-mode = gc_mode-create.
- lv_item_handle = '200'.
- * Create a new Admin item (includes Product ID) for the order.
- ls_orderadm_i-header = lv_orderadm_h_guid.
- ls_orderadm_i-guid = lv_item_guid.
- ls_orderadm_i-header_handle = '100'.
- ls_orderadm_i-handle = lv_item_handle.
- ls_orderadm_i-ordered_prod = lv_ordered_prod.
- ls_orderadm_i-description = is_sorder_data-product_desc.
- ls_orderadm_i-itm_language = 'E'.
- * ls_orderadm_i-itm_type = 'ZTAN'. "Sales Item
- INSERT ls_orderadm_i INTO TABLE ct_orderadm_i.
- * - input fields.
- CLEAR: ls_input_field, ls_field_names.
- ls_input_field-ref_handle = lv_item_handle.
- ls_input_field-ref_guid = lv_item_guid.
- ls_input_field-ref_kind = gc_object_ref_kind-orderadm_i.
- ls_input_field-objectname = gc_object_name-orderadm_i.
- ls_field_names-fieldname = 'DESCRIPTION'.
- ls_field_names-changeable = gc_changeable-no_check.
- INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- ls_field_names-fieldname = 'ORDERED_PROD'.
- ls_field_names-changeable = gc_changeable-yes.
- INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- ls_field_names-fieldname = 'ITM_LANGUAGE'.
- INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- INSERT ls_input_field INTO TABLE ct_input_fields.
- * Handy function to reset total shcedule line qty.
- CALL FUNCTION 'CRM_SCHEDLIN_I_SET_TTLQTY_OW'
- EXPORTING
- iv_item_guid = lv_item_guid
- iv_total_qty = '1'
- IMPORTING
- es_schedlin_i_com = ls_schedlin_i
- et_input_fields = lt_input_field
- EXCEPTIONS
- error_occurred = 1
- OTHERS = 2.
- ls_schedlin_i-ref_handle = lv_item_handle.
- INSERT ls_schedlin_i INTO TABLE ct_schedlin_i.
- LOOP AT lt_input_field INTO ls_input_field.
- ls_input_field-ref_handle = lv_item_handle.
- INSERT ls_input_field INTO TABLE ct_input_fields.
- ENDLOOP.
- *********FILL IT_PRIDOC
- *Item Level Conditions Tab
- ls_pridoc-ref_guid = lv_item_guid.
- ls_pridoc-ref_handle = lv_item_handle.
- ls_pridoc-ref_kind = gc_object_ref_kind-orderadm_i.
- ls_cond_add-kschl = 'ZVKP'.
- ls_cond_add-kbetr = is_sorder_data-sellprice.
- ls_cond_add-kpein = '1'.
- INSERT ls_cond_add INTO TABLE lt_cond_add.
- CLEAR ls_cond_add.
- ls_pridoc-cond_add = lt_cond_add.
- CLEAR lt_cond_add[].
- INSERT ls_pridoc INTO TABLE ct_pridoc .
- ls_input_field-ref_guid = lv_item_guid.
- ls_input_field-ref_kind = gc_object_ref_kind-orderadm_i.
- ls_input_field-ref_handle = lv_item_handle.
- ls_input_field-objectname = gc_object_name-pridoc.
- *** Fill currency into et_pricing and corresponding et_input_fields
- *
- * ls_pricing-ref_guid = lv_item_guid.
- * ls_pricing-ref_handle = lv_item_handle.
- * ls_pricing-ref_kind = gc_object_ref_kind-orderadm_i.
- * ls_pricing-currency = 'AUD'. "i.e. field CURRENCY
- * INSERT ls_pricing INTO TABLE ct_pricing.
- *
- * ls_field_names-fieldname = 'CURRENCY'.
- * INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- *
- * ls_input_field-ref_guid = lv_item_guid.
- * ls_input_field-ref_handle = lv_item_handle.
- * ls_input_field-ref_kind = gc_object_ref_kind-orderadm_i.
- * ls_input_field-objectname = gc_object_name-pricing.
- * INSERT ls_input_field INTO TABLE ct_input_fields.
- *
- ** Build Pricing_i for the item.
- * ls_pricing_i-ref_guid = lv_item_guid.
- * ls_pricing_i-ref_handle = lv_item_handle.
- * ls_pricing_i-net_value_man = is_sorder_data-sellprice.
- * ls_pricing_i-target_value = is_sorder_data-sellprice.
- * ls_pricing_i-cost_amount_man = is_sorder_data-costprice.
- * INSERT ls_pricing_i INTO TABLE ct_pricing_i.
- *
- ** - input fields.
- * CLEAR: ls_input_field, ls_field_names.
- * ls_input_field-ref_handle = lv_item_handle.
- * ls_input_field-ref_guid = lv_item_guid.
- * ls_input_field-ref_kind = gc_object_ref_kind-orderadm_i.
- * ls_input_field-objectname = gc_object_name-pricing_i.
- * ls_field_names-fieldname = 'NET_VALUE_MAN'.
- * INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- * ls_field_names-fieldname = 'TARGET_VALUE'.
- * INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- * ls_field_names-fieldname = 'COST_AMOUNT_MAN'.
- * INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- * INSERT ls_input_field INTO TABLE ct_input_fields.
- ** Build Product Unit for the item.
- * ls_product_i-ref_guid = lv_item_guid.
- * ls_product_i-ref_handle = lv_item_handle.
- * ls_input_field-objectname = gc_object_name-product_i.
- * ls_product_i-process_qty_unit = 'EA'.
- * INSERT ls_product_i INTO TABLE ct_product_i.
- ** - input fields.
- * CLEAR: ls_input_field, ls_field_names.
- * ls_input_field-ref_handle = lv_item_handle.
- * ls_input_field-ref_guid = lv_item_guid.
- * ls_input_field-ref_kind = gc_object_ref_kind-orderadm_i.
- * ls_input_field-objectname = gc_object_name-product_i.
- * ls_field_names-fieldname = 'PROCESS_QTY_UNIT'.
- * INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- * INSERT ls_input_field INTO TABLE ct_input_fields.
- * build partner communication data
- ls_partner_com-ref_guid = io_crm_order->get_crm_obj_guid( ).
- ls_partner_com-ref_kind = io_crm_order->get_crm_obj_kind( ).
- ls_partner_com-partner_no = is_sorder_data-bu_partner_org.
- ls_partner_com-partner_fct = iv_partner_fct.
- ls_partner_com-mainpartner = 'X'.
- ls_partner_com-display_type = 'BP'.
- ls_partner_com-no_type = 'BP'.
- INSERT ls_partner_com INTO TABLE ct_partner_com.
- * build input fields
- ls_input_field-ref_guid = io_crm_order->get_crm_obj_guid( ).
- ls_input_field-ref_kind = io_crm_order->get_crm_obj_kind( ).
- ls_input_field-objectname = gc_object_name-partner.
- MOVE-CORRESPONDING ls_partner_com TO ls_partner_key.
- ls_input_field-logical_key = ls_partner_key.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'PARTNER_NO'.
- INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'PARTNER_FCT'.
- INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'MAINPARTNER'.
- INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'DISPLAY_TYPE'.
- INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'NO_TYPE'.
- INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'REF_PARTNER_NO'.
- INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'REF_PARTNER_FCT'.
- INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'REF_DISPLAY_TYPE'.
- INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- CLEAR : ls_field_names.
- ls_field_names-fieldname = 'REF_NO_TYPE'.
- INSERT ls_field_names INTO TABLE ls_input_field-field_names.
- INSERT ls_input_field INTO TABLE ct_input_fields.
- ENDMETHOD. "build_orderadm_i_com
- METHOD call_order_maintain.
- DATA : lt_input_fields TYPE crmt_input_field_tab.
- * call maintain API
- lt_input_fields = it_input_fields.
- CALL FUNCTION 'CRM_ORDER_MAINTAIN'
- EXPORTING
- it_lead_h = it_lead_h_com
- it_partner = it_partner_com
- it_status = it_status_com
- it_pricing = it_pricing
- it_pricing_i = it_pricing_i
- it_product_i = it_product_i
- it_pridoc = ct_pridoc
- it_text = it_text_com
- it_schedlin_i = it_schedlin_i
- CHANGING
- ct_orderadm_i = ct_orderadm_i
- ct_input_fields = lt_input_fields
- EXCEPTIONS
- error_occurred = 1
- document_locked = 2
- no_change_allowed = 3
- no_authority = 4
- OTHERS = 5.
- IF sy-subrc <> 0.
- ev_error = abap_true.
- ELSE.
- ev_error = abap_false.
- ENDIF.
- ENDMETHOD. "call_order_maintain
- METHOD get_header_guid.
- INCLUDE : crm_object_kinds_con.
- DATA : lv_object_guid TYPE crmt_object_guid.
- IF io_crm_order->get_crm_obj_kind( ) = gc_object_kind-orderadm_i.
- lv_object_guid = io_crm_order->get_crm_obj_guid( ).
- CALL FUNCTION 'CRM_ORDERADM_I_READ_OW'
- EXPORTING
- iv_guid = lv_object_guid
- IMPORTING
- ev_header_guid = ev_header_guid
- EXCEPTIONS
- item_not_found = 1
- OTHERS = 2.
- ELSE.
- ev_header_guid = io_crm_order->get_crm_obj_guid( ).
- ENDIF.
- ENDMETHOD. "get_header_guid
- METHOD get_header_detail.
- CALL FUNCTION 'CRM_ORDERADM_H_READ_OW'
- EXPORTING
- iv_orderadm_h_guid = iv_header_guid
- IMPORTING
- ev_object_id = ev_object_id
- EXCEPTIONS
- admin_header_not_found = 1
- OTHERS = 2.
- ENDMETHOD. "get_header_guid
- ENDCLASS. "lcl_1o_service IMPLEMENTATION
- *----------------------------------------------------------------------*
- * CLASS lcl_partner_service IMPLEMENTATION
- *----------------------------------------------------------------------*
- *
- *----------------------------------------------------------------------*
- CLASS lcl_partner_service IMPLEMENTATION.
- METHOD constructor.
- gv_input_channel = iv_input_channel.
- * fill instance attributes
- SELECT *
- FROM zbp_user_dflt_c
- INTO TABLE gt_user_defaults.
- ENDMETHOD. "constructor
- METHOD create_organisation.
- DATA:
- ls_central TYPE bapibus1006_central,
- ls_bp_org TYPE bapibus1006_central_organ,
- ls_address TYPE bapibus1006_address,
- lt_telephone TYPE STANDARD TABLE OF bapiadtel,
- ls_telephone TYPE bapiadtel,
- lt_fax TYPE STANDARD TABLE OF bapiadfax,
- ls_fax TYPE bapiadfax,
- lt_email TYPE STANDARD TABLE OF bapiadsmtp,
- ls_email TYPE bapiadsmtp,
- lv_role TYPE bu_role,
- ls_tax_number TYPE dfkkbptaxnum,
- ls_industry_sector TYPE but0is,
- lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2,
- lt_refer_check TYPE STANDARD TABLE OF zwr_refer_check,
- ls_refer_check LIKE LINE OF lt_refer_check,
- lv_reference TYPE bu_partner.
- * Category for creating Organization
- CONSTANTS:
- lc_category_org TYPE bu_type VALUE '2'.
- * reference to search term 2
- * as Goran's program required, all 'cpa' relative reference would be save as 'CPA'.
- * lv_reference = is_extra_data-store_id.
- * TRANSLATE lv_reference TO UPPER CASE.
- * SELECT * FROM zwr_refer_check INTO TABLE lt_refer_check.
- * LOOP AT lt_refer_check INTO ls_refer_check.
- * IF lv_reference = ls_refer_check-zrefer.
- * ls_central-searchterm2 = 'CPA'.
- * EXIT.
- * ENDIF.
- * ENDLOOP.
- **********************************************
- * the new buying group process requires that the 'customer reference' is saved into the serach term2.
- ls_central-searchterm2 = is_extra_data-store_id.
- * map basic data
- ls_central-title_key = is_org_data-title.
- ls_bp_org-name1 = is_org_data-name1 .
- ls_bp_org-name2 = is_org_data-name2 .
- ls_bp_org-name3 = is_org_data-name3 .
- ls_bp_org-legalform = is_extra_data-entity .
- ls_bp_org-foundationdate = is_extra_data-date_establish.
- IF is_org_data-org_bpkind = 'DEMO'.
- ls_central-partnertype = is_org_data-org_bpkind.
- ENDIF.
- TRANSLATE:
- ls_bp_org-name1 TO UPPER CASE,
- ls_bp_org-name2 TO UPPER CASE,
- ls_bp_org-name3 TO UPPER CASE.
- * map address details
- ls_address-house_no = is_addr_data-house_num1.
- ls_address-street = is_addr_data-street.
- ls_address-city = is_addr_data-city1.
- ls_address-postl_cod1 = is_addr_data-post_code1.
- ls_address-region = is_addr_data-region.
- ls_address-country = is_addr_data-country.
- ls_address-comm_type = is_addr_data-comm_type.
- ls_address-pcode1_ext = is_addr_data-pcode1_ext.
- ls_address-pcode2_ext = is_addr_data-pcode2_ext.
- * maintain communication details
- IF is_comm_data-telephone IS NOT INITIAL.
- ls_telephone-telephone = is_comm_data-telephone.
- APPEND ls_telephone TO lt_telephone.
- ENDIF.
- IF is_comm_data-fax IS NOT INITIAL.
- ls_fax-fax = is_comm_data-fax.
- APPEND ls_fax TO lt_fax.
- ENDIF.
- IF is_comm_data-email IS NOT INITIAL.
- ls_email-e_mail = is_comm_data-email.
- APPEND ls_email TO lt_email.
- ENDIF.
- * Create business partner
- READ TABLE is_org_data-org_roles
- TRANSPORTING NO FIELDS
- FROM 'CRM006'.
- IF sy-subrc = 0.
- CALL FUNCTION 'BAPI_BPCONSUMER_CREATE'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- partner_category = lc_category_org
- partner_central_data = ls_central
- central_data_organization = ls_bp_org
- partner_addr = ls_address
- duplicate_message_type_addr = '-'
- * ACCEPT_ERROR_ADDR =
- IMPORTING
- businesspartner = ev_partner
- TABLES
- partner_tel_addr = lt_telephone
- partner_fax_addr = lt_fax
- partner_email_addr = lt_email
- return = lt_return.
- ELSE.
- CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- partnercategory = lc_category_org
- centraldata = ls_central
- centraldataorganization = ls_bp_org
- addressdata = ls_address
- duplicate_message_type = '-'
- * ACCEPT_ERROR = ' '
- IMPORTING
- businesspartner = ev_partner
- TABLES
- telefondata = lt_telephone
- faxdata = lt_fax
- e_maildata = lt_email
- return = lt_return.
- ENDIF.
- * check for errors
- LOOP AT lt_return
- INTO ls_return
- WHERE type CA 'EAX'.
- APPEND ls_return TO et_error_messages.
- ENDLOOP.
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- * add roles
- LOOP AT is_org_data-org_roles
- INTO lv_role.
- IF lv_role <> 'CRM006'.
- me->add_role(
- EXPORTING iv_partner = ev_partner
- iv_role = lv_role
- CHANGING ct_error_messages = et_error_messages ).
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDIF.
- ENDLOOP.
- * add tax number
- IF is_extra_data-abn IS NOT INITIAL.
- me->add_tax_number(
- EXPORTING iv_partner = ev_partner
- iv_tax_type = is_extra_data-tax_type
- iv_tax_number = is_extra_data-abn
- CHANGING ct_error_messages = et_error_messages ).
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDIF.
- LOOP AT is_extra_data-tax_numbers
- INTO ls_tax_number.
- me->add_tax_number(
- EXPORTING iv_partner = ev_partner
- iv_tax_type = ls_tax_number-taxtype
- iv_tax_number = ls_tax_number-taxnum
- CHANGING ct_error_messages = et_error_messages ).
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDLOOP.
- * industry sector
- LOOP AT is_extra_data-industry
- INTO ls_industry_sector.
- me->add_industry_sector(
- EXPORTING iv_partner = ev_partner
- iv_system = ls_industry_sector-istype
- iv_sector = ls_industry_sector-ind_sector
- CHANGING ct_error_messages = et_error_messages ).
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDLOOP.
- ENDMETHOD. "create_organisation
- METHOD update_organisation.
- DATA:
- ls_central TYPE bapibus1006_central,
- ls_central_old TYPE bapibus1006_central,
- ls_central_x TYPE bapibus1006_central_x,
- ls_bp_org_old TYPE bapibus1006_central_organ,
- ls_bp_org TYPE bapibus1006_central_organ,
- ls_bp_org_x TYPE bapibus1006_central_organ_x,
- lv_role TYPE bu_role,
- ls_tax_number TYPE dfkkbptaxnum,
- ls_industry_sector TYPE but0is,
- lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2.
- * Category for Organization
- CONSTANTS:
- lc_category_org TYPE bu_type VALUE '2'.
- * map basic data
- ls_central-title_key = is_org_data-title.
- ls_bp_org-name1 = is_org_data-name1 .
- ls_bp_org-name2 = is_org_data-name2 .
- ls_bp_org-name3 = is_org_data-name3 .
- ls_bp_org-legalform = is_extra_data-entity .
- ls_bp_org-foundationdate = is_extra_data-date_establish.
- TRANSLATE:
- ls_bp_org-name1 TO UPPER CASE,
- ls_bp_org-name2 TO UPPER CASE,
- ls_bp_org-name3 TO UPPER CASE.
- * call FM to change BP if any structure field value has changed.
- CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL'
- EXPORTING
- businesspartner = iv_partner
- IMPORTING
- * centraldata = ls_central_old
- centraldataorganization = ls_bp_org_old
- TABLES
- return = lt_return.
- me->assign_xstructure(
- EXPORTING is_old_structure = ls_bp_org_old
- CHANGING cs_new_structure = ls_bp_org
- cs_x_structure = ls_bp_org_x ).
- IF ls_bp_org_x IS NOT INITIAL.
- CALL FUNCTION 'BAPI_BUPA_CENTRAL_CHANGE'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- centraldataorganization = ls_bp_org
- centraldataorganization_x = ls_bp_org_x
- TABLES
- return = lt_return.
- ** check for errors
- LOOP AT lt_return
- INTO ls_return
- WHERE type CA 'EAX'.
- APPEND ls_return TO et_error_messages.
- ENDLOOP.
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDIF.
- *update the customer reference*
- IF is_extra_data-store_id IS NOT INITIAL.
- ls_central-searchterm2 = is_extra_data-store_id.
- ls_central_x-searchterm2 = 'X'.
- CALL FUNCTION 'BAPI_BUPA_CENTRAL_CHANGE'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- centraldata = ls_central
- centraldata_x = ls_central_x
- TABLES
- return = lt_return.
- ** check for errors
- LOOP AT lt_return
- INTO ls_return
- WHERE type CA 'EAX'.
- APPEND ls_return TO et_error_messages.
- ENDLOOP.
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDIF.
- ************************************************
- *if webrequest is from websphere commerce dont update org address or abn
- IF zcl_channel_util=>is_via_webservice( gv_input_channel ) EQ abap_false.
- me->addressupdate( EXPORTING iv_partner = iv_partner
- is_addr_data = is_addr_data
- is_comm_data = is_comm_data
- CHANGING ct_error_messages = et_error_messages ).
- * add/update roles
- LOOP AT is_org_data-org_roles
- INTO lv_role.
- IF lv_role <> 'CRM006'.
- me->add_role(
- EXPORTING iv_partner = iv_partner
- iv_role = lv_role
- CHANGING ct_error_messages = et_error_messages ).
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDIF.
- ENDLOOP.
- * update tax number
- IF is_extra_data-abn IS NOT INITIAL.
- me->update_tax_number(
- EXPORTING iv_partner = iv_partner
- iv_tax_type = is_extra_data-tax_type
- iv_tax_number = is_extra_data-abn
- CHANGING ct_error_messages = et_error_messages ).
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDIF.
- LOOP AT is_extra_data-tax_numbers
- INTO ls_tax_number.
- me->update_tax_number(
- EXPORTING iv_partner = iv_partner
- iv_tax_type = ls_tax_number-taxtype
- iv_tax_number = ls_tax_number-taxnum
- CHANGING ct_error_messages = et_error_messages ).
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDLOOP.
- ENDIF.
- * industry sector
- LOOP AT is_extra_data-industry
- INTO ls_industry_sector.
- me->update_industry_sector(
- EXPORTING iv_partner = iv_partner
- iv_system = ls_industry_sector-istype
- iv_sector = ls_industry_sector-ind_sector
- CHANGING ct_error_messages = et_error_messages ).
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDLOOP.
- ENDMETHOD. "update_organisation
- METHOD assign_xstructure.
- DATA : lv_index TYPE syindex.
- FIELD-SYMBOLS : <iv_old_value> TYPE ANY,
- <iv_new_value> TYPE ANY,
- <iv_new_value_x> TYPE ANY.
- DO.
- lv_index = sy-index.
- ASSIGN COMPONENT lv_index
- OF STRUCTURE cs_new_structure TO <iv_new_value>.
- IF sy-subrc <> 0. EXIT. ENDIF.
- ASSIGN COMPONENT lv_index
- OF STRUCTURE is_old_structure TO <iv_old_value>.
- IF sy-subrc <> 0. EXIT. ENDIF.
- ASSIGN COMPONENT lv_index
- OF STRUCTURE cs_x_structure TO <iv_new_value_x>.
- me->compare_value(
- EXPORTING iv_old_value = <iv_old_value>
- CHANGING cv_new_value = <iv_new_value>
- cv_new_value_x = <iv_new_value_x> ).
- ENDDO.
- ENDMETHOD. "assign_xstructure.
- METHOD compare_value.
- IF iv_old_value <> cv_new_value.
- *if webrequest is from websphere commerce and no value is pass then dont update
- IF zcl_channel_util=>is_via_webservice( gv_input_channel ) EQ abap_true AND cv_new_value IS INITIAL.
- cv_new_value_x = if_crm_boolean=>false.
- CLEAR : cv_new_value.
- ELSE.
- cv_new_value_x = if_crm_boolean=>true.
- ENDIF.
- ELSE.
- cv_new_value_x = if_crm_boolean=>false.
- CLEAR : cv_new_value.
- ENDIF.
- ENDMETHOD. " compare_value
- METHOD create_person.
- DATA:
- ls_central TYPE bapibus1006_central,
- ls_bp_person TYPE bapibus1006_central_person,
- ls_address TYPE bapibus1006_address,
- lt_telephone TYPE STANDARD TABLE OF bapiadtel,
- ls_telephone TYPE bapiadtel,
- lt_fax TYPE STANDARD TABLE OF bapiadfax,
- ls_fax TYPE bapiadfax,
- lt_email TYPE STANDARD TABLE OF bapiadsmtp,
- ls_email TYPE bapiadsmtp,
- lv_role TYPE bu_role,
- lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2.
- * Category for creating person
- CONSTANTS:
- lc_person_org TYPE bu_type VALUE '1'.
- * map basic data
- ls_central-title_key = is_person_data-title_p.
- ls_central-partnerlanguage = is_person_data-langu_cr_p.
- CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT'
- EXPORTING
- input = ls_central-partnerlanguage
- IMPORTING
- output = ls_central-partnerlanguageiso.
- ls_bp_person-firstname = is_person_data-name_first.
- ls_bp_person-lastname = is_person_data-name_last.
- ls_bp_person-correspondlanguage = is_person_data-langu_cr_p.
- CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT'
- EXPORTING
- input = ls_bp_person-correspondlanguage
- IMPORTING
- output = ls_bp_person-correspondlanguageiso.
- IF is_person_data-per_bpkind = 'DEMO'.
- ls_central-partnertype = is_person_data-per_bpkind.
- ENDIF.
- * map address details
- ls_address-house_no = is_addr_data-house_num1.
- ls_address-street = is_addr_data-street.
- ls_address-city = is_addr_data-city1.
- ls_address-postl_cod1 = is_addr_data-post_code1.
- ls_address-region = is_addr_data-region.
- ls_address-country = is_addr_data-country.
- ls_address-comm_type = is_addr_data-comm_type.
- ls_address-pcode1_ext = is_addr_data-pcode1_ext.
- ls_address-pcode2_ext = is_addr_data-pcode2_ext.
- * maintain communication details
- IF is_comm_data-telephone IS NOT INITIAL.
- ls_telephone-telephone = is_comm_data-telephone.
- APPEND ls_telephone TO lt_telephone.
- ENDIF.
- IF is_comm_data-mobile IS NOT INITIAL.
- ls_telephone-telephone = is_comm_data-mobile.
- ls_telephone-r_3_user = '2'.
- APPEND ls_telephone TO lt_telephone.
- ENDIF.
- IF is_comm_data-fax IS NOT INITIAL.
- ls_fax-fax = is_comm_data-fax.
- APPEND ls_fax TO lt_fax.
- ENDIF.
- IF is_comm_data-email IS NOT INITIAL.
- ls_email-e_mail = is_comm_data-email.
- APPEND ls_email TO lt_email.
- ENDIF.
- * Create business partner
- READ TABLE is_person_data-person_roles
- TRANSPORTING NO FIELDS
- FROM 'CRM006'.
- IF sy-subrc = 0.
- CALL FUNCTION 'BAPI_BPCONSUMER_CREATE'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- partner_category = lc_person_org
- partner_central_data = ls_central
- central_data_person = ls_bp_person
- partner_addr = ls_address
- duplicate_message_type_addr = '-'
- accept_error_addr = iv_accept_error
- IMPORTING
- businesspartner = ev_partner
- TABLES
- partner_tel_addr = lt_telephone
- partner_fax_addr = lt_fax
- partner_email_addr = lt_email
- return = lt_return.
- ELSE.
- CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- partnercategory = lc_person_org
- centraldata = ls_central
- centraldataperson = ls_bp_person
- addressdata = ls_address
- duplicate_message_type = '-'
- accept_error = iv_accept_error
- IMPORTING
- businesspartner = ev_partner
- TABLES
- telefondata = lt_telephone
- faxdata = lt_fax
- e_maildata = lt_email
- return = lt_return.
- ENDIF.
- * check for errors
- LOOP AT lt_return
- INTO ls_return
- WHERE type CA 'EAX'.
- APPEND ls_return TO et_error_messages.
- ENDLOOP.
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- * add roles
- LOOP AT is_person_data-person_roles
- INTO lv_role.
- IF lv_role <> 'CRM006'.
- me->add_role(
- EXPORTING iv_partner = ev_partner
- iv_role = lv_role
- CHANGING ct_error_messages = et_error_messages ).
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDIF.
- ENDLOOP.
- ENDMETHOD. "create_person
- METHOD update_30day_person.
- DATA:
- ls_address_data_old TYPE bapibus1006_address,
- ls_address_new TYPE bapibus1006_address,
- ls_address_new_x TYPE bapibus1006_address_x,
- lt_bapiadtel_old TYPE TABLE OF bapiadtel,
- lt_bapiadsmtp_old TYPE TABLE OF bapiadsmtp,
- ls_bapiadtel_old TYPE bapiadtel,
- ls_bapiadsmtp_old TYPE bapiadsmtp,
- lt_bapiadtel_new TYPE STANDARD TABLE OF bapiadtel,
- ls_telephone TYPE bapiadtel,
- lt_bapiadtel_new_x TYPE TABLE OF bapiadtelx,
- ls_bapiadtel_new_x TYPE bapiadtelx,
- lt_bapiadsmtp_new TYPE STANDARD TABLE OF bapiadsmtp,
- ls_email TYPE bapiadsmtp,
- lt_bapiadsmt_new_x TYPE TABLE OF bapiadsmtx,
- ls_bapiadsmt_new_x TYPE bapiadsmtx,
- lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2.
- * Maintain Address
- CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL'
- EXPORTING
- businesspartner = iv_partner
- IMPORTING
- addressdata = ls_address_data_old
- TABLES
- bapiadtel = lt_bapiadtel_old
- bapiadsmtp = lt_bapiadsmtp_old
- return = lt_return.
- * map address details
- IF ls_address_data_old-comm_type IS INITIAL.
- ls_address_new-comm_type = is_addr_data-comm_type.
- me->compare_value(
- EXPORTING iv_old_value = ls_address_data_old-comm_type
- CHANGING cv_new_value = ls_address_new-comm_type
- cv_new_value_x = ls_address_new_x-comm_type ).
- ENDIF.
- * maintain communication details
- IF is_comm_data-telephone IS NOT INITIAL.
- READ TABLE lt_bapiadtel_old INTO ls_bapiadtel_old WITH KEY std_no = if_crm_boolean=>true.
- IF ls_bapiadtel_old-telephone NE is_comm_data-telephone.
- ls_telephone = ls_bapiadtel_old.
- ls_telephone-telephone = is_comm_data-telephone.
- APPEND ls_telephone TO lt_bapiadtel_new.
- ls_bapiadtel_new_x-telephone = if_crm_boolean=>true.
- IF ls_bapiadtel_old-telephone IS NOT INITIAL.
- ls_bapiadtel_new_x-updateflag = 'U'.
- ELSE.
- ls_bapiadtel_new_x-updateflag = 'I'.
- ENDIF.
- APPEND ls_bapiadtel_new_x TO lt_bapiadtel_new_x.
- ENDIF.
- ENDIF.
- IF is_comm_data-email IS NOT INITIAL.
- READ TABLE lt_bapiadsmtp_old INTO ls_bapiadsmtp_old WITH KEY std_no = if_crm_boolean=>true.
- IF ls_bapiadsmtp_old-e_mail NE is_comm_data-email.
- ls_email = ls_bapiadsmtp_old.
- ls_email-e_mail = is_comm_data-email.
- APPEND ls_email TO lt_bapiadsmtp_new.
- ls_bapiadsmt_new_x-e_mail = if_crm_boolean=>true.
- IF ls_bapiadsmtp_old-e_mail IS INITIAL.
- ls_bapiadsmt_new_x-updateflag = 'U'.
- ELSE.
- ls_bapiadsmt_new_x-updateflag = 'I'.
- ENDIF.
- APPEND ls_bapiadsmt_new_x TO lt_bapiadsmt_new_x.
- ENDIF.
- ENDIF.
- *
- IF ls_address_new_x IS NOT INITIAL OR
- lt_bapiadtel_new_x[] IS NOT INITIAL OR
- lt_bapiadsmt_new_x[] IS NOT INITIAL.
- CALL FUNCTION 'BAPI_BUPA_ADDRESS_CHANGE'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- addressdata = ls_address_new
- addressdata_x = ls_address_new_x
- * DUPLICATE_MESSAGE_TYPE =
- * ACCEPT_ERROR = ' '
- TABLES
- bapiadtel = lt_bapiadtel_new
- bapiadsmtp = lt_bapiadsmtp_new
- bapiadtel_x = lt_bapiadtel_new_x
- bapiadsmt_x = lt_bapiadsmt_new_x
- return = lt_return.
- * ADDRESSDUPLICATES =
- ENDIF.
- ENDMETHOD. "update_30day_person
- METHOD create_alt_address.
- DATA: ls_addressusage TYPE bapibus1006_addressusage,
- lt_addressusage TYPE STANDARD TABLE OF bapibus1006_addressusage.
- * set up the address type to delivery....
- ls_addressusage-addresstype = iv_adrkind. " 'ZOW_DELIV'.
- ls_addressusage-standardaddressusage = 'X'.
- INSERT ls_addressusage INTO TABLE lt_addressusage.
- * if postal address exists update in background
- CALL FUNCTION 'BAPI_BUPA_ADDRESS_ADD'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- addressdata = is_address
- duplicate_message_type = '-'
- accept_error = 'X'
- TABLES
- addressusage = lt_addressusage
- return = et_error_messages.
- * return error messages
- DELETE et_error_messages WHERE type <> 'E'.
- ENDMETHOD. " create_delivery_address
- METHOD create_cp_relationship.
- DATA : lv_address_guid TYPE bu_address_guid,
- lv_address_guid_bapi TYPE bu_address_guid_bapi,
- lt_telephone TYPE STANDARD TABLE OF bapiadtel,
- ls_telephone TYPE bapiadtel,
- lt_fax TYPE STANDARD TABLE OF bapiadfax,
- ls_fax TYPE bapiadfax,
- lt_email TYPE STANDARD TABLE OF bapiadsmtp,
- ls_email TYPE bapiadsmtp,
- lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2.
- * get org address details
- CALL FUNCTION 'BUPA_ADDRESSES_GET'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- iv_partner = iv_partner
- IMPORTING
- ev_standard_addrguid = lv_address_guid.
- * add contact person role for business partner
- me->add_role(
- EXPORTING iv_partner = iv_partner_cp
- iv_role = 'BUP001'
- CHANGING ct_error_messages = et_error_messages ).
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- * maintain communication details
- IF is_comm_data-telephone IS NOT INITIAL.
- ls_telephone-telephone = is_comm_data-telephone.
- APPEND ls_telephone TO lt_telephone.
- ENDIF.
- IF is_comm_data-mobile IS NOT INITIAL.
- ls_telephone-telephone = is_comm_data-mobile.
- ls_telephone-r_3_user = '2'.
- APPEND ls_telephone TO lt_telephone.
- ENDIF.
- IF is_comm_data-fax IS NOT INITIAL.
- ls_fax-fax = is_comm_data-fax.
- APPEND ls_fax TO lt_fax.
- ENDIF.
- IF is_comm_data-email IS NOT INITIAL.
- ls_email-e_mail = is_comm_data-email.
- APPEND ls_email TO lt_email.
- ENDIF.
- * maintain relationship
- lv_address_guid_bapi = lv_address_guid.
- CALL FUNCTION 'BAPI_BUPR_CONTP_CREATE'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- contactperson = iv_partner_cp
- addressguid = lv_address_guid_bapi
- duplicate_message_type = '-'
- TABLES
- bapiadtel = lt_telephone
- bapiadfax = lt_fax
- bapiadsmtp = lt_email
- return = lt_return.
- * check for errors
- LOOP AT lt_return
- INTO ls_return
- WHERE type CA 'EAX'.
- APPEND ls_return TO et_error_messages.
- ENDLOOP.
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDMETHOD. "create_cp_relationship
- METHOD update_org_mktatt.
- INCLUDE : crm_mode_con.
- DATA: ls_mktbp_wrk TYPE crmt_mktbp_wrk,
- lv_data_changed TYPE xfeld,
- lv_partner_guid TYPE bu_partner_guid,
- ls_mkt_attr TYPE crmt_name_value_pair,
- lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2.
- FIELD-SYMBOLS: <fs_charvalues> TYPE crmt_mktprof_comw.
- * get bp guid
- CALL FUNCTION 'BUPA_NUMBERS_GET'
- EXPORTING
- iv_partner = iv_partner
- IMPORTING
- ev_partner_guid = lv_partner_guid
- TABLES
- et_return = lt_return.
- * ET_PARTNER = .
- IF iv_create IS INITIAL.
- * Check whether this Attribute Set is already assigned
- CALL FUNCTION 'CRM_MKTBP_READ_OW'
- EXPORTING
- iv_bp_guid = lv_partner_guid
- iv_profile_template_id = 'CSC-ORGANISATION'
- IMPORTING
- es_mktbp_wrk = ls_mktbp_wrk
- TABLES
- et_return = lt_return.
- * update with new values
- LOOP AT ls_mktbp_wrk-charvalues ASSIGNING <fs_charvalues>.
- CASE <fs_charvalues>-atname.
- WHEN 'INDUSTRY_BUCKETS'.
- IF <fs_charvalues>-atwrt IS INITIAL.
- *bug from the beginning of time !
- * <fs_charvalues>-atwrt = is_extra_data-no_employees.
- <fs_charvalues>-atwrt = is_extra_data-bus_industry.
- ENDIF.
- WHEN 'OWDNOE'.
- IF <fs_charvalues>-atwrt IS INITIAL.
- *bug from the beginning of time !
- * <fs_charvalues>-atwrt = is_extra_data-bus_industry.
- <fs_charvalues>-atwrt = is_extra_data-no_employees.
- ENDIF.
- ENDCASE.
- ENDLOOP.
- * general update
- LOOP AT ls_mktbp_wrk-charvalues ASSIGNING <fs_charvalues>.
- READ TABLE is_extra_data-marketing_attr
- INTO ls_mkt_attr
- WITH KEY name = <fs_charvalues>-atname.
- IF sy-subrc EQ 0.
- <fs_charvalues>-atwrt = ls_mkt_attr-value.
- ENDIF.
- ENDLOOP.
- ls_mktbp_wrk-mode = gc_mode-change.
- ELSE.
- * create marketing attributes for business partner
- me->new_mktatt(
- EXPORTING iv_partner_guid = lv_partner_guid
- iv_class = 'CSC-ORGANISATION'
- is_extra_data = is_extra_data
- is_bp_mkt = is_bp_mkt
- CHANGING ct_bp_charvalues = ls_mktbp_wrk-charvalues
- ct_error_messages = et_error_messages ).
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDIF.
- * Assign Attribute Set to BP
- CALL FUNCTION 'CRM_MKTBP_MAINTAIN_OW'
- EXPORTING
- is_mktbp_wrk = ls_mktbp_wrk
- IMPORTING
- ev_data_changed = lv_data_changed
- TABLES
- et_return = lt_return.
- * commit changes
- CALL FUNCTION 'CRM_MKTBP_SAVE_OB'
- EXPORTING
- iv_save_all_objects = 'X'
- iv_commit = ' '.
- * check for errors
- LOOP AT lt_return
- INTO ls_return
- WHERE type CA 'EAX'.
- APPEND ls_return TO et_error_messages.
- ENDLOOP.
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDMETHOD. "update_org_mktatt
- METHOD update_per_mktatt.
- DATA: ls_mktbp_wrk TYPE crmt_mktbp_wrk,
- lv_data_changed TYPE xfeld,
- lv_partner_guid TYPE bu_partner_guid,
- lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2.
- FIELD-SYMBOLS: <fs_charvalues> TYPE crmt_mktprof_comw.
- *websphere commerce webrequest does not have these details.
- CHECK zcl_channel_util=>is_via_webservice( gv_input_channel ) EQ abap_false.
- * get bp guid
- CALL FUNCTION 'BUPA_NUMBERS_GET'
- EXPORTING
- iv_partner = iv_partner
- IMPORTING
- ev_partner_guid = lv_partner_guid
- TABLES
- et_return = lt_return.
- * ET_PARTNER = .
- IF iv_create IS INITIAL.
- * Check whether this Attribute Set is already assigned
- CALL FUNCTION 'CRM_MKTBP_READ_OW'
- EXPORTING
- iv_bp_guid = lv_partner_guid
- iv_profile_template_id = 'CSC-CONTACTS'
- IMPORTING
- es_mktbp_wrk = ls_mktbp_wrk
- TABLES
- et_return = lt_return.
- * update with new values
- LOOP AT ls_mktbp_wrk-charvalues ASSIGNING <fs_charvalues>
- WHERE atname = 'LESS_MAIL_FLAGS'.
- CASE <fs_charvalues>-atwrt.
- WHEN 'OPTINOFALLCATALOGUES'.
- IF is_bp_mkt-optinofallcatalogues IS INITIAL.
- DELETE ls_mktbp_wrk-charvalues INDEX sy-tabix.
- ENDIF.
- WHEN 'OPTINFAX'.
- IF is_bp_mkt-optinfax IS INITIAL.
- DELETE ls_mktbp_wrk-charvalues INDEX sy-tabix.
- ENDIF.
- WHEN 'OPTINPHONE'.
- IF is_bp_mkt-optinphone IS INITIAL.
- DELETE ls_mktbp_wrk-charvalues INDEX sy-tabix.
- ENDIF.
- WHEN 'OPTINEMAIL'.
- IF is_bp_mkt-optinemail IS INITIAL.
- DELETE ls_mktbp_wrk-charvalues INDEX sy-tabix.
- ENDIF.
- ENDCASE.
- ENDLOOP.
- * set mode to change
- ls_mktbp_wrk-mode = 'C'.
- ELSE.
- * create marketing attributes for business partner
- me->new_mktatt(
- EXPORTING iv_partner_guid = lv_partner_guid
- iv_class = 'CSC-CONTACTS'
- is_extra_data = is_extra_data
- is_bp_mkt = is_bp_mkt
- CHANGING ct_bp_charvalues = ls_mktbp_wrk-charvalues
- ct_error_messages = et_error_messages ).
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDIF.
- CLEAR lt_return.
- * Assign Attribute Set to BP
- CALL FUNCTION 'CRM_MKTBP_MAINTAIN_OW'
- EXPORTING
- is_mktbp_wrk = ls_mktbp_wrk
- IMPORTING
- ev_data_changed = lv_data_changed
- TABLES
- et_return = lt_return.
- LOOP AT lt_return
- TRANSPORTING NO FIELDS
- WHERE type CA 'EAX'.
- APPEND ls_return TO et_error_messages.
- ENDLOOP.
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- * commit changes
- CALL FUNCTION 'CRM_MKTBP_SAVE_OB'
- EXPORTING
- iv_save_all_objects = 'X'
- iv_commit = ' '.
- * check for errors
- LOOP AT lt_return
- INTO ls_return
- WHERE type CA 'EAX'.
- APPEND ls_return TO et_error_messages.
- ENDLOOP.
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDMETHOD. "update_per_mktatt
- METHOD addressupdate.
- DATA:
- ls_address_data_old TYPE bapibus1006_address,
- lt_bapiadtel_old TYPE TABLE OF bapiadtel,
- lt_bapiadfax_old TYPE TABLE OF bapiadfax,
- lt_bapiadsmtp_old TYPE TABLE OF bapiadsmtp,
- ls_bapiadtel_old TYPE bapiadtel,
- ls_bapiadfax_old TYPE bapiadfax,
- ls_bapiadsmtp_old TYPE bapiadsmtp,
- ls_address_new TYPE bapibus1006_address,
- ls_address_new_x TYPE bapibus1006_address_x,
- lt_bapiadtel_new TYPE STANDARD TABLE OF bapiadtel,
- ls_telephone TYPE bapiadtel,
- lt_bapiadtel_new_x TYPE TABLE OF bapiadtelx,
- ls_bapiadtel_new_x TYPE bapiadtelx,
- lt_bapiadfax_new TYPE STANDARD TABLE OF bapiadfax,
- ls_fax TYPE bapiadfax,
- lt_bapiadfax_new_x TYPE TABLE OF bapiadfaxx,
- ls_bapiadfax_new_x TYPE bapiadfaxx,
- lt_bapiadsmtp_new TYPE STANDARD TABLE OF bapiadsmtp,
- ls_email TYPE bapiadsmtp,
- lt_bapiadsmt_new_x TYPE TABLE OF bapiadsmtx,
- ls_bapiadsmt_new_x TYPE bapiadsmtx,
- lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2.
- * Maintain Address
- CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL'
- EXPORTING
- businesspartner = iv_partner
- IMPORTING
- addressdata = ls_address_data_old
- TABLES
- bapiadtel = lt_bapiadtel_old
- bapiadfax = lt_bapiadfax_old
- bapiadsmtp = lt_bapiadsmtp_old
- return = lt_return.
- LOOP AT lt_return
- TRANSPORTING NO FIELDS
- WHERE type CA 'EAX'.
- APPEND ls_return TO ct_error_messages.
- ENDLOOP.
- IF ct_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- * map address details
- ls_address_new-house_no = is_addr_data-house_num1.
- me->compare_value(
- EXPORTING iv_old_value = ls_address_data_old-house_no
- CHANGING cv_new_value = ls_address_new-house_no
- cv_new_value_x = ls_address_new_x-house_no ).
- ls_address_new-street = is_addr_data-street.
- me->compare_value(
- EXPORTING iv_old_value = ls_address_data_old-street
- CHANGING cv_new_value = ls_address_new-street
- cv_new_value_x = ls_address_new_x-street ).
- ls_address_new-city = is_addr_data-city1.
- me->compare_value(
- EXPORTING iv_old_value = ls_address_data_old-city
- CHANGING cv_new_value = ls_address_new-city
- cv_new_value_x = ls_address_new_x-city ).
- ls_address_new-postl_cod1 = is_addr_data-post_code1.
- me->compare_value(
- EXPORTING iv_old_value = ls_address_data_old-postl_cod1
- CHANGING cv_new_value = ls_address_new-postl_cod1
- cv_new_value_x = ls_address_new_x-postl_cod1 ).
- ls_address_new-region = is_addr_data-region.
- me->compare_value(
- EXPORTING iv_old_value = ls_address_data_old-region
- CHANGING cv_new_value = ls_address_new-region
- cv_new_value_x = ls_address_new_x-region ).
- ls_address_new-comm_type = is_addr_data-comm_type.
- me->compare_value(
- EXPORTING iv_old_value = ls_address_data_old-comm_type
- CHANGING cv_new_value = ls_address_new-comm_type
- cv_new_value_x = ls_address_new_x-comm_type ).
- ls_address_new-pcode1_ext = is_addr_data-pcode1_ext.
- me->compare_value(
- EXPORTING iv_old_value = ls_address_data_old-pcode1_ext
- CHANGING cv_new_value = ls_address_new-pcode1_ext
- cv_new_value_x = ls_address_new_x-pcode1_ext ).
- ls_address_new-pcode2_ext = is_addr_data-pcode2_ext.
- me->compare_value(
- EXPORTING iv_old_value = ls_address_data_old-pcode2_ext
- CHANGING cv_new_value = ls_address_new-pcode2_ext
- cv_new_value_x = ls_address_new_x-pcode2_ext ).
- * maintain communication details
- IF is_comm_data-telephone IS NOT INITIAL.
- READ TABLE lt_bapiadtel_old INTO ls_bapiadtel_old WITH KEY std_no = if_crm_boolean=>true.
- IF ls_bapiadtel_old-telephone NE is_comm_data-telephone.
- ls_telephone = ls_bapiadtel_old.
- ls_telephone-telephone = is_comm_data-telephone.
- APPEND ls_telephone TO lt_bapiadtel_new.
- ls_bapiadtel_new_x-telephone = if_crm_boolean=>true.
- ls_bapiadtel_new_x-updateflag = 'U'.
- APPEND ls_bapiadtel_new_x TO lt_bapiadtel_new_x.
- ENDIF.
- ENDIF.
- IF is_comm_data-fax IS NOT INITIAL.
- READ TABLE lt_bapiadfax_old INTO ls_bapiadfax_old WITH KEY std_no = if_crm_boolean=>true.
- IF ls_bapiadfax_old-fax NE is_comm_data-fax.
- ls_fax = ls_bapiadfax_old.
- ls_fax-fax = is_comm_data-fax.
- APPEND ls_fax TO lt_bapiadfax_new.
- ls_bapiadfax_new_x-fax = if_crm_boolean=>true.
- IF ls_bapiadfax_old-fax IS NOT INITIAL.
- ls_bapiadfax_new_x-updateflag = 'U'.
- ELSE.
- ls_bapiadfax_new_x-updateflag = 'I'.
- ENDIF.
- APPEND ls_bapiadfax_new_x TO lt_bapiadfax_new_x.
- ENDIF.
- ENDIF.
- IF is_comm_data-email IS NOT INITIAL.
- READ TABLE lt_bapiadsmtp_old INTO ls_bapiadsmtp_old WITH KEY std_no = if_crm_boolean=>true.
- IF ls_bapiadsmtp_old-e_mail NE is_comm_data-email.
- ls_email = ls_bapiadsmtp_old.
- ls_email-e_mail = is_comm_data-email.
- APPEND ls_email TO lt_bapiadsmtp_new.
- ls_bapiadsmt_new_x-e_mail = if_crm_boolean=>true.
- IF ls_bapiadsmtp_old-e_mail IS NOT INITIAL.
- ls_bapiadsmt_new_x-updateflag = 'U'.
- ELSE.
- ls_bapiadsmt_new_x-updateflag = 'I'.
- ENDIF.
- APPEND ls_bapiadsmt_new_x TO lt_bapiadsmt_new_x.
- ENDIF.
- ENDIF.
- *
- IF ls_address_new_x IS NOT INITIAL OR
- lt_bapiadtel_new_x[] IS NOT INITIAL OR
- lt_bapiadfax_new_x[] IS NOT INITIAL OR
- lt_bapiadsmt_new_x[] IS NOT INITIAL.
- CALL FUNCTION 'BAPI_BUPA_ADDRESS_CHANGE'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- addressdata = ls_address_new
- addressdata_x = ls_address_new_x
- * DUPLICATE_MESSAGE_TYPE =
- * ACCEPT_ERROR = ' '
- TABLES
- bapiadtel = lt_bapiadtel_new
- bapiadfax = lt_bapiadfax_new
- bapiadsmtp = lt_bapiadsmtp_new
- bapiadtel_x = lt_bapiadtel_new_x
- bapiadfax_x = lt_bapiadfax_new_x
- bapiadsmt_x = lt_bapiadsmt_new_x
- return = lt_return.
- * ADDRESSDUPLICATES =
- ENDIF.
- ENDMETHOD. "update_per_mktatt
- METHOD add_role.
- DATA : lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2.
- * check if role has already been assigned
- CALL FUNCTION 'BAPI_BUPA_ROLE_EXISTENCE_CHECK'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- businesspartnerrole = iv_role
- TABLES
- return = lt_return.
- LOOP AT lt_return
- TRANSPORTING NO FIELDS
- WHERE type CA 'EAX'.
- EXIT.
- ENDLOOP.
- IF sy-subrc <> 0.
- RETURN.
- ENDIF.
- * call API to add role
- CLEAR : lt_return.
- CALL FUNCTION 'BAPI_BUPA_ROLE_ADD'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- businesspartnerrole = iv_role
- TABLES
- return = lt_return.
- * add error messages
- LOOP AT lt_return
- INTO ls_return
- WHERE type CA 'EAX'.
- APPEND ls_return TO ct_error_messages.
- ENDLOOP.
- ENDMETHOD. "add_role
- METHOD add_tax_number.
- DATA : lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2.
- * call API to add role
- CLEAR : lt_return.
- CALL FUNCTION 'BAPI_BUPA_TAX_ADD'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- taxtype = iv_tax_type
- taxnumber = iv_tax_number
- TABLES
- return = lt_return.
- * add error messages
- LOOP AT lt_return
- INTO ls_return
- WHERE type CA 'EAX'.
- APPEND ls_return TO ct_error_messages.
- ENDLOOP.
- ENDMETHOD. "add_tax_number
- METHOD update_tax_number.
- DATA : lv_tax_number TYPE bptaxnum,
- lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2.
- CALL FUNCTION 'BUPA_TAX_GET_DETAIL'
- EXPORTING
- iv_partner = iv_partner
- iv_tax_type = iv_tax_type
- IMPORTING
- ev_tax_number = lv_tax_number
- TABLES
- ct_return = lt_return
- EXCEPTIONS
- no_record_found = 1
- OTHERS = 2.
- IF lv_tax_number IS INITIAL.
- * call API to add role
- CLEAR : lt_return.
- CALL FUNCTION 'BAPI_BUPA_TAX_ADD'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- taxtype = iv_tax_type
- taxnumber = iv_tax_number
- TABLES
- return = lt_return.
- ELSEIF lv_tax_number NE iv_tax_number.
- CALL FUNCTION 'BAPI_BUPA_TAX_CHANGE'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- taxtype = iv_tax_type
- taxnumber = iv_tax_number
- TABLES
- return = lt_return.
- ENDIF.
- * add error messages
- LOOP AT lt_return
- INTO ls_return
- WHERE type CA 'EAX'.
- APPEND ls_return TO ct_error_messages.
- ENDLOOP.
- ENDMETHOD. "update_tax_number
- METHOD add_industry_sector.
- DATA : lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2.
- * call API to add role
- CLEAR : lt_return.
- CALL FUNCTION 'BAPI_INDUSTRYSECTOR_ADD'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- industrysectorkeysystem = iv_system
- industrysector = iv_sector
- defaultindustry = abap_true
- TABLES
- return = lt_return.
- * add error messages
- LOOP AT lt_return
- INTO ls_return
- WHERE type CA 'EAX'.
- APPEND ls_return TO ct_error_messages.
- ENDLOOP.
- ENDMETHOD. "add_industry_sector
- METHOD update_industry_sector.
- DATA : lt_isector TYPE TABLE OF bapibus1006_industrysector,
- ls_isector TYPE bapibus1006_industrysector,
- ls_default TYPE bapibus1006_industrysector_x,
- lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2.
- CALL FUNCTION 'BAPI_INDUSTRYSECTORDETAILS_GET'
- EXPORTING
- businesspartner = iv_partner
- TABLES
- industrysectordetail = lt_isector
- return = lt_return.
- CLEAR : lt_return.
- IF lt_isector[] IS INITIAL.
- * call API to add industry sector
- CALL FUNCTION 'BAPI_INDUSTRYSECTOR_ADD'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- industrysectorkeysystem = iv_system
- industrysector = iv_sector
- defaultindustry = abap_true
- TABLES
- return = lt_return.
- ELSE.
- READ TABLE lt_isector INTO ls_isector WITH KEY defaultindustrysector = if_crm_boolean=>true
- industrysectorkeysystem = iv_system.
- IF sy-subrc <> 0.
- READ TABLE lt_isector INTO ls_isector WITH KEY industrysectorkeysystem = iv_system.
- ENDIF.
- IF ls_isector-industrysector NE iv_sector.
- IF ls_isector-industrysector IS NOT INITIAL.
- CALL FUNCTION 'BAPI_INDUSTRYSECTOR_REMOVE'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- industrysectorkeysystem = iv_system
- industrysector = ls_isector-industrysector
- TABLES
- return = lt_return.
- ENDIF.
- CALL FUNCTION 'BAPI_INDUSTRYSECTOR_ADD'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- businesspartner = iv_partner
- industrysectorkeysystem = iv_system
- industrysector = iv_sector
- defaultindustry = abap_true
- TABLES
- return = lt_return.
- * ls_default = if_crm_boolean=>true.
- * CALL FUNCTION 'BAPI_INDUSTRYSECTOR_CHANGE'
- * DESTINATION 'NONE'
- * KEEPING LOGICAL UNIT OF WORK
- * EXPORTING
- * businesspartner = iv_partner
- * industrysectorkeysystem = iv_system
- * industrysector = iv_sector
- * defaultindustry = if_crm_boolean=>true
- * defaultindustry_x = ls_default
- * TABLES
- * return = lt_return.
- ENDIF.
- ENDIF.
- * add error messages
- LOOP AT lt_return
- INTO ls_return
- WHERE type CA 'EAX'.
- APPEND ls_return TO ct_error_messages.
- ENDLOOP.
- ENDMETHOD. "update_industry_sector
- METHOD new_mktatt.
- DATA : ls_mktbp_wrk TYPE crmt_mktbp_wrk,
- ls_class_desc TYPE bapi1003_catch_r,
- lt_class_desc TYPE STANDARD TABLE OF bapi1003_catch_r,
- lt_class_text TYPE STANDARD TABLE OF bapi1003_longtext_r,
- ls_class_char TYPE bapi1003_charact_r ,
- lt_class_char TYPE STANDARD TABLE OF bapi1003_charact_r ,
- ls_char_values TYPE bapi1003_char_val_r,
- lt_char_values TYPE STANDARD TABLE OF bapi1003_char_val_r,
- ls_bp_charvalues TYPE crmt_mktprof_comw,
- lt_bp_charvalues TYPE crmt_mktprof_comw_t,
- lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2.
- * Get Attribute Set Details
- CALL FUNCTION 'BAPI_CLASS_READ'
- EXPORTING
- classtype = 'BUP'
- classnum = iv_class
- TABLES
- classdescriptions = lt_class_desc
- classlongtexts = lt_class_text
- classcharacteristics = lt_class_char
- classcharactvalues = lt_char_values.
- READ TABLE lt_class_desc INDEX 1 INTO ls_class_desc .
- CLEAR: ls_mktbp_wrk.
- ls_mktbp_wrk-guid = iv_partner_guid.
- ls_mktbp_wrk-profile_template_id = iv_class.
- ls_mktbp_wrk-profile_template_descr = ls_class_desc-catchword.
- ls_mktbp_wrk-mode = 'A'.
- * Populate Chacteristics and Values
- LOOP AT lt_class_char INTO ls_class_char.
- LOOP AT lt_char_values INTO ls_char_values
- WHERE name_char EQ ls_class_char-name_char
- AND default_flag EQ 'X'.
- ls_bp_charvalues-atname = ls_class_char-name_char.
- ls_bp_charvalues-atwrt = ls_char_values-char_value.
- APPEND ls_bp_charvalues TO lt_bp_charvalues.
- CLEAR ls_bp_charvalues.
- ENDLOOP.
- IF sy-subrc NE 0.
- CASE ls_class_char-name_char.
- WHEN 'INDUSTRY_BUCKETS'.
- ls_bp_charvalues-atwrt = is_extra_data-bus_industry.
- WHEN 'OWDNOE'.
- ls_bp_charvalues-atwrt = is_extra_data-no_employees.
- WHEN 'OPTINOFALLCATALOGUES'.
- ls_bp_charvalues-atwrt = is_bp_mkt-optinofallcatalogues.
- WHEN 'OPTINFAX'.
- ls_bp_charvalues-atwrt = is_bp_mkt-optinfax.
- WHEN 'OPTINPHONE'.
- ls_bp_charvalues-atwrt = is_bp_mkt-optinphone.
- WHEN 'OPTINEMAIL'.
- ls_bp_charvalues-atwrt = is_bp_mkt-optinemail.
- ENDCASE.
- ls_bp_charvalues-atname = ls_class_char-name_char.
- APPEND ls_bp_charvalues TO lt_bp_charvalues.
- ENDIF.
- ENDLOOP.
- ct_bp_charvalues[] = lt_bp_charvalues[].
- ENDMETHOD. "new_mktatt
- METHOD add_internetuser.
- DATA:
- lv_password(8) TYPE c,
- lv_bname TYPE xubname,
- ls_alias TYPE bapialias,
- ls_username TYPE bapibname,
- ls_password TYPE bapipwd,
- ls_iuser_cust TYPE crmt_iuser_b2c_cust,
- ls_reference TYPE bapirefus,
- ls_refuser TYPE bapibname,
- ls_address TYPE bapiaddr3,
- lv_contact_guid TYPE bu_partner_guid,
- lv_personid TYPE personid,
- ls_defaults TYPE bapidefaul,
- lv_userid TYPE syuname,
- lt_return TYPE bapiret2_t,
- ls_return TYPE bapiret2,
- ls_bus000_eew TYPE bus000_eew,
- ls_bus000_eew_x TYPE bus000_eew_x,
- ls_user_defaults TYPE zbp_user_dflt_c.
- FIELD-SYMBOLS : <lv_data> TYPE ANY.
- CHECK is_isalogin-alias IS NOT INITIAL.
- IF is_isalogin-password IS INITIAL.
- * Generate a new password.
- CALL FUNCTION 'RSEC_GENERATE_PASSWORD'
- EXPORTING
- alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
- alphabet_length = 26
- output_length = 8
- IMPORTING
- output = lv_password
- EXCEPTIONS
- some_error = 1.
- ls_password-bapipwd = lv_password.
- ELSE.
- ls_password-bapipwd = is_isalogin-password.
- ENDIF.
- * set required data
- CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
- EXPORTING
- input = iv_partner
- IMPORTING
- output = ls_username-bapibname.
- IF is_person_data-per_bpkind = 'DEMO'.
- CONCATENATE 'DEMO' iv_partner INTO ls_alias-useralias.
- ls_refuser = 'ISAUSER_DEMO'.
- ELSE.
- ls_alias-useralias = is_isalogin-alias.
- * determine the referenceuser
- CALL FUNCTION 'CRM_IUSER_B2C_CUSTOMIZE_READ'
- IMPORTING
- es_iuser_b2c_cust = ls_iuser_cust.
- IF NOT ls_iuser_cust-refuservar IS INITIAL.
- ls_reference = ls_iuser_cust-refuservar.
- CALL FUNCTION 'SUSR_INTERNET_REFUSER_VARIABLE'
- EXPORTING
- refuser_variable = ls_reference
- IMPORTING
- refuser = ls_reference.
- ls_refuser = ls_reference.
- ENDIF.
- ENDIF.
- ls_address-firstname = is_person_data-name_first.
- ls_address-lastname = is_person_data-name_last.
- * set user defaults based on customizing
- LOOP AT gt_user_defaults
- INTO ls_user_defaults.
- UNASSIGN <lv_data>.
- ASSIGN COMPONENT ls_user_defaults-fieldname
- OF STRUCTURE ls_defaults TO <lv_data>.
- IF <lv_data> IS ASSIGNED.
- <lv_data> = ls_user_defaults-value.
- ENDIF.
- ENDLOOP.
- * Create new B2B Iuser
- CALL FUNCTION 'COM_BPUS_INTERNETUSER_CREATE'
- EXPORTING
- is_alias = ls_alias
- is_username = ls_username
- is_password = ls_password
- is_referenceuser = ls_refuser
- is_address = ls_address
- iv_businesspartner = iv_partner
- is_defaults = ls_defaults
- IMPORTING
- es_username = ls_username
- es_password = ls_password
- TABLES
- et_return = lt_return
- EXCEPTIONS
- alias_already_exists = 1
- user_already_exists = 2
- username_generate_error = 3
- user_create_error = 4
- password_change_error = 5
- user_lock_error = 6
- internal_error = 7
- password_generate_error = 8
- activitygroups_assign_error = 9
- OTHERS = 10.
- * add error messages
- LOOP AT lt_return
- INTO ls_return
- WHERE type CA 'EAX'.
- APPEND ls_return TO et_error_messages.
- ENDLOOP.
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- es_isalogin-alias = ls_alias.
- es_isalogin-password = ls_password.
- * Get contact GUID
- CALL FUNCTION 'BUPA_NUMBERS_READ'
- EXPORTING
- iv_partner = iv_partner
- IMPORTING
- ev_partner_guid = lv_contact_guid
- EXCEPTIONS
- OTHERS = 1.
- * Create central person
- lv_userid = ls_username-bapibname.
- CALL FUNCTION 'CRM_BUPA_CREATECENTRALPERSON'
- EXPORTING
- iv_bu_partner_guid = lv_contact_guid
- iv_user_id = lv_userid
- IMPORTING
- ev_person_id = lv_personid
- EXCEPTIONS
- error_message = 1.
- * change central data of BP to include password
- CALL FUNCTION 'BUPA_CENTRAL_CI_GET_DETAIL'
- EXPORTING
- iv_partner = iv_partner
- IMPORTING
- es_bus000_eew = ls_bus000_eew.
- ls_bus000_eew-zzinitialpas = ls_password-bapipwd.
- ls_bus000_eew_x-zzinitialpas = abap_true.
- CLEAR : lt_return.
- CALL FUNCTION 'BUPA_CENTRAL_CI_CHANGE'
- EXPORTING
- is_bus000_eew = ls_bus000_eew
- is_bus000_eew_x = ls_bus000_eew_x
- IMPORTING
- et_return = lt_return.
- * add error messages
- LOOP AT lt_return
- INTO ls_return
- WHERE type CA 'EAX'.
- APPEND ls_return TO et_error_messages.
- ENDLOOP.
- IF et_error_messages IS NOT INITIAL.
- RETURN.
- ENDIF.
- ENDMETHOD. "add_internetuser
- METHOD commit.
- DATA : ls_return TYPE bapiret2.
- CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK
- EXPORTING
- wait = abap_true
- IMPORTING
- return = ls_return.
- ENDMETHOD. "commit
- METHOD rollback.
- CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
- DESTINATION 'NONE'
- KEEPING LOGICAL UNIT OF WORK.
- ENDMETHOD. "rollback
- ENDCLASS. "lcl_partner_service IMPLEMENTATION
Add Comment
Please, Sign In to add comment