|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
Teamcenter二次开发实例教程-报表开发教程
5 ?: d. C" v& \8 B
! q0 N6 r" j$ l5 B- A+ y9 M$ q 在大多数情况下,我们为客户做实施时,采用的是重新开发报表的功能。以满足客户多种多样的报表模板。然而Teamcenter8,9对报表开发有不错的支持。我们可以通过简单的配置开发出功能强大的报表。本文就Teamcenter OOTB报表技术展开讨论,希望能在众多报表开发方法中再增加一种可能性。. F0 M" M3 T9 |; N$ b
下面我对两类报表开发方式优缺点做了个简单对比
: l$ I/ Y" X. D& ]7 C
% b. J& N ?0 M6 B传统报表开发手段4 i2 s% y7 H; c
OOTB报表
+ a0 A( a _) E. v$ R: t比分. d7 s4 j+ z( g' H' m: k
1
7 X$ ^" U+ b+ }( }- ]' ?; E自定义模板,灵活多变
5 O2 ]; a K! h s0 F$ L, U1 o格式不能完全满足客户需求* i5 W8 \' f3 t, G0 @
或非常难满足客户需求# m" c7 K- I+ q9 m# S
1:0/ E5 u6 C/ h5 l! y* ^
2
5 H0 a3 w+ M8 N: i; u, [5 M8 o大量开发和代码维护
' X3 ]0 O- ]- u' `+ S* e或用POI,Excel报表8 Q2 p# ]) A0 F, E U- o
开发量小,仅需简单配置8 [7 d8 ~9 @% |2 [2 d4 Z/ U
1:1
( o- @! c$ v2 H3
; }( `, f i" b' D, V+ D遇到大数据量报表生成不了
( F8 `) @" I z# f4 J Y速度很慢' e6 F9 F6 D9 N( Q( Y; y7 V2 r' B
处理大数据量有优势
5 R# G; p* |: P8 {! c, v速度非常快
9 y5 l: T/ Z8 y2 B- W1:2. K7 h/ ~+ O. w
4
( Y& |7 z4 ]% F. U7 V开发周期长,BUG多 k" O3 S7 h5 n* [! W
开发迅速容易
8 X5 q: Z y7 @4 N# e) Q1:3
5 T" q) P @) Q) g- y9 v
7 L! T+ l; x3 M% h7 f一、报表生成7 v; X" h0 f7 p6 R" g. H( M* \# \
首先来开OOTB的零部件BOM( a" X4 w# r q: d; F# [8 O& c2 B
+ J2 y' }5 a3 m3 {) O: C
右键点击顶层部件,生成报告。$ T+ ~ t# u7 R; b
% J t3 X' {' H& |
出现报告生成向导界面,选择PS – BOM结构,下一步
9 L! V( L2 V9 T/ {. |+ e T, u
5 b* b- W8 i1 l7 {9 ]7 oOOTB为我们提供了两种方式的报表:
) }$ Q6 M/ `# I) q HTML
% L9 H% |% O/ H; u4 y w% s9 s% n* H XSL
! I8 C' v( ~6 W( @- G2 u5 ~6 v6 W每种报表都有对多国语言支持版本,所以下面对话框中有4个选项。我们选第一个。! I% ] c u* p4 m
8 y& a: \7 F' I8 L, ], r& O
生成报表如下:, @5 v1 q+ W4 w2 ], A
- S- h( V1 F, V4 ^& ]: B2 B
" K2 h: a3 E+ O9 T- @
二、报表配置
* F& F g" j: u% P报表配置涉及两个Teamcenter应用程序:
3 q; N1 R% Q6 y6 s7 Q+ y0 _- u 报表构建器
3 M# W! j; j+ b, q PLMXML
3 b( \: e2 R" d' R; Q5 t报表构建器主要定义报表所应用的资源、模板文件和PLMXML导出规则3 X& U$ U" @4 C# \
4 m! M% L& n6 s3 K/ Q# pPLMXML主要负责以PLMXML格式导出BOM数据9 P* x. U8 w9 J m9 `. ~" l) r
; @5 g0 }7 z3 ]* L; R& x+ Y8 s6 T
4 c; i: E4 g9 b+ j& `' T1 u$ B ?三、应用举例
) ?2 I1 ?2 Y6 t: @. q: K( ~ 下面对于一个具有广泛统计意义的功能用OOTB报表方式来实现。需求是:统计零件在整个BOM中的使用次数。
) I# m" U; S" u7 {8 v" P' H 对于这个需求我们只需要增加一段带计算功能的代码就能实现。先通过系统的搜索功能找到html报表模板文件。/ e$ o5 b1 w3 X0 L, u9 c+ \
0 M. F- i E: s; ^
选中找到的数据,右击,命名引用。
/ P" T6 |7 J# E- K% ^; h* ^# O" m3 J8 k
点击导出,把模板保存到本地。1 M! L- _) Y t: b5 l; q3 ?
% g h. h, R% h4 z9 I3 U8 K7 o& j
下面对Javascript有一定要求。
* K- H& J! `; w! J首先对表格增加一列来容纳计算的总数量:" k) q& X1 b1 {0 Q. R% T9 t
: L3 _0 j, l) S% y! P G8 d在xsl中找到上面两处代码增加、修改红框部分。
+ h9 f$ W6 k3 Y0 Q; {+ M3 c+ _. o定义如下函数,并且在onload事件中调用
+ M& X& P" N0 ^7 b7 t; w/ B" f$ Bfunction showPart(){
/ {4 e% t4 b* n* e//获取html的表格对象8 H2 [( v# F! z( @2 R3 |
var tb = document.getElementById("table");
( P, s4 u! q7 m; d" l: v//获取表格行对象$ K5 N7 l3 a" H& q ?1 d( [
var rows = tb.rows;" Z7 S* ?/ `0 }7 E2 a
//循环遍历table所有行! Q7 ?# S) M4 X: }' N5 z
for(var i = 3; rows.length>i; i++){; Y ~4 U, I3 a: K4 \% z
//获取每一行的零件号1 x# Z, e+ i3 o/ O- G( K& X
var itemName = rows[i].cells[1].childNodes[0].innerHTML;
D5 k& t7 O2 e//初始化零件总个数" {: A& V+ n4 N4 K% J* ?' Q
var quantity = 0;, J; P6 [8 a: v7 e, M7 L9 G+ @
//循环进行比较
4 E9 s# P/ v, N% ifor(var n = 3; rows.length>n; n++){
. p1 A2 E# J3 |' j//获取每一行的零件号" {, g% H C+ }* u6 U1 a
var itemStr = rows[n].cells[1].childNodes[0].innerHTML;9 B- `; q$ l3 d8 M0 j/ {+ o3 e
//获取零件数量7 h* Z7 C- M+ ]% {+ e5 {; u
var qt = rows[n].cells[4].childNodes[0].innerHTML;' f+ y6 R& y1 b3 V" Y6 O0 r
//判断是否是相同的零件
; }3 N2 p( C1 j; a rif(itemStr == itemName){# |5 ]# j, ]7 i) Q+ W
//若零件号相同,把数量进行累加
- i$ I$ L9 q1 Y' d. e w1 yquantity = parseInt(quantity) + parseInt(qt);
1 j a8 |: l. Z- Y; f8 j. f}1 [! c3 a3 k. o
}
" f" c, ?; e: d4 E1 P& f; b- h//在统计列显示总数量
8 ^/ k1 i! M% S; |* wrows[i].cells[5].childNodes[0].innerHTML = quantity;
1 B7 ?" v- x/ C% e+ M' d}( C% Q+ _% \* O2 K4 q
}. U( s) h6 Z4 j4 J& w& M
修改好后,保存回源数据集。注意先删除原来的再导入新的。
& U" o6 ]8 Q. Q, x0 q/ d+ g; d1 A$ Z9 a# Q3 E( f p3 V
0 K5 D- p" ^" r( N重新生成报表测试下:
/ T$ E" d1 _: T$ u( V |
|