解决EBS FORM 无法导出主从关系(Master Detail)数据到EXCEL。
以下是关于解决EBS标准导出功能无法导出主从关系数据的方法。解决思路:1. 在form上增加一个导出按钮,或者在工具栏注册一个菜单项。2. 用制作一个报表,或者模仿系统标准的导出功能。然后用上面的按钮或者菜单项直接调用。这里主要介绍模仿系统标准导出功能。步骤: 1. 直接修改form级trigger EXPORT,把默认的 app_standard.event("EXPORT")注释掉。把下面的代码复制进去。 - /*导出主从结构的COST GROUP 数据。*/
- DECLARE
- --以上五个变量照搬即可
- URL VARCHAR2(2000);
- DB_FILE NUMBER;
- WEB_SERVER_PREFIX VARCHAR2(255);
- RES BOOLEAN;
- MIME_TYPE VARCHAR2(255);
-
- L_ORGANZIATION_ID NUMBER;
- --定义一个包含主从关系数据的CURSOR
- CURSOR CSR(V_ORGANIZATION_ID IN NUMBER) IS
- SELECT CST.COST_GROUP_CODE,
- CST.COST_GROUP_DESCRIPTION,
- CST.COST_GROUP_DISABLE_DATE,
- CAP.CAPABILITY,
- EQP.EQP_CAP_DESC DESCRIPTION,
- CAP.ACTIVE
- FROM CUX2_CST_COST_GROUP_ALL CST,
- CUX2_CST_COST_GROUP_EQPS_ALL CAP,
- CUX2_BOM_EQP_CAP_TYPE EQP
- WHERE CAP.COST_GROUP_ID(+) = CST.COST_GROUP_ID
- AND EQP.EQP_CAP_CODE(+) = CAP.CAPABILITY
- AND EQP.ORGANIZATION_ID(+) = CAP.ORGANIZATION_ID
- AND CAP.ORGANIZATION_ID(+) = CST.ORGANIZATION_ID
- AND CST.ORGANIZATION_ID = V_ORGANIZATION_ID
- ORDER BY CST.ORGANIZATION_ID, CST.COST_GROUP_CODE, CAP.CAPABILITY;
- BEGIN
- --获取Organzition_id
- L_ORGANZIATION_ID := FND_PROFILE.VALUE("MFG_ORGANIZATION_ID");
- --更改鼠标式样:漏斗鼠标(忙状态)
- SET_APPLICATION_PROPERTY(CURSOR_STYLE, "BUSY");
- --显示进度条窗口,并设置进度为0
- APP_WINDOW.PROGRESS(0);
- --创建数据包,并设置文件头类型。
- DB_FILE := FND_GFM.FILE_CREATE(CONTENT_TYPE => "text/html",
- PROGRAM_NAME => "export");
- /*系统标准的导出功能导出的只能是当前聚焦的BLOCK中已显示item数据。
- 当客制的FORM含有主从关系的两个BLOCK则系统标准的导出则不能导出主从数据。
- 研究系统标准导出后的文本格式如下:
- Cost Group Code Cost Group Description Cost Group Disable Date
- test-1 a test cost group code 2011-09-09
- test-2 another codst group code 2011-10-10
- .......
- ...
- ..
-
- 第一行为标题头,中间较长距离的空白为 tab 符,也就是 chr(9),
- 接下来的数据行,数据列之间的分隔符也是 tab.
- 摸清规律,模仿导出数据就很容易了。
- */
- --输出题头行 注:chr(9) 为 tab键
- FND_GFM.FILE_WRITE_LINE(DB_FILE,
- "Cost Group Code" || CHR(9) ||
- "Cost Group Description" || CHR(9) ||
- "Cost Group Disable Date" || CHR(9) ||
- "Capability" || CHR(9) || "Description" || CHR(9) ||
- "Active");
- --循环数据行
- FOR R IN CSR(L_ORGANZIATION_ID) LOOP
- FND_GFM.FILE_WRITE_LINE(DB_FILE,
- R.COST_GROUP_CODE || CHR(9) ||
- R.COST_GROUP_DESCRIPTION || CHR(9) ||
- TO_CHAR(R.COST_GROUP_DISABLE_DATE,
- "YYYY-MM-DD HH24:MI:SS") || CHR(9) ||
- R.CAPABILITY || CHR(9) || R.DESCRIPTION ||
- CHR(9) || R.ACTIVE);
- END LOOP;
- --关闭数据包
- DB_FILE := FND_GFM.FILE_CLOSE(DB_FILE);
- --将数据包提交给客户端
- URL := FND_GFM.CONSTRUCT_DOWNLOAD_URL(WEB_SERVER_PREFIX, DB_FILE, TRUE);
- --DBMS_OUTPUT.PUT_LINE(URL);
- --打开URL地址下载
- FND_UTILITIES.OPEN_URL(URL);
- --更改鼠标式样:默认指针(常规状态)
- SET_APPLICATION_PROPERTY(CURSOR_STYLE, "DEFAULT");
- APP_WINDOW.PROGRESS(1); --显示进度条窗口,并设置进度为1(100%)
- END;
效果:
至于这种办法与 跑请求的 方法相比。个人感觉这种办法比较快。只是个人看法。。。。。OK ,就这样。Oracle EBS 报表输出保存文件名乱码问题连接Oracle数据库的Hibernate配置文件相关资讯 Oracle基础教程
- Oracle块编程返回结果集详解 (11/10/2013 10:45:58)
- Oracle基础教程之设置系统全局区 (08/22/2013 14:24:00)
- Oracle基础教程知识点总结 (06/18/2013 07:43:32)
| - Oracle基础教程之tkprof程序详解 (10/22/2013 11:49:50)
- Oracle基础教程之sqlplus汉字乱码 (07/18/2013 16:30:00)
- Oracle 管理之 Linux 网络基础 (02/16/2013 18:37:35)
|
本文评论 查看全部评论 (0)