Oracle ERP二次开发:Report开发方法

合集下载

OracleERP开发计划流程简介

OracleERP开发计划流程简介

大唐兴竹软件公司工作流使用讲明修改纪录签名职务姓名签字日期内容索引1简介 (1)1.1 目的 (1)1.2 范围 (1)1.3 如何得到这篇文档 (1)2工作流实现机制 (1)2.1 工作流的组成部分 (1)2.1.1单据类型(Item Type) (2)2.1.2活动(Activity) (2)2.1.3流程(Process) (3)2.1.4消息(Message) (4)2.1.5函数(Function) (5)2.1.6通知(Notification) (5)2.1.7查找类型(Lookup Type) (6)3工作流的定义 (6)3.1 创建流程定义 (7)3.1.1从下往上定义 (7)3.1.2从上往下定义 (9)3.1.3打开保存单据类型 (9)3.2 定义工作流组件 (12)3.2.1单据类型(Item Type) (12)3.2.2查找类型(Lookup Type) (23)3.2.3消息(Message) (26)3.2.4活动(Activities) (34)3.3 定义一个流程图 (43)3.3.1增加一个节点 (44)3.3.2定义一个节点 (45)3.3.3定义活动属性值 (47)4在应用中调用工作流 (48)1简介1.1目的▪讲明Oracle ERP里工作流的原理▪在Oracle ERP里定义并定制工作流1.2范围Oracle ERP里工作流引擎的实现原理以及如何利用Workflow Builder定义一个流程,以及在程序里调用差不多定义好的流程保证业务依照流转规则流转。

1.3如何得到这篇文档该文档要紧供兴竹公司开发部内部交流使用。

2工作流实现机制2.1工作流的组成部分工作流的流程要紧由以下组件(Component)构成:单据类型、流程、活动、函数、消息、通知和查找类型。

单据类型是一种分类对象,其它的对象都属于一个单据类型。

2.1.1单据类型(Item Type)企业的业务有专门多类不,同一种业务对应有不同的业务流程,同时在业务流转的过程中处理不同的业务信息。

OracleERP操作手册

OracleERP操作手册

OracleERP操作手册操作步骤:1.1.预测集的创建1.进入MRP预测集界面路径:MRP->预测->集冲减的时候,当创建销售订单的时候就会冲减预测条目中的数量2. 点击预测物料进入物料预测界面:3. 操作:在预测界面输入物料名称,然后点详细资料,进入预测条目,选择时间段、日期、前量。

1. 进入MDS定义界面路径:MRP->MDS->名称双击名称,输入名称。

然后选择所选MDS名称点“装入/复制/合并”2.录入MDS参数路径:查看->请求->查找操作:点击查看,点击请求,再点查找,然后查看装入/复制/合并MDS后面的状态,如果已完成,则导入结束。

4. 查看MDS导入结果路径:MRP->MDS->名称操作:选择MDS名称,再点击物料,可以查看订单需求物料。

1.3 运行MRP1.进入MRP运行界面路径:MRP->MRP->名称操作:先点击“选项”,在计划选项中“计划”处选择新建的MDS名称,再关闭计划选项,点击“生成”操作:选择计划,选择已装入成功的MDS;计算WIP:是否包括在制品;计算采购净值:是否包括在途;计划安全存货量:最大最小库存;反查选“项目-任务”。

然后点“生成”,生成的参数设置。

点击“确定”,再点击提交,则MRP转入后台运行2.进入MRP运行计算结果路径:MRP->MRP->工作台操作:选择查询条件:“订单类型”=“计划单”,则可以看到正常工作单和采购申请建议,如不输入任何条件,则查看所有结果。

注:如果只看工作单,则查询条件为:“制造或采购”=“制造”;如果只看采购申请,则查询条件为:“制造或采购”=“购买”。

3. MRP计划结果下达操作:选择需要发放的工作单建议,在“选定发放”处打勾,保存然后点击“发放”。

注:1、如果全部发放,则点击“选择全部发放”,保存再点击发放;2、粉红色表示已经发放过的记录;3、如需修改数量和日期,则在“固定”处打勾之后更改。

二次开发方案

二次开发方案

二次开发方案引言:随着技术的进步和需求的不断增长,许多企业和组织在使用现有软件或系统时,常常会遇到一些功能不足或无法满足实际需求的情况。

这时,进行二次开发成为了一种常见的解决方案。

本文将探讨二次开发的定义、目的、方法以及实施过程,并提出一套完整的二次开发方案。

一、二次开发的定义二次开发指的是在已有软件或系统的基础上,根据用户的实际需求进行功能扩展、定制开发或性能优化等工作。

通过二次开发,用户可以在不改变现有软件或系统的基本框架和核心功能的前提下,实现更加个性化和高效的使用体验。

二、二次开发的目的二次开发的目的主要包括以下几个方面:1. 实现个性化需求:根据用户的具体需求,通过二次开发来实现一些特定的功能或业务流程,以满足用户个性化的需求。

2. 提升系统性能:通过优化代码结构、算法调优等手段,提高系统的性能和响应速度,确保系统能够高效稳定地运行。

3. 增强系统功能:在现有软件或系统的基础上,增加一些新的功能模块或扩展功能,以丰富系统的功能和可用性。

4. 适应业务发展:随着企业或组织的业务规模的扩大或业务流程的改变,二次开发可以根据业务需求进行系统定制或功能拓展,以适应新的业务发展。

三、二次开发的方法二次开发的方法多种多样,常见的方法有以下几种:1. 插件开发:在现有软件或系统的基础上,通过编写插件或模块,实现一些特定的功能或业务流程。

插件开发可以使系统具有一定的可扩展性,同时也能够保证原有系统的稳定性。

2. 数据库扩展:通过对现有数据库进行扩展或优化,实现更加高效的数据存储和管理,提升系统的运行效率。

3. API集成:利用现有软件或系统提供的API接口,将其他系统或软件与之集成,实现数据交互和功能扩展。

API集成可以使不同系统之间实现数据共享和协同工作,提高工作效率。

4. 定制开发:根据用户的具体需求,从头开始自定义开发一个全新的软件或系统。

定制开发可以满足用户的个性化需求,但同时也需要更多的开发时间和成本投入。

REPORT基础开发教程

REPORT基础开发教程

ORACLE REPORT IN ACTION李正海2008/8/27目录1第一个简单的报表 (3)2包含汇总的报表 (10)3包含分组的报表 (18)4包含矩阵分组的报表 (24)5加入报表参数 (30)5.1参数定义: (30)5.2带参数的SQL语句 (33)5.3输入报表参数 (34)5.4产生参数对应查询结果报表 (35)6公式列、汇总列 (36)6.1为记录增加序号 (36)6.2增加汇总列 (37)6.3增加累加列 (39)6.4增加公式列 (40)7加入图表 (43)8报表的其它功能设置 (47)8.1页面设置 (47)8.2插入页码 (48)8.3插入日期和时间 (50)8.4表格线 (51)8.5过滤器 (53)8.6报表分页 (55)9报表发布与监控 (57)9.1报表的编译 (57)1第一个简单的报表首先利用报表向导进行报表的开发,其基本的过程包括:1.启动ORACLE REPORT BUILDER2.确定使用报表向导3.设置报表的标题和类型4.输入SQL查询语句5.完成对数据库的连接6.选择报表显示域7.设置报表显示属性8.设置报表模板9.完成报表,预览报表点完上边的下一步后,进入ORACLE的连接设置,必须保证ORACLE 连接正确,报表才能显示出来。

