如何阻止指定类型的SAP CRM附件被上传到服务器
时间:2022-07-22
本文章向大家介绍如何阻止指定类型的SAP CRM附件被上传到服务器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Requirement: end user could not be allowed to upload attachment whose size is greater than a given limit for example 400KB. Solution: (1) Create a BAdI implementation via SPRO->Customer Relationship Management->Basic Functions->Content Management->Business Add-Ins-> Confirmation of Changed Documents
(2) copy the following source code to BAdI Implementation. For code detail please refer to comment for each line.
METHOD if_ex_crm_documents~carry_out_action.
CONSTANTS: cv_max_size TYPE int4 VALUE 409600. "400KB
DATA: lt_loios TYPE skwf_ios,
ls_error TYPE skwf_error,
lv_size TYPE sdok_fsize,
lt_badios TYPE skwf_ioerrs.
READ TABLE changed_documents ASSIGNING FIELD-SYMBOL(<first_line>) INDEX 1.
CHECK sy-subrc = 0.
" The badi implementation will be called whenever there is change on attachment ( create, update and delete), since it is necessary to filter out the change
" mode
CHECK <first_line>-action = 'CREATE_DOCUMENT'.
DATA(ls_bo) = VALUE sibflporb( instid = <first_line>-instidbor
typeid = <first_line>-typeidbor
catid = <first_line>-catidbor ).
DATA(ls_loios) = VALUE skwf_io( objtype = <first_line>-objtype class = <first_line>-class objid = <first_line>-objid ).
APPEND ls_loios TO lt_loios.
CALL METHOD cl_crm_documents=>get_file_info
EXPORTING
loio = ls_loios
IMPORTING
file_size = lv_size.
CHECK lv_size >= cv_max_size.
" Since this BAdI implementation could only be called after the attachment is created, so technically speaking we could not prevent the attachment creation indeed, but could only delete the attachment after its creation
CALL METHOD cl_crm_documents=>delete
EXPORTING
business_object = ls_bo
ios = lt_loios
IMPORTING
bad_ios = lt_badios
error = ls_error.
COMMIT WORK AND WAIT.
" raise an error message to prompt user to upload the attachment with smaller size
lo_service->add_message( EXPORTING iv_msg_type = 'E' iv_msg_id = 'ZCM_JERRY_TEST' iv_msg_number = '000' ).
ENDMETHOD.
Activate the BAdI implementation:
Now if an attachment is uploaded which exceeds 400KB, the end user will see an error message in UI.
f
- 自定义迭代器使用foreach
- 理解cookie的path和domain属性
- 静态页面设置缓存、动态页面设缓存(不断更新中。。。。)
- 区块链技术如何把你的游戏资产真正变为你的资产
- Python标准库07 信号 (signal包,部分os包)
- 当css属性width设为100%时
- GridView实战一:自定义分页、排序、修改、插入、删除
- Windows下程序打包发布时的小技巧
- Linux的“壳”
- 网页优化系列一:合并文件请求(asp.net版)
- Windows下Thumbnail的开发总结
- 剑指OFFER之调整数组顺序使奇数位于偶数前面找(九度OJ1516)
- Linux架构
- 绘图: Python matplotlib简介
- 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 数组属性和方法
- [LeetCode]709. To Lower Case
- ISO C forbids comparison between pointer and integer [-fpermissive]
- 【疑难杂症】解决-TensorFlow “FutureWarning: Conversion of the”
- [Deep-Learning-with-Python] 文本序列中的深度学习
- TN-SCUI2020挑战赛详细讲解
- QSignalMapper使用以及替换方法
- 对于组件的可重用性,大佬给出来6个级别的见解,一起过目一下!
- 多个线程为了同个资源打起架来了,该如何让他们安分?
- 实战|记录一次渗透测试项目
- SVN工具分析
- 客服MM被投诉说下单耗时很长,老板下令必须控制在1秒以内
- 介绍两个刷 SQL 题的网站
- Spring MVC 你必须关注点
- 微信小程序开发实战(12):滑杆组件(slider)和form组件
- pandas按照指定的列排序、paste命令指定分隔符、ggplot2添加拟合曲线