使用代码修改SAP CRM附件的属性
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.
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:
And that’s done:
Never forget to activate internal mode, or else you will fail with an error message that created_by field is read only.
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
- 全面理解 ASP.NET Core 依赖注入
- jq实现上传头像并实时预览功能
- 初探领域驱动设计(2)Repository在DDD中的应用
- js取整并保留两位小数的方法
- 异步编程 In .NET
- 判断标签是否包含class的方法
- vue.js使用props在父子组件之间传参
- JS中使用正则表达式替换对象里的大小写
- JS中const、var 和let的区别
- 动态计算rem的js代码
- 阻止浏览器冒泡事件,兼容firefox和ie
- JS使用循环按指定倍数分割数组组成新的数组的方法
- HttpServletRequest.getParameter()出现乱码现象解决方案
- 海量数据迁移之外部表加载(100天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Hibernate第二天:Hibernate的一级缓存、其他的API
- pytest 测试框架学习(12):pytest.deprecated_call
- Pinstaller(Python打包为exe文件
- pytest 测试框架学习(14):pytest.warns
- ImportError: /lib64/libm.so.6: version `CXXAB_1.3.8.' not found (required by /usr/local/python37/lib
- pytest 测试框架学习(15):pytest.freeze_includes
- Linux: scp文件,目录上传下载标准版
- Hibernate第三天:Hibernate的一对多配置、Hibernate的多对多的配置
- Git: 掉坑记 -- git reset 杀手
- ModuleNotFoundError: No module named 'phkit.pinyin'
- Hibernate第四天:Hibernate的查询方式、抓取策略
- 爬虫抓取博客园前10页标题带有Python关键字(不区分大小写)的文章
- Python爬虫抓取唐诗宋词
- ImportError: /lib64/libm.so.6: version `GLIBC_2.23' not found (required by /usr/local/python37/lib/p
- 数据分析与数据挖掘 - 02基础操练