WEB UI 上传URL附件(使用方法备份)
FUNCTION zcrm_update_atta.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(NOBJECT_ID) TYPE CRMT_PO_NUMBER_SOLD OPTIONAL
*" VALUE(OOBJECT_ID) TYPE CRMT_OBJECT_ID OPTIONAL
*" VALUE(PROCESS_TYPE) TYPE CRMT_PROCESS_TYPE OPTIONAL
*" VALUE(FILENAME) TYPE STRING OPTIONAL
*" VALUE(URL) TYPE STRING OPTIONAL
*" VALUE(RFIELD1) TYPE STRING OPTIONAL
*" VALUE(RFIELD2) TYPE STRING OPTIONAL
*" EXPORTING
*" VALUE(MSGINFO) TYPE STRING
*" VALUE(MSGTYPE) TYPE STRING
*" TABLES
*" FJ STRUCTURE ZCRMS0085 OPTIONAL
*"----------------------------------------------------------------------
"数据定义
TYPES:BEGIN OF ty_order,
guid TYPE crmt_object_guid,
object_id TYPE crmt_object_id,
process_type TYPE crmt_process_type,
object_type TYPE crmt_subobject_category_db,
END OF ty_order,
BEGIN OF ty_docu,
objtypelo TYPE skwf_ioty,
classlo TYPE sdok_class,
objidlo TYPE sdok_docid,
objtypeph TYPE skwf_ioty,
classph TYPE sdok_class,
objidph TYPE sdok_docid,
value TYPE sdok_propv,
END OF ty_docu.
DATA:gw_order TYPE ty_order,
ls_business_object TYPE sibflporb,
lt_phioloios TYPE skwf_lpios,
ls_phioloios LIKE LINE OF lt_phioloios,
lt_ios_prop_result TYPE crm_kw_propst,
ls_ios_prop_result LIKE LINE OF lt_ios_prop_result,
lt_prop TYPE sdokproptls,
ls_prop TYPE sdokproptl,
lt_docu TYPE TABLE OF ty_docu,
lt_docud TYPE TABLE OF ty_docu, "要删除的
ls_docu LIKE LINE OF lt_docu,
gt_url TYPE sdokcntascs,
gw_url LIKE LINE OF gt_url,
gt_prop TYPE sdokproptys,
gw_prop LIKE LINE OF gt_prop,
gt_dele TYPE skwf_ios,
gw_dele TYPE skwf_io,
gw_error TYPE skwf_error,
gw_fj TYPE zcrms0085. * IF FJ[] IS INITIAL.
* msgtype = 'E'.
* msginfo = 'CRM Attachment is required!'.
* ENDIF.
IF oobject_id IS INITIAL.
msgtype = 'E'.
msginfo = 'CRM object id is required!'.
ELSE.
IF oobject_id CO '0123456789 '.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = oobject_id
IMPORTING
output = gw_order-object_id.
SELECT SINGLE guid object_id process_type object_type INTO gw_order
FROM crmd_orderadm_h WHERE object_id = gw_order-object_id AND process_type = process_type.
IF sy-subrc <> .
msgtype = 'E'.
msginfo = 'CRM object id or type is incorrect!'.
ENDIF.
ELSE.
msgtype = 'E'.
msginfo = 'CRM object id is incorrect!'.
ENDIF.
ENDIF. IF msgtype = 'E'.
EXIT.
ENDIF. "取出工单对应的附件信息
ls_business_object-instid = gw_order-guid.
ls_business_object-typeid = gw_order-object_type.
ls_business_object-catid = 'BO'.
CALL METHOD cl_crm_documents=>get_info
EXPORTING
business_object = ls_business_object
IMPORTING
phioloios = lt_phioloios
ios_properties_result = lt_ios_prop_result. "附件整理到临时表
LOOP AT lt_phioloios INTO ls_phioloios.
CLEAR:ls_docu.
MOVE-CORRESPONDING ls_phioloios TO ls_docu.
* READ TABLE lt_ios_prop_result INTO ls_ios_prop_result WITH KEY objtype = ls_phioloios-objtypelo
* class = ls_phioloios-classlo
* objid = ls_phioloios-objidlo.
* IF sy-subrc = 0.
* REFRESH:lt_prop.
* lt_prop[] = ls_ios_prop_result-properties[]."属性表
* READ TABLE lt_prop INTO ls_prop WITH KEY name = 'KW_RELATIVE_URL'.
* IF sy-subrc = 0."不存在的。
* ENDIF.
* ls_docu-value = ls_prop-value.
* ENDIF.
* READ TABLE fj INTO gw_fj WITH KEY filename = ls_docu-value.
* IF sy-subrc <> 0.
APPEND ls_docu TO lt_docu."当前文件不在传过来的文件中,需要删除
* ELSE.
* DELETE fj WHERE filename = ls_docu-value."传过来的文件已经存在,删除传过来的表,这样传过来的表都是不存在的,全部新建
* ENDIF.
ENDLOOP.
"循环需要删除的表;全部删除
IF lt_docu[] IS NOT INITIAL.
REFRESH:gt_dele.
LOOP AT lt_docu INTO ls_docu.
gw_dele-objtype = ls_docu-objtypelo.
gw_dele-class = ls_docu-classlo.
gw_dele-objid = ls_docu-objidlo.
APPEND gw_dele TO gt_dele.
CLEAR:gw_dele.
gw_dele-objtype = ls_docu-objtypeph.
gw_dele-class = ls_docu-classph.
gw_dele-objid = ls_docu-objidph.
APPEND gw_dele TO gt_dele.
CLEAR:gw_dele.
ENDLOOP.
cl_crm_documents=>delete(
EXPORTING
business_object = ls_business_object
ios = gt_dele
IMPORTING
error = gw_error ).
IF gw_error-type = 'E'.
msgtype = 'E'.
msginfo = msginfo && ls_docu-value && ':Delete error!'.
EXIT.
ELSE.
msgtype = 'S'.
ENDIF.
ENDIF. "循环附件表,新建批处理。
IF fj[] IS NOT INITIAL.
LOOP AT fj INTO gw_fj.
REFRESH:gt_url,gt_prop.
gw_url-line = gw_fj-url.
APPEND gw_url TO gt_url.
gw_prop-name = 'KW_RELATIVE_URL'. "The name of URL
gw_prop-value = gw_fj-filename.
APPEND gw_prop TO gt_prop.
gw_prop-name = 'CONTENT_URL'.
gw_prop-value = gw_fj-url.
APPEND gw_prop TO gt_prop.
gw_prop-name = 'BDS_KEYWORD'.
gw_prop-value = 'TVS'.
APPEND gw_prop TO gt_prop.
gw_prop-name = 'DESCRIPTION'.
gw_prop-value = gw_fj-filename.
APPEND gw_prop TO gt_prop. cl_crm_documents=>create_url(
EXPORTING
url = gt_url
properties = gt_prop
business_object = ls_business_object
IMPORTING
error = gw_error ).
IF gw_error-type = 'E'.
msgtype = 'E'.
msginfo = msginfo && gw_fj-filename && ':create error!'.
EXIT.
ELSE.
msgtype = 'S'.
ENDIF.
ENDLOOP.
ENDIF. ENDFUNCTION.
WEB UI 上传URL附件(使用方法备份)的更多相关文章
- C#实现Web文件上传的两种方法
1. C#实现Web文件的上传 在Web编程中,我们常需要把一些本地文件上传到Web服务器上,上传后,用户可以通过浏览器方便地浏览这些文件,应用十分广泛. 那么使用C#如何实现文件上传的功能呢?下面笔 ...
- web 文件上传 无刷新的方法 使用iframe
<html> <script type="text/javascript" src="admin/view/js/jquery.min.js" ...
- web service上传参数代码实例
web service上传参数代码实例 这次做的项目用到webservice比较多,最开始在网上看的参考dome,发现都不行,后来发现安卓4.0以后有很大的不同,在做传参时,有些东西需要注意: 第一, ...
- Java Web文件上传原理分析(不借助开源fileupload上传jar包)
Java Web文件上传原理分析(不借助开源fileupload上传jar包) 博客分类: Java Web 最近在面试IBM时,面试官突然问到:如果让你自己实现一个文件上传,你的代码要如何写,不 ...
- SpringBoot 整合文件上传 elment Ui 上传组件
SpringBoot 整合文件上传 elment Ui 上传组件 本文章记录 自己学习使用 侵权必删! 前端代码 博主最近在学 elment Ui 所以 前端使用 elmentUi 的 upload ...
- Java Web文件上传
参考资料:http://www.cnblogs.com/xdp-gacl/p/4200090.html 一.问题描述 Java Web文件上传需要借助一些第三方库,常用的是借助Apache的包,有两个 ...
- 文件批量上传-统一附件管理器-在线预览文件(有互联网和没有两种)--SNF快速开发平台3.0
实际上在SNF里使用附件管理是非常简单的事情,一句代码就可以搞定.但我也要在这里记录一下统一附件管理器能满足的需求. 通用的附件管理,不要重复开发,调用尽量简洁. 批量文件上传,并对每个文件大小限制, ...
- WEB文件上传下载功能
WEB文件上传下载在日常工作中经常用到的功能 这里用到JS库 http://files.cnblogs.com/meilibao/ajaxupload.3.5.js 上传代码段(HTML) <% ...
- Web 文件上传 目录
0. SpringMVC -- 梗概--源码--贰--上传 1. Web上传文件的原理及实现 2. Web文件上传方法总结大全 3. SpringMVC 文件上传配置,多文件上传,使用的Multipa ...
随机推荐
- mysql数据类型优化
选择优化的数据类型原则: 1. 更小的通常更好 尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快,因为它们占用更少的磁盘.内存和CPU缓存,并且处理时需要的CPU周期也更少. 2. 简单 ...
- MySQL高性能优化规范建议,速度收藏
数据库命令规范 •所有数据库对象名称必须使用小写字母并用下划线分割•所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)•数据库对象的命名要能做到见 ...
- Oracle rac 监听状态异常远程连接问题解决(TNS-12541 TNS-12560 TNS-00511 Linux Error:111 ORA-12502)
问题1现象 数据导出脚本执行失败,报错如下 ORA-12537 到服务器上查看,报错: [oracle@test ~]$ lsnrctl status LSNRCTL - Production on ...
- 通过KSoap三方插件解析WebService接口方法
话不多说,正文如下: 1.在lib中放入ksoap2的jar包并导入 2.在xml 配置文件中加入: <!-- 访问网络的权限 --> <uses-permission androi ...
- 创建作业(JOB)
在SQL Server日常需求处理中,会遇到定时执行或统计数据的需求,这时我们可以通过作业(JOB)来处理,从而通过代理的方式来实现数据的自动处理.一下为SQL Server中创建作业的脚本,供大家参 ...
- 软件测试4gkd
一.性能测试有几种类型,它们之间什么关系? (1)性能测试包括:负载测试.压力测试.配置测试.并发测试.容量测试.可靠性测试.失败测试. 负载测试:通过逐渐增加系统的负载,测试系统性能的变化,并最终确 ...
- 软件测试3gkd
一.单元测试的任务 单元测试主要是对软件的基本组成单元进行测试,且所测试单元与程序的其他部分在测试中相隔离. 在单元测试中,我们需要对与程序构建中的单位测试以保证其可靠运行与代码规范. 单元测 ...
- day14
迭代器什么是迭代器(iterator) 器指的是某种工具 迭代指的是更新换代的过程,例如应用程序的版本更新从1.0 变成 1.2 迭代的目的是要根据上一个结果,产生下一个结果,这是一个重复的过程,但不 ...
- Hello2 source analysis
在example目录下的web\servlet\hello2\src\main\java\javaeetutorial\hello2路径里可以找到hello2的GreetingServlet.java ...
- Python装饰器的另类用法
之前有比较系统介绍过Python的装饰器(请查阅<详解Python装饰器>),本文算是一个补充.今天我们一起探讨一下装饰器的另类用法. 语法回顾 开始之前我们再将Python装饰器的语法回 ...