(zt)Deal with invalid characters from BW ETL

2024-04-03 19:08
文章标签 invalid etl characters zt bw deal

本文主要是介绍(zt)Deal with invalid characters from BW ETL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

症状

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

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

 

 

这篇关于(zt)Deal with invalid characters from BW ETL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/873737

相关文章

如何解决matplotlib运行出现的Invalid DISPLAY variable

最近在服务器上运行matplotlib相关的脚本时遇到了"Invalid DISPLAY variable"报错,从报错中就可以知道这是因为没有显示设备导致的报错。 解决方案: 方案一: ~/.config/matplotlib/matplotlibr,在里面添加backend : Agg 这个方案不一定有用,如果失效考虑下面两种 方案二: 更换后端 可以先设置后端,然后导入pyp

加载org.Hs.eg.db为什么出现error: $ operator is invalid for atomic vectors报错和解决方法

在Bioconductor上已经有人提了问题,并且有了回答(地址:https://support.bioconductor.org/p/9136329/) 简单的说,就是Rstduio出来背锅,最新的RSQLite(v2.2.6)和Rstudio存在冲突,以后要么是RSQLite迁就RStduio,要么就是Rstudio迁就RQLite。 不过目前也不是不能用,以下是解决方法 方法1 手动设

json--eval--VM1423:3 Uncaught SyntaxError: Invalid or unexpected token

VM1423:3 Uncaught SyntaxError: Invalid or unexpected token     感觉几天没写了。今天遇到个问题,Java后台返回json格式的数据,但是在用eval转换的时候 报错 js报错,Uncaught SyntaxError: Unexpected token }不知道哪里错,求解答! function processRespo

ETL自学之路-01(初识ETL)

ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。

3. Longest Substring Without Repeating Characters 无重复字符的最长子串

https://leetcode.com/problems/longest-substring-without-repeating-characters/description/ 题目大意:给一个字符串,要求出最长的不含重复字符子串(要求连续,不是子序列). 解题思路:不重复,利用哈希表.hash是以字符的ASC为下标的数组,对应存储该字符最后出现的位置. 设一个标记start,然后一次遍历

MyBatisplus使用报错--Invalid bound statement

报错如下 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.lotus.mybatis.mapper.UserMapper.selectListat org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperM

RuntimeError: invalid argument 4: out of range at pytorch/torch/lib/TH/generic/THTensor.c:439

使用from torchvision.utils import save_image保存图像时,出现错误: File “/usr/local/lib/python2.7/dist-packages/torchvision/utils.py”, line 51, in save_image grid = make_grid(tensor, nrow=nrow, padding=padding)

什么是ETL?

一、ETL背景 在数字化时代,企业的数据孤岛问题日益凸显。不同部门之间的信息壁垒导致了数据流通的障碍,严重影响了数据挖掘和报表开发的效率。为了解决这一问题,数据仓库技术应运而生。ETL作为数据仓库的基石,负责将分散在各部门的数据进行抽取、加工和集成,为后续的决策支持系统(DSS)和商务智能(BI)等深度开发奠定基础。 二、ETL概念 ETL,即数据抽取(Extract)、清洗转换(Trans

ORA-12705: Cannot access NLS data files or invalid environment specified 错误

因为版本原因,PB9 启动要配合oracle9i的客户端。由于已经装了11g客户端,所以我把它卸载后装了一个9i免安装客户端。接下去问题就来了,足足搞了我一个小时才完成,下面我把我遇到的问题黏贴出来,希望可以帮到走足够弯路的大伙们。    安装好9i后,打算启动plsql去连接:ORA-12705:Cannot access NLS data files or invalid enviro