下图为笔者本机的设置,用户需根据自己的实际情况进行配置。

直接用>> 把所有字段都移到显示域中,结果如下图。

目前不选择总计域,直接点下一步。

设置为无模板2包含汇总的报表在报表中经常需要汇总的数据,例如按仓库统计库存的产品数量和金额,在报表的最后需要仓库数目和总计的产品数量和金额,则报表按如下执行:1.启动ORACLE REPORT BUILDER2.确定使用报表向导3.设置报表的标题和类型4.输入SQL查询语句5.完成对数据库的连接,如果数据库已经连接,则直接进入下一步。

6.选择报表显示域7.设置统计域8.设置报表显示属性9.设置报表模板10.完成报表,预览报表产生的结果为:3包含分组的报表分组报表包括左边分组和上边分组,分别如下图所市示:1.启动ORACLE REPORT BUILDER2.确定使用报表向导3.设置报表的标题和类型4.输入SQL查询语句5.完成对数据库的连接,如果数据库已经连接,则直接进入下一步。

OracleERP开发流程

OracleERP开发流程

Oracle ERP开发流程导言Oracle ERP开发是一种集成企业资源方案(ERP)功能的应用开发。

在开发过程中,需要遵循一定的流程来确保开发工程的顺利进行。

本文将介绍Oracle ERP的开发流程,以帮助开发人员更好地进行开发工作。

步骤一:需求分析在开始Oracle ERP开发之前,首先要进行需求分析。

需求分析是确定工程客户或用户需求的过程。

在这个阶段,开发人员需要与客户/用户共同讨论并确定开发的需求和目标。

在需求分析阶段,开发人员需要明确以下几点: - 了解客户或用户的业务需求和优先级。

- 收集并整理相关的业务流程及数据要求。

- 与客户或用户讨论并确认具体的功能需求。

在完成需求分析后,接下来是系统设计阶段。

系统设计是根据需求分析的结果,设计系统的整体架构和功能模块。

在系统设计阶段,开发人员需要完成以下任务: - 设计数据库模型和数据结构。

- 设计系统的功能模块和模块之间的交互关系。

- 确定系统的界面设计和用户交互流程。

步骤三:编码和开发完成系统设计后,即可开始进行编码和开发工作。

在这个阶段,开发人员根据系统设计的要求,将设计转化为实际的代码。

在编码和开发阶段,开发人员需要遵循以下几个原那么: - 遵循编程标准和最正确实践,确保代码的质量和可维护性。

- 在编码过程中,进行适当的代码测试和调试。

在完成编码和开发后,需要进行系统测试以验证系统的正确性和稳定性。

系统测试是确保系统符合需求规格说明书的过程。

在系统测试阶段,开发人员需要进行以下几项工作: - 编写和执行测试方案,覆盖系统的各个功能模块。

- 验证系统的功能是否按照需求规格说明书的要求实现。

- 发现并修复潜在的问题或缺陷。

步骤五:系统部署和上线在完成系统测试后,即可进行系统部署和上线。

系统部署是将开发完成的系统部署到生产环境中并进行测试和验证。

在部署和上线阶段,开发人员需要完成以下任务: - 将系统部署到目标效劳器,并进行必要的配置和安装。

Oracle报表二次开发Reportxml开发技术文档

Oracle报表二次开发Reportxml开发技术文档

Oracle报表二次开发Reportxml开发技术文档XML 报表开发1先根据用户写的需求,在PL/SQL中查出符合用户需求的数据。

例:2.打开oracle report 6i(report builder)选中格式和输入sql语句点下一步标题名自己定义,对话框选列表,再点下一步。

选SQL语句,点下一步。

查询描述那输入在PL/SQL写好的查询语句。

(注意:and (rt.trx_number=:ppno or :ppno is null)参数的传递在PL/SQL中是无效的,但在report builder中允许这样写),然后点连接。

输入用户名,口令和数据库名,点连接测试能不能运行。

点下一步将可用域的数据都导入到显示域中去,点中间的>>就可以一次导过去了。

点下一步再点下一步。

再下一步选无模板。

点下一步。

点完成就好了。

先要在报表触发器的BEFORE REPORT中,点右键选PL/SQL编辑器路径要选对dbms_application_info.set_client_info(147); 这就是池誉的路径。

然后编译一次,完成后退出回到上一步。

点击左边类似红绿灯的小图案。

参数选空既按回车就行了。

然后就可以得出一张表然后保存。

保存后文件格式为RTF格式(注:文件名要大写),将文件上传到服务器us,zhs文件夹上。

3.打开ERP系统的应用开发员,选并发----可执行,可执行名和上面在report build建立的新文件名同名,简称也一样,应用产品选TM Ex tensions ,执行方法选oracle reports,执行文件名和简称同名。

保存后退出。

进入系统应用开发员,选并发----程序程序,简称,应用产品和上面可执行写的一样,格式选XML,样式选A4。

然后点参数序号那SQL写了多少个参数就写多少个参数,值集选100 characters 。

然后保存退出。

进入系统管理员-----安全性------定义,在责任名那做查询你所需要在哪个责任上面挂报表。

Oracle Applications 11i 二次开发经验总结新

Oracle Applications 11i 二次开发经验总结新

Oracle Application 11i 二次开发经验总结开发端的环境设置在Oracle Application 11i中要增加客制的Form应用程序,开发时是基于Oracle Application 11i所带的一个模板“Template.frm”的Form原程序文档,其基本开发过程如下:1、从Oracle Application 11i应用服务器中,找到“Template.frm”的Form原程序文档,将其拷贝到开发端。

提示:如果你的开发端计算机硬盘空间足够,要求是有3.8G的空间(我想现在都不成问题了吧),那么请将包含整个源代码的目录一起复制到开发端计算机上。

我用来做试验的Oracle Application 11i的版本号是:11.5.7;安装路径在E盘上,所以后面的试验设置都将在这个路径下进行,您可以根据自己的安装路径进行相应的修改、设置;当然,如果你所用的版本比我的高,有遇到和我们现在所讲的版本中有不同的地方请也不要见怪,我相信在系统的应用上是大同小异;源代码的路径如下图(ERP-1)所示:(ERP-1)我将其复制我的开发端计算机上的具体路径和服务器上的一样,如图(ERP-2)所示:(ERP-2)当我们用Oracle Develop 6i的开发工具打开“Template.frm”这个开发模板时,会出现如下图(ERP -3)、(ERP-4)所示的对话框;当然,如果你是在服务器端开发时就不会有这样的提示,请不要见怪,看了以下的步骤就会明白。

(ERP-3)(ERP-4)系统告诉我们不能正确地读取到一些PL/SQL程序库文档,这是由于路径不正确引起的,要解决这样的问题我们还要进入第二的配置。

2、在开发端配置Form默认访问路径;请打开您的系统注册表,找到这样的路径:“HKEY_LOCAL_MACHINE\SOFTWARE\ORCLE\HOMEn\”,再找到“FORMS60_PATH”的项,修改并添加从服务器上复制过来的源代码所在的绝对路径为它的默认路径值。

Oracle ERP 二次开发探讨

Oracle ERP 二次开发探讨

Oracle ERP 二次开发探讨随着企业信息化的建设和发展,采购ERP软件的企业越来越多,从笔者工作过的保险行业和几个公司来看,该行业绝大多数公司都采购了ERP软件,主要集中在Oracle ERP,SAP,其中Oracle ERP 占比较大。

