使用程式碼修改SAP CRM附件的屬性

i042416發表於2020-08-17

In our CRM social integration project we extract the picture of one tweet from twitter website and store them in CRM system as attachment.

We are creating attachment in CRM via the approach described in this blog.

However, we found the Create by property for an attachment is always hard coded with sy-uname, even we explicitly specify the created_by property when calling cl_crm_documents=>create_with_table. However our requirement is it should be filled by the screen name in twitter website who posts the tweet.


使用程式碼修改SAP CRM附件的屬性 使用程式碼修改SAP CRM附件的屬性


After some debugging I found the created_by property could only be modified after the attachment is created. First I query all attachments of a given tweet:

DATA(ls) = VALUE SIBFLPORB( INSTID = iv_guid typeid = iv_bor_type catid = 'BO' ). CALL METHOD CL_CRM_DOCUMENTS=>get_info
  EXPORTING
     BUSINESS_OBJECT = ls
  IMPORTING
     LOIOS = LOIOS
     phios = phios.

Then I use FM SDOK_PHIO_PROPERTIES_SET to change the property:

DATA(ls_property) = VALUE SDOKPROPTY( name = iv_attr_name value = iv_new_value ).APPEND ls_property TO lt_properties.LOOP AT phios ASSIGNING FIELD-SYMBOL(<ios>).
  ls_header-class = <ios>-class.
  ls_header-objid = <ios>-objid.
  CALL FUNCTION 'SDOK_PHIO_PROPERTIES_SET'
    EXPORTING
      object_id = ls_header
    TABLES
      properties = lt_properties
    EXCEPTIONS
      NOT_EXISTING = 1
      BAD_PROPERTIES = 2
      NOT_AUTHORIZED = 3
      EXCEPTION_IN_EXIT = 4.ENDLOOP.

I have put the code into a utility class and test it:


使用程式碼修改SAP CRM附件的屬性


And that’s done:


使用程式碼修改SAP CRM附件的屬性


Never forget to activate internal mode, or else you will fail with an error message that created_by field is read only.


使用程式碼修改SAP CRM附件的屬性


要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

使用程式碼修改SAP CRM附件的屬性


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2712217/,如需轉載,請註明出處,否則將追究法律責任。

相關文章