文章标题也是笔者实际工作中,遇到的客户需求之一。
在笔者参与的 CRM 社交集成项目中,我们从 Twitter 网站中提取一条推文的图片,并将其作为附件存储在 CRM 系统中。
但是,我们发现附件的 Create by 属性始终使用 sy-uname 进行硬编码,即使我们在调用 cl_crm_documents=>create_with_table 时显式指定 created_by
属性
然而我们的要求是:它应该由发布推文的 Twitter 网站中的屏幕名称填写。
经过一些调试,我发现 created_by
属性只能在创建附件后才能修改。
首先,我查询给定推文的所有附件:
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.
在SAP CRM系统中,CL_CRM_DOCUMENTS=>get_info的作用是获取CRM文档相关信息。这个方法是在ABAP类CL_CRM_DOCUMENTS中定义的,它允许开发人员通过调用该方法来检索与CRM文档相关的各种信息,包括文档的内容、属性、关联关系等。
首先,我们需要了解一下CRM文档在SAP CRM系统中的概念。CRM文档是指与客户关系管理相关的各种文件或记录,比如合同、报价单、销售订单等。这些文档在CRM系统中起着至关重要的作用,记录了与客户交互的关键信息,帮助企业管理客户关系、执行销售流程以及提供客户服务。
CL_CRM_DOCUMENTS=>get_info方法的主要作用是根据给定的文档ID,从CRM数据库中检索出与该文档相关的详细信息。这些信息可能包括文档的内容、创建日期、最后修改日期、文档类型、关联的业务对象等等。通过这些信息,开发人员可以在程序中对文档进行进一步的处理和分析,从而实现各种业务逻辑和功能需求。
然后我使用 Function Module SDOK_PHIO_PROPERTIES_SET
来修改该属性:
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.
SDOK_PHIO_PROPERTIES_SET
功能模块是 SAP CRM 系统中的一个重要组件,用于设置文档对象的属性。在 SAP CRM 中,文档对象是指与业务相关的文件或文档,例如销售订单、报价单、合同等。这些文档在业务流程中起着关键作用,因此对其属性的管理和设置至关重要。SDOK_PHIO_PROPERTIES_SET
功能模块提供了一种有效的方式来设置文档对象的属性,以满足不同业务需求。
通过以上参数,SDOK_PHIO_PROPERTIES_SET
功能模块可以根据输入的文档对象 GUID 和属性表,将指定的属性设置到对应的文档对象中,并返回执行结果信息。
下面是测试代码:
测试成功:
不要忘记激活内部模式,否则代码将执行失败,并出现一条错误消息,表明 created_by
字段是只读的。