原文:

ORACLE workflow审批界面显示附件信息和附件的下载链接

EBS获取附件URL

代码如下:

  1. CREATE OR REPLACE PACKAGE cux_attachment_util_pkg IS
  2.  
  3. TYPE curtype IS REF CURSOR;
  4. TYPE c_attached_record IS RECORD(
  5. row_num NUMBER,
  6. pk1_value NUMBER,
  7. user_entity_name VARCHAR2(1000),
  8. title VARCHAR2(1000),
  9. file_name VARCHAR2(1000),
  10. datatype_name VARCHAR2(1000),
  11. file_data BLOB,
  12. file_id NUMBER);
  13. -------------------------------------------------------------------
  14. ---------------
  15. -- 功能名称:
  16. -- GET_ATTACHED_HTML
  17. -- 功能说明:
  18. -- 获取附件列表html 代码
  19. -- 参数说明:
  20. -- PITEM_TYPE 工作流代码
  21. -- P_ITEM_KEY 审批关键字
  22. -- P_FUNCTION_NAME 附件功能名称
  23. -- P_ENTITY_NAME 文档实体标识
  24. -- P_TABLE_NAME 文档实体表
  25. -- p_BLOCK_NAME 附件功能的块名
  26. -- 返回附件列表的HTML代码
  27. -- 版本信息:
  28. -- 1.0 Initial Creation
  29. -------------------------------------------------------------------
  30. ---------------
  31. FUNCTION get_attached_html(pitem_type IN VARCHAR2,
  32. pitem_key IN VARCHAR2,
  33. p_function_name IN VARCHAR2,
  34. p_entity_name IN VARCHAR2,
  35. p_table_name IN VARCHAR2,
  36. p_block_name IN VARCHAR2) RETURN VARCHAR2;
  37. ---------------------------------------------------------------------
  38. -------------
  39. -- 功能名称:
  40. -- GET_OUTPUT_URL
  41. -- 功能说明:
  42. -- 获取附件下载链接地址
  43. -- 参数说明:
  44. -- P_PK1_VALUE 附件的主关键字值
  45. -- P_FILE_ID 附件文件ID
  46. -- P_ENTITY_NAME 文档实体标识
  47. -- 返回指定附件文件的下载链接地址
  48. -- 版本信息:
  49. -- 1.0 Initial Creation
  50. ---------------------------------------------------------------------
  51. -------------
  52. FUNCTION get_output_url(p_pk1_value IN NUMBER,
  53. p_file_id IN NUMBER,
  54. p_entity_name IN VARCHAR2) RETURN VARCHAR2;
  55.  
  56. -------------------------------------------------------------------
  57. ---------------
  58. -- 功能名称:
  59. -- GET_ATTACHED_HTML
  60. -- 功能说明:
  61. -- 获取附件列表html 代码
  62. -- 参数说明:
  63. -- PITEM_TYPE 工作流代码
  64. -- P_ITEM_KEY 审批关键字
  65. -- P_FUNCTION_NAME 附件功能名称
  66. -- P_ENTITY_NAME 文档实体标识
  67. -- P_TABLE_NAME 文档实体表
  68. -- p_BLOCK_NAME 附件功能的块名
  69. -- 返回附件列表的HTML代码
  70. -- 版本信息:
  71. -- 1.0 Initial Creation
  72. ---------------------------------------------------------------------
  73. -------------
  74.  
  75. END;
  1. CREATE OR REPLACE PACKAGE BODY cux_attachment_util_pkg IS
  2.  
  3. FUNCTION get_attached_html(pitem_type IN VARCHAR2,
  4. pitem_key IN VARCHAR2,
  5. p_function_name IN VARCHAR2,
  6. p_entity_name IN VARCHAR2,
  7. p_table_name IN VARCHAR2,
  8. p_block_name IN VARCHAR2) RETURN VARCHAR2 IS
  9. c_attached curtype;
  10. v_document_attached VARCHAR2(32000);
  11. vattachedinfo c_attached_record;
  12. v_count NUMBER := 1;
  13. v_pk1_value NUMBER;
  14. vpk1_filed VARCHAR2(61);
  15. vpk2_filed VARCHAR2(61);
  16. vpk3_filed VARCHAR2(61);
  17. vpk4_filed VARCHAR2(61);
  18. vpk5_filed VARCHAR2(61);
  19. vpk1 VARCHAR2(61);
  20. vpk2 VARCHAR2(61);
  21. vpk3 VARCHAR2(61);
  22. vpk4 VARCHAR2(61);
  23. vpk5 VARCHAR2(61);
  24. vurl VARCHAR2(500);
  25. vcondition_field VARCHAR2(100);
  26. vcondition_operator VARCHAR2(10);
  27. vcondition_value1 VARCHAR2(100);
  28. vcondition_value2 VARCHAR2(100);
  29. vquery_permission_type VARCHAR2(10);
  30. vinsert_permission_type VARCHAR2(10);
  31. vupdate_permission_type VARCHAR2(10);
  32. vdelete_permission_type VARCHAR2(10);
  33. v_sql VARCHAR2(32000);
  34. c_sql VARCHAR2(32000);
  35. BEGIN
  36. BEGIN
  37. SELECT abe.pk1_field,
  38. abe.pk2_field,
  39. abe.pk3_field,
  40. abe.pk4_field,
  41. abe.pk5_field,
  42. abe.condition_field,
  43. abe.condition_operator,
  44. abe.condition_value1,
  45. abe.condition_value2,
  46. abe.query_permission_type,
  47. abe.insert_permission_type,
  48. abe.update_permission_type,
  49. abe.delete_permission_type
  50. INTO vpk1_filed,
  51. vpk2_filed,
  52. vpk3_filed,
  53. vpk4_filed,
  54. vpk5_filed,
  55. vcondition_field,
  56. vcondition_operator,
  57. vcondition_value1,
  58. vcondition_value2,
  59. vquery_permission_type,
  60. vinsert_permission_type,
  61. vupdate_permission_type,
  62. vdelete_permission_type
  63. FROM fnd_attachment_blk_entities abe,
  64. fnd_attachment_blocks ab,
  65. fnd_attachment_functions af
  66. WHERE abe.attachment_blk_id = ab.attachment_blk_id
  67. AND ab.attachment_function_id = af.attachment_function_id
  68. AND af.function_name = p_function_name
  69. AND af.function_type = 'F'
  70. AND abe.data_object_code = p_entity_name
  71. AND ab.block_name = p_block_name
  72. AND rownum = 1;
  73. EXCEPTION
  74. WHEN no_data_found THEN
  75. SELECT abe.pk1_field,
  76. abe.pk2_field,
  77. abe.pk3_field,
  78. abe.pk4_field,
  79. abe.pk5_field,
  80. abe.condition_field,
  81. abe.condition_operator,
  82. abe.condition_value1,
  83. abe.condition_value2,
  84. abe.query_permission_type,
  85. abe.insert_permission_type,
  86. abe.update_permission_type,
  87. abe.delete_permission_type
  88. INTO vpk1_filed,
  89. vpk2_filed,
  90. vpk3_filed,
  91. vpk4_filed,
  92. vpk5_filed,
  93. vcondition_field,
  94. vcondition_operator,
  95. vcondition_value1,
  96. vcondition_value2,
  97. vquery_permission_type,
  98. vinsert_permission_type,
  99. vupdate_permission_type,
  100. vdelete_permission_type
  101. FROM fnd_attachment_blk_entities abe,
  102. fnd_attachment_blocks ab,
  103. fnd_attachment_functions af
  104. WHERE abe.attachment_blk_id = ab.attachment_blk_id
  105. AND ab.attachment_function_id = af.attachment_function_id
  106. AND af.function_name = p_function_name
  107. AND af.function_type = 'O'
  108. AND abe.data_object_code = p_entity_name
  109. AND ab.block_name = p_block_name
  110. AND rownum = 1;
  111. END;
  112. v_sql := 'SELECT ' || substr(vpk1_filed,
  113. instr(vpk1_filed, '.', 1) + 1,
  114. length(vpk1_filed)) || ' FROM ' ||
  115. p_table_name || ' WHERE ITEM_KEY = ''' || pitem_key || '''' ||
  116. ' AND ROWNUM = 1';
  117. EXECUTE IMMEDIATE v_sql
  118. INTO v_pk1_value;
  119. v_document_attached := '<table width=100% border="0"
  120. cellspacing="0" cellpadding="0" >
  121. <tr><td><table cellpadding="0" cellspacing="0" border="0"
  122. width="100%" class="x74"
  123. style="background-image:url(/OA_HTML/cabo/images/swan/headingBarBg.gi
  124. f);">
  125. <tr>
  126. <td width="100%"><h2 class="x75"> 附件列表
  127. </h2></td></tr></table></td></tr>
  128. <tr><td><table width="100%" class="x1h" cellpadding="1"
  129. cellspacing="0" summary="Action History" border="1" >
  130. <tr>
  131. <th class="x1r x4j" scope="col" width="2%" align="LEFT"
  132. valign="baseline" ><span class="x24"> 序号</span></th>
  133. <th class="x1r x4j" scope="col" width="5%" align="LEFT"
  134. valign="baseline" ><span class="x24"> 实体名</span></th>
  135. <th class="x1r x4j" scope="col" width="10%" align="LEFT"
  136. valign="baseline" ><span class="x24"> 标题</span></th>
  137. <th class="x1r x4j" scope="col" width="15%" align="LEFT"
  138. valign="baseline" ><span class="x24"> 文件名</span></th>
  139. </tr>';
  140. c_sql := 'SELECT ROWNUM ROW_NUM,
  141. PK1_VALUE,
  142. USER_ENTITY_NAME,
  143. TITLE,
  144. FILE_NAME,
  145. DATATYPE_NAME,
  146. FILE_DATA,
  147. FILE_ID
  148. FROM (SELECT FAD.PK1_VALUE,
  149. FAD.USER_ENTITY_NAME,
  150. FAD.TITLE,
  151. FAD.FILE_NAME,
  152. FAD.DATATYPE_NAME,
  153. FL.FILE_DATA,
  154. FL.FILE_ID
  155. FROM FND_ATTACHED_DOCS_FORM_VL FAD, FND_LOBS FL
  156. WHERE FAD.MEDIA_ID = FL.FILE_ID
  157. AND FAD.FUNCTION_NAME = ''' || p_function_name || '''' ||
  158. ' AND FAD.PK1_VALUE IN ' || '(SELECT T.' ||
  159. substr(vpk1_filed,
  160. instr(vpk1_filed, '.', 1) + 1,
  161. length(vpk1_filed)) || ' FROM ' ||
  162. p_table_name || ' T WHERE T.ITEM_KEY = ''' ||
  163. pitem_key || '''' || ')
  164. AND FAD.ENTITY_NAME = ''' || p_entity_name || '''' ||
  165. ' ORDER BY FAD.USER_ENTITY_NAME, FAD.SEQ_NUM)';
  166. OPEN c_attached FOR c_sql;
  167. FETCH c_attached
  168. INTO vattachedinfo;
  169. WHILE c_attached% FOUND LOOP
  170. v_document_attached := v_document_attached ||
  171. '<tr>
  172. <td align="LEFT" valign="baseline" class="x1l x4x">' ||
  173. v_count ||
  174. '</td>
  175. <td align="LEFT" valign="baseline" class="x1l x4x">' ||
  176. vattachedinfo.user_entity_name ||
  177. '</td>
  178. <td align="LEFT" valign="baseline" class="x1l x4x">' ||
  179. vattachedinfo.title || '</td>
  180. <td align="LEFT" valign="baseline" class="x1l x4x">
  181. <a href="' ||
  182. get_output_url(v_pk1_value,
  183. vattachedinfo.file_id,
  184. p_entity_name) || '">' ||
  185. vattachedinfo.file_name || '</a></td>
  186. </tr>';
  187. v_count := v_count + 1;
  188. FETCH c_attached
  189. INTO vattachedinfo;
  190. END LOOP;
  191. v_document_attached := v_document_attached ||
  192. '</table></td></tr></table>';
  193. RETURN v_document_attached;
  194. EXCEPTION
  195. WHEN OTHERS THEN
  196. RETURN NULL;
  197. END get_attached_html;
  198. ---------------------------------------------------------------------
  199. -------------
  200. -- 功能名称:
  201. -- GET_OUTPUT_URL
  202. -- 功能说明:
  203. -- 获取附件下载链接地址
  204. -- 参数说明:
  205. -- P_PK1_VALUE 附件的主关键字值
  206. -- P_FILE_ID 附件文件ID
  207. -- P_ENTITY_NAME 文档实体标识
  208. -- 返回指定附件文件的下载链接地址
  209. -- 版本信息:
  210. -- 1.0 Initial Creation
  211. ---------------------------------------------------------------------
  212. -------------
  213. /*FUNCTION GET_OUTPUT_URL(P_PK1_VALUE IN NUMBER, P_FILE_ID IN
  214. NUMBER,P_ENTITY_NAME IN VARCHAR2)
  215. RETURN VARCHAR2 IS
  216. P_ACCESS_ID NUMBER;
  217. V_OUTPUT_URL VARCHAR2(10000);
  218. BEGIN
  219. V_OUTPUT_URL := '';
  220. SELECT ACCESS_ID
  221. INTO P_ACCESS_ID
  222. FROM FND_LOB_ACCESS
  223. WHERE FILE_ID = P_FILE_ID;
  224. V_OUTPUT_URL := RPT_REG_PKG.G_XML_PATH\* 是一个配置文件值可以自己定义修改,
  225. 值如: http://db1.dtpower.zszy.com:8001\*\ ||
  226. 'OA_HTML/fndgfm.jsp?mode=download_blob&fid=' ||
  227. P_FILE_ID || '&accessid=' || P_ACCESS_ID;
  228. RETURN V_OUTPUT_URL;
  229. EXCEPTION
  230. WHEN NO_DATA_FOUND THEN
  231. INSERT INTO FND_LOB_ACCESS
  232. (ACCESS_ID, FILE_ID, TIMESTAMP)
  233. SELECT TO_NUMBER(TO_CHAR(FND_LOBS_S.NEXTVAL) ||
  234. TO_CHAR(SYSDATE, 'SSSSS')),
  235. D.MEDIA_ID,
  236. SYSDATE + 1
  237. FROM FND_ATTACHED_DOCUMENTS B,
  238. FND_DOCUMENTS_TL C,
  239. FND_DOCUMENTS D
  240. WHERE B.DOCUMENT_ID = C.DOCUMENT_ID
  241. AND B.DOCUMENT_ID = D.DOCUMENT_ID
  242. AND B.PK1_VALUE = P_PK1_VALUE
  243. AND D.MEDIA_ID = P_FILE_ID
  244. AND B.ENTITY_NAME = P_ENTITY_NAME
  245. AND C.LANGUAGE = 'ZHS';
  246. COMMIT;
  247. SELECT ACCESS_ID
  248. INTO P_ACCESS_ID
  249. FROM FND_LOB_ACCESS
  250. WHERE FILE_ID = P_FILE_ID;
  251. V_OUTPUT_URL := RPT_REG_PKG.G_XML_PATH ||
  252. 'OA_HTML/fndgfm.jsp?mode=download_blob&fid=' ||
  253. P_FILE_ID || '&accessid=' || P_ACCESS_ID;
  254. RETURN V_OUTPUT_URL;
  255. WHEN OTHERS THEN
  256. P_ACCESS_ID := 0;
  257. V_OUTPUT_URL := '';
  258. XZTZ_LOG_PKG.INSERT_LOG(' 附件列表文件下载链接生成异常',
  259. SQLERRM,
  260. 'XZ_PO_PUB_PKG.GET_OUTPUT_URL',
  261. 30);
  262. RETURN V_OUTPUT_URL;
  263. END GET_OUTPUT_URL;*/
  264. FUNCTION get_output_url(p_pk1_value IN NUMBER,
  265. p_file_id IN NUMBER,
  266. p_entity_name IN VARCHAR2) RETURN VARCHAR2 IS
  267. p_access_id NUMBER;
  268. v_output_url VARCHAR2(10000);
  269. BEGIN
  270. /* V_SQL_STR := 'SELECT d.file_name,d.media_id ,a.access_id,
  271. fnd_gfm.construct_download_url(fnd_web_config.gfm_agent,d.media_id)
  272. URL ' ||
  273. ' from fnd_attached_documents b,fnd_documents_tl c,fnd_lob_access
  274. a,fnd_documents d' ||
  275. ' where b.document_id=c.document_id and
  276. b.document_id=d.document_id and b.pk1_value=''' ||
  277. V_PK1_VALUE || '''' ||
  278. ' and a.file_id=d.media_id and b.entity_name IN
  279. (''XZ_PO_EXPENDED'',''XZ_PO_EXPENDED'')
  280. and C.LANGUAGE=''ZHS'' '; */
  281. v_output_url := fnd_gfm.construct_download_url(fnd_web_config.gfm_agent, /* 应用产品 Web
  282. 代理配置文件值: http://db1.dtpower.zszy.com:8001/pls/TEST*/
  283. p_file_id);
  284. RETURN v_output_url;
  285. EXCEPTION
  286. WHEN OTHERS THEN
  287. p_access_id := 0;
  288. v_output_url := '';
  289. RETURN v_output_url;
  290. END get_output_url;
  291.  
  292. END;

效果如下:

ORACLE workflow审批界面显示附件信息和附件的下载链接(转)的更多相关文章

  1. WSDL项目---添加头信息和附件

    用于底层协议的SOAP请求是HTTP,可以添加两个自定义HTTP头(例如用于身份验证或会话)和附件. 让我们看一下这两个. 1. 自定义HTTP标头 直接添加自定义HTTP头: 我们已经添加了自定义内 ...

  2. Java 添加、下载、读取PDF附件信息(基于Spire.Cloud.SDK for Java)

    Spire.Cloud.SDK for Java提供了PdfAttachmentsApi接口添加附件addAttachment().下载附件downloadAttachment().获取附件信息get ...

  3. Oracle WorkFlow(工作流)(一)

    转载自:http://hi.baidu.com/quce227/item/3dee702c66466a0343634a58 1概述 1.1工作流的概念 Workflow是EBS的基础架构技术之一,系统 ...

  4. 为Dynamics CRM的Office附件注释定制个无需下载即可在线查看的功能

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复164或者20151021可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 上一篇博客:为Dynamics ...

  5. 浅谈odoo 后台与前端文件(附件)的存储与下载

    odoo 后台与前端文件(附件)存储与下载实现 笔记太多了很乱,想想还是写博客的好,慢慢更 当然了,前提是你已经配好了odoo开发环境 一.odoo后台界面实现附件的上传和下载 1).在应用中搜索下图 ...

  6. [统计信息系列7] Oracle 11g的自动统计信息收集

    (一)统计信息收集概述 在Oracle 11g中,默认有3个自动任务,分别是:自动统计信息收集.SQL调优顾问.段空间调整顾问,查看方法如下: SQL> SELECT CLIENT_NAME,T ...

  7. Oracle 11gR2 待定的统计信息(Pending Statistic)

    Oracle 11gR2 待定的统计信息(Pending Statistic) 官档最权威: 发布优化器统计信息的用户界面 管理已发布和待处理的统计信息 实验先拖着.

  8. EBS存储附件信息

    附件三种形式 1.文件 2.url 3.文本 三种方式存储不一样 1.文件是存blob 2.url是存一个链接信息,读出来的时候,就是一个蓝色可点链接    fnd_attached_document ...

  9. Oracle WorkFlow(工作流)(二)

    2.4消息(Message) 消息主要是为通知服务的,可以把消息当作通知的内容和类型.消息也属于一个单据类型,通知只能和同一个单据类型里的消息相关联. 每个消息可以有一个或多个属性和自己相联系,消息的 ...

随机推荐

  1. java输出重定向

    Java的标准输入,输出分别是通过System.in和System.out来代表.默认情况下他们分别代表键盘和显示器. System类里提供了3个重定向标准输入,输出的方法. static void ...

  2. mamcached+magent构建memcached集群

    cat /etc/redhat-release CentOS release 6.7 (Final) 防火墙.selinux 关闭 192.168.12.30 安装libevent和memcached ...

  3. linux网络编程--网络编程的基本函数介绍与使用【转】

    本文转载自:http://blog.csdn.net/yusiguyuan/article/details/17538499 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览 ...

  4. Leading and Trailing(数论/n^k的前三位)题解

    Leading and Trailing You are given two integers: n and k, your task is to find the most significant ...

  5. 【入门教程】kafka环境搭建以及基础教程

    问题导读 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic.发送消息.消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有 ...

  6. c#之有参和无参构造函数,扩展方法

    例如在程序中创建 Parent类和Test类,在Test有三个构造函数,parent类继承Test类,那么我们可以在Test类自身中添加 扩展 方法吗? 答案:是不可以的.因为扩展方法必须是静态的,且 ...

  7. SQL 事务(Transaction)

    1.概念 指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)由多个sql语句组成,必须作为一个整体执行这些sql语句作为一个整体一起向系统提交,要么都执行.要么都不执行 语法步骤:开始事 ...

  8. div滚动条时div内容显示一半

    本文为博主原创,未经允许不得转载 今天在做页面浏览器适配时,将页面中的一个div进行放大时,出现了滚动条,但滚动条对应div中的 内容只能显示一半. 仔细对应属性样式时,div具有overflow:h ...

  9. MVC ---- T4模板的小练习

    1.先建立两个模板文件 :Manger.ttinclude.DBHelper.ttinclude Manger.ttinclude <#@ assembly name="System. ...

  10. Hibernate与iBastis 比较(转载)

    Hibernate  VS  iBATIS 简介 Hibernate 是当前最流行的O/R mapping框架,当前版本是3.05.它出身于sf.net,现在已经成为Jboss的一部分了 iBATIS ...