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附件(使用方法备份)的更多相关文章

  1. C#实现Web文件上传的两种方法

    1. C#实现Web文件的上传 在Web编程中,我们常需要把一些本地文件上传到Web服务器上,上传后,用户可以通过浏览器方便地浏览这些文件,应用十分广泛. 那么使用C#如何实现文件上传的功能呢?下面笔 ...

  2. web 文件上传 无刷新的方法 使用iframe

    <html> <script type="text/javascript" src="admin/view/js/jquery.min.js" ...

  3. web service上传参数代码实例

    web service上传参数代码实例 这次做的项目用到webservice比较多,最开始在网上看的参考dome,发现都不行,后来发现安卓4.0以后有很大的不同,在做传参时,有些东西需要注意: 第一, ...

  4. Java Web文件上传原理分析(不借助开源fileupload上传jar包)

    Java Web文件上传原理分析(不借助开源fileupload上传jar包) 博客分类: Java Web   最近在面试IBM时,面试官突然问到:如果让你自己实现一个文件上传,你的代码要如何写,不 ...

  5. SpringBoot 整合文件上传 elment Ui 上传组件

    SpringBoot 整合文件上传 elment Ui 上传组件 本文章记录 自己学习使用 侵权必删! 前端代码 博主最近在学 elment Ui 所以 前端使用 elmentUi 的 upload ...

  6. Java Web文件上传

    参考资料:http://www.cnblogs.com/xdp-gacl/p/4200090.html 一.问题描述 Java Web文件上传需要借助一些第三方库,常用的是借助Apache的包,有两个 ...

  7. 文件批量上传-统一附件管理器-在线预览文件(有互联网和没有两种)--SNF快速开发平台3.0

    实际上在SNF里使用附件管理是非常简单的事情,一句代码就可以搞定.但我也要在这里记录一下统一附件管理器能满足的需求. 通用的附件管理,不要重复开发,调用尽量简洁. 批量文件上传,并对每个文件大小限制, ...

  8. WEB文件上传下载功能

    WEB文件上传下载在日常工作中经常用到的功能 这里用到JS库 http://files.cnblogs.com/meilibao/ajaxupload.3.5.js 上传代码段(HTML) <% ...

  9. Web 文件上传 目录

    0. SpringMVC -- 梗概--源码--贰--上传 1. Web上传文件的原理及实现 2. Web文件上传方法总结大全 3. SpringMVC 文件上传配置,多文件上传,使用的Multipa ...

随机推荐

  1. 异步 async & await

    1 什么是异步 异步的另外一种含义是计算机多线程的异步处理.与同步处理相对,异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程. 2 异步场景 l  不 ...

  2. 利用ResultFilter实现asp.net mvc 页面静态化

    为了提高网站性能.和网站的负载能力,页面静态化是一种有效的方式,这里对于asp.net mvc3 构架下的网站,提供一种个人认为比较好的静态话方式. 实现原理是通过mvc提供的过滤器扩展点实现页面内容 ...

  3. Windbg程序调试系列5-高CPU问题分析

    上篇博客中给大家分享了使用Windbg进行Live Debugging: Windbg程序调试系列4-Live Debugging 本篇中我们继续,跟大家分享常见的应用程序高CPU使用率问题分析. 先 ...

  4. 菜鸟redis初学

    该随笔为本人自学redis所遇到的错误,写这些初衷完全是为了避免以后犯相同的错误,如果对别人有帮助,那就相互促进. 在Java中使用redis,首先你的Jdk要能运行,如果没配置好,网上有很多jdk环 ...

  5. Linux Maven安装

    Maven 官网,下载maven 包 http://maven.apache.org/download.cgi 下载完成:apache-maven-3.6.1-bin.tar.gz 解压到自定义目录: ...

  6. 2018-2019-2 20165215《网络对抗技术》Exp5 MSF基础应用

    目录 实验内容 实验原理 实验步骤 (一)一个主动攻击实践 ms08_067(成功) (二)一个针对浏览器的攻击 ms14_064(成功) (三)一个针对客户端的攻击 Adobe(成功) CVE-20 ...

  7. Linux系统安装Docker

    1.安装Linux系统 2.查看centos内核版本.Docker要求centos的内核版本必须高于3.10.使用命令:uname -r 查看内核版本.如果低于3.10,使用命令:yum update ...

  8. ABP入门系列之2——ABP模板项目

    进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2017打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打开Web.config, ...

  9. js识别ESC并关闭开窗

    $(document).keyup(function(event) { switch (event.keyCode) { //ESC默认code为27 case 27: var index = par ...

  10. java面向对象总结(一)

    1. 对象的概念及面向对象的三个基本特征 面向对象的三大核心特性 面向对象开发模式更有利于人们开拓思维,在具体的开发过程中便于程序的划分,方便程序员分工合作,提高开发效率.面向对象程序设计有以下优点. ...