其实Oracle ERP 软件价格不菲,有产品费用,还有实施费用,初期投入都要几百万,企业花了这么大的投入,软件应该产生更多的价值来回报企业,目前很多企业只把Oracle ERP当做财务管理系统,仅仅只用了总账模块,固定资产模块。

有的企业上了应付,采购,但是流程和管理与公司管理方式很多出入,就出现了抛弃买来的Oracle ERP,购买新的系统满足需求,笔者就这种情况,怎么充分利用好Oracle ERP,在Oracle ERP的基础上进行二次开发,搭建企业的信息系统,用较小的成本,快速开发出企业级应用程序,为企业带来更多的价值,进行讨论。

首先,我们对Oracle ERP的产品体现进行初步介绍。

要想对Oracle ERP 进行客户化开发,就必须对Oracle ERP产品有深入的了解,为客户化开发奠定基础(这里只做概要介绍,详细介绍请参考Oracle ERP 文档),Oracle ERP 系统业务应用分很多模块,总账(GL),固定资产(FA),应付(AP),应收(AR),采购(PO),库存(INV),等等,还有一个基础公用模块(FND),该模块是其他模块的基础,有了这个公用模块,这对于我们做二次开发有了很多良好的基础。

Oracle ERP 客户化方式。

Oracle 客户化方式很多,常见的有FORM客户化,Report,OAF程序,请求等等。

下面就各种客户化方式进行分析和比较。

笔者还提出另外一种客户化方式进行探讨。

FORM客户化。

这事以前很常见的客户化方式,有对原始FORM进行修改,新增一个FORM等等方式。

由于访问FORM必须采用Oracle 账户进行登录才可以,占用Oracle 的用户。

oracleerp报表开发开发培训教程

oracleerp报表开发开发培训教程

南京多茂科技发展有限公司Oracle ERP报表开发培训教程报表开发的总体步骤,及一些工具包的简单介绍 (1)Pl/sql语法及pl/sql函数、数组、记录、游标、视图、基表、临时表、异常 (4)HTML技术和CSS修饰 (10)查找数据的方法及Oracle Application表命名的规律 (11)可执行、并发程序、请求组和值集的定义 (12)一个报表开发的实例 (15)系统中部分表的介绍 (21)开发分页报表(套打)的步骤 (22)开发规范 (24)附:记录和数组使用范例 (28)所谓报表开发就是按照用户的需求,根据用户提供的样表,运用编程的手段,从ERP系统中取出数据展现在页面上的一个理解需求、查找数据、展现结果的过程。

目前开发报表的方法及工具有很多种,有专门针对报表需求定制的报表系统,通过对sql语句的改写能实现特别的报表需求,这样的系统有很强的针对性和限制性;还有运用报表开发工具根据用户需求临时开发报表,具有很强的灵活性和应用性。

本文档只关注运用Oracle 在DB中提供的一些开发工具包,及WEB技术开发报表的过程和方法。

Oracle博大精深,如果在实际开发过程中遇到困难可以通过网上论坛和oracle网站获得技术帮助。

