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. python locust 性能测试:HOOKS<钩子方法>

    为locust中不同类型的事件,提供的钩子方法: from locust import TaskSet, task, events, Locust from locust.clients import ...

  2. Java里面使用Date.compareTo比较时间

    DateFormat dateFormat = DateFormat.getDateInstance(); Date oldTime = dateFormat.parse("2019-04- ...

  3. Linux基础命令---tload显示系统负载

    tload tload指令以字符的方式显示当前系统的平均负载情况. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora.SUSE.openSUSE.   1.语法   ...

  4. 基于zigbee协议的空中下载技术(OTA)

    首先镜像服务器的解释: 镜像服务器(Mirror server)与主服务器的服务内容都是一样的,只是放在一个不同的地方,分担主机的负载. 简单来说就是和照镜子似的,能看,但不是原版的.在网上内容完全相 ...

  5. LeetCode 整数反转

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: ...

  6. pip使用国内源的配置方法

    [root@ ~]# cat ~/.pip/pip.conf [global] index-url = https://pypi.douban.com/simple

  7. Java锁与CAS

    一.加锁与无锁CAS 在谈论无锁概念时,总会关联起乐观派与悲观派,对于乐观派而言,他们认为事情总会往好的方向发展,总是认为坏的情况发生的概率特别小,可以无所顾忌地做事,但对于悲观派而已,他们总会认为发 ...

  8. 创建您的 ActiveReports Web端在线报表设计器

    概述 ActiveReports Web端在线报表设计器已经正式上线!看到它这么帅气.实用,你是不是也想自己动手创建一个? 现在我们就来教您,如何创建一个简单的 ActiveReports Web端在 ...

  9. js原生实现网页广告条飞舞的效果

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  10. ECharts导出word 图表模糊失真

    在项目中会有这样的需求,echars生成图表导入到word中 在项目中用的插件 博主有一篇文章将的是  vue使用jquery的三方插件jquery.wordexport.js   https://b ...