very good morning!
I was trying to create with the function 'CRM_ORDER_MAINTAIN', but the content of 'lt_subject' does not work. You can leave me a working to fill 'lt_subject' example. In my case this is my code, in case you need it.
thank you very much
FORM fill_subject_data USING p_new_guid TYPE crmt_object_guid_c
pt_subject TYPE crmt_subject_wrkt
CHANGING pt_subject_new TYPE crmt_subject_comt.
DATA: ls_subject LIKE LINE OF pt_subject,
ls_subject_com TYPE crmt_subject_com,
ls_service_i TYPE crmc_service_i,
lv_profile_type TYPE crmt_subject_profile_type,
ls_input_fields TYPE crmt_input_field,
ls_input_field_names TYPE crmt_input_field_names.
READ TABLE pt_subject INTO ls_subject INDEX 1.
ls_subject_com-handle = '0000000001'." iv_subject_handle.
ls_subject_com-ref_guid = p_new_guid.
ls_subject_com-ref_kind = 'A'.
ls_subject_com-katalogart = ls_subject-katalogart. "A1
ls_subject_com-codegruppe = ls_subject-codegruppe."ZSPMCS
ls_subject_com-code = ls_subject-code. "S14
CALL FUNCTION 'CRM_ORDER_SERVICE_I_SELECT_CB'
EXPORTING
iv_item_type = 'ZPMI'
IMPORTING
es_service_i = ls_service_i
EXCEPTIONS
entry_not_found = 1
OTHERS = 2.
IF sy-subrc = 0 AND ls_service_i-subject_profile IS NOT INITIAL.
CALL FUNCTION 'CRM_SUBJECT_PROFILE_CHECK'
EXPORTING
i_subject_profile = ls_service_i-subject_profile
IMPORTING
e_profile_type = lv_profile_type
EXCEPTIONS
no_entry = 1
wrong_profile_type = 2
no_text_entry = 3
OTHERS = 4.
IF sy-subrc <> 0.
lv_profile_type = 'A'. "#EC NOTEXT
ENDIF.
ls_subject_com-subject_profile = ls_service_i-subject_profile.
ls_subject_com-profile_type = lv_profile_type.
ENDIF.
INSERT ls_subject_com INTO TABLE pt_subject_new.
ENDFORM.
FORM fill_subject_input_field USING p_new_guid TYPE crmt_object_guid_c
CHANGING " pt_doc_flow TYPE crmt_doc_flow_comt
pt_input_fields TYPE crmt_input_field_tab.
*copiado de la funcion CRM_SRV_LOG_INSP_FA_DETERM
DATA: ls_input_field_names TYPE crmt_input_field_names,
ls_input_fields LIKE LINE OF pt_input_fields.
CLEAR: ls_input_field_names,ls_input_fields.
ls_input_fields-ref_guid = p_new_guid.
ls_input_fields-ref_kind = 'A'." gc_object_kind-orderadm_i.
ls_input_fields-objectname = 'SUBJECT'.
CALL FUNCTION 'CRM_SERVICE_OS_GET_LOG_KEY'
EXPORTING
iv_handle = '0000000001'
IMPORTING
ev_logical_key = ls_input_fields-logical_key
EXCEPTIONS
parameter_missing = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
ls_input_field_names-fieldname = 'REF_GUID'. "#EC NOTEXT
INSERT ls_input_field_names INTO TABLE ls_input_fields-field_names.
ls_input_field_names-fieldname = 'REF_KIND'. "#EC NOTEXT
INSERT ls_input_field_names INTO TABLE ls_input_fields-field_names.
ls_input_field_names-fieldname = 'KATALOGART'. "#EC NOTEXT
INSERT ls_input_field_names INTO TABLE ls_input_fields-field_names.
ls_input_field_names-fieldname = 'CODEGRUPPE'. "#EC NOTEXT
INSERT ls_input_field_names INTO TABLE ls_input_fields-field_names.
ls_input_field_names-fieldname = 'CODE'. "#EC NOTEXT
INSERT ls_input_field_names INTO TABLE ls_input_fields-field_names.
ls_input_field_names-fieldname = 'SUBJECT_PROFILE'. "#EC NOTEXT
INSERT ls_input_field_names INTO TABLE ls_input_fields-field_names.
ls_input_field_names-fieldname = 'PROFILE_TYPE'. "#EC NOTEXT
INSERT ls_input_field_names INTO TABLE ls_input_fields-field_names.
INSERT ls_input_fields INTO TABLE pt_input_fields.
ENDFORM.