根据实际的开发过程,本文档从以下几个方面来说明:报表开发的总体步骤,及一些工具包的简单介绍开发步骤1 分析客户提供的样表2 向客户或者顾问征询报表中每个值的意思,务必理解所需开发报表的意向3 需要客户在ERP指明数据的取处4 自己动手在测试环境中做一遍,梳理一下流程5 清楚报表的参数是什么6 以包的形式组织数据,在包里面实现各种功能7 在ERP中定义可执行,从而使ERP和DB建立联系8 在ERP中定义并发程序,定义了报表的输出文件的类型和参数9 在相应的请求组中加入已定义好的并发程序名称工具包介绍1 FND_PROFILERetrieve user profile values for the current run-time environment Set user profile values for the current run-time environmentFnd_profile.value(‘ORG_ID’) 取配置文件的值2 DBMS_OUTPUTThis package enables you to send messages from stored procedures, packages, and triggersDbms_output.put_line 在sql window中输出结果3 FND_GLOBALFnd_global. APPS_INITIALIZE(user_id,resp_id,resp_appl_id) 模拟环境其中user_id,resp_id,resp_appl_id可以通过这种方法获得:帮助->诊断->检查,在块中选择$PROFILES,在字段选择USER_ID可以获得USER_ID,同样方法可以获得RESP_ID,RESP_APPL_ID(可能有时你需要在Oracle Applications环境外运行一些PL/SQL语句,但是这些语句中需要访问系统相关的环境变量,例如view,这样你可以使用上述方法达到你的目的)Fnd_global. User_name 得到当前用户的名称Fnd_global. User_id 得到当前用户的id4 UTL_FILEThe UTL_FILE package lets your PL/SQL programs read and write operating system (OS) text files. It provides a restricted version of standard OS stream file input/output (I/O). The file I/Ocapabilities are similar to those of the standard operating system stream file I/O (OPEN, GET, PUT, CLOSE), with some limitations.For example, call the FOPEN function to return a file handle, which you then use in subsequent calls to GET_LINE or PUT to perform stream I/O to a file. When you are done performing I/O on the file, call FCLOSE to complete any output and to free any resources associated with the file.UTL_FILE.FILE_TYPE 定义文件指针utl_file.fopen(dir,name,mode) Opens a file for input or output with the default line sizeutl_file.put_line( , ) Writes a line to a file向文件中写数据utl_file.fclose_all Closes all open file handles关闭所有已打开的文件指针5 FJ_FUNC客户化的函数包,定义了一些在实际开发过程中用到一些方法和变量在实际开发过程中,如果需要一些方法时可以在这个包中查找,如果通用性比较强的过程也可以加到这个包里详细可以参阅这个包6 FJ_OUTPUT客户化的报表格式生成包,封装了html语法详细可以参阅这个包Pl/sql语法及pl/sql函数、数组、记录、游标、视图、基表、临时表、异常、Pl/sql基本元素的使用SelectThe SELECT statement allows you to retrieve records from one or more tables in your database.The syntax for the SELECT statement is:SELECT columns FROM tables WHERE predicatesDistinctThe DISTINCT clause allows you to remove duplicates from the result set. The DISTINCT clause can only be used with select statementsThe syntax for the DISTINCT clause is:SELECT DISTINCT columnsFROM tables WHERE predicatesEXISTSThe EXISTS condition is considered "to be met" if the subquery returns at least one rowThe EXISTS condition can be used in any valid SQL statement - select, insert, update, or delete.Example #1The following is an SQL statement that uses the EXISTS condition: SELECT * FROM suppliersWHERE EXISTS(select * from orders where suppliers.supplier_id =orders.supplier_id);This select statement will return all records from the suppliers table where there is at least one record in the orders tableith the same supplier_id.Example #2 - NOT EXISTSThe EXISTS condition can also be combined with the NOT operator.For example,SELECT * FROM suppliersWHERE not exists (select * from orders Wheresuppliers.supplier_id = orders.supplier_id);This will return all records from the suppliers table where there are no records in the orders table for the given supplier_id InThe IN function helps reduce the need to use multiple OR conditionsThe IN function can be used in any valid SQL statement - select, insert, update, or delete.Example #1The following is an SQL statement that uses the IN function:SELECT *FROM supplierWHERE supplier_name in ( 'IBM' , 'Hewlett Packard', 'Microsoft');This would return all rows where the supplier_name is either IBM, Hewlett Packard, or Microsoft. Because the * is used in the select, all fields from the supplier table would appear in the result set.Example #2 "NOT IN"The IN function can also be combined with the NOT operator.For example,SELECT *FROM supplierWHERE supplier_name not in ( 'IBM' , 'Hewlett Packard','Microsoft');This would return all rows where the supplier_name is neither IBM, Hewlett Packard, or Microsoft. Sometimes, it is more efficient tolist the values that you do not want, as opposed to the values that you do want.LikeThe LIKE condition allows you to use wildcards in the whereclause of an SQL statement. This allows you to perform pattern matching. The LIKE condition can be used in any valid SQL statement - select, insert, update, or delete.The patterns that you can choose from are:% allows you to match any string of any length (including zero length)_ allows you to match on a single characterSELECT * FROM supplier WHERE supplier_name like 'Hew%';SELECT * FROM supplier WHERE supplier_name like '%bob%';SELECT * FROM supplier WHERE supplier_name not like 'T%';SELECT * FROM supplier WHERE supplier_name like 'Sm_th'GROUP BYThe GROUP BY clause can be used in a SELECT statement to collect data across multiple records and group the results by one or more columns.The syntax for the GROUP BY clause is:SELECT column1, column2, ... column_n, aggregate_function (expression)FROM tablesWHERE predicatesGROUP BY column1, column2, ... column_n;aggregate_function can be a function such as SUM, COUNT, MIN, or MAX.Example using the SUM functionFor example, you could also use the SUM function to return the name of the department and the total sales (in the associated department).SELECT department, SUM (sales) as "Total sales"FROM order_detailsGROUP BY department;Because you have listed one column in your SELECT statement thatis not encapsulated in the SUM function, you must use a GROUP BY clause. The department field must, therefore, be listed in the GROUP BY section.HavingThe HAVING clause is used in combination with the GROUP BY clause. It can be used in a SELECT statement to filter the records that a GROUP BY returns.The syntax for the HAVING clause is:SELECT column1, column2, ... column_n, aggregate_function (expression)FROM tables WHERE predicates GROUP BY column1, column2, ...column_nHAVING condition1 ... condition_n;aggregate_function can be a function such as SUM, COUNT, MIN, or MAX.Example using the SUM functionFor example, you could also use the SUM function to return the name of the department and the total sales (in the associated department). The HAVING clause will filter the results so that only departments with sales greater than $1000 will be returned.SELECT department, SUM (sales) as "Total sales"FROM order_details GROUP BY department HAVING SUM (sales) > 1000 ORDER BYThe ORDER BY clause allows you to sort the records in your result set. The ORDER BY clause can only be used in SELECT statements.The syntax for the ORDER BY clause is:SELECT columns FROM tablesWHERE predicates ORDER BY column ASC/DESC;The ORDER BY clause sorts the result set based on the columns specified. If the ASC or DESC value is omitted, the system assumed ascending order.ASC indicates ascending order. (default)DESC indicates descending order.Example #1SELECT supplier_city FROM supplier WHERE supplier_name = 'IBM' ORDER BY supplier_city;This would return all records sorted by the supplier_city field in ascending order.Example #2SELECT supplier_city FROM supplier WHERE supplier_name = 'IBM' ORDER BY supplier_city DESC;This would return all records sorted by the supplier_city field in descending order.UNIONThe UNION query allows you to combine the result sets of 2 or more "select" queries. It removes duplicate rows between the various "select" statements.Each SQL statement within the UNION query must have the same number of fields in the result sets with similar data types.The syntax for a UNION query is:select field1, field2, field_n from tablesUNIONselect field1, field2, field_n from tablesUNION ALLThe UNION ALL query allows you to combine the result sets of 2 or more "select" queries. It returns all rows (even if the row exists in more than one of the "select" statements).Each SQL statement within the UNION ALL query must have the same number of fields in the result sets with similar data types.The syntax for a UNION ALL query is:select field1, field2, field_n from tablesUNION ALLselect field1, field2, field_n from tables;UPDATEThe UPDATE statement allows you to update a single record or multiple records in a table.The syntax the UPDATE statement is:UPDATE table SET column = expression WHERE predicatesINSERTThe INSERT statement allows you to insert a single record or multiple records into a table.The syntax for the INSERT statement is:INSERT INTO table(column-1, column-2, ... column-n)VALUES(value-1, value-2, ... value-n)DELETEThe DELETE statement allows you to delete a single record or multiple records from a tableThe syntax for the DELETE statement is:DELETE FROM table WHERE predicatespl/sql函数substr (string, start_position, [length])This function allows you to extract a substring from a stringFor Example:substr ('This is a test', 6, 2) would return 'is'substr ('This is a test', 6) would return 'is a test'substr ('Tech on the Net', 1, 4) would return 'Tech'decode( expression , search , result [, search , result]... [, default] )This function has the functionality of an IF-THEN-ELSE statement For Example:SELECT supplier_name,decode (supplier_id, 10000,'IBM',10001, 'Microsoft',10002, 'Hewlett Packard', 'Gateway') resultFROM suppliersinstr(string1, string2, [start_position], [nth_appearance])This function returns the location of a substring in a stringFor example:instr ('Tech on the net', 'e') would return 2; the first occurrence of 'e'instr ('Tech on the net', 'e', 1, 1) would return 2; the first occurrence of 'e'instr ('Tech on the net', 'e', 1, 2) would return 11; the second occurrence of 'e'instr ('Tech on the net', 'e', 1, 3) would return 14; the third occurrence of 'e'instr ('Tech on the net', 'e', -3, 2) would return 2Trim(text)This function removes leading and trailing spaces from a string For exampleTrim (" Tech on the Net") would return "Tech on the Net"Trim (" Alphabet ") would return "Alphabet"RTrim (text)This function removes trailing spaces from a stringFor example:RTrim ("Tech on the Net ") would return "Tech on the Net"RTrim (" Alphabet ") would return " Alphabet"LTrim (text)This function removes leading spaces from a stringFor example:LTrim (" Tech on the Net") would return "Tech on the Net"LTrim (" Alphabet ") would return "Alphabet "to_number (string1, [format_mask], [nls_language] )This function converts a string to a numberFor example:to_number ('1210.73', '9999.99') would return the number 1210.73 to_number ('546', '999') would return the number 546to_number ('23', '99') would return the number 23to_char (value, [format_mask], [nls_language] )This function converts a number or date to a stringExamples - NumbersThe following are number examples for the to_char function.to_char (1210.73, '9999.9') would return '1210.7'to_char (1210.73, '9,999.99') would return '1,210.73'to_char (1210.73, '$9,999.00') would return '$1,210.73'to_char (21, '000099') would return '000021'The following are date examples for the to_char function.to_char (sysdate, 'yyyy/mm/dd'); would return '2003/07/09'to_char (sysdate, 'Month DD, YYYY'); would return 'July 09, 2003' to_char (sysdate, 'FMMonth DD, YYYY'); would return 'July 9, 2003'to_char (sysdate, 'MON DDth, YYYY'); would return 'JUL 09TH, 2003'to_char (sysdate, 'FMMON DDth, YYYY'); would return 'JUL 9TH,2003'to_char (sysdate, 'FMMon ddth, YYYY'); would return 'Jul 9th,2003'to_date (string1, [format_mask], [nls_language] )This function converts a string to a date、nvlFor example:to_date ('2003/07/09', 'yyyy/mm/dd'); would return a date valueof July 9, 2003.to_date ('070903', 'MMDDYY'); would return a date value of July 9, 2003.to_date ('20020315', 'yyyymmdd'); would return a date value ofMar 15, 2002nvl (string1, replace_with )This function lets you substitutes a value when a null value is encounteredExample #1:select NVL (supplier_city, 'n/a') from suppliers***************************************************************** ************************数组的定义Type NumArray Is Table Of Number Index By Binary_IntegerType StrArray Is Table Of Varchar2(500) Index By Binary_Integer记录的定义Type rp_tb_type Is Record(TbBorder Varchar2(10),TbCss Boolean,TdCss Boolean)游标的定义Cursor cur_line IsSelect tb.Month, tb.loct_onhandFrom fj_rp_opm003_tmp_tb tbWhere tb.item_no = row_head.item_no;row_line cur_line%Rowtype;视图的定义视图是一个虚拟的、不是物理存在的表,他是通过sql语句把一个或多个表连接在一起形成的.Create or replace view ic_item_v AsSelect * from ic_item_mst_b基表是一个物理存在的表,能以表格的形式存储数据,是数据的载体Create table table_name(col1 varchar2(100),col2 varchar2(10))临时表1 会话特有的临时表CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification> ) ON COMMIT PRESERVE ROWS;2 事务特有的临时表CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification> ) ON COMMIT DELETE ROWS;CREATE GLOBAL TEMPORARY TABLE MyTempTable所建的临时表虽然是存在的,但是insert 一条记录然后用别的连接登上去select,记录是空的--ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)--ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表异常PL/SQL处理异常不同于其他程序语言的错误管理方法,PL/SQL的异常处理机制与ADA很相似,有一个处理错误的全包含方法。

