Author: 管世勇( Gavin.Guan )
MSN: gavin08_guan@hotmail.com
Create Date : September 15, 2007
Last Updated: September 15, 2007
Document Ref:
Verson: V1.0文档控制
更改记录
日期作者版本说明
2007-09-15 管世勇V1.0 创建者(初稿)
审阅
姓名(签字) 职位/日期
发布
拷贝号姓名地点和位置
1
2
3
4
5
6目录
文档控制 (ii)
更改记录 (ii)
审阅 (ii)
发布 (ii)
1.Oracle XML Publisher 概述 (1)
1.1 数据源到报表输出 (1)
1.2 开发流程 (1)
2.Oracle XML Publisher 设计实列 (2)
2.1 创建RDF数据源 (2)
2.2 创建RTF报表输出模板 (5)
3.Oracle XML Publisher 技术分解 (10)
4.未解决的技术 (13)1.Oracle XML Publisher 概述
Oracle XML Publisher 是随Oracle EBS一起发布的一套基于模版的打印解决方案,它提
供了一种设计报表和打印报表的新方式,很好的将桌面文字处理工具和EBS数据报表输
出集成在一起。
XML Publisher 将数据表现和数据结构完全分开,通过在EBS中取得数据,在模版文件
中定义报表的输出格式。
在运行的时候,XML Publisher合并数据和模版文件来输出各种样式和格式的报表1.1 数据源到报表输出
1.2 开发流程
2.Oracle XML Publisher 设计实列
开发环境
工具:Oracle Report Builder 10g 、Ms Word 2003
应用环境:Oracle EBS R12
2.1 创建RDF数据源
2.1.1 创建RDF数据源
在Report Builder 中数据模型中写上想要数据的语句,并设计好格式(包传递参数),但不要布局。如:
设计完成后,上传到应用服务器相应的目录(与普通的Report Builer方法一样,包下面的也是)
2.1.2 报表SQL:
SELECT T.NAME DELIVER_NUMBER ,C.CUSTOMER_NAME ,H.ORDER_NUMBER
,MSI.SEGMENT1
,WDD.ITEM_DESCRIPTION ,WDD.REQUESTED_QUANTITY
,WDD.REQUESTED_QUANTITY_UOM
,TO_CHAR(T.INITIAL_PICKUP_DATE,'RRRR/MM/DD') INITIAL_PICKUP_DATE ,T.ADDITIONAL_SHIPMENT_INFO ,L.ATTRIBUTE1 MEMO
FROM WSH.WSH_NEW_DELIVERIES T ,WSH.WSH_DELIVERY_ASSIGNMENTS D ,WSH.WSH_DELIVERY_DETAILS WDD ,APPS.ARFV_CUSTOMERS C ,INV.MTL_SYSTEM_ITEMS_B MSI ,ONT.OE_ORDER_HEADERS_ALL H ,ONT.OE_ORDER_LINES_ALL L WHERE T.STATUS_CODE = 'OP'
AND T.DELIVERY_ID = D.DELIVERY_ID
AND D.DELIVERY_DETAIL_ID = WDD.DELIVERY_DETAIL_ID AND WDD.CUSTOMER_ID = C.CUSTOMER_ID
AND T.ORGANIZATION_ID = MSI.ORGANIZATION_ID
AND WDD.INVENTORY_ITEM_ID = MSI.INVENTORY_ITEM_ID AND WDD.SOURCE_HEADER_ID = H.HEADER_ID AND H.HEADER_ID = L.HEADER_ID AND H.ORG_ID = L.ORG_ID
AND WDD.SOURCE_LINE_ID = L.LINE_ID
AND T.ORGANIZATION_ID = :P_MFG_ORG_ID --参数 &P_WHERE --参数
ORDER BY MSI.SEGMENT1 ASC
2.1.3 定义并发执行
和report 报表定义一样
2.1.4 定义并发程序
特别注意:
输出的格式选择:XML 参数和report一样
2.2 创建RTF报表输出模板
2.2.1 创建RTF报表输出模板(MS Word)
1. 对主组的里面的数据进行定义
说明:
◆ 加入“文字型窗体域”(视图->工具栏->窗体)
◆双击“文字型窗体域”->“添加帮助文字”里面输入:
其中:
1.”for-each”是对组G_DELIVER_NUMBER(与report Builder名字相同)循环
2.加上“@section“ 是对组G_DELIVER_NUMBER进行分页
◆ 以 对进行结束
◆ 加入要显示的栏位
2.把要输入的内容加入,对主组的完整如:
3.定义从组的输出,同样也要对输入的范围进行循环定义
注意
1)此处可不用内容分页,即没有@section;
2)结束标志一样也是结束.
4.把所有的要输入的内容全加设计好,如下图所示:
5.保存此文档为.rtf格式
2.2.2 添加XML Publisher职责
2.2.3 定义XML Publisher数据源
名称:数据定义的名称,建议输入一个友好的名称;
代码:如果使用 Oracle Application 并发管理器来产生XML数据,那这个代码必须并发程序的简称相同;
应用:从LOV选择报表对应的应用;
起始日期:数据定义的有效起始日期;
终止日期:数据定义一经保存就不能够删除,只能通过此字段来失效数据定义
说明: 对此定义加以备注注:
1.数据定义创建之后,除了 Application 和 Code 之外的字段都可以修改
2.建议代码和名称定义成一样,尽量不要用中文字
2.2.4 定义XML Publisher数据模板(上传.rft模板)
名称:模板的名称,建议输入一个友好的名称
代码:模板代码,建议使用产品模块的简称 + 简短的描述 (此处一定要与并发程序里面
的简称一样,也是通过此项来关联的);
应用产品:从LOV选择报表对应的应用;
数据定义:选择已经定义的报表数据定义,它必须是已经存在的数据定义;
类型:模版文件的类型,目前支持:eText, PDF, RTF, XSLFO,XSL-HTML, XSL-TEXT, and
XSL-XML (此处是选择 RTF,与刚出制作的文件格式相对应)
起始日期:模板的有效起始日期;
终目日期:模板一经保存就不能够删除,只能通过此字段来失效数据定义;
子模板:如果模板是一个子模板,选择 “Yes”。子模板是被其它模板引用的,它自己不
能运行;
文件:使用 Browse 按钮来上传模板文件(上传制作的模板);
语言:模板的语言(选择中文);
地区:语言的区域;
可转换:如果需要转换模板,选中。只有RTF模板能够转换;
注:数据定义创建之后,除了 Application 、 Code 和 Type 之外的字段都可以修改
3.Oracle XML Publisher 技术分解
3.1 窗体域方法
3.2 组
3.3 定义页眉和页脚
使用Word内置的功能来定义页眉页脚功能
1. 如果模板中要求多个页眉页脚,使用下面的标记来标示出报表的主体部分
……
2. 嵌套模板
◆ 定义子模板
子模板标记之间可以使用任何的标记和内容,和模板的主体部分没有任何区别
……
◆ 调用子模板
3.3 图片
1.直接插入图片
可以直接在模板中插入 jpg、gif 或 png 格式图片
2. URL链接图片
在模板中随意插入一张图片
在设置图片对话框中的网站标签页中,在可选文字中输入如下的URL格式链接
url:{’http://image location’}
url:{’http://www.oracle.com/images/ora_log.gif’}
3. OA Media 库图片
在模板中随意插入一张图片
在设置图片对话框中的网站标签页中,在可选文字中输入如下的URL格式链接
url:{’${OA_MEDIA}/image name’}
url:{’${OA_MEDIA}/ORACLE_LOGO.gif’}
3.3 格式化功能
1. 分页符
在分组结束标记之前添加 Ctrl+Enter,使用这个功能会使报表打印的最后有一
空白页,为了避免打印空白页,需要使用XML Publisher的分页别名
2. 页码
使用Word的插入页码功能来给模板添加页码
3. 对齐
使用Word中的对齐功能来对齐文本、图像、对象和表格
4.日期
使用Word的插入日期功能来定义模板的日期,这个日期对应的是报表的发布
日期而不是请求允许的日期。
Oracle的 format-date功能
5. 分栏
XML Publisher 支持Word中的分栏功能,使报表输出能够以多栏的方式打印。
如下是地址簿的多栏打印效果:
6. 条件格式化
在不同的条件下显示不同的颜色、不同的列数、不同的标题、不同的布局风格等等,这些都属于条件格式化,需要借助IF命令。
◆ 比如不同币种凭证打印格式不同
任何布局
任何布局
◆比如货币为CNY时才显示列,在目标列的单元格内写如下语句
字段值和格式
注:这还不是真正的动态列。
◆ 比如偶数行底色为灰色,在行的任何单元格内写如下语句
◆ 比如超过100单元格呈红色,在目标单元格内写如下语句
100?>
3.4 强制分页
为了在特定的元素之后进行分页,只要在元素之前插入如下的命令标记:
这个方法避免了使用Word内置的分页功能导致报表最后会有空白页的情况
3.5 页码初始值
有些报表要求报表的页码被设置为一个特定的值,可以使用如下的标记来设置初始化页码:
4.未解决的技术
如何实现报表?下载本文