Hi I am trying to udpate Partner details from the file using CRM_ORDER_MAINTAIN but it is not getting updating, can you please check and update me if some thing is wrong from the code.
input file contains below fields.
Transaction number:
Business partner:
Address number:
Personal number:
REPORT Z_CRM_ACT_EMP_MASS_UPDATE.
PARAMETERS: p_file TYPE string.
TYPES: BEGIN OF ty_data,
Trans_no type CRMT_OBJECT_ID_DB,
PARTNER_NO type CRMT_PARTNER_NO,
ADDR_NR type AD_ADDRNUM,
ADDR_NP type AD_PERSNUM,
END OF ty_data.
DATA:it_data TYPE TABLE OF ty_data.
data:v_guid TYPE CRMT_OBJECT_GUID,
P_guid TYPE CRMT_OBJECT_GUID,
wa_data TYPE ty_data.
data:it_guid_h type crmt_object_guid_tab,
ls_guid_h type crmt_object_guid.
data: lt_partner_com type crmt_partner_comt,
wa_partner_com type crmt_partner_com.
data:et_partner type crmt_partner_external_wrkt,
wa_partner_wrk type crmt_partner_external_wrk.
data:lt_input_fields type crmt_input_field_tab,
wa_input_fields type crmt_input_field.
DATA: i_header_guid TYPE crmt_object_guid_tab,
i_return_objects TYPE crmt_return_objects.
data : lt_object_to_save type CRMT_OBJECT_GUID_TAB,
lt_saved_objects type CRMT_RETURN_OBJECTS,
wa_return type BAPIRET2.
AT SELECTION-SCREEN ON p_file.
IF p_file IS INITIAL.
MESSAGE 'Enter Valid Input File Path' TYPE 'E'.
ENDIF.
************************************************************************
*F4 Help(s) *
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
**** Get file path / name.
PERFORM get_file.
************************************************************************
*Start of selection *
************************************************************************
START-OF-SELECTION.
**** Get file data
PERFORM get_file_data.
END-OF-SELECTION.
**** Process Data.
PERFORM process_data.
*&---------------------------------------------------------------------*
*& Form GET_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_FILE .
DATA : lv_desktop TYPE string,
li_ftab TYPE filetable,
lw_ftab TYPE file_table,
lv_rc TYPE i.
CALL METHOD cl_gui_frontend_services=>get_desktop_directory
CHANGING
desktop_directory = lv_desktop
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD cl_gui_cfw=>flush
* EXCEPTIONS
* cntl_system_error = 1
* cntl_error = 2
* others = 3
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Select File'
default_extension = 'TXT'
* default_filename =
* file_filter =
* with_encoding =
initial_directory = lv_desktop
* multiselection =
CHANGING
file_table = li_ftab
rc = lv_rc
* user_action =
* file_encoding =
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5
.
IF sy-subrc <> 0.
ENDIF.
CALL METHOD cl_gui_cfw=>flush
.
IF sy-subrc <> 0.
ENDIF.
READ TABLE li_ftab INTO lw_ftab INDEX 1.
IF sy-subrc IS INITIAL.
p_file = lw_ftab-filename.
ENDIF.
ENDFORM. " GET_FILE
*&---------------------------------------------------------------------*
*& Form GET_FILE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_FILE_DATA .
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = p_file
filetype = 'DAT'
has_field_separator = 'X'
CHANGING
data_tab = it_data
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " GET_FILE_DATA
*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PROCESS_DATA .
LOOP AT it_data INTO wa_data.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = wa_data-Trans_no
IMPORTING
OUTPUT = wa_data-Trans_no.
SELECT SINGLE GUID
FROM CRMD_ORDERADM_H
INTO v_guid
WHERE OBJECT_ID = wa_data-Trans_no.
select single PARTNER_GUID
FROM CRMV_LINKPARTNER
into P_guid
where GUID_HI = v_guid
and PARTNER_FCT = '00000014'.
INSERT V_guid INTO TABLE i_header_guid.
*Add party Employee Responsible
wa_partner_com-ref_handle = '0000000000'.
wa_partner_com-ref_partner_handle = '0001'.
wa_partner_com-kind_of_entry = 'A'.
wa_partner_com-partner_fct = '00000014'.
wa_partner_com-ref_guid = V_guid.
wa_partner_com-PARTNER_GUID = P_guid.
wa_partner_com-partner_no = wa_data-partner_no.
wa_partner_com-ADDR_NR = wa_data-ADDR_NR.
wa_partner_com-ADDR_NP = wa_data-ADDR_NP.
IF wa_partner_wrk-ref_guid IS INITIAL.
wa_partner_com-ref_kind = 'A'.
wa_partner_com-display_type = 'BP'.
wa_partner_com-no_type = 'BP'.
ENDIF.
INSERT wa_partner_com INTO TABLE lt_partner_com.
* MOVE-CORRESPONDING wa_partner_com TO wa_logic_partner_key.
* wa_input_fields-logical_key = wa_logic_partner_key.
wa_input_fields-ref_guid = V_guid.
* wa_input_fields-ref_handle = lv_handle.
wa_input_fields-ref_kind = 'A'.
wa_input_fields-objectname = 'PARTNER'.
* wa_input_fields-field_names = lt_input_field_names.
INSERT wa_input_fields INTO TABLE lt_input_fields.
*Order Maintain for modifying employee responsible in task
CALL FUNCTION 'CRM_ORDER_MAINTAIN'
EXPORTING
it_partner = lt_partner_com
CHANGING
* ct_orderadm_h = lt_orderadm_h_com
ct_input_fields = lt_input_fields
EXCEPTIONS
OTHERS = 99.
*after this i have also call :
CALL FUNCTION 'CRM_ORDER_SAVE'
EXPORTING
it_objects_to_save = i_header_guid
* iv_no_bdoc_send = space
IMPORTING
et_saved_objects = i_return_objects
EXCEPTIONS
document_not_saved = 1
OTHERS = 2.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = wa_return.
ENDLOOP.