Oracle EBS 报表输出字符字段前部"0"被Excel自动去掉问题

Oracle EBS 报表输出字符字段前部"0"被Excel自动去掉问题,第1张

概述Oracle EBS 提供多种报表的开发和输出形式,由于MS Excel在处理数据方面的优势明显,报表输出用Excel打开是很常见的开发项。但是正是由于Excel的“过于智能而不智能”,导致有时输出字段会被Excel自动处理,导致数据错误。例如: 系统内部字段,物料编码/订单标号 等等字段在数据库…

Oracle  EBS 提供多种报表的开发和输出形式,由于MS Excel在处理数据方面的优势明显,报表输出用Excel打开是很常见的开发项。

但是正是由于Excel的“过于智能而不智能”,导致有时输出字段会被Excel自动处理,导致数据错误。

例如: 系统内部字段,物料编码/订单标号 等等字段在数据库内存储的格式为 varchar,在某些业务或者需求下,编码方式为全数字的形式,如"100230001","100230002",... 这样的字段在系统中没问题,报表输出到Excel也无问题;而有情况可能是,编号为 "000031001","000031002","000031003",.... 这样的情况,系统中是存储了9位数的字符,而报表输出到Excel之后,Excel就会认为他是一个数字,而非字符串,从而出现字符串前的"0"被截取,变成 "31001","31002","31003",.... 这样的错误不易被发觉,但是是一个很不友好的错误。

解决办法:

1. 并发程序输出 HTML 报表

这种类型的报表输出的是HTML标签(或者XML标签),这种报表被截位的修复方法是在输出的时候,把这个字段放在 =" "  内,例如,PLsql代码片段为:

fnd_@R_502_6852@.put_line(fnd_@R_502_6852@.output,'<div>000031001</div>');

变成:

fnd_@R_502_6852@.put_line(fnd_@R_502_6852@.output,'<div>="000031001"</div>');

或者

fnd_@R_502_6852@.put_line(fnd_@R_502_6852@.output,'<div>''000031001</div>');

解释:

前一种方法,在Excel中,= 代表公式,而用双引号括起来之后就是字符串的意思,就是说设置当前单元格为等于当前的值转换为字符串的意思,类似于 oracle的 to_char() ;后一种方法,Excel中,在单元格值最前面加一个单引号表示这个单元格为“坏公式”,就是不自动计算的意思,Excel单元格要显示公式,也是这种方法。

 

         

2. XML Publisher 报表

 XML publisher 报表除了用上面的两种方法以外,还可以设置XML Publisher属性来解决这个问题,直接看属性截图:

 

属性设置为 “强制LTR” ,强制为数据格式,在Excel中就不会转化为数字了,对应的 XML publisher 脚本代码为:

<fo:bIDi-overrIDe direction="ltr" unicode-bIDi="bIDi-overrIDe"><?ASSEMBLY?></fo:bIDi-overrIDe>

总结

以上是内存溢出为你收集整理的Oracle EBS 报表输出字符字段前部"0"被Excel自动去掉问题全部内容,希望文章能够帮你解决Oracle EBS 报表输出字符字段前部"0"被Excel自动去掉问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1154510.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存