tangbinde 发表于 2015-9-23 08:39:58

EBS获取附件URL

http://wenku.baidu.com/link?url=MnYX269RBqW9ZRh-4famwduhYq9As0-vsIyVPA7aqv64cdxxjZEOaEE1_KZ9SGjY9qCxYIb-Fuh12pN05eZDBifBvwv5tReqjNMfZyMhW3W
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
----------------------------------------------------------------------------------
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_TYPEVARCHAR2(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 := '<tablewidth=100% border="0" cellspacing="0" cellpadding="0" >
      <tr><td><table cellpadding="0" cellspacing="0" border="0" width="100%" class="x74">
      <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_IDNUMBER;
    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_IDNUMBER;
    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 andb.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 := '';
      XZTZ_LOG_PKG.INSERT_LOG('附件列表文件下载链接生成异常',
                              SQLERRM,
                              'XZ_PO_PUB_PKG.GET_OUTPUT_URL',
                              30);
      RETURN V_OUTPUT_URL;
  END GET_OUTPUT_URL;
  最终效果:
  
页: [1]
查看完整版本: EBS获取附件URL