Report报标准表格开发设计说明书范文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Report报表开发设计说明
书
第一部份:ReportBuilder 的简介
Report,报表,就是将数据库的数据合理、清楚、汇总的展现出来。
输入必定条件的参
数,获得必定的数据的展现的结果,其实就是一个select 查问的过程。
查问,就是说,不要对有任何的增添原数据,改正原数据的功能。
Report固然能够轻易的实现改变原数据,但是这样的需求是不合理的,报表的就是一个展现的功能,不论多复杂的报表,不可以改变原数据,不可以影响流程。
ReportBuilder,简单的说,就是一个资料模型,就是你的报表数据查问根源,一个布
局模型,你要的报表的展现格式。
使用Report从前,你需要的基本能力就是会使用SQL/PLSQL 语句,语法是其次,要点是数据之间的逻辑关系,最少能将左外联接,迪卡尔积等几个名词
说的清楚,那么,OK,持续往下看。
第二部份:Report 的基本开发步骤
先进行ERP环境下的REPORT的格式属性设定.
请采纳手工方式,其实不使用report 使用的精灵来制作报表,将出此刻画面中的
module原始文件另存为你的目的地点,并使用你的项目报表名称。
成立报表后,选中报表名称段,按F4翻开属性,字符模式->用字符单位设计->选择”
是”。
.专业.专注.
在布局模型中,选择主要节段,按F4翻开属性,字符模式->报表高度和报表宽度按
照设计书填写,节段->宽度和高度,这个设置直接影响布局模型字符模式下的点距。
小技巧:节段的高度和宽度,与报表高度和报表宽度最好对应成比率,并且,这个比率的倍数最好是整数,因为未来可能出现的报表长宽发生变化,报表高度和报表宽度调整后,节段的高度和宽度就要按比率调整,这样每个格子的形状、大小不变,同时你报表中的内容不会拉长、压扁;
同时建议将表头节段,表尾节段也设置来同主要节段相同。
比如:表头,表尾,主要节段三个的属性,请将节段高度和报表高度按比列设置 (如1:10),
节段宽度和报表宽度,按比率设置(如1:6),并且三个节段的属性要设置相同.
.专业.专注.
这样做的利处是未来一旦调整报表大小,只需按比率不变的状况下调整 ,框架中每格大小不变,表格也就不会杂乱.
在布局模型中拉框架前,选择格式->布局选项->标尺设定,画面中点选,单位->字符单位,网格线间隔->1,对齐点数量->1,字符单位大小不要改动。
.
.专业.专注.
这样设置的目的在于拉动框架时,间距都是1个字符,切合ERP报表的定位方式。
这样,你的先期工作就算达成了。
2.定义你的使用者参数
将详尽设计文件中,ERP环境传入的参数和你自己定义的参数,一一设置好,提示注意
数据种类和大小,传入参数和自定义参数要区分开,请依据规范文档来。
注意,自定义参数对报表的开发灵巧性作用巨大,要使用有含义的名称。
.专业.专注.
ParameterName自定义参数命名参照
1“PI_”+XXXXX传入值用的参数, 假如parameter 的用途是真切作为传入参数用时,
名称一律以”PI_”开头;不可以使用系统默认值。
2“GLB”+XXXXX报表中使用的变量参数, 假如parameter 的用途是作为共享变量
时,名称一律以”GLB_”开头; 不可以使用系统默认值。
3有起迄的参数需要在后边XXXXX+”_F”表示FROM,XXXXX+”_T”表示TO;不可以使
用系统默认值。
小技巧:date种类的传入参数,有时依据valueset设置的不同要使用格式遮罩,固定它的时间格式,不然会出现错误。
同时建议在设置大小时要适合放大一些,防止有多国语言文字时出现错误。
3.Report履行过程的说明
.专业.专注.
从画面上触发器的摆放序次,是从上到下的。
为参数前,参数后,报表前,翻页中,报表后。
此中参数后和报表前为最常使用的两个触发器,一般状况下,使用报表前(before report)来编写在报表运转前需要办理的数据,比方给自定义参数赋值,运转一段储存过程,定义一段动向sql,插入暂时表格数据等。
当报表前插入暂时表格数据,那么after report 就是履行删除暂时表格数据的动作。
4.成立资料模型
一般来说,除了矩阵,布局不过就是固定框架和循环框架的组合,每一个循环框架就对
应一个资源模型中的一级。
自然,这么一句话并无什么本质意义,而要把这个讲清楚,就
经过图形和实例来解说。
下一部份要点解说该注意一些技巧和特色。
最一般的单循环一般告表
按“sql”按钮,点入画布中,再导入预先写好的sqlscript 。
.专业.专注.
导入sql后,这个报表的资料模型特别之简单。
(注此报表并不是典范,请依据规范命名。
)
5,成立布局模型
先拖1个固定框,再在固定框内画1个循环框
,将固定框和循环框拖沓到适合的大小,再内部填补上数据栏位和文字栏位
.专业.专注.
属性的设定
固定框
上下设为浮动的,左右为固定的,显示为“第一页”“包含模式”。
循环框
.专业.专注.
上下设为浮动的,左右为固定的,显示为“第一页”“包含物品”,每页最多显示多少,这里为1,自然依据需要而定。
内部栏位
.专业.专注.
上下设为固定的,左右为固定的,显示为“第一页”“包含模式”
报表达成
这里的第3,4,5小节不过一点简单的步骤介绍,详尽方法和技巧并无体现出来。
下面这个部分,迁就资料模型和布局模型的关系作详尽的商讨。
参数规范参照
框架Layout中,字段名称命名
“F_”+XXXXXX:XXXXX为可表达其意义的名字,最好能与抓取值名称对应上;不可以使用
系统默认值。
查问主体名称命名
“Q_”+XXXXXX:XXXXX为可表达其意义的名字;不可以使用系统默认值。
.专业.专注.
固定框名称命名
“M_”+XXXXXX:XXXXX为可表达其意义的名字;不可以使用系统默认值。
循环框名称命名
“R_”+XXXXXX:XXXXX为可表达其意义的名字;不可以使用系统默认值。
文字框名称命名
“B_”+XXXXXX:XXXXX为可表达其意义的名字;不可以使用系统默认值。
FormulaColumnName公式直栏命名:
“CF_”+XXXXXX:XXXXX为可表达其意义的名字;不可以使用系统默认值。
PlaceholderName占位符命名:
“CP_”+XXXXXX:XXXXX为可表达其意义的名字;不可以使用系统默认值。
.专业.专注.
第三部分Report 的布局研究,特别报表的布局开发方法
布局框架风格
在布局模型栏位中字符时间左靠齐,数字右靠齐.
小技巧:对于字符型数据的栏位,注意中文和日文的宽度,是占用2个字符;对于时间
栏位,注意格式遮罩,比方DD-MON-YY,还有小时是12小时制,仍是24小时制,有时会忘记这一点;对于数字栏位,注意保存位数,与是不相同的,前者是恒保存2位,后者是超出2位小数保存2位,可是不足2位就不会补0,还有一些是钱币格式,注意
选择适合的格式遮罩,还有特别状况,如负数要用括号括起来,-100为(100),这类状况,建议使用公式栏中办理出来后显示,先to_char变换,再判断能否两边连结括号。
繁体报表要求用细明体,10号字.
小技巧:不要设置任何斜体、下划线、粗体,因为ERP报表就是纯字符报表,有一次我
设置了粗体,试验下来的结果就是报表会报错,这样的错误,很难找到原由。
有时你看见明
显然示的是细明体10号,可是一运转却不是,建议在作完报表布局后,CTRL+A全选,而后先选择另一个字体,再选回细明体,先选另一个大小字号,再选回10号字。
请将框架和栏位的颜色设为无色,填补也设为无.
小技巧:在画完报表以后,CTRL+A全选,选择无填补,无颜色,这样报表保证不会犯错。
.专业.专注.
报表标题,设在主要节段内,表头,表尾尽量不要输入内容,同时在“显示报表的表为节段”模式下,将黑框顶满画面.
小技巧:任何报表形式,都能够在不利用表头模式、表尾模式的状况下实现表头表尾格式的实现。
因为在表头模式、表尾模式下,特别简单出现报表犯错,要点是错误很难找出,有时把整个画面所有删除了,才想到是表头表尾犯错了。
将下面这个黑框,上下左右所有顶满。
2.资料模式风格
充足利用报表的汇总、公式列功能。
.专业.专注.
小技巧:汇总,与此近似的均匀值之类的,为我们的报表编写供给了相当大的协助,可是要注意层级关系,你这个汇老是放在哪一个层级上的。
一般来说,汇总列老是比你要办理的列高层级,而公式列是与办理的列平行的。
公式列的功能,常用在字符办理上,或许数字转字符,或许返回一个yes/no。
连结线的使用
对于图中Q_1,Q_2之间的这条连结线,意味着,将这两个查问经过某一个栏位而一致同来了,从上图中就能够看出,Q_1是主查问,使Q_1与Q_2同一级,就是连结的栏位列之间是对应关系。
可是,若是右侧第一级不是1个栏位是好多个栏位,并且其余栏位其实不与主查问有连结线,这是,右侧的第一层,就比左侧低一级了,就不是同等关系了,这时需要一个循环框。
可能有人会被我这个高级、初级给将糊涂了,为了清楚的表达这个层级关系,经过几个
实例来论述资料模型的构造与框架构造的关系。
.专业.专注.
3.资料模型与布局模型的关系。
资料模型一个层级就对应布局模型一个循环框
上面这句话,是我对report 的总结,下面,我就经过画面来说明这个关系是怎样对应的。
例一:红色部分就是第一层,第一层意味着能够不被任何循环框套起来,能够直接使用到报表之中,本例中第一层没有数据。
第二层,意味着需要一层循环框。
第三层,意味着使用这样的栏位,需要有两层循环框。
第四层,意味着使用这样的栏位,需要有三层循环框。
在下面图中,三层循环框就对应资料模型中的三个层级。
布局模型中,不用任何循环框包围的部分,就是资料模型中的第一层。
.专业.专注.
小技巧:每个循环框的外面,请加上一个固定框。
不加能够吗,能够!可是,这就降低了报表的对付更改的可变化性,比方:有个报表的循环里面要求固定5条数据,在固定的 5 条数据下面固定一行高一层数据,这行数据不随这个循环框浮动,那么就能够设置外面这个固定框的上部下性为“固定的”,不是浮动的。
例二
有连结线时的层级关系,同时在第一层也有数据,这个算是比较难的报表了。
你能够看
到这个报表,我用颜色将层级区分开,仍是一个层级区分代表一个循环框。
第一层,不需要
循环框,第四层,它的栏位从内往外数,必定会有三个循环框包围它。
下面这类状况的连结线,就是一对一的关系,是放在同一层的。
.专业.专注.
.专业.专注.
例三,再来一个更复杂的,表示层级的关系。
上面这个图很夸张,可是能够看出:第一层,无循环层,没有数据,第二层,就是中心
查问,Q_1,其余Q_2,Q_3,Q_4,Q_5,都是并立的,他们各自的前4个栏位,都是与Q_1一对多,所以Q_2,Q_3,Q_4,Q_5的最上层,是与Q_1并列第二层的。
其余的挨次增添层数即可。
这就明确了
循环框的个数和画法。
下面这个图,与上图其实是近似的,不过更清楚一些,道理是相同的。
第一层无数据,第二层,G_SHIP_DATE,以及与它连结的G_1,G_2,G_3.
.专业.专注.
定锚物品的使用
前方的报表,不论它多复杂,不过就是以循环框为中心的报表。
对于固定框的属性,一般调整的,就是上下是改动的,仍是固定的,而后使用包含物品,第一页或许所有的页。
这里必定是包含物品,定锚物品不要乱用,不然会犯错。
对于循环框更是,一般都是上下设为浮动的,左右为固定的,显示为“第一页”“包含物品”,每页最多显示多少。
栏位更不用说,除了有时上下栏位浮动的,一般都是固定的,显示为“第一页”“包含物品”。
小技巧:当一些栏位需要所有的页显示时,请在外面加上一个固定框,栏位设置为“第一页”“包含物品”,固定框设置为“所有的页”“包含物品”。
定锚物品什么时候用呢?布局模型中还有一个强拟订锚,这个在什么时候用呢?举一个例子,
你能否碰到过一个一般的报表,分表头,表身,表尾三部分,表头要求每页都显示,
这个好办,所有的页即可。
表身是循环显示,表尾却要求是在最后一页的最下面显示,注意哦,是最下面,假如你紧跟报表画,就错了。
这里就要用到定锚物品。
我们来看上图中这个事例,这里中间是个循环,要求每页显示6条,那么在外面加一个
固定框,来保持报表的形状不变,其实是保持下面部分的相对地点不变。
这时有个难题,就是固定框右下部,红框框起来的几个栏位。
按需要,一定在最后一页显示。
这时设置“最后一页”就能够了吗?不可以。
要设置为最后一页,定锚物品,这时还需要使用强拟订锚,将这个栏位与上面固定框连
结起来,这时就有一个小黑点,就OK了。
矩阵的对应关系
现介绍两个要求:
矩阵和群组矩阵要使用报表精灵来实现,利用的是矩阵的框架,手工没法画;有矩阵又有
其余内容的报表,先做矩阵,再手工画其余的;例一,用个实例解说矩阵。
由上面的图示,能够看到,我将矩阵分为5个地区,这5个地区会分别与图形中的地区相对应。
.专业.专注.
在上图中,是由精灵产生的布局格式,从上到下分红5个维度:
1)横竖循环框,不要动这里;
2)横向栏位,对应横层
3)中心栏位,对应中心层
4)竖向栏位,对应竖层
5)无维度,对应第一层。
那么交错层在哪里?在横向一个,是横向的统计,竖向一个,是竖向的栏位,这两个栏位是精灵自动产生的,即便用不到,也让这两个数据出来,在画面上删除就能够了,万一此后要增添也方便。
.专业.专注.
让我们来剖析上面这幅布局:
1)最必需的三个框架:最外层大框,横向循环框,竖向循环框。
最外层大框
.专业.专注.
.专业.专注.
2)横向栏位,对应横层。
在图中F_HENG_ZUO,F_HENG_所YOU在的地方就是横层的所放地点,只按要注意一点,精灵产生的全在左侧,可是依据需要,你能够拉宽横层循
环框,并且将栏位用左右键移到右侧去。
同时这个地区寄存,交错层的横向汇总。
3)中心栏位,对应中心层。
在图中 F_AMOUNT所在的地方,就是中心栏位,就是你想要显示的明细数据,由精灵产生时,这里有1个循环框,再包含1个栏位,或多个。
4)竖向栏位,对应竖层。
在图中F_TITLEU所在的地方就是竖层的所放地点,只按要注意一点,精灵产生的全在上面,可是依据需要,你能够拉高竖层循环框,并且将栏
位用上下键移到下面去。
同时这个地区寄存,交错层的竖向汇总。
5)无维度,对应第一层。
注意,四个角的四个固定框,这里就是无维度层,你能够设置固定字符和栏位,都能够。
.专业.专注.
小技巧:交错层不可以够新增公式例,必定会报错。
在矩阵精灵出来的布局构造中,出来
外面的大框,横框,竖框,三个框绝对不可以删除以外,其余都能够删除,并且能够随意
手工增添栏位。
注意属性哦,不然会犯错。
3.4对于群组矩阵,其实只需你理解了矩阵。
就是在矩阵外面加一个循环框,将整个
矩阵包含起来,矩阵循环显示,就是群组矩阵。
注意:不论是矩阵,仍是群组矩阵,由精灵产生的时候,麻烦你把“界限”那边产生栏位删除去,不然你会犯错。
界限里面搁置的是布局模型中,在黑框外的栏位,在我倡议的report做法里面,不建议使用黑框外的做法,所以,界限也请删除去。
研究话题:以上方法,几乎对付所有的矩阵报表,都没有问题。
可是不采纳矩阵精灵做矩阵,从我的角度来看,还没有方法完整手工做矩阵。
4.文字档报表
4.1什么是文字档报表
就是直接将报表的内容写进服务器的文件夹下面的以文件形式存在的报表。
4.2怎样做
大家知道,做报表本来就比较难做,要直接写进服务器端就更难了。
有时是既要显示的报表,
又要写文字档。
这里我主要介绍做文字档报表的主要方法步骤。
.专业.专注.
4.2.1 SQL语句的写法跟一般时候不大相同,要将你所有要显示的栏位,经过“||”,
rpad,lpad 等连结成一个长的字符串,这样的感觉就仿佛是一个栏位,特色是特别
长,自然,这个连结过程,就是报表排版的过程。
4.2.2 而后丰富你的SQL查问,加上跳页规则,排序规则所需要的栏位,自然,这些栏位此后其实不显示。
4.开一个适合的暂时表,经过一个procedure将你的查问存入你的暂时表中。
这样,
你的这个暂时表就相当于一个报表的数据根源了。
方法一,自然,要在beforereport 运转这个procedure,先将这个报表数据啊,运转入这个暂时表中。
而后,在资料模型中,布局模型中正常设置,数据根源为暂时表。
在展现结束
后,after report 调用文字档办理程序(下面讲)。
方法二,写concurrent 来将数据办理入暂时表,而后调用纯真只展现数据的报表,而后持续写文字档。
文字档怎样写?其实就是将暂时表,经过一个cursor,按次序一行一行的写进文件中。
换行加上换行符chr(10), 跳页加上跳页符chr(13)。
举个例子:
定义:V_HANDLE UTL_FILE.FILE_TYPE;
V_BUFFER VARCHAR2(32767);
V_RETURN_STATUS BOOLEAN:=TRUE;
先翻开文件,下面的函数。
V_HANDLE:=UTL_FILE.FOPEN(PI_LOCATION--ftp文件目錄
,PI_FILE_NAME--文件名字
,PI_OPEN_MODE—翻开方式,W,新写入,把从前覆盖,A,接着写,
,32767);
V_BUFFER:=CONVERT(PI_BUFFER—你传入的内容是什么?写入的内容
'ZHT16BIG5','UTF8');--翻开的语言设置,这里是繁体中文。
翻开以后就是写入的动作了UTL_FILE.PUT_LINE(V_HANDLE,V_BUFFER);
.专业.专注.
写入完别忘了封闭文件。
UTL_FILE.FCLOSE(V_HANDLE);
自然,你能够写成函数来调用。
有一个问题注意一下,矩阵报表尽量不要去设计来写文字档,因为没有方法在完整在sql中拼接矩阵报表,所以只好采纳模拟矩阵的方法。
模拟矩阵是就是假定矩阵横向栏位不
会超出100(比方是100),那么在SQL中强行给它排上100个栏位来办理。
这类方法,不过一个近似,不是真切的矩阵,假如横向真超出100,那么这个报表结果就是错误的。
当前还没有更好的方法来解决矩阵文字档的问题。
做需乞降设计的要理解这一点,不然报表难产。
写文字档是TXT挡,有时需要写成EXCEL档,自然,这是没有方法的直接写EXCEL的,
在TXT报表中,格式不变的状况下,在每个列的间隔加上“;”作为区隔。
而后用EXCEL方
式翻开TXT文档,区隔符号用“;”,就是EXCEL报表啦。
EXCEL默认是“,”不是“;”,需
要设置一下EXCEL。
.专业.专注.
第四部份:Report 的安装上线方法
简单实例一:
步骤以下,复杂报表,步骤相同。
信封套印報表(FHOMR014)
程式安裝:
將FUHSING標-準客製報表解壓縮到 c:\erp\work( 簡稱$WRK)
FTPprogramstoServer
到$ONT_TOP/reports/US/目錄下
UseSQL*PlustoCreate/CompileDatabaseObjects (假設文件寄存於C盤)
Loginas: APPS/APPS@”yourdbconnectstring”
能否有使用自己写的Table,View等的代码
Packagescript
(假設文件寄存於C盤)
Loginas: APPS/APPS@”yourdbconnectstring”
能否有Procedure、Function等程式代码
Databaseparametersetup
ERP設定:(連線ERP,進入systemadministrator)
DefineExecutable:Concurrent->Program->Executable
.专业.专注.
Defineprogram:Concurrent->Program->Define Program:
.专业.专注.
DefineRequestGroup:Security->Responsibility->Request
Program:
.专业.专注.
小技巧:
1.在DefineExecutable 的时候,一般的report 程式ExecutableMethod 请使用oracle reports,在file name那边使用报表文件的名称,注意不要后缀名“.rdf”
假如是procedure请使用pl/sqlstoredprocedure,filename 请使用“包
名.procedure 名”
2.valuesets怎样设置?一般来说,常用的valuesets,分为两种,一种是鉴于table 的数据根源,一种不鉴于table 的。
对于鉴于table 的数据根源,如图设置:
.专业.专注.
图上名字自己定,只需不矛盾就行,自然要切合企业规范。
validation type选择table, 选择了table 才能使用按钮editinformation, 点击进入
.专业.专注.
图上,tablename处,能够是table,view 或许查问段,可是,建议使用view来写,因
为这里一旦设置好后,不可以改正。
假如要改正,只好将这个valueset删除了,从头设置一
个新的。
TABLE能够写伪列名,这样的话,value处就要在栏位前加上伪列名前缀。
一般来说,栏位设置value和meaning两个就能够,这样在选择画面中能看到两个栏位,value是传入的值,meaning是解说或许描绘,方便使用者的选用。
可是本例中将id栏位也写上了,这时显示的仍是value和meaning两个,可是传入值变了,不再是value,而是ID。
ID和VALUE能够相同,能够不相同。
对于WHERE/ORDER框BY里,这里必定记着写上WHERE/ORDER的BY要点字。
假如要关系已经定义的栏位子集,使用语法为wherefield_name=$FLEX$.value_set_name;注意,被关系的栏位的SEG一定比使用这个的VALUESET的栏位的SEG小,也就是说,被关系的栏位一定在前方先选择。
对于不鉴于TABLE的valuesets ,设置以下:
validationtype 选择independent
.专业.专注.
Find
Value是传入值,description 是解说,或许说明。
.专业.专注.
以上两种算是最广泛的,自然,还有时间型的,设置会计科目等比较不常有的,最快学
习的方法,就是找标准报表类是的画面,看看ORACLE是怎样设置的,这样最快了。
3,Defineprogramm的地方如图
这个画面中,program就是程式名,shortname是独一的程式代码
Executable的地方,就是你要调用的你已经注册过的report 的注册名称,这里,相同也
是这是concurrentprogram 的地方,那么这里就填procedure的注册名。
Colums,rows请写清楚你的报表的长宽,请与你报表中设置的相同。
Style对于一般报表,使用landwide,比方80*66最惯例的报表,可是如本图所示,是一个1000*66的超宽报表,设置landwide就不可以了,设置BACS模式,Colums,rows放空,对于超大报表采纳这个。
Printer ,假如直接在打印机打,设置这个,一般放空。
.专业.专注.
左下enabletrace 是调试用的tracelog ,对于那种超大的报表,跑的特别慢的,用来
调整performance仍是很实用的。
如图,display,能否显示
Required是不是必选参数
Token对应于报表中设置的参数,要传入报表的,请把名字与报表参数对应。
Prompt,这个是显示名字,按客户要求来喽。
Valueset 就是你这个栏位采纳的Valueset 的名字。
Defaulttype 有四种,如图profile ,就是抓取系统设置的profile ,如org_id,orgnazation_id,set_of_book_id 等。
Constant就是固定值,预设值,将valueset 中的某一个值先预设。
SQLStatement就是预设一段sql程式,在右侧写你要抓获得值。
Displaysize 就是显示宽度。
.专业.专注.
4,设置seg的时候,注意数字间隔放宽一些,万一加参数的话,比较方便一些。
注不测观,宽度设置合理一些。
.专业.专注.。