壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5782|回复: 6

[二次开发] 工作流通知中显示附件的链接

[复制链接]
发表于 2005/5/11 12:52:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
这两天回顾工作流开发过程中看到以前项目中在工作流的通知中显示附件链接的功能,整理如下:
1、Oracle ERP标准的附件存放机制为:在表 FND_DOCUMENT% 和 FND_ATTACH% 中存放附件相关的设置和数据;最后在 FND_DOCUMENTS_TL 中 MEDIA_ID 链接至 FND_LOBS.FILE_ID,而LOB文件则存储在 FND_LOBS.LOB_DATA 中。
2、在工作流通知中,则可以通过 URL 的链接下载对应LOB对象。当然,不用我们自己写LOB程序,用Oracle API:FND_DOCUMENT_MANAGEMENT.GET_LAUNCH_DOCUMENT_URL 就可以了。
以下以采购订单为例:
通过以下SQL查询对应PO的附件:(标准PO通知输出程序 PO_WF_PO_NOTIFICATION.GET_PO_LINES_DETAILS)
     SELECT fd.datatype_id,
             fdt.file_name,
             fdt.media_id,
             fdt.description
      FROM fnd_attached_documents fad,
           fnd_documents fd,
           fnd_documents_tl fdt
      WHERE fad.document_id = fd.document_id
      AND   fad.document_id = fdt.document_id
      AND   fdt.LANGUAGE    = 'US'
      AND   fad.entity_name = 'PO_HEADERS'
      AND   fad.pk1_value   = l_document_id;
再在通知中添加以下HTML标记:
'<B>点击此处,可以查看该采购订单的附件</B>'|| ' <A href="' || v_url || '">'  || to_char(v_flag) || '.' || c1rec.description ||'</A><br>';
而 v_url 的生成方式为:
      IF p_datatype_id = 5 THEN
          /* Check to see if the user specified a token in the URL.  If so, strip out the token. */
          IF upper(p_file_name) like '-$PROFILE$%' THEN
              v_prof_name := substrb(p_file_name,instrb(p_file_name,'.')+1,(instrb(p_file_name,'-',1,2)-2-instrb(p_file_name,'.')+1));
              /* Get the value of the token */
              FND_PROFILE.GET(v_prof_name, v_token);
              IF v_token is null then
                  RETURN NULL;
              END IF;
              /* Open the url after making sure the token ends with a trailing slash */
              v_url := fnd_web_config.trail_slash(v_token)||substrb(p_file_name,instrb(p_file_name,'-',1,2)+2);
              RETURN v_url;
          ELSE
              RETURN p_file_name;
          END IF;
      ELSIF p_datatype_id = 6 THEN
        IF (p_file_name IS NULL) THEN
            RETURN NULL;
        ELSIF (p_file_name = 'INTERNAL') THEN
           v_gfm_agent := fnd_web_config.gfm_agent;
           v_url := fnd_gfm.construct_download_URL(v_gfm_agent,p_media_id, FALSE);
           RETURN v_url;
        END IF; -- end if filename not null.
      ELSIF p_datatype_id = 7 THEN
         -- Separate document id and file name.
         v_separator := instr(p_file_name,':',-1);
         -- Get the HTML text for displaying the document
         fnd_document_management.get_launch_document_url (
                    fnd_profile.value('USERNAME'),
                 substr(p_file_name, 1,v_separator-1 ),
                       FALSE,
                       v_url);
         --fnd_utilities.open_url (v_url);
          RETURN v_url;
      ELSE
         --  open custom document
          RETURN NULL;
      END IF;
 楼主| 发表于 2005/5/11 12:53:52 | 显示全部楼层
关键在于:fnd_document_management.get_launch_document_url
 楼主| 发表于 2005/5/11 14:00:47 | 显示全部楼层
不知道在 11.5.10 中有没有变化,谁有环境可以试一试[em08]
发表于 2005/5/11 14:04:25 | 显示全部楼层
我们的环境是11.5.10,等忙了我给你测试一把
发表于 2012/4/12 12:14:30 | 显示全部楼层
不错,多谢分享。
发表于 2012/11/4 17:01:18 | 显示全部楼层
感谢啊,正在做相关的东西{:soso_e179:}
发表于 2012/11/5 09:13:07 | 显示全部楼层
感谢,看来Oracle EBS的开发还是要学习很多Oracle EBS 的API啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 21:31 , Processed in 0.017657 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表