Hi Patrick,
Thank you a lot for the answer! I solved this issue by myselt though. I haven't logged in to SCN for a while so I forgot about this topic I submitted. Sorry for not being able to reward you earlier.
I solved the issue by debugging the standard codes. First I put a break point in CRM_ORDER_MAINTAIN and with transaction code CRMD_ORDER, I created a business transaction with partners and debugged to observe how the standard fills the tables of CRM_ORDER_MAINTAIN. I followed the same and it worked!
Checking your link, I'm bound to admit I don't like the code below:
if ls_partner-partner_no(4) ne '0000'.
CONCATENATE '0000' ls_partner-partner_no into ls_partner-partner_no.
endif.
Except that, everything looks fine.
Below you can find my form - the perform that I use to add partners to existing incident
Have a good day!
*&------------------------------------------------*
*& Form ADD_PARTNERS
*&------------------------------------------------*
* Add found partners to the orders - ZFLN0002
*-------------------------------------------------*
* -->P_LT_PARTNERS text
* -->P_LT_ORDERADM_H text
* -->P_LT_ORDERADM_I text
* -->P_LT_RELATIONSHIPS text
* -->M_APP_LOG_HANDLE text
* <--P_LT_EXCEPTIONS text
* <--P_EV_SUBRC text
*-------------------------------------------------*
FORM add_partners USING p_lt_partners
TYPE crmt_partner_external_wrkt
p_lt_orderadm_h TYPE crmt_orderadm_h_wrkt
p_lt_orderadm_i TYPE crmt_orderadm_i_wrkt
p_lt_relationships
TYPE bapibus1006_relationstab
m_app_log_handle TYPE balloghndl
CHANGING p_lt_exceptions
TYPE crmt_exception_t
p_ev_subrc TYPE sysubrc.
DATA: ls_orderadm_h TYPE crmt_orderadm_h_wrk,
ls_orderadm_h_com TYPE crmt_orderadm_h_com,
ls_orderadm_i TYPE crmt_orderadm_i_wrk,
ls_orderadm_i_com TYPE crmt_orderadm_i_com,
lt_orderadm_h_com TYPE crmt_orderadm_h_comt,
lt_orderadm_i_com TYPE crmt_orderadm_i_comt,
lt_partner_com TYPE crmt_partner_comt,
ls_partner_com TYPE crmt_partner_com,
ls_relations TYPE bapibus1006_relations,
lt_input_fields TYPE crmt_input_field_tab,
ls_input_fields TYPE crmt_input_field,
lv_partner_no TYPE bu_partner,
lv_partner_com_no TYPE crmt_partner_no,
ls_field_names TYPE crmt_input_field_names,
lt_field_names TYPE crmt_input_field_names_tab,
ls_return TYPE bapiret2,
ls_partners TYPE crmt_partner_external_wrk,
lv_tabix TYPE numc4.
*-----------------------------------------------------*
* Macro for input fields
*-----------------------------------------------------*
DEFINE add_fieldname.
clear: ls_field_names.
ls_field_names-fieldname = &1.
insert ls_field_names into table lt_field_names.
END-OF-DEFINITION.
*-----------------------------------------------------*
* Macro for adding partner
*-----------------------------------------------------*
DEFINE add_partner.
clear ls_partner_com.
ls_partner_com-ref_guid = ls_orderadm_h-guid.
ls_partner_com-ref_kind = 'A'.
ls_partner_com-ref_partner_handle = &1.
ls_partner_com-kind_of_entry = 'C'.
ls_partner_com-partner_fct = 'ZLFN0002'.
ls_partner_com-partner_no = &2.
ls_partner_com-display_type = 'BP'.
ls_partner_com-no_type = 'BP'.
ls_partner_com-mainpartner = &3.
insert ls_partner_com into table lt_partner_com.
* INPUT_FIELDS -> for partners
clear: ls_input_fields, lt_field_names.
ls_input_fields-ref_guid = ls_orderadm_h-guid.
ls_input_fields-ref_kind = 'A'.
ls_input_fields-objectname = 'PARTNER'.
ls_input_fields-logical_key = &1.
add_fieldname: 'KIND_OF_ENTRY'.
add_fieldname: 'PARTNER_FCT'.
add_fieldname: 'PARTNER_NO'.
add_fieldname: 'DISPLAY_TYPE'.
add_fieldname: 'NO_TYPE'.
add_fieldname: 'MAINPARTNER'.
ls_input_fields-field_names = lt_field_names.
insert ls_input_fields into table lt_input_fields.
END-OF-DEFINITION.
CLEAR: lt_orderadm_h_com, lt_partner_com, lt_orderadm_i_com,
lt_input_fields, ls_orderadm_h, lv_partner_no.
READ TABLE p_lt_partners INTO ls_partners INDEX 1.
IF sy-subrc = 0.
lv_partner_no = ls_partners-partner_no.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_partner_no
IMPORTING
output = lv_partner_no.
READ TABLE p_lt_orderadm_h INTO ls_orderadm_h INDEX 1.
*----------------------------------------------------*
* Adding partners
*----------------------------------------------------*
LOOP AT p_lt_relationships INTO ls_relations.
lv_tabix = sy-tabix.
IF lv_partner_no EQ ls_relations-partner1.
lv_partner_com_no = ls_relations-partner2.
add_partner: lv_tabix lv_partner_com_no space.
ELSE.
lv_partner_com_no = ls_relations-partner1.
add_partner: lv_tabix lv_partner_com_no space.
ENDIF.
CLEAR: ls_relations, lv_partner_com_no, lv_tabix.
ENDLOOP.
*--------------------------------------------------*
* Calling CRM_ORDER_MAINTAIN
*--------------------------------------------------*
CALL FUNCTION 'CRM_ORDER_MAINTAIN'
EXPORTING
it_partner = lt_partner_com
IMPORTING
et_exception = p_lt_exceptions
CHANGING
* ct_orderadm_h = lt_orderadm_h_com
* ct_orderadm_i = lt_orderadm_i_com
ct_input_fields = lt_input_fields
EXCEPTIONS
error_occurred = 1
document_locked = 2
no_change_allowed = 3
no_authority = 4
OTHERS = 5.
p_ev_subrc = sy-subrc.
IF sy-subrc <> 0.
CLEAR ls_return.
ls_return-type = 'E'.
ls_return-id = 'ZSOL'.
ls_return-number = '009'.
ls_return-message_v1 = ls_orderadm_h-object_id.
* Filling application log
PERFORM add_to_log USING m_app_log_handle
ls_return.
ENDIF.
ENDFORM. " ADD_PARTNERS