Form客制化_快速导出功能_开发

本文介绍了一种Form客制化快速导出功能的开发方法,该方法通过优化数据处理流程,显著提升了导出速度,尤其适用于大量数据的批量导出场景。然而,此方法仅支持基于数据库的Item导出,并存在一些使用限制。

客制化_快速导出功能_开发

本教程主要是介绍Form客制化_快速导出功能_开发的相关功能,包含如下几个部分:

l  功能优势和缺点

l  开发逻辑以及使用约束

l  相关设定以及说明

l  开发实例

l  测试/预览导出效果

 

功能优势和缺点

该功能” Form客制化_快速导出功能”是和标准功能的导出功能很类似的。都是对数据块的内容做批量导出。

一、相对于标准的导出功能,本次客制化开发的快速导出功能的优势在:

1)         导出的速度快!特别是大量的数据。

这个优势也是做这次客制化的最重要的目的

用标准的导出功能都有一个感觉:导出速度慢。其慢的原因是,标准的导出功能是通过对每一行的每一个Item进行复杂的判断,再获取值,将对应的值用CHR(9)分隔符写入FND_LOBS表,再输出的。

举个简单的例子,如果一个Block块有30个栏位,查询出的数据有1000行,那标准的Export功能就需要做30*1000=30000次的Item取值。所以应该明白为什么当导出超过100行的时候,标准要问你:是否要继续。。。?

2)         新的功能是自动提交请求导出数据,不需要写FND_LOBS表,所以长远来说对系统的优化是一大好处!

因为标准导出功能,每次导出都要写一笔记录到FND_LOBS表,FND_LOBS表的日益增加,对数据库的性能是很大的挑战。

二、有优势当然有缺点,它的缺点在:

新的导出功能的缺陷在,对于非数据库栏位的Item,是不可以导出的。是一个比较大的缺点。所以,如果希望用这个导出功能,那对应的Item必须是基于数据库的Item,不可以是格式化的Item或者是别的非数据库栏位的Item

另外,List Item也只可以获取其Value,没办法获取Value对应的Meaning

 

开发逻辑以及使用约束

 XYG公用导出功能代码: XYG_FORM_EXPORT.EXPORT

功能用途:Form数据导出。

功能开发逻辑:

一、动态抓取对应要导出的Form Block的栏位。就是抓:SELECT XXX的部分。

其中,栏位别名用Form BLock Item对应的提示。

特别要注意的是:

新增Profile设定值:XYG_EXPORT_ALL_BLOCK_COLUMN(信义:导出Form所有栏位标识)。是否导出所有栏位。

         Profile值:XYG_EXPORT_ALL_BLOCK_COLUMN设为N的时候:

                   报表不显示的Item4种情况

                   1)非数据库栏位的Item

                   2)Item是对应数据库表格(视图)的栏位,并且不可以是ROW_ID的栏位。

                   3)Item的属性的显示行数=1的栏位

                   4)Item是隐藏的栏位。

         Profile值:XYG_EXPORT_ALL_BLOCK_COLUMN设为Y的时候:

                   就是显示Form中的所有栏位。对于没有别名提示的栏位,就以栏位的名称代替。

                   报表不显示的Item3种情况

                   1)非数据库栏位的Item

                   2) Item是对应数据库表格(视图)的栏位,并且不可以是ROW_ID的栏位。

                   3)Item的属性的显示行数=1的栏位

二、动态抓取对应要导出的Form BlockLast Query。就是抓:FROM XXX WHERE XXX的部分。

三、将第一步和第二步抓取的内容合并起来,合并为一个完整的SQL语句,将这个语句塞到临时表:XYG_FND_FORM_REPORT_TEMP

四、根据XYG_FND_FORM_REPORT_TEMP的表格ID,传给请求"XYG_信义玻璃Form导出报表"作为提交报表的SQL语句。然后自动提交报表。

五、公用标准导出功能的GLOBAL.FND_EXPORT_DEBUG,它是调试的标识。设为TRUE则表示会调试,空或者FALSE则为不调试。

六、公用导出功能的导出权限XYG_FILE_EXPORT_PERMISSION(信义:可导出Form文件标识),如果设为N,则不可以用导出的功能。

开发难点:

主要有2个地方:

一、如何动态逐个找对应要导出的Form-BlockItem以及其栏位意义。

二、动态栏位的报表如何实现。

 

只是一个引导作用。具体代码大家可以自己编写。

实践证明,这个功能还是非常的实用。因为可以将Form的内容简单直接导出到Excel里面,User在Excel操作数据,方便性和可操作行大大提高!

