如何处理BW抽数中invalid_characteristcs 错误
来源:互联网 发布:plm软件价格 编辑:程序博客网 时间:2024/06/09 19:05
转载: 如何处理BW抽数中invalid_characteristcs 错误?
如何处理BW抽数中
invalid_characteristcs 错误?
非法字符错误,是BW抽数中很常见又很头疼的问题,下午群里刚好有人讨论这个问题,趁热打铁总结一下。
症状
典型的非法字符错误的出错信息是:
BRAIN070, BRAIN060, BRAIN 290
Value ‘…’ (hex. ‘…’) of_characteristic … contains invalid_characters
No SID found for value ‘…’ of_characteristic …
等等。 总之,这类错误的错误消息都比较清楚,很容易判断是因为非法字符引起的。
什么是invalid_characteristics?
默认情况下,BW只允许以下的字符以及空格:
!"%&'()*+,-/:;<=>?_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
除此之外的字符都会被视为非法字符。
以下列举一些比较典型的非法字符:
1. 小写字母:如果IO没有勾选Lowercase,则小写字母都是非法字符
2. 货币符号
3. #: 这个是最特殊的非法字符。首先“#”本身默认是非法字符。同时,十六进制码00-1F对应的字符也是非法字符。这些字符通常是回车,后退,TAB等特殊按键,系统无法根据codepage来找到对应的符号显示,所以都用"#"来表示。因此,当出错信息里告诉你某十六进制值有错误时,你在PSA或原系统可以看到值里面包含 "#",但这不一定是用户输入的时候输入了#,也可能是其他系统无法显示的字符。
4. 以"!"开头的字符串:SAP用!来标记被删除的记录。
5. 只有"#"的字符串:SAP用#来表示not assigned 或空值
错误发生的时机
非法字符会在系统更新Character主数据的时候,进行数据校验时引起错误。这通常发生在两个时机:
1. 激活DSO的时候:如果DSO勾选了Generate SID,则系统会去更新主数据,这时如有非法字符,会引发非法字符错误。
2. 往Cube装数的时候:往Cube装数肯定更新主数据,非法字符同样会引发校验错误。
有时会出现数据加载到DSO正常,加载到CUBE报错。这是因为DSO没有勾选Generate SID.
如何解决?
1.RSKC
通过这个T-CODE,你可以把系统需要接受的字符补充在此。表RSALLOWEDCHAR记录了这个设置。
其中,有一个很特殊的设置: ALL_CAPITAL. 在多语言环境中,这个设置非常有用,它让系统接受所有各种语言的大写字母,同时也包含了大部分的特殊字符。因此,大部分情况下,在RSKC中设置为ALL_CAPITAL就是最佳的做法,但是以下数据仍然是非法的:
- 只有#
- !开头
- HEX 00~1F
2. 通过routine处理非法字符.
具体代码网上很多,我就不写了。关键逻辑是如果原始数据含有非法字符,则对原始数据做进一步处理。 判断是否含有非法字符有两种方式:
- 使用CN(不仅包含...) 操作符。
- 使用Function RSKC_CHAVL_OF_IOBJ_CHECK (SE37搜索RSKC*你会发现几个有用同类function)
请参考网上的代码:
http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/d0afbb81-f219-2c10-4181-b20f6b10e373?QuickLink=index&overridelayout=true
http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/50db4398-2dea-2b10-1fab-e3195bb311dc?QuickLink=index&overridelayout=true
http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/20253%3Futm_source%3Dtwitterfeed%26utm_medium%3Dtwitter%26utm_campaign%3DFeed%253A%2520SAPNetworkWeblogs%2520%2528SAP%2520Network%2520Weblogs%2529
3. 直接在PSA修改数据。
4. 让用户修改原始数据。
具体采用何种方式,要具体情况具体分析。如果是个别的非法字符,建议让用户修改原始数据或直接修改PSA。 如果是R3那端会有大量的非法字符,建议使用routine进行处理。至于RSKC的设置,建议保持ALL_CAPITAL
另外,特别说明一下,非法字符里有"#"时,很多人会想到最省事的方法,把"#" 加入到RSKC中,但如前文所述,出现#不代表非法字符就是#,这种做法只能解决原始数据中的非法字符确实就是#而不是不可显示的16进制值的情况。
- 如何处理BW抽数中invalid_characteristcs 错误
- BW ASSIGN_TYPE_CONFLICT 错误总结
- BW抽取数据错误。
- BW增量处理
- 如何处理“溢出”错误
- 如何错误处理?
- JavaScript如何处理错误
- BW:处理链报错解决步骤
- BW特殊字符的处理
- BW增强数据源的处理
- 删除BW 处理链日志
- BW:处理链报错解决步骤
- BW:处理链报错解决步骤
- BW
- BW
- BW
- BW
- 如何处理错误ORA-29275
- ibm rational change
- 产品经理要有狼性
- 完全数、亲和数
- Java内部类与匿名类
- 痴迷不减 战略游戏红警2发布Android版
- 如何处理BW抽数中invalid_characteristcs 错误
- const
- Java 注释
- Pivot 与 Unpivot 详解 - SQL
- centos安装magento的问题
- 1025
- 仙游一中刘金星老师先进事迹
- 用Cookie实现商品浏览记录(No.39)
- 牛人们的博客