When I am creating attachment for my business object via code provided in solution:
ls_prop-name = 'DESCRIPTION'. ls_prop-value = 'created by Tool'. APPEND ls_prop TO lt_prop. ls_prop-name = 'CREATED_BY'. ls_prop-value = XXX - some one else other than sy-uname APPEND ls_prop TO lt_prop. CALL METHOD cl_crm_documents=>create_with_table EXPORTING business_object = ls_bo properties = lt_pro properties_attr = lt_properties_attr file_access_info = lt_file_info file_content_binary = lt_file_content raw_mode = 'X' IMPORTING loio = ls_loio phio = ls_phio error = ls_error.
I meet with the error below: Characteristic of class CRM_L_DOC is not valid
I debugged a little and found it is caused because the content management code regards “CREATED_BY” field as read only ( protected field ) if internal mode is inactive.
I use where use list on the field internal_mode and found the FM below could activate internal mode with 02 passed into.
After I call that FM in my program, the error is gone and attachment could be created. Unfortunately, I still could not specify the created_by field, I find it is always filled as sy-uname in line 298.