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. maven配置国内阿里云镜像

    <mirrors> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> ...

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

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

  3. selenium环境配置

    在命令提示符中查找 pip的位置 where pip 输入pip,出现一下信息显示,如果提示['pip' 不是内部或外部命令,也不是可运行的程序 或批处理文件.]请查看你的系统Path 上查看你的配置 ...

  4. Django的安装和一些操作

    1.安装 (1) 命令行: pip install django==1.11.18 pip install django==1.11.18 -i 源 (2) pycharm setting —> ...

  5. linux创建桌面快捷方式

    这里拿postman举例,其他的程序类似 在/usr/sharp/applications新建postman.desktop文件(终端下输入vim /usr/sharm/applications/po ...

  6. mybatis的collection查询问题以及使用原生解决方案的结果

    之前在springboot+mybatis环境的坑和sql语句简化技巧的第2点提到,数据库的一对多查询可以一次查询多级数据,并且把拿到的数据按id聚合,使父级表和子级表都有数据. 但是这种查询,必然要 ...

  7. APScheduler

    目录 APScheduler简介 支持的后端存储作业 集成的Python框架 APScheduler下载安装 APScheduler组件 各组件简介 调度器 作业存储器 执行器 触发器 使用 添加作业 ...

  8. RHCE

    RHCE 配置 配置firewalld防火墙 配置firewalld端口转发 自定义用户环境 配置链路聚合 配置IPV6地址 配置本地邮件服务

  9. 在vim下打开终端

    注意:仅在vim8.1下可用 使用方法: :term 打开默认的终端 如果是linux,或者使用wsl, :term bash Ctrl+W/Ctrl+N 将终端设置成normal模式

  10. [FJOI2018]领导集团问题 mulitset合并

    P4577 [FJOI2018]领导集团问题 链接 luogu bzoj 他是个重题 bzoj4919: [Lydsy1706月赛]大根堆 代码改改就过了 思路 求树上的lis,要好好读题目的!!! ...