点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
有一个问题,我需要解决此问题的帮助。
场景:
有一列长度为varchar(8000)的源列。 现在目标在一列中最多接受132个字符。 因此,如果输入列中的字符串大于132个字符,则必须按132个字符段的SEQUENCE分解字符串,并将其装入输出列(大小为varchar(132))。
例如:
如果输入在源列中为600个字符长。 然后,必须将该输入顺序分为5个输出列(132 + 132 + 132 + 132 + 72)。 前四列应分别包含132个字符,第五列应包含剩余的72个字符。
请大家尽快帮助我。 请帮助我为此构建自定义功能。
谢谢。
Samarth
您无法在自定义函数中解决此问题,因为DS函数仅返回单个值。
您可以通过在User_Defined转换中编写Python代码来解决此问题。
或者 在查询转换中分别映射所有输出列:
无需任何iftheneles。 如果起始位置高于source_column长度,则结果为null。 如果段的长度小于132,则仅复制现有内容。
请参见我对"智能文本拆分器"字段上的所有想法的回答,以寻求另一种方法。 p>
8000个字符太长,如果您尝试将每个字符分解为132个字符,则会有大约60列用于存储数据。
如果您可以容纳60列,则可以检查每列的长度,并使用子字符串函数填充。
第1列-ifthenelse(length(source_column)> 132,SUBSTR(source_column,1,132),SUBSTR(source_column,1,length(source_column)))
第2列-ifthenelse(length(source_column)> 132 * 2,SUBSTR(source_column,132 + 1,132 * 2),SUBSTR(source_column,132 + 1,length(source_column)))
第3列-ifthenelse(length(source_column)> 132 * 3,SUBSTR(source_column,132 * 2 + 1,132 * 3),SUBSTR(source_column,(132 * 2)+1,length(source_column))) >
....依此类推。
或者,您可能想看看执行任务的数据透视转换。
上面Dirk给出的建议非常完美。
您好,萨克森纳(Saxena),
我也有相同的要求。 您能告诉我您是如何在BODS中实现此功能的吗?
此致
KT
我编写了一个函数来实现它。 抱歉,此后我再也没有收到有关该线程的通知,并且现在已经登录。
一周热门 更多>