如何循环和更新hana中的本地表?

2020-09-22 11:54发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家,

最近,我遇到一个问题,即在使用SQL脚本的计算视图中无法调用非读取过程,要求如下:

源表数据,例如:

帐户63010000/金额200

我们需要将帐户63010000进行alpha转换为0063010000,我已经完成了alpha过程,我想使用游标循环每一行,然后调用过程并更新本地表以进行alpha转换,但是问题是我 无法在SQL脚本中执行任何插入/更新操作,是否可以满足我的要求? 期待您的任何帮助。

非常感谢!

最诚挚的问候,

Sean cai

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家,

最近,我遇到一个问题,即在使用SQL脚本的计算视图中无法调用非读取过程,要求如下:

源表数据,例如:

帐户63010000/金额200

我们需要将帐户63010000进行alpha转换为0063010000,我已经完成了alpha过程,我想使用游标循环每一行,然后调用过程并更新本地表以进行alpha转换,但是问题是我 无法在SQL脚本中执行任何插入/更新操作,是否可以满足我的要求? 期待您的任何帮助。

非常感谢!

最诚挚的问候,

Sean cai

付费偷看设置
发送
5条回答
四川大学会员
1楼 · 2020-09-22 12:25.采纳回答

为什么要通过显示的错误消息来清楚显示错误消息(您不能在只读过程/函数中调用非只读过程-并且脚本化的计算视图为只读)。

但是问题是为什么您使用您描述的低性能实现? 目前尚不清楚为什么要使用游标,临时表和该逻辑来识别该列是否仅包含数字。

如果您进行搜索,可能会找到关于该主题的出色博客,以识别一列是否只有数字值。 请在此处查看精彩的博客。

有了这些信息,您只需进行选择即可进行转换。 下面是一个虚拟的例子(column =包含您要对其应用转换的值的列):

选择地图(locate_regexpr(START'^ [0-9] * $'FLAG'i'IN列)
                   ,0,栏
                   ,lpad(column,60,'0'))
 从...
 

逻辑是什么:使用LOCATE_REGEXPR函数检查列值是否仅包含数字。 如果不是,则该函数返回0。MAP函数对此进行检查。 如果返回0(不仅是数字),则列值将保持不变。 如果<> 0,则使用LPAD函数添加前导零。

关于,
弗洛里安

风早神人
2楼-- · 2020-09-22 12:33

嗨肖恩,

您能否提供更多详细信息,并在逻辑上加以说明,以便我们更好地理解您的工作意图?

谢谢

Poonam

大简至美
3楼-- · 2020-09-22 12:50

为什么要在脚本化的calc视图中包装存储的过程,为什么不使用包装器作为过程。

我们不能不使用循环吗?可以使用内部逻辑的一个表函数轻松地完成此操作,并为帐户编号填充零,然后在外部计算视图中调用此表函数。 这样,您无需在calc视图中调用存储过程。

好,不要使用脚本化的calc视图,请使用表函数,因为脚本化的calc视图已被描述

compass1988
4楼-- · 2020-09-22 12:38

你好Poonam,

很抱歉造成误解,详细逻辑是:

我们要在SQL脚本计算视图中进行alpha转换:

1.In 过程" ZUSER"。" test"包含alpha转换逻辑,例如帐户63010000 ->帐户0000000066010000,可以检查附件。

2.In SQL脚本计算视图将调用此非只读过程,从而引发错误 ,您可以检查附件。

据我了解,SQL脚本计算视图无法调用非只读过程,我的问题是是否可以进行满足我要求的工作? 谢谢您的帮助。

huskylover
5楼-- · 2020-09-22 12:48

非常感谢Florian Pfeffer ! 我关闭了。

一周热门 更多>