Oracle ERP系统的Form Builder开发方法

Oracle ERP系统的Form Builder开发方法

华东师范大学学校代码:10269学 号:63041500015基于O r a c l e E R P系统的F o r mB u i l d e r开发方法院、 系: 软件学院专 业: 软件工程研 究 方 向: 软件项目管理指 导 教 师: 余青松姓 名: 程序2006年3月Oracle ERP二次开发实用技术系列:之一:基于O r a c l e E R P系统的R e p o r t B u i l d e r开发方法之二:基于O r a c l e E R P系统的F o r m B u i l d e r开发方法之三:基于O r a c l e E R P系统的C o n c u r r e n t P r o g r a m开发方法之四:基于O r a c l e E R P系统的A l e r t开发方法之五:基于O r a c l e E R P系统的X M L P u b l i s h e r开发方法摘要摘要内容:Report Builder是Oracle ERP展示数据最重要的方式,也是二次开发中,工作量最多的一个部分。

对于Oracle ERP的二次开发来说,Report的开发与一般CS结构的Report开发,是有区别的,市面上有很多关于Report的书籍,但是相信看过任何一本的人都知道,在你实际开发ERP Report的过程中,还是问题不断,而且这些问题通常是书本上无法解决的。

就算是Oracle的标准培训文档,也只能给你一个大概的蓝图。

本篇文章,就是将一些实际开发过程中的步骤、策略、技巧、疑难杂症展现出来。

本文通过步骤、安装、策略、疑难四个方面讲解Report的开发,通过最通俗的语言讲解,其中一些技巧,是公司同事经验积累的成果,只是由我将它记录下来,其中难免有一些错误,或者疑难问题上不够准确的地方,但是只要能给你的开发和学习一些帮助,就是作者最大的欣慰了。

本文第二章引用了itpub上一位网友的文章,他写的很详细了,也是很基础很重要的,我就直接引用了,不用太麻烦去写了。

浅谈ERP二次开发流程

浅谈ERP二次开发流程

浅谈ERP⼆次开发流程回顾这将近两年的ERP⼆次开发的⽇⼦,谈谈⾃⼰对⽬前部门⼆次开发模式的理解(有不到之处还请指正)!1.⼆次开发产⽣原因⽆论哪个⾏业,⽆论哪个ERP供应商,绝不可能开发出完全适合每个企业的产品,购买ERP的企业总会由于⾃⼰特有的流程需要ERP做个性化定制(OEM),这个时候产品的⼆次开发便应运⽽⽣。

2.⼆次开发流程1)接单由各地区事业部依据客户具体需求,完成需求⽂档的撰写,经客户确认后,发送到⼆次开发部门完成定制。

需求审阅:由于事业部顾问对系统的了解程度不⾼,可能导致给客户确认的需求⽆法在现有平台的基础上完成,故需增加产品熟悉⼈员对需求⽂档2)规格审阅合格之后⽅可交予程序员进⾏开发。

这样的好处是:第⼀时间确认客户需求在现有平台的基础上是否能实现,以及顾问评估的时数是否合理,可以较⼤程度的提⾼⼆次开发部门的效率。

3)程序开发①部门经理依据规格审阅后确认的撰写时数与部门⽬前的⼈⼒状况,安排程序开发时程,录⼊派⼯系统!同时将具体的状况回复给事业部顾问。

②建⽴开发站台,测试站台等环境建置的⼯作。

③程序员依据需求⽂档(规格)开始撰写程式。

4)程序测试程序开发完成之后,在现有环境的基础上模拟客户数据进⾏整合测试(功能测试,系统测试)。

5)程序出货程序测试完成,将测试清单与编译后的程序包起来后,出货给顾问。

6)程序安装顾问⾄客户环境安装程序,在客户测试环境完成测试,测试OK,安装⾄客户正常环境。

7)结案客户正常使⽤后,顾问结案并通知⼆次开发部门。

3.协助⼯具1)外部录单系统:加强地区事业部顾问与⼆次开发部门之间对整个开发周期的查询与管控,及时详细的反应出程序开发的状态。

2)环境建置⼯具:快速、⾼效的帮助程序员建⽴⼆次开发环境,并完成相关配置。

3)程序⾃测⼯具:检测出产品某些固定要求,有效防⽌由于程序员疏忽导致的错误。

4)打包⼯具:快速、⾼效的完成开发程序的build过程,⼀并将需要的数据库资料,相关⽂件资料包装成⼀个zip档。

Oracle Reports培训教程

Oracle Reports培训教程

Oracle Reports培训教程HAND作者: 孟军创建日期: 2000年11月28日最近修改日期: 2000年11月28日文档编号: MD060版本: 1审批人:审批人1审批人2拷贝数_____文档控制更改记录浏览者分发目录文档控制 ................................................................................................................................... i i 综述 . (5)Oracle Reports概述 (6)Oracle Reports的版本 (7)Oracle Reports的安装 (8)建立并运行一个简单的报表 (11)建立报表 (11)编译运行报表 (15)习题 (16)数据模型(Date Model) (17)功能及构成 (17)数据模型编辑器 (17)查询 (18)组 (19)列 (19)数据连接 (22)参数 (23)布局(Layout) (26)布局功能 (26)布局模型编辑器 (27)报表区域 (27)基本布局对象 (28)几种缺省的报表布局风格 (34)参数表格(Parameter Form) (37)建立用户自定义的参数表格 (37)报表触发器(Report Triggers) (38)触发器的触发时机及用途 (38)习题 (39)程序单元(Program Units) (40)附加的程序库(Attached Libraries) (41)建立PL/SQL程序库 (41)连接PL/SQL程序库 (42)习题 (43)矩阵式报表 (44)建立矩阵式报表的需求 (44)单查询矩阵式报表 (44)多查询矩阵式报表 (47)Reports在Applications下的安装 (53)编制Report (53)在Application中注册Reports (53)将Reports运行权限赋给相应的职责 (55)综述本文档为Oralce Reports培训文档,仅限于Hand培训使用。

