原文:

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

EBS获取附件URL

代码如下:

CREATE OR REPLACE PACKAGE cux_attachment_util_pkg IS

  TYPE curtype IS REF CURSOR;
TYPE c_attached_record IS RECORD(
row_num NUMBER,
pk1_value NUMBER,
user_entity_name VARCHAR2(1000),
title VARCHAR2(1000),
file_name VARCHAR2(1000),
datatype_name VARCHAR2(1000),
file_data BLOB,
file_id NUMBER);
-------------------------------------------------------------------
---------------
-- 功能名称:
-- GET_ATTACHED_HTML
-- 功能说明:
-- 获取附件列表html 代码
-- 参数说明:
-- PITEM_TYPE 工作流代码
-- P_ITEM_KEY 审批关键字
-- P_FUNCTION_NAME 附件功能名称
-- P_ENTITY_NAME 文档实体标识
-- P_TABLE_NAME 文档实体表
-- p_BLOCK_NAME 附件功能的块名
-- 返回附件列表的HTML代码
-- 版本信息:
-- 1.0 Initial Creation
-------------------------------------------------------------------
---------------
FUNCTION get_attached_html(pitem_type IN VARCHAR2,
pitem_key IN VARCHAR2,
p_function_name IN VARCHAR2,
p_entity_name IN VARCHAR2,
p_table_name IN VARCHAR2,
p_block_name IN VARCHAR2) RETURN VARCHAR2;
---------------------------------------------------------------------
-------------
-- 功能名称:
-- GET_OUTPUT_URL
-- 功能说明:
-- 获取附件下载链接地址
-- 参数说明:
-- P_PK1_VALUE 附件的主关键字值
-- P_FILE_ID 附件文件ID
-- P_ENTITY_NAME 文档实体标识
-- 返回指定附件文件的下载链接地址
-- 版本信息:
-- 1.0 Initial Creation
---------------------------------------------------------------------
-------------
FUNCTION get_output_url(p_pk1_value IN NUMBER,
p_file_id IN NUMBER,
p_entity_name IN VARCHAR2) RETURN VARCHAR2; -------------------------------------------------------------------
---------------
-- 功能名称:
-- GET_ATTACHED_HTML
-- 功能说明:
-- 获取附件列表html 代码
-- 参数说明:
-- PITEM_TYPE 工作流代码
-- P_ITEM_KEY 审批关键字
-- P_FUNCTION_NAME 附件功能名称
-- P_ENTITY_NAME 文档实体标识
-- P_TABLE_NAME 文档实体表
-- p_BLOCK_NAME 附件功能的块名
-- 返回附件列表的HTML代码
-- 版本信息:
-- 1.0 Initial Creation
---------------------------------------------------------------------
------------- END;
CREATE OR REPLACE PACKAGE BODY cux_attachment_util_pkg IS

  FUNCTION get_attached_html(pitem_type      IN VARCHAR2,
pitem_key IN VARCHAR2,
p_function_name IN VARCHAR2,
p_entity_name IN VARCHAR2,
p_table_name IN VARCHAR2,
p_block_name IN VARCHAR2) RETURN VARCHAR2 IS
c_attached curtype;
v_document_attached VARCHAR2(32000);
vattachedinfo c_attached_record;
v_count NUMBER := 1;
v_pk1_value NUMBER;
vpk1_filed VARCHAR2(61);
vpk2_filed VARCHAR2(61);
vpk3_filed VARCHAR2(61);
vpk4_filed VARCHAR2(61);
vpk5_filed VARCHAR2(61);
vpk1 VARCHAR2(61);
vpk2 VARCHAR2(61);
vpk3 VARCHAR2(61);
vpk4 VARCHAR2(61);
vpk5 VARCHAR2(61);
vurl VARCHAR2(500);
vcondition_field VARCHAR2(100);
vcondition_operator VARCHAR2(10);
vcondition_value1 VARCHAR2(100);
vcondition_value2 VARCHAR2(100);
vquery_permission_type VARCHAR2(10);
vinsert_permission_type VARCHAR2(10);
vupdate_permission_type VARCHAR2(10);
vdelete_permission_type VARCHAR2(10);
v_sql VARCHAR2(32000);
c_sql VARCHAR2(32000);
BEGIN
BEGIN
SELECT abe.pk1_field,
abe.pk2_field,
abe.pk3_field,
abe.pk4_field,
abe.pk5_field,
abe.condition_field,
abe.condition_operator,
abe.condition_value1,
abe.condition_value2,
abe.query_permission_type,
abe.insert_permission_type,
abe.update_permission_type,
abe.delete_permission_type
INTO vpk1_filed,
vpk2_filed,
vpk3_filed,
vpk4_filed,
vpk5_filed,
vcondition_field,
vcondition_operator,
vcondition_value1,
vcondition_value2,
vquery_permission_type,
vinsert_permission_type,
vupdate_permission_type,
vdelete_permission_type
FROM fnd_attachment_blk_entities abe,
fnd_attachment_blocks ab,
fnd_attachment_functions af
WHERE abe.attachment_blk_id = ab.attachment_blk_id
AND ab.attachment_function_id = af.attachment_function_id
AND af.function_name = p_function_name
AND af.function_type = 'F'
AND abe.data_object_code = p_entity_name
AND ab.block_name = p_block_name
AND rownum = 1;
EXCEPTION
WHEN no_data_found THEN
SELECT abe.pk1_field,
abe.pk2_field,
abe.pk3_field,
abe.pk4_field,
abe.pk5_field,
abe.condition_field,
abe.condition_operator,
abe.condition_value1,
abe.condition_value2,
abe.query_permission_type,
abe.insert_permission_type,
abe.update_permission_type,
abe.delete_permission_type
INTO vpk1_filed,
vpk2_filed,
vpk3_filed,
vpk4_filed,
vpk5_filed,
vcondition_field,
vcondition_operator,
vcondition_value1,
vcondition_value2,
vquery_permission_type,
vinsert_permission_type,
vupdate_permission_type,
vdelete_permission_type
FROM fnd_attachment_blk_entities abe,
fnd_attachment_blocks ab,
fnd_attachment_functions af
WHERE abe.attachment_blk_id = ab.attachment_blk_id
AND ab.attachment_function_id = af.attachment_function_id
AND af.function_name = p_function_name
AND af.function_type = 'O'
AND abe.data_object_code = p_entity_name
AND ab.block_name = p_block_name
AND rownum = 1;
END;
v_sql := 'SELECT ' || substr(vpk1_filed,
instr(vpk1_filed, '.', 1) + 1,
length(vpk1_filed)) || ' FROM ' ||
p_table_name || ' WHERE ITEM_KEY = ''' || pitem_key || '''' ||
' AND ROWNUM = 1';
EXECUTE IMMEDIATE v_sql
INTO v_pk1_value;
v_document_attached := '<table width=100% border="0"
cellspacing="0" cellpadding="0" >
<tr><td><table cellpadding="0" cellspacing="0" border="0"
width="100%" class="x74"
style="background-image:url(/OA_HTML/cabo/images/swan/headingBarBg.gi
f);">
<tr>
<td width="100%"><h2 class="x75"> 附件列表
</h2></td></tr></table></td></tr>
<tr><td><table width="100%" class="x1h" cellpadding="1"
cellspacing="0" summary="Action History" border="1" >
<tr>
<th class="x1r x4j" scope="col" width="2%" align="LEFT"
valign="baseline" ><span class="x24"> 序号</span></th>
<th class="x1r x4j" scope="col" width="5%" align="LEFT"
valign="baseline" ><span class="x24"> 实体名</span></th>
<th class="x1r x4j" scope="col" width="10%" align="LEFT"
valign="baseline" ><span class="x24"> 标题</span></th>
<th class="x1r x4j" scope="col" width="15%" align="LEFT"
valign="baseline" ><span class="x24"> 文件名</span></th>
</tr>';
c_sql := 'SELECT ROWNUM ROW_NUM,
PK1_VALUE,
USER_ENTITY_NAME,
TITLE,
FILE_NAME,
DATATYPE_NAME,
FILE_DATA,
FILE_ID
FROM (SELECT FAD.PK1_VALUE,
FAD.USER_ENTITY_NAME,
FAD.TITLE,
FAD.FILE_NAME,
FAD.DATATYPE_NAME,
FL.FILE_DATA,
FL.FILE_ID
FROM FND_ATTACHED_DOCS_FORM_VL FAD, FND_LOBS FL
WHERE FAD.MEDIA_ID = FL.FILE_ID
AND FAD.FUNCTION_NAME = ''' || p_function_name || '''' ||
' AND FAD.PK1_VALUE IN ' || '(SELECT T.' ||
substr(vpk1_filed,
instr(vpk1_filed, '.', 1) + 1,
length(vpk1_filed)) || ' FROM ' ||
p_table_name || ' T WHERE T.ITEM_KEY = ''' ||
pitem_key || '''' || ')
AND FAD.ENTITY_NAME = ''' || p_entity_name || '''' ||
' ORDER BY FAD.USER_ENTITY_NAME, FAD.SEQ_NUM)';
OPEN c_attached FOR c_sql;
FETCH c_attached
INTO vattachedinfo;
WHILE c_attached% FOUND LOOP
v_document_attached := v_document_attached ||
'<tr>
<td align="LEFT" valign="baseline" class="x1l x4x">' ||
v_count ||
'</td>
<td align="LEFT" valign="baseline" class="x1l x4x">' ||
vattachedinfo.user_entity_name ||
'</td>
<td align="LEFT" valign="baseline" class="x1l x4x">' ||
vattachedinfo.title || '</td>
<td align="LEFT" valign="baseline" class="x1l x4x">
<a href="' ||
get_output_url(v_pk1_value,
vattachedinfo.file_id,
p_entity_name) || '">' ||
vattachedinfo.file_name || '</a></td>
</tr>';
v_count := v_count + 1;
FETCH c_attached
INTO vattachedinfo;
END LOOP;
v_document_attached := v_document_attached ||
'</table></td></tr></table>';
RETURN v_document_attached;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END get_attached_html;
---------------------------------------------------------------------
-------------
-- 功能名称:
-- GET_OUTPUT_URL
-- 功能说明:
-- 获取附件下载链接地址
-- 参数说明:
-- P_PK1_VALUE 附件的主关键字值
-- P_FILE_ID 附件文件ID
-- P_ENTITY_NAME 文档实体标识
-- 返回指定附件文件的下载链接地址
-- 版本信息:
-- 1.0 Initial Creation
---------------------------------------------------------------------
-------------
/*FUNCTION GET_OUTPUT_URL(P_PK1_VALUE IN NUMBER, P_FILE_ID IN
NUMBER,P_ENTITY_NAME IN VARCHAR2)
RETURN VARCHAR2 IS
P_ACCESS_ID NUMBER;
V_OUTPUT_URL VARCHAR2(10000);
BEGIN
V_OUTPUT_URL := '';
SELECT ACCESS_ID
INTO P_ACCESS_ID
FROM FND_LOB_ACCESS
WHERE FILE_ID = P_FILE_ID;
V_OUTPUT_URL := RPT_REG_PKG.G_XML_PATH\* 是一个配置文件值可以自己定义修改,
值如: http://db1.dtpower.zszy.com:8001\*\ ||
'OA_HTML/fndgfm.jsp?mode=download_blob&fid=' ||
P_FILE_ID || '&accessid=' || P_ACCESS_ID;
RETURN V_OUTPUT_URL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO FND_LOB_ACCESS
(ACCESS_ID, FILE_ID, TIMESTAMP)
SELECT TO_NUMBER(TO_CHAR(FND_LOBS_S.NEXTVAL) ||
TO_CHAR(SYSDATE, 'SSSSS')),
D.MEDIA_ID,
SYSDATE + 1
FROM FND_ATTACHED_DOCUMENTS B,
FND_DOCUMENTS_TL C,
FND_DOCUMENTS D
WHERE B.DOCUMENT_ID = C.DOCUMENT_ID
AND B.DOCUMENT_ID = D.DOCUMENT_ID
AND B.PK1_VALUE = P_PK1_VALUE
AND D.MEDIA_ID = P_FILE_ID
AND B.ENTITY_NAME = P_ENTITY_NAME
AND C.LANGUAGE = 'ZHS';
COMMIT;
SELECT ACCESS_ID
INTO P_ACCESS_ID
FROM FND_LOB_ACCESS
WHERE FILE_ID = P_FILE_ID;
V_OUTPUT_URL := RPT_REG_PKG.G_XML_PATH ||
'OA_HTML/fndgfm.jsp?mode=download_blob&fid=' ||
P_FILE_ID || '&accessid=' || P_ACCESS_ID;
RETURN V_OUTPUT_URL;
WHEN OTHERS THEN
P_ACCESS_ID := 0;
V_OUTPUT_URL := '';
XZTZ_LOG_PKG.INSERT_LOG(' 附件列表文件下载链接生成异常',
SQLERRM,
'XZ_PO_PUB_PKG.GET_OUTPUT_URL',
30);
RETURN V_OUTPUT_URL;
END GET_OUTPUT_URL;*/
FUNCTION get_output_url(p_pk1_value IN NUMBER,
p_file_id IN NUMBER,
p_entity_name IN VARCHAR2) RETURN VARCHAR2 IS
p_access_id NUMBER;
v_output_url VARCHAR2(10000);
BEGIN
/* V_SQL_STR := 'SELECT d.file_name,d.media_id ,a.access_id,
fnd_gfm.construct_download_url(fnd_web_config.gfm_agent,d.media_id)
URL ' ||
' from fnd_attached_documents b,fnd_documents_tl c,fnd_lob_access
a,fnd_documents d' ||
' where b.document_id=c.document_id and
b.document_id=d.document_id and b.pk1_value=''' ||
V_PK1_VALUE || '''' ||
' and a.file_id=d.media_id and b.entity_name IN
(''XZ_PO_EXPENDED'',''XZ_PO_EXPENDED'')
and C.LANGUAGE=''ZHS'' '; */
v_output_url := fnd_gfm.construct_download_url(fnd_web_config.gfm_agent, /* 应用产品 Web
代理配置文件值: http://db1.dtpower.zszy.com:8001/pls/TEST*/
p_file_id);
RETURN v_output_url;
EXCEPTION
WHEN OTHERS THEN
p_access_id := 0;
v_output_url := '';
RETURN v_output_url;
END get_output_url; 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. Core Java 2

    p267~p270: 1.一个方法不仅需要告诉编译器将要返回什么值, 还要告诉编译器有可能发生什么错误(以便在错误发生时用妥善的方式处理错误). 2.方法应该在首部声明所有可能抛出的异常. 3.方法抛 ...

  2. bzoj1643 / P2666 [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪

    [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪 简单的dfs题 枚举前3个完全平方数,判断最后一个是不是完全平方数,统计合法方案数即可. (zz选手竟把数 ...

  3. Python3 判断文件和文件夹是否存在、创建文件夹

    Python3 判断文件和文件夹是否存在.创建文件夹 python中对文件.文件夹的操作需要涉及到os模块和shutil模块. 创建文件: 1) os.mknod(“test.txt”) 创建空文件  ...

  4. 08: Django使用haystack借助Whoosh实现全文搜索功能

    参考文章01:http://python.jobbole.com/86123/ 参考文章02: https://segmentfault.com/a/1190000010866019 参考官网自定制v ...

  5. 20145216史婧瑶《网络对抗》Web安全基础实践

    20145216史婧瑶<网络对抗>Web安全基础实践 实验问题回答 (1)SQL注入攻击原理,如何防御 攻击原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入web应用程序,而这些 ...

  6. 20145328《网络对抗技术》Final

    系内选拔赛write-up 1 信息隐藏 第一题图片藏东西,后缀名改txt,没有发现,改rar,发现压缩包内存在key.txt,解压提示存在密码,尝试使用修复,得到key.txt,打开获取flag,S ...

  7. tomcat部署项目如何去掉项目名称

    去掉项目名和端口: 首先,进入tomcat的安装目录下的conf目录,我的目录是 /usr/local/apache-tomcat-6.0.20/conf,编辑文件server.xml. 1.去除端口 ...

  8. xshell的Solarized Dark配色方案

    之前在ubuntu, kali, mint, air下都使用这一款配色方案,后来在网上看到有人在xshell中使用,配色方案有分享,就是一起无法导入 原来这个东西在你现有的连接无法直接导入,需要重新打 ...

  9. Django Python MySQL Linux 开发环境搭建

    Django Python MySQL Linux 开发环境搭建 1.安装Python 进行Python开发,首先必须安装python,对于linux 或者Mac 用户,python已经预装. 在命令 ...

  10. MongoVUE的Collections数据不显示的解决方法

    问题描述: 使用 mongoDB数据库, 数据添加成功了,使用命令行能查询出来,但在MongoVUE 中数据却不显示  (我使用的是 mongoDB 3.4 的版本) 原因:引擎问题,只要降到2.X版 ...