`
tianjun309
  • 浏览: 367102 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

(zt)Deal with invalid characters from BW ETL

    博客分类:
  • SAP
阅读更多

症状

典型的非法字符错误的出错信息是:

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 001F

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进制值的情况。

 

http://www.cnblogs.com/YellowD/archive/2011/05/23/2054751.html

 

 

分享到:
评论

相关推荐

    format ' x' invalid or incompatible with argument 解决办法

    ### "format ' x' invalid or incompatible with argument" 解决办法 在进行电子设计自动化(EDA)软件Protel 99 SE的操作过程中,用户可能会遇到一个常见的错误提示:“format ' x' invalid or incompatible with ...

    DWR 中的错误:Invalid reply from server和No data receive

    NULL 博文链接:https://ruyuntao.iteye.com/blog/267105

    format ' x' invalid or incompatible with argument

    ### 错误解析与解决方案:Format ' x' Invalid or Incompatible with Argument 在使用Protel 99进行PCB设计时,可能会遇到“format ' x' invalid or incompatible with argument”这样的错误提示。这一错误通常出现...

    解决:protel 99se :format %x invalid or incompatible with argument问

    标题中的问题“protel 99se :format %x invalid or incompatible with argument”是一个常见的错误提示,通常在尝试运行或安装Protel 99SE软件时出现。这个错误表明程序在处理某种格式化字符串(%x)时遇到了不兼容...

    invalid conversion from type1 to type2 (解决方案).md

    invalid conversion from type1 to type2 (解决方案).md

    protel.99 format '%x' invalid or incompatible with argument打软体报错补丁.rar

    标题中的“protel.99 format '%x' invalid or incompatible with argument打软体报错补丁.rar”指的是Protel 99软件在运行时遇到了一个格式错误,具体表现为使用`%x`格式化字符串与传入的参数不兼容。这通常出现在C/...

    打开vs提示invalid handle

    在IT领域,遇到“打开vs提示invalid handle”的问题并不罕见,这通常意味着Visual Studio(简称VS)在尝试访问某些资源或执行特定操作时遇到了错误。此类问题可能源于多种因素,包括但不限于权限问题、系统资源冲突...

    唯一解决 Protel 99 SE 'Format '%x' invalid or incompatible 的方法

    要解决"Format '%x' invalid or incompatible with argument"的问题,你可以尝试以下步骤: 1. **更新兼容性设置**:右键点击Protel 99 SE的可执行文件,选择“属性”,然后转到“兼容性”选项卡。尝试勾选“以兼容...

    发送邮件发送,先提一下SMTP

    - `From`:发送者的邮件地址。 - `To`:接收者的邮件地址。 - `Subject`:邮件的主题。 - `Priority`:邮件的优先级(有效值包括 High、Low 和 Normal)。 - `Attachments`:返回一个集合,表示邮件的附件。 -...

    解决Invalid byte 1 of 1-byte UTF-8 sequence

    标题 "解决Invalid byte 1 of 1-byte UTF-8 sequence" 涉及的问题是关于字符编码不匹配引发的错误,通常在处理包含非ASCII字符的文本文件时出现。UTF-8是一种广泛使用的字符编码标准,能表示世界上大部分语言的字符...

    解决 Protel 99 SE 'Format '%x' invalid or...

    然而,在使用过程中,用户可能会遇到一些问题,比如“Format '%x' invalid or”这样的错误提示,这通常是由于软件内部格式处理的问题或者与自定义库的兼容性引起的。为了解决这个困扰用户的难题,我们可以深入探讨这...

    程序运行时,提示“Invalid parameter”错误

    Delphi 10.3 ,程序运行到DataModule2.ClientDataSet1.ApplyUpdates(0);语句时,提示“Invalid parameter”错误

    invalid multibyte character sequence 870告警1

    Invalid Multibyte Character Sequence 警告解析 在编程中,特别是在嵌入式系统开发中,我们经常会遇到Invalid Multibyte Character Sequence 警告。这个警告通常来自于编译器,告知我们存在非法的多字节字符序列。...

    InvalidSignature-The signature is invalid(解决方案).md

    InvalidSignature-The signature is invalid(解决方案).md

    oracle error invalid rowid

    在Oracle数据库系统中,"invalid rowid"错误通常表示尝试访问的数据行的引用已经失效或者不存在。RowID是Oracle数据库中用于唯一标识表中每一行的一个物理地址,它由数据库内部生成并存储在数据块中。当遇到"invalid...

    Invalid ROM Table

    - "Invalid ROM Table":这个提示是与ROM相关的错误信息,可能是因为ROM中的表格信息不正确或损坏导致的。ROM(Read-Only Memory)是一种只能读取不能写入的存储器,通常用于存储程序、数据等,其特点是断电后信息不...

    cvc-complex-type.2.4.d: Invalid content was found

    在XML Schema设计中,"cvc-complex-type.2.4.d: Invalid content was found" 是一个常见的错误信息,这通常意味着在解析XML文档时,遇到了不符合定义的复杂类型的内容。这个错误通常涉及到XML Schema的约束规则,即...

    Invalid HTTP version(解决方案).md

    Invalid HTTP version(解决方案).md

    invalid syntax是语法错误.docx

    "Invalid Syntax"错误是编程语言中常见的一个错误类型,它表示你的代码中存在不符合该语言语法规则的部分。在Python这种解释型语言中,当解释器遇到无法理解的代码结构时,就会抛出"Invalid Syntax"错误。这个错误...

Global site tag (gtag.js) - Google Analytics