CRM and CX Blogs by SAP
Stay up-to-date on the latest developments and product news about intelligent customer experience and CRM technologies through blog posts from SAP experts.
Showing results for 
Search instead for 
Did you mean: 

For a complete list of all my blogs regarding content management, please see here.

I create a utility class with method CREATE_DOC. It has following four input parameters:

  • iv_data type xstring - the binary data which you would like to store as attachment

  • iv_bor_type type string - the BOR type of your business object. You can view view business object model in tcode SWO1

  • iv_guid type raw16 - the guid of your business object instance

  • iv_file_name type string - the file name which will appear in attachment assignment block.

The source code of method below: ( in fact all attributes for an attachment could be available in the input parameters of this method. For simplicity reason I

just hard code them in the sample code )

DATA:ls_bo              TYPE sibflporb,
ls_prop TYPE LINE OF sdokproptys,
lt_prop TYPE sdokproptys,
lt_properties_attr TYPE crmt_attr_name_value_t,
ls_file_info TYPE sdokfilaci,
lt_file_info TYPE sdokfilacis,
lt_file_content TYPE sdokcntbins,
lv_length TYPE i,
lv_file_xstring TYPE xstring,
ls_loio TYPE skwf_io,
ls_phio TYPE skwf_io,
ls_error TYPE skwf_error.
ls_prop-name = 'DESCRIPTION'.
ls_prop-value = 'created by Tool'. " replace it with your own description for attachment
APPEND ls_prop TO lt_prop.
ls_prop-name = 'KW_RELATIVE_URL'.
ls_prop-value = iv_file_name. " in the sample code I just reuse file name as relative url
APPEND ls_prop TO lt_prop.
ls_prop-name = 'LANGUAGE'.
ls_prop-value = sy-langu.
APPEND ls_prop TO lt_prop.
lv_file_xstring = iv_data.
buffer = lv_file_xstring
output_length = lv_length
binary_tab = lt_file_content.
ls_file_info-binary_flg = 'X'.
ls_file_info-file_name = iv_file_name.
ls_file_info-file_size = lv_length.
ls_file_info-mimetype = 'image/jpeg'. "use the correct mime type for your attachment
APPEND ls_file_info TO lt_file_info.
ls_bo-INSTID = iv_guid.
ls_bo-typeid = iv_bor_type.
ls_bo-catid = 'BO'.
CALL METHOD cl_crm_documents=>create_with_table
business_object = ls_bo
properties = lt_prop
properties_attr = lt_properties_attr
file_access_info = lt_file_info
file_content_binary = lt_file_content
raw_mode = 'X'
loio = ls_loio
phio = ls_phio
error = ls_error. " evaluate if there is anything wrong during creation


I write a piece of code to test it. After report runs I could see the generated attachment.

You can also test whether the attachment is created successfully in the backend. Test class method get_info in SE24.

Specify importing parameter BUSINESS_OBJECT:

Execute and you should get result as below: one physical object and one logical object according to how-is-attachment-physically-stored-in-database-table-in-cm-framework.

Never forget to call COMMIT WORK in your code, since the persistence of the relationship between attachment and your business object are implemented via generic object service in a update process.You could easily find this via SAT trace on your code

or switch on update debugging in your debugger settings.