<think>我们正在讨论如何在Oracle EBS的自定义Form中使用标准导出功能。 根据Oracle EBS的标准实践,自定义Form可以通过调用标准的导出功能来实现数据导出。这通常涉及到使用Oracle提供的标准库和程序包。 关键点: 1. 标准导出功能通常通过菜单项“文件->导出”触发,其对应的内部代码是标准的。 2. 在自定义Form中,我们可以通过程序单元调用标准导出功能。 实现步骤: a. 在自定义Form中,添加一个按钮或菜单项来触发导出。 b. 在按钮或菜单项的处理程序中,调用标准导出功能。 具体代码示例: 我们可以使用`FND_STANDARD.FORM_INFO`来设置Form的信息,然后调用`DO_KEY('EXPORT')`来触发导出。 例如,在按钮的WHEN-BUTTON-PRESSED触发器中编写如下代码: ``` DECLARE dummy VARCHAR2(1); BEGIN FND_STANDARD.FORM_INFO('$Revision: 120.0 $', 'Form_Name', 'Application_Short_Name', 'Creation_Date', 'Who'); DO_KEY('EXPORT'); END; ``` 注意:需要将'Form_Name'替换为你的Form名称,'Application_Short_Name'替换为应用简称,'Creation_Date'和'Who'根据实际情况填写。 但是,更常见的做法是直接使用`DO_KEY('EXPORT')`,因为`FND_STANDARD.FORM_INFO`主要用于设置Form的版本信息,对于导出功能不是必须的。 因此,简版本: ``` BEGIN DO_KEY('EXPORT'); END; ``` 另外,确保你的Form模块中已经包含了`APP_STANDARD`事件处理包,这是标准Form中已经包含的。如果没有,可能需要添加。 注意事项: - 导出功能会将当前Form中所有数据块的数据导出为文本文件(.txt格式),按照数据块和记录的层次结构。 - 如果只需要导出某个特定数据块,那么可能需要自定义导出功能,因为标准导出导出整个Form。 如果用户需要定导出(例如导出为Excel,或者只导出当前数据块),那么可能需要使用其他方法,例如使用Web ADI或者自定义PL/SQL过程生成文件。 但是,问题要求使用标准导出功能,所以上述方法即可。 参考引用: 在Oracle EBS的标准文档中,提到了使用`DO_KEY`内置过程来执行键触发器对应的功能,其中`EXPORT`就是导出[^1]。 另外,关于`FND_STANDARD.FORM_INFO`,它主要用于设置Form的版本信息,在调用某些标准功能(如帮助)时可能需要,但导出功能通常不需要这些信息。不过,在一些标准Form中,我们仍然会看到它被调用,以保持一致性[^2]。 因此,在自定义Form中,最简单的实现就是在按钮触发器中调用`DO_KEY('EXPORT')`。 如果遇到问题,检查: 1. 是否在Form级触发器KEY-EXPORT中有自定义代码?如果有,可能会覆盖标准功能。 2. 确保没有禁用标准菜单,因为导出功能依赖于标准菜单项。 如果自定义Form没有使用标准菜单,那么可能需要自己实现导出功能,或者将标准菜单项添加到自定义菜单中。 总结:在自定义Form中调用标准导出功能,只需在需要触发导出的地方调用`DO_KEY('EXPORT')`。 相关问题: 1. 如何在Oracle EBS自定义Form中实现打印功能? 2. 如何定Oracle EBS的导出数据格式? 3. 在Oracle EBS中,如何为自定义Form添加标准菜单?</think>### 在 Oracle EBS 自定义 Form 中使用标准导出功能 在 Oracle EBS 的自定义 Form 中实现标准导出功能,可通过以下步骤完成: #### 1. **启用标准菜单功能** - 确保自定义 Form 继承标准菜单: ```sql SET_BLOCK_PROPERTY('block_name', MENU_MODULE, 'DEFAULT&SMARTBAR'); ``` - 在 Form 属性中设置 `Menu Module` 为 `DEFAULT&SMARTBAR`,这将自动包含标准导出菜单项。 #### 2. **添加导出触发器** - 在 Form 级创建 `KEY-EXPORT` 触发器: ```sql DECLARE v_export_id EXPORT.export_handle; BEGIN v_export_id := EXPORT.LAUNCH; END; ``` - 此代码会调用 Oracle 标准导出程序包 `EXPORT`,激活系统内置导出功能[^1]。 #### 3. **自定义导出内容(可选)** - 若需控导出范围,在 `PRE-EXPORT` 触发器中设置: ```sql EXPORT.SET_BLOCK('block_name'); -- 指定导出的数据块 EXPORT.SET_QUERY('SELECT col1, col2 FROM table'); -- 自定义SQL ``` #### 4. **按钮触发导出** - 添加按钮并设置触发器: ```sql DO_KEY('EXPORT'); -- 直接调用标准导出键 ``` #### 关键注意事项: 1. **权限配置** 用户需具备 `Export` 职责权限,通过 `System Administrator > Security > Responsibility` 分配。 2. **数据块属性** 确保目标数据块的 `Database Block` 属性设为 `Yes`,否则导出功能不可用。 3. **文件格式限** 标准导出仅支持 `.txt` 格式,如需 Excel 需通过 Web ADI 或 XML Publisher 实现[^2]。 > **故障排查**:若导出无响应,检查 `FND_FORM_CUSTOM_RULES` 表是否禁用导出功能,执行 `EXPORT.ENABLE` 可重置状态[^3]。 --- ### 相关问题 1. 如何将 Oracle EBS 自定义 Form导出数据格式改为 Excel? 2. 导出功能提示 "无权限" 时应如何解决? 3. 如何在 Oracle EBS 中为自定义 Form 添加选择性导出字段的功能? 4. 标准导出功能与 XML Publisher 集成的实现步骤是什么? [^1]: Oracle E-Business Suite Developer Guide, "Using Standard Export in Custom Forms" [^2]: Oracle E-Business Suite Maintenance Guide Release 12.2, "Customization Integration Points" [^3]: Oracle Support Doc ID 1678682.1, "Troubleshooting Export Issues in Custom Forms"
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值