ERP项目二次开发如何进行

ERP项目二次开发如何进行

随着企业规模的不断扩大,企业的发展瓶颈逐渐突显,而此时,大部分企业都选择上ERP管理软件来规范企业的运作流程,解决发展过程中的问题,就此将企业的业务流程进行重组,进一步规范,将管理水平推上一个新的台阶。

而对于制造型企业来说,上ERP管理软件往往比普通企业困难更大,其中最为突显的一点便是针对企业具体的生产流程,解决生产过程中所发生的问题的二次开发项目。

对于制造企业来说,不同的行业有不同的生产流程,即便是生产同一种产品的相同企业,其内部制造过程还会有一些不同,因此,生产这一块绝对不是通用的标准版软件拿过来就能解决问题的。

而企业的领导也深知这一点,因此,大多数企业的领导都在生产这一块选择项目二次开始,最后再整合到标准版的ERP管理软件中去。

但从目前的形式看,二次开发项目的成功率还是不尽人意,即便可以在生产线上运作,企业总会感觉到与自己所理想的软件还是有那么一点点差距。

二次开发项目可谓定点需求,为了所投入的钱不打水漂,也为了最终开发的软件能更好的为生产服务,二次开发项目的管控非常重要,管控抓得如何,往往直接影响最终的软件成品。

既然二次开发项目的管控非常重要,我们又该如何管控呢。

一、把好合同第一关涉及到二次开发项目时,合同的签订就非同一般了,标准产品可能只要严格规定一下软件的价格、系统上线时间、培训等相关事宜就八、九不离十了。

但二次开发项目的合同如果也只是一个大框架,到最后往往就会因为缺乏实质性的约束内容,最终导致项目延期等。

对于二次开发项目,如果同标准产品同签订一份合同,一定要将二次开发项目单独罗列出来,如果可以就二次开发项目单独签订一个合同则是更好。

不论是单独签订还是和标准产品共用一份合同,有几点必须明确注明。

第一:开发人员何时着手项目的开发。

项目何时验收基本上大家都记得,但很少有人会注意到项目何时开发这一问题。

软件提供商可能会说他们的开发人员经验丰富,可以很快搞定。

但如果能给开发人员多一些时间岂不是更好?特别是软件后期测试除Bug阶段,经验很重要,时间同样重要。

ORACLEERP开发基础之EBS开发基础

ORACLEERP开发基础之EBS开发基础

ORACLEERP开发基础之EBS开发基础Oracle ERPORACLEERP开发基础之前言ORACLE ERP开发之OracleForms基础(一)Forms设置部分ORACLEERP开发基础之OracleForms基础(二)FORMS代码部份ORACLE ERP开发基础之Oracle Report基础Oracle EBS11i 开发工具是developer6i的东西,非常古老。

由因此转手过来的机器,开发工具都是安装好了,因此也没去在意这工具的安装。

今天系统重装了,才明白这工具安装起来也是特烦人的。

先安装FORMS6i与REPORT6i,安装完后一定要打补丁。

否则会出现一大堆莫名的错误。

接着安装discoverer。

安装discoverer时先将注册表备份出来,由于discoverer不能与Forms安装在同一目录。

然后再安装discoverer的补丁,接着再将注册表恢复回来。

大致这样能够了。

注意顺序一定要不能错了,否则又会出现一堆无聊的错误。

唉!developer6i是98年的工具。

盼着EBS R12应该是用DEVELOPER10g吧。

EBS二次开发包注册2.1 从Server 中下载ERP Library (.pll), 存放于本机Server Path :/u01/au/11.5.0/resourceForm文件与Library文件要存放在固定目录比如:Form存放在d:\ErpForm\FormLibrary 存放在d:\ErpForm\Library;2.2 在Regedit > HKEY_LOCAL_MACHINE > SOFTWARE > ORACLE >FORMS60_PATH加入client 端存放Form 及Library的路径(如图)比如:d:\ErpForm\Library;d:\ErpForm\Form(建议要加在最前面)利用TEMPLATE.fmb 模板来开发FormOracle 已经为我们提供了一个Form 的开发模板,(/data/deve/devappl/au/11.5.0/forms/ZHS/TEMPLATE.fmb)我们的开发实际要基于这个模板,这个模板里面已经存在了我们将会用到的Oracle 标准的对象,我们需要做的,就是这这个模板的基础上面,添加我们自己的对象。

oraclereport高级开发教程

oraclereport高级开发教程

oraclereport⾼级开发教程ORACLE REPORT ⾼级开发1REF游标查询 (2)2条件格式化 (3)3图象加⼊ (6)4数据链接 (7)5组设置 (9)6前后处理 (10)7报表布局调整 (13)7.1标尺设置 (13)7.2⽹格线对齐 (13)7.3限制模式 (14)7.4伸缩模式 (14)7.5元素的⼤⼩控制 (15)7.6元素的⽔平、垂直控制 (15)7.7元素对齐 (16)7.8页⾯控制 (16)8⼿⼯开发报表 (19)8.1基本报表 (19)8.2分组报表 (21)8.3交叉报表 (23)1REF游标查询建⽴游标查询的基本过程包括:1.建⽴游标类型2.建⽴游标函数3.利⽤框架实现游标查询结果的展现下边的例⼦通过建⽴⼀个包的⽅式,设置游标类型,函数,在报表游标函数中设置游标即为包函数返回。

包的定义和包体信息:CREATE OR REPLACE PACKAGE a04 AStype a04rec is RECORD(ORG_NO NUMBER(8),NAME VARCHAR2(128));type a04refcursor is REF CURSOR return a04rec;function TESTC return a04.a04refcursor ;end A04;create or replace package body A04 asfunction TESTC return a04.a04refcursor istemp_container a04.a04refcursor;beginopen temp_container for select _no org_no , name from scorg s;return temp_container;end TESTC;END A04;报表游标函数:function QR_1RefCurDS return a04.a04refcursor istemp_container a04.a04refcursor;str1 varchar(200);begintemp_container :=a04.testc();return temp_container;end;游标函数调⽤:框架源指定G_ORG_NO,F_1,F_2分别指定源ORG_NO,NAME。

ERP系统开发与二次开发

ERP系统开发与二次开发

ERP系统开发与二次开发ERP系统开发与二次开发一、什么是ERP系统ERP系统是企业资源计划(Enterprise Resource Planning )的简称,是指建立在信息技术基础上,集信息技术与先进管理思想于一身,以系统化的管理思想,为企业员工及决策层提供决策手段的管理平台,其核心思想是供应链管理。

按适用规模的分类1.C/S架构下的ERP软件。

即客户机与服务器结构,是将系统的操作功能合理分配到Client端和Server端,此类架构下的ERP适合于企业内部使用局域网的情况,有局限性,保密性相对较强。

2.B/S架构下的ERP软件。

B/S架构,即浏览器和服务器结构,用户的工作界面可以通过www浏览器来实现,从适用范围来讲,B/S架构的ERP软件不但适用于企业内部局域网,也适用于外部的广域网。

即,在保证企业指定电脑保密需求的同时,满足互联网下的无区域限制办公,适应企业全球化管理的需求。

二、ERP系统的作用(1)提供集成的信息系统,实现业务数据和资料共享。

(2)理顺和规范业务流程,消除业务处理过程中的重复劳动,实现业务处理的标准化和规范化,使得企业管理的基础工作得到加强,工作的质量进一步得到保证。

