您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > EBS中报表使用总结
OracleEBS中报表使用总结作者:曾燕创建日期:2008年12月21日最近修改日期:文档编号:版本:1.0审批人:审批人1审批人2拷贝数_____hand仅限于内部使用(v.1.0)ii文档控制更改记录日期作者版本说明2008-12-21RosaZeng1.0Creation浏览者姓名职位分发拷贝数姓名职位hand仅限于内部使用(v.1.0)iii目录综述...........................................................................................................................................4系统标准报表...........................................................................................................................4OracleFSG报表......................................................................................................................5定义行集......................................................................................................................5定义列集......................................................................................................................7定义报表....................................................................................................................11二次开发报表.........................................................................................................................12报表数据源................................................................................................................12报表模板....................................................................................................................19小结............................................................................................................................31结束语.....................................................................................................................................32hand仅限于内部使用(v.1.0)4综述EBS中运用到的报表,通常有三类:一是系统标准的报表,二是FSG生成报表,即根据客户需求在系统中定义的报表,三是二次开发的报表。下面就结合我在项目中遇到的情况,谈谈这三种报表。系统标准报表顾名思义,不需要我们干涉的,使用的时候直接提交请求就可以,如下面这个总账模块的科目表–明细列表。运行效果:hand仅限于内部使用(v.1.0)5OracleFSG报表在系统标准报表的基础上,我们可以根据客户化需求,利用报表生成器生成报表,在项目中使用了总帐模块的FSG,此类报表有三个步骤,即定义行集,列集,最后定义报表,关联之前定义的行集和列集。现在以松下GPSC项目一个客户化的多步式损益表为例进行说明。定义行集(N)总账超级用户报表定义行集,如下图,选择定义行hand仅限于内部使用(v.1.0)6勾上显示行与显示零,那么当这行的数值为零的时候也会显示。对该行需要显示数据的操作主要有两种:账户分配与计算。点击账户分配。账户分配是把指定账户(通常由客户指定)的金额以明细或汇总的方式显示出来,取决于显示的选项,E为展开,则明细显示账户金额,T为合计,则只显示账户汇总的金额,B为E,T二者兼有。另外,标志一栏,正号表示包含,负号表示排除。在此,销售收入是收入类账户,属于贷方,其在账户中记录的金额为负数,所以活动一栏需选择贷项,这样得到的才是正数。反之,借方账户就选择借项或者净。如下图:hand仅限于内部使用(v.1.0)7除了账户分配之外,更简洁的行定义就是计算,如毛利(GrossProfit)为销售收入减去销售成本,即之前定义的10-20。以此类推,定义完损益表要求的行,包括运费,管理费用各项,其他费用,非主营收入,税前利润,税以及税后利润等等。定义列集(N)总账超级用户报表定义列集,如下图,选择定义列hand仅限于内部使用(v.1.0)8根据实际需要定义显示的位置,之后在建立列集的时候可以调整。根据实际需要选择金额类型,比如PTD-实际为期初至今实际余额,YTD-年初至今差异百分比等。另外,和定义行集一样,可以对列进行账户分配和计算。但是,注意行与列账户的匹配。如果要突出显示报表中需要立即引起注意的信息,我们可以定义“列例外”。例如,我们可以定义一个例外,“标记”报表中实际支出超过预算RMB1,000或更多的行。在请求报表时,我们也可以选择只显示“例外”行(勾选“例外”复选框即可):定义“例外”条件;符合例外条件的行将会在行的开头以我们输入的“标志”显示出来。输出报表如下图所示:hand仅限于内部使用(v.1.0)9在列定义中,我们同样可以进列计算(如果勾上改写行计算,那么如果列与行用到相同的数据进行计算时,以列计算为准),系统提供了一些标准的运算,下图为实际的该行金额与销售收入进行百分比运算。还可以进行其他一些简单计算,在列表中可以选择。最后,我们回到列集定义form界面,点击建立列集。hand仅限于内部使用(v.1.0)10根据界面中的标尺调整显示的位置,显示的名称,格式等。疑惑:当在列定义中分配特定账户的时候,如销售收入,照理说应该和定义常数一样,应该每一行都显示相同的数据,为什么显示出来的跟费用有关的行对应的账户金额为0呢?定义此行:报表结果,收入类账户正常,其中为零的行为费用类账户。hand仅限于内部使用(v.1.0)11经功能顾问讨论,认为这是由于行与列的账户没有交集造成的,在后来的使用中发现,其实在列计算中使用百分比运算可以达到相同的效果,只是不知道分配账户是否也能实现,还需进一步验证。定义报表(N)总账超级用户报表定义报表,如下图把刚才定义的行集GPSCFMPLDetailedReport_ROW和列集GPSCFMPLDetailedReport_COL关联起来。最后点击运行报表,如下图。hand仅限于内部使用(v.1.0)12二次开发报表由于系统报表生成器功能的局限,因而项目中很多客户化的报表需要借助二次开发的手段完成。报表结构分为两部分,即数据源和模板。报表数据源一、不需要生成XML的数据源。通常适用于html格式报表,直接在PL/SQLProcedure中写SQL就OK了。hand仅限于内部使用(v.1.0)13二、输出XML格式的数据源。我所做过的报表中,基本用两类方法输出XML数据,一是通过ReportBuilder,二是在PL/SQLProcedure中调用标准包生成XML数据。1.ReportBuilder在项目中学习到的其中一点,就是在数据模型中,写多个查询。hand仅限于内部使用(v.1.0)14如上图所示,这是一个AR发票报表,三个查询分别对应发票头,行,付款条件折扣行,因为发票头与行,付款条件折扣行均为一对多的关系,为了防止发票行以及付款条件折扣行造成发票头的冗余,因此创建三个查询,通过一定的条件关联起来。点击工具栏中的数据链接,从Q_HEADERS块中的header_id指向Q_LINES将自动创建关系,如上图,同理创建Q_HEADERS与Q_TERMS之间的数据链接(payment_term_id与term_id)。如果数据库编码与XML输出编码方式不一致,为了避免输出中文报错,需要在在报表属性面板中指定XMLProlog的encoding(指定为数据库的字符集)。hand仅限于内部使用(v.1.0)15使用公式:当一些计算在SQL中很难实现的时候,可以借助公式列,如在付款折扣中计算预付款折后金额。点击工具栏中的公式列,点击G_TERMS分组的空白位置。光标移到CF_1上,按下F11,进入公式编辑的程序单元和form一样,程序中对项的引用直接使用“:+项名”,把计算的结果返回。打开并修改公式列的属性面板:数据模型处理完成之后,可以在本地生成XML文件进行测试,连接数据库,在报表触发器的BEFOREREPORT和AFTERREPORT中初始化环境。注意:上传至EBS生成XML和在本地生成XML初始化方法不一样。上传EBS服务器:hand仅限于内部使用(v.1.0)16本地初始化,和PL/SQLDeveloper一样:点击文件生成到文件XML,输入设置的用户参数就可以了。2.PL/SQLProcedure在PL/SQLProcedure中,通过调用标准包输出XML,下面以佳通美国分公司项目中一个PO订单明细报表为例。首先从数据库获得数据,把SQL写在字符串中,使用常量需要用两个单引号,如:hand仅限于内部使用(v.1.0)17在Procedure中不能像ReportBuilder一样自动分组,为了避免订单行字段对头字段造成冗余,需把订单行字段SQL写在CURSOR中,把这个CURSOR作为整个查询的一个字段,可以把它当作一个复合的子查询,如下图。调用package生成XML文件:下图为生成XML文件的Procedure:hand仅限于内部使用(v.1.0)18dbms_xmlquery.newcontext(p_stmt)的作用是对参数(字符串中的SQL)进行查询,dbms_xmlquery.setrowsettag(ctx,p_rs_tag)为设置分组的外部XML标记,dbms_xmlquery.setrowtag(ctx,p_r_tag)为设置分组的XML标记。执行输出XML的操作:若需要对字符串中的SQL语句进行检测,可以在输出XML之前执行下面的语句(注释掉输出XML的语句):在该Procedure上点击右键进入test窗口,执行完毕后在DBMSOutput中可以看到正常的SQL语句:hand仅限于内部使用(v.1.0)19PS:svf报表中输出XML比较特殊一点,将在下一节介绍svf的时候详解。报表模板在项目中总共接触过三中模板:html、rtf以及svf。一、html模板首先在package声明中定义一系列的html代码,主要是样式的定义,如下图:hand仅限于内部使用(v.1.0)20然后把查询出来的数据循环替换到报表主体中的表格B_1—X_2再输出就可以了,注意需要显示的字段个数与报表主体中表格定义的列数相等,如下图:二、svf模板开发(松下客户化报表开发使用)svf模板相对而言,也比较简单,但是功能
本文标题:EBS中报表使用总结
链接地址:https://www.777doc.com/doc-5196186 .html