欢迎来到天天文库
浏览记录
ID:33898918
大小:51.00 KB
页数:5页
时间:2019-03-01
《bw在dso抽取数据时防止出现16进制数错误》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、关于BW上传数据包含无效字符的解决问题出现项目上遇到这样一个问题,从外部的oracle数据库取数到BW,在激活DSO时报错。查看具体信息,显示:特性Z4FBBZ1的值'-->重卷换508内径,按10~15吨分卷,取样.查表面质量:'(十六进制'0A2D2D3ED6D8BEEDBBBB353038C4DABEB6A3ACB0B431307E31')包含无效的字符消息号BRAIN059尝试过将信息对象设置为小写字符,重新激活dso,更新规则等各种方法,都没有作用。在查看PSA时也并无发现有特殊字符,经过仔细检查,终于在DSO的新数据表里发现问题。原来字符串中包含有空格,抽取到BW系统时,转换成了
2、“#”。查询SDN得知,类似于“#”等特殊字符在BW里都是不允许的,因此在激活DSO时显示无效字符。(此外,HEX00-HEX1F的字符都是不允许的)Tcode:RSKC。可以维护BW允许的特殊字符。但是对于空格,箭头符号等似乎无作用。最好的解决办法是在更新规则里使用例程,将字符串中的“#”再改回到空格。ABAP例程如下:FIELD-SYMBOLS:TYPEx,TYPEc.DATA:ch1(32)TYPExVALUE'00200120022003200420052006200720082009200A200B200C200D200E200F20',ch2(32)TYPExVA
3、LUE'10201120122013201420152016201720182019201A201B201C201D201E201F20'.RESULT=COMM_STRUCTURE-/BIC/Z4FBBZ1.”通讯结构字段*Theonly#signisnotpermittedIFSTRLEN(RESULT)=1.IFRESULT(1)='#'.RESULT(1)=''.ENDIF.ENDIF.*Exclamationmarkisnotpermittedasafirstsymbolofthefield*contentIFRESULT(1)='!'.RESULT(1)=''.ENDIF.*Re
4、placeInvalidCharactersbySPACEASSIGNch1TOCASTING.ASSIGNTOCASTING.TRANSLATERESULTUSING.ASSIGNch2TOCASTING.ASSIGNTOCASTING.TRANSLATERESULTUSING.*returncode<>0meansskipthisrecordRETURNCODE=0.另外还有一段例程,这一段是处理回车、TAB等制表符的:RESULT=SOURCE_FIELDS-ZZENDCUSTOMER.*FilterHorizontalw
5、hileRESULTcaCL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.clearresult+sy-fdpos(1).endwhile.*FilterVERTICAL_TABwhileRESULTcaCL_ABAP_CHAR_UTILITIES=>VERTICAL_TAB.clearresult+sy-fdpos(1).endwhile.*FilterNEWLINEwhileRESULTcaCL_ABAP_CHAR_UTILITIES=>NEWLINE.clearresult+sy-fdpos(1).endwhile.*FilterNEWLINEwhileRE
6、SULTcaCL_ABAP_CHAR_UTILITIES=>CR_LF.clearresult+sy-fdpos(1).endwhile.*FilterNEWLINEwhileRESULTcaCL_ABAP_CHAR_UTILITIES=>FORM_FEED.clearresult+sy-fdpos(1).endwhile.BW数据抽取过程中,尤其是平面文件上数时,经常会碰到invalid_characteristcs错误。在默认设置下,BW支持的字符包含:1.数字12345678902.字母ABCDEFGHIJKLMNOPQRSTUVWXYZ3.符号!%&*()'"+<->?_:;/,=4
7、.空格除了上述这些符号,其余的字符都会被视为非法字符,包括:1.小写字母(未勾选Lowercase时)2.货币符号3.#系统无法显示的字符,会以#表示,如0x00-0x1F均是非法字符,由于这些字符大部分是控制符(回车/进位/换行...),在系统中无法显示,系统会用#来表示。4.以!开头的字符串,这是因为SAP用!xxx来标记xxx被删除,或是临时存储。5.全部都是#的字符串,如######,系统使用#标记无
此文档下载收益归作者所有