(3)系统自动完成数据的处理由,大大提高了准确性与及时性,减轻了工作强度,将企业管理人从繁琐的事务处理中解放出来,用更多的时间研究业务过程中存在的问题,研究并运用现代管理方法改进管理,促进现代管理方法在企业中的广泛应用。

(4)加强内部控制,在工作控制方面能够做到分工明确,适时控制,对每一环节所存在的问题都可以随时反映出来,并可以提供绩效评定所需要的数据。

(5)通过系统的应用自动协调各部门的业务,使企业的资源得到统一规划和运用,降低库存,加快资金周转的速度,将各部门联成一个富有团队精神的整体,协调运作。

三、 ERP系统的组成(1)会计核算会计核算主要是实现收银软件记录、核算、反映和分析资超市管理等功能。

erp 开发会计审核模块由总帐模块、应收帐模块、应付帐模块、现金管理模块、固定资产核算模块、多币制模块、工资核算模块、成本模块等构成。

企业ERP系统的二次开发-精选文档

企业ERP系统的二次开发-精选文档

企业ERP系统的二次开发Secondary Development of Enterprise ERP SystemHuang Yitao(Liuzhou Hengda Bus Co,Ltd.,Liuzhou545000,China):The use of ERP and other enterprise information systems.After ten years of development come to realize the existing enterprise management software,and management has been greatly can not meet the requirements of corporate business development.As a constraint to efficient functioning of enterprises is an important bottleneck,so the introduction of advanced enterprise management software and management is imperative.Keywords:ERP systems;Secondarydevelopment;Selection;Implementation;Training基于企业ERP系统的现状,唯有对软件进行二次开发才能满足企业日益增长的业务需求。

根据ERP二次开发的过程,需要注意以下三个阶段:一、选型阶段对ERP系统二次开发的选型放在重中之重的位置。

在ERP项目在选型上究竟是采用先进管理理念的成熟成品软件,还是寻求能提供独立重新开发的二次软件开发,这一直都是一个争论不休的话题。

ERP系统二次开发在选型上是遵循规范、科学的方案,还是坚持灵活、独立的企业个性化方案呢?有以下三种方案:(一)完全采用ERP先进管理思想,对企业进行大刀阔斧的改革。

二次开发方案

二次开发方案

二次开发方案二次开发方案引言二次开发是指在已有软件或系统的基础上进行进一步的开发和定制,以满足特定的业务需求。

在软件开发过程中,二次开发方案的制定非常重要,它决定了二次开发的目标、方法和流程。

本文将介绍二次开发方案的制定过程和注意事项。

1. 确定二次开发目标在制定二次开发方案之前,需要明确二次开发的目标。

目标应该具体、明确,能够清楚地表达出二次开发的目的和预期效果。

例如,二次开发的目标可能是改善现有系统的用户界面、增加新功能或优化系统性能。

2. 分析现有系统在制定二次开发方案之前,需要对现有系统进行全面的分析。

这包括系统的架构、功能模块、数据流程、数据库设计等方面的分析。

通过对现有系统的分析,可以更好地理解系统的结构和运行机制,为二次开发方案的制定提供参考依据。

3. 确定二次开发方法根据目标和现有系统的分析结果,可以确定二次开发的方法。

二次开发方法可以分为以下几种:a. 插件开发插件开发是一种常见的二次开发方法,通过编写插件来扩展现有系统的功能。

插件可以独立于系统运行,通过接口与系统进行交互。

插件开发的优点是灵活性高,不会对现有系统的代码进行修改,同时可以方便地进行维护和升级。

b. API接口开发如果现有系统提供了开放的API接口,可以通过开发API接口来实现二次开发。

API接口开发的优点是结构清晰,扩展性强。

通过调用API接口,可以与现有系统进行数据交互和功能调用。

c. 定制化开发定制化开发是一种根据需求对现有系统进行修改和扩展的开发方法。

这需要开发人员深入理解现有系统的源代码,根据需求进行修改和扩展。

定制化开发的优点是具有无限的灵活性,可以根据业务需求进行深度定制。

4. 制定二次开发计划根据目标、现有系统的分析结果和二次开发方法,制定二次开发的详细计划。

计划应该包括以下几个方面:a. 时间计划明确二次开发的起止时间、每个阶段的工作内容和工期安排。

确保二次开发能够按计划进行,避免延期或超出预算。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle ERP二次开发实用技术系列之一Oracle ERP二次开发:Report开发方法Author:Program Cheng 程序E-mail: Program.Cheng@MSN: chengxu563@Copyright:Program Cheng 程序2005年12月1日 V1.0Oracle ERP二次开发实用技术系列:之一:Report开发方法之二:Form开发方法之三:Concurrent Program及Interface转档开发方法之四:Alert开发方法Oracle ERP二次开发项目管理系列:之一:知识管理方法之二:范围管理方法之三:时间管理方法之四:需求管理方法之五:质量管理方法之六:沟通管理方法之七:风险管理方法之八:配置管理方法之九:外包管理方法Oracle ERP二次开发系统流程系列:之一:库存之二:采购应付之三:销售应收之四:固定资产之五:成本结帐之六:现金管理论文:Oracle ERP二次开发方法论[摘要]Report是Oracle ERP展示数据最重要的方式,也是二次开发中,工作量最多的一个部分。

对于Oracle ERP的二次开发来说,Report的开发与一般CS结构的Report开发,是有区别的,市面上有很多关于Report的书籍,但是相信看过任何一本的人都知道,在你实际开发ERP Report的过程中,还是问题不断,而且这些问题通常是书本上无法解决的。

就算是Oracle的标准培训文档,也只能给你一个大概的蓝图。

本篇文章,就是将一些实际开发过程中的步骤、策略、技巧、疑难杂症展现出来。

本文通过步骤、安装、策略、疑难四个方面讲解Report的开发,通过最通俗的语言讲解,其中一些技巧,是公司同事经验积累的成果,只是由我将它记录下来,其中难免有一些错误,或者疑难问题上不够准确的地方,但是只要能给你的开发和学习一些帮助,就是作者最大的欣慰了。

[关键字] Oracle;二次开发;Report。

[目录]1.Report Builder的简介2.Report的基本开发步骤3.Report的布局研究,特殊报表的布局开发方法4.Report的安装上线方法5.Report的检查、测试策略6.Report的疑问问题应付方法第一部份: Report Builder的简介Report,报表,就是将数据库的数据合理、清晰、汇总的展示出来。

输入一定条件的参数,得到一定的数据的展示的结果,其实就是一个select查询的过程。

查询,就是说,不要对有任何的增加原数据,修改原数据的功能。

Report虽然能够轻易的实现改变原数据,但是这样的需求是不合理的,报表的就是一个展示的功能,不管多复杂的报表,不能改变原数据,不能影响流程。

Report Builder,简单的说,就是一个资料模型,就是你的报表数据查询来源,一个布局模型,你要的报表的展示格式。

使用Report之前,你需要的基本能力就是会使用SQL/PLSQL语句,语法是其次,关键是数据之间的逻辑关系,起码能将左外联接,迪卡尔积等几个名词说的清楚,那么,OK,继续往下看。

第二部份: Report的基本开发步骤1.先进行ERP环境下的REPORT的格式属性设定.1.1请采用手工方式,并不使用report使用的精灵来制作报表,将出现在画面中的module原始文件另存为你的目的地址,并使用你的项目报表名称。

1.2建立报表后,选中报表名称段,按F4打开属性,字符模式->用字符单位设计->选择”是”。

