bw在dso抽取数据时防止出现16进制数错误

上传人:xiao****1972 文档编号:84136208 上传时间:2019-03-02 格式:DOC 页数:5 大小:51KB
返回 下载 相关 举报
bw在dso抽取数据时防止出现16进制数错误_第1页
第1页 / 共5页
bw在dso抽取数据时防止出现16进制数错误_第2页
第2页 / 共5页
bw在dso抽取数据时防止出现16进制数错误_第3页
第3页 / 共5页
bw在dso抽取数据时防止出现16进制数错误_第4页
第4页 / 共5页
bw在dso抽取数据时防止出现16进制数错误_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《bw在dso抽取数据时防止出现16进制数错误》由会员分享,可在线阅读,更多相关《bw在dso抽取数据时防止出现16进制数错误(5页珍藏版)》请在金锄头文库上搜索。

1、关于BW上传数据包含无效字符的解决问题出现项目上遇到这样一个问题,从外部的oracle数据库取数到BW,在激活DSO时报错。 查看具体信息,显示:特性 Z4FBBZ1 的值 -重卷换508内径,按1015吨分卷,取样.查表面质量: (十六进制 0A2D2D3ED6D8BEEDBBBB353038C4DABEB6A3ACB0B431307E31) 包含无效的字符消息号 BRAIN059 尝试过将信息对象设置为小写字符,重新激活dso,更新规则等各种方法,都没有作用。在查看PSA时也并无发现有特殊字符,经过仔细检查,终于在DSO的新数据表里发现问题。原来字符串中包含有空格,抽取到BW系统时,转换成

2、了“#”。 查询SDN得知,类似于“#”等特殊字符在BW里都是不允许的,因此在激活DSO时显示无效字符。(此外,HEX00-HEX1F的字符都是不允许的) Tcode:RSKC。可以维护BW允许的特殊字符。但是对于空格,箭头符号等似乎无作用。最好的解决办法是在更新规则里使用例程,将字符串中的“#”再改回到空格。ABAP例程如下:FIELD-SYMBOLS: TYPE x, TYPE c.DATA:ch1(32) TYPE x VALUE00200120022003200420052006200720082009200A200B200C200D200E200F20,ch2(32) TYPE x

3、VALUE10201120122013201420152016201720182019201A201B201C201D201E201F20. RESULT = COMM_STRUCTURE-/BIC/Z4FBBZ1.”通讯结构字段 * The only # sign is not permittedIF STRLEN( RESULT ) = 1. IF RESULT(1) = #. RESULT(1) = . ENDIF.ENDIF. * Exclamation mark is not permitted as a first symbol of the field* contentIF RE

4、SULT(1) = !. RESULT(1) = .ENDIF. * Replace Invalid Characters by SPACEASSIGN ch1 TO CASTING.ASSIGN TO CASTING.TRANSLATE RESULT USING . ASSIGN ch2 TO CASTING.ASSIGN TO CASTING.TRANSLATE RESULT USING . * returncode 0 means skip this record RETURNCODE = 0.另外还有一段例程,这一段是处理回车、TAB等制表符的:RESULT = SOURCE_FIEL

5、DS-ZZENDCUSTOMER.* Filter Horizontalwhile RESULT ca CL_ABAP_CHAR_UTILITIES=HORIZONTAL_TAB.clear result+sy-fdpos(1).endwhile.* Filter VERTICAL_TABwhile RESULT ca CL_ABAP_CHAR_UTILITIES=VERTICAL_TAB.clear result+sy-fdpos(1).endwhile.* Filter NEWLINEwhile RESULT ca CL_ABAP_CHAR_UTILITIES=NEWLINE.clear

6、result+sy-fdpos(1).endwhile.* Filter NEWLINEwhile RESULT ca CL_ABAP_CHAR_UTILITIES=CR_LF.clear result+sy-fdpos(1).endwhile.* Filter NEWLINEwhile RESULT ca CL_ABAP_CHAR_UTILITIES=FORM_FEED.clear result+sy-fdpos(1).endwhile. BW数据抽取过程中,尤其是平面文件上数时,经常会碰到invalid_characteristcs错误。在默认设置下,BW支持的字符包含:1.数字 1234

7、5678902.字母 ABCDEFGHIJKLMNOPQRSTUVWXYZ3.符号 !%&*()+?_:;/,=4.空格除了上述这些符号,其余的字符都会被视为非法字符,包括:1.小写字母(未勾选Lowercase时)2.货币符号3.# 系统无法显示的字符,会以#表示,如0x00-0x1F均是非法字符,由于这些字符大部分是控制符(回车/进位/换行.),在系统中无法显示,系统会用#来表示。4.以!开头的字符串,这是因为SAP用!xxx来标记xxx被删除,或是临时存储。5.全部都是#的字符串,如#,系统使用#标记无法识别的字符。在处理包含上述非法字符的数据时,系统会出现相关的错误信息。上篇提到了BW

8、系统可识别的字符范围,那么具体在哪些时候会发生invalid_characteristics的错误呢?1.激活DSO时,如果勾选了“生成SID”选项,则系统会更新主数据,如果有非法字符,会引发错误2.Cube加载数据时,会更新主数据,此时如果有非法字符,也会引发错误3.文件导入数据时,可能由于分隔符、换行符等问题,或者数据问题,发生非法字符错误以上均是由非法字符引起的常见问题,根据发生问题的原因,有以下解决方法:1.调整系统支持字符范围:通过Tcode:RSKC修改设置ALL_CAPITAL,让系统允许接受各种语言的大写字母及大部分特殊字符,在数据本身无任何问题时,可以使用这种方法来调整。但是这种方法仍然不支持0x00-0x1F、#、!xxx这类符号。2.通过Routine处理:通常用于连接R3系统时,R3端有大量非法字符,可以通过此方法处理3.直接在PSA中修改数据:个别数据出现问题可通过此方法作微调4.用户修改原始数据:通常是在使用平面文件导入数据时使用,由于用户手工导入的数据本身有问题,有系统无法识别的字符串,或者一些无效信息,导致数据无法加载,此时建议直接修改原始数据。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号