1.3在布局模型中,选择主要节段,按F4打开属性,字符模式->报表高度和报表宽度按照设计书填写,节段->宽度和高度,这个设置直接影响布局模型字符模式下的点距。

小技巧:节段的高度和宽度,与报表高度和报表宽度最好对应成比例,并且,这个比例的倍数最好是整数,由于将来可能出现的报表长宽发生变化,报表高度和报表宽度调整后,节段的高度和宽度就要按比例调整,这样每个格子的形状、大小不变,同时你报表中的内容不会拉长、压扁;同时建议将表头节段,表尾节段也设置来同主要节段相同。

例如:表头,表尾,主要节段三个的属性,请将节段高度和报表高度按比列设置(如1:10), 节段宽度和报表宽度,按比例设置(如1:6),而且三个节段的属性要设置相同.这样做的好处是将来一旦调整报表大小,只需按比例不变的情况下调整,框架中每格大小不变,表格也就不会混乱.1.4在布局模型中拉框架前,选择格式->布局选项->标尺设定,画面中点选,单位->字符单位,网格线间隔->1,对齐点数目->1,字符单位大小不要改动。

.这样设置的目的在于拉动框架时,间距都是1个字符,符合ERP报表的定位方式。

这样,你的前期工作就算完成了。

2.定义你的使用者参数将详细设计文件中,ERP环境传入的参数和你自己定义的参数,一一设置好,提醒注意数据类型和大小,传入参数和自定义参数要区分开,请按照规范文档来。

注意,自定义参数对报表的开发灵活性作用巨大,要使用有含义的名称。

Parameter Name自定义参数命名参考1 “PI_”+XXXXX 传入值用的参数, 如果 parameter 的用途是真正作为传入参数用时,名称一律以” PI _”开头;不可使用系统默认值。

2 “GLB_” +XXXXX 报表中使用的变量参数, 如果 parameter 的用途是作为共享变量时,名称一律以” GLB _”开头; 不可使用系统默认值。

3 有起迄的参数需要在后面XXXXX +”_F”表示FROM, XXXXX+”_T”表示TO; 不可使用系统默认值。

小技巧:date类型的传入参数,有时根据value set设置的不同要使用格式遮罩,固定它的时间格式,不然会出现错误。

同时建议在设置大小时要适当放大一些,避免有多国语言文字时出现错误。

3.Report执行过程的说明从画面上触发器的摆放次序,是从上到下的。

为参数前,参数后,报表前,翻页中,报表后。

其中参数后和报表前为最常使用的两个触发器,一般情况下,使用报表前(before report)来编写在报表运行前需要处理的数据,比如给自定义参数赋值,运行一段存储过程,定义一段动态sql,插入临时表格数据等。

当报表前插入临时表格数据,那么after report 就是执行删除临时表格数据的动作。

4.建立资料模型一般来说,除了矩阵,布局无非就是固定框架和循环框架的组合,每一个循环框架就对应一个资源模型中的一级。

当然,这么一句话并没有什么实质意义,而要把这个讲清楚,就通过图形和实例来讲解。

下一部份重点讲解该注意一些技巧和特点。

4.1最一般的单循环普通报表按“sql”按钮,点入画布中,再导入事先写好的sql script。

导入sql后,这个报表的资料模型非常之简单。

(注此报表并非模范,请按照规范命名。

)5,建立布局模型5.1先拖1个固定框,再在固定框内画1个循环框5.2,将固定框和循环框拖拉到合适的大小,再内部填充上数据栏位和文字栏位固定框上下设为浮动的,左右为固定的,显示为“第一页”“包含模式”。

循环框上下设为浮动的,左右为固定的,显示为“第一页”“包含物件”,每页最多显示多少,这里为1,当然根据需要而定。

内部栏位6 报表完成这里的第3,4,5小节只是一点简单的步骤介绍,详细方法和技巧并没有呈现出来。

下面这个部分,将就资料模型和布局模型的关系作详细的探讨。

7 参数规范参考框架Layout中,字段名称命名“F_”+XXXXXX: XXXXX为可表达其意义的名字,最好能与抓取值名称对应上;不可使用系统默认值。

查询主体名称命名“Q_”+XXXXX X: XXXXX为可表达其意义的名字;不可使用系统默认值。

固定框名称命名“M_”+XXXXXX: XXXXX为可表达其意义的名字;不可使用系统默认值。

循环框名称命名“R_”+XXXXXX: XXXXX为可表达其意义的名字;不可使用系统默认值。

文字框名称命名“B_”+XXXXXX: XXXXX为可表达其意义的名字;不可使用系统默认值。

Formula Column Name公式直栏命名:“CF_”+XXXXXX: XXXXX为可表达其意义的名字;不可使用系统默认值。

Placeholder Name占位符命名:“CP_”+XXXXXX: XXXXX为可表达其意义的名字;不可使用系统默认值。

第三部分 Report的布局研究,特殊报表的布局开发方法1. 布局框架风格1.1在布局模型栏位中字符\时间左靠齐,数字右靠齐.小技巧:对于字符型数据的栏位,注意中文和日文的宽度,是占用2个字符;对于时间栏位,注意格式遮罩,比如DD-MON-YY,还有小时是12小时制,还是24小时制,有时会遗忘这一点;对于数字栏位,注意保留位数,NN0.00与NN0.NN是不一样的,前者是恒保留2位,后者是超过2位小数保留2位,但是不足2位就不会补0,还有一些是货币格式,注意选择合适的格式遮罩,还有特殊情况,如负数要用括号括起来,-100为(100),这种情况,建议使用公式栏中处理出来后显示,先to_char转换,再判断是否两边连接括号。

1.2 繁体报表要求用细明体,10号字.小技巧:不要设置任何斜体、下划线、粗体,因为ERP报表就是纯字符报表,有一次我设置了粗体,试验下来的结果就是报表会报错,这样的错误,很难找到原因。

有时你看见明明显示的是细明体10号,但是一运行却不是,建议在作完报表布局后,CTRL+A全选,然后先选择另一个字体,再选回细明体,先选另一个大小字号,再选回10号字。

1.3 请将框架和栏位的颜色设为无色,填充也设为无.小技巧:在画完报表之后,CTRL+A全选,选择无填充,无颜色,这样报表保证不会出错。

1.4 报表标题,设在主要节段内,表头,表尾尽量不要输入内容,同时在“显示报表的表为节段”模式下,将黑框顶满画面.小技巧:任何报表形式,都能够在不利用表头模式、表尾模式的情况下实现表头表尾格式的实现。

因为在表头模式、表尾模式下,非常容易出现报表出错,关键是错误很难找出,有时把整个画面全部删除了,才想到是表头表尾出错了。

将下面这个黑框,上下左右全部顶满。

2.资料模式风格2.1 充分利用报表的汇总、公式列功能。

小技巧:汇总,与此类似的平均值之类的,为我们的报表编写提供了相当大的辅助,但是要注意层级关系,你这个汇总是放在哪一个层级上的。

一般来说,汇总列总是比你要处理的列高层级,而公式列是与处理的列平行的。

公式列的功能,常用在字符处理上,或者数字转字符,或者返回一个yes/no。

2.2 连接线的使用对于图中Q_1,Q_2之间的这条连接线,意味着,将这两个查询通过某一个栏位而统一起来了,从上图中就可以看出, Q_1是主查询,使Q_1与Q_2同一级,就是连接的栏位列之间是对应关系。

相关文档
最新文档