如何防止通过SBO_SP_TransactionNotification删除UDO记录?

2020-09-04 23:57发布

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

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


我们有一个UDO OBJ_TRANSP。 关联的表是:@UDT_TRANSP。 该表中包含UDF:U_TransCode。

现在,我们正在尝试防止基于某种逻辑的记录被删除。 我尝试过如下编写查询:

如果@object_type ='OBJ_TRANSP'和@transaction_type ='D'

开始

声明@transcode varchar(20)

选择@transcode =来自[dbo]的U_TransCode。[@ UDT_TRANSP]其中的代码= @list_of_cols_val_tab_del

如果@transcode IN(<要测试的逻辑>)

开始

设置@error = -1

set @error_message ='无法删除记录,因为它存在于另一个表中'

结束

结束

但这不起作用。 据我了解,SP是在数据库中模仿更改后执行的。 因此,如果我们删除记录,则表@UDT_TRANSP中将没有记录。 这意味着@transcode为空值,并且无法测试逻辑。

我们如何解决这个问题?

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

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


我们有一个UDO OBJ_TRANSP。 关联的表是:@UDT_TRANSP。 该表中包含UDF:U_TransCode。

现在,我们正在尝试防止基于某种逻辑的记录被删除。 我尝试过如下编写查询:

如果@object_type ='OBJ_TRANSP'和@transaction_type ='D'

开始

声明@transcode varchar(20)

选择@transcode =来自[dbo]的U_TransCode。[@ UDT_TRANSP]其中的代码= @list_of_cols_val_tab_del

如果@transcode IN(<要测试的逻辑>)

开始

设置@error = -1

set @error_message ='无法删除记录,因为它存在于另一个表中'

结束

结束

但这不起作用。 据我了解,SP是在数据库中模仿更改后执行的。 因此,如果我们删除记录,则表@UDT_TRANSP中将没有记录。 这意味着@transcode为空值,并且无法测试逻辑。

我们如何解决这个问题?

付费偷看设置
发送
4条回答
昵称总是被占用
1楼-- · 2020-09-05 00:36

亲爱的

为UDO启用日志,并检查系统为已删除的UDO保存了哪些值,然后根据这些值部署日志表的事务通知,因此无论何时有人尝试删除它,都会去更新日志表和事务 通知将停止它。

何必丶何苦呢
2楼-- · 2020-09-05 00:12

亲爱的

日志表必须存储一些已删除数据的值,请通过比较两个已删除记录和一个现有记录来比较所有字段

小熊yu生菜
3楼-- · 2020-09-05 00:28

嗨,Aakash,

用" Docentry"更改"代码":

从[dbo]中选择@transcode = U_TransCode。[@ UDT_TRANSP] WHERE Docentry = @list_of_cols_val_tab_del

谢谢

阿齐兹

哎,真难
4楼-- · 2020-09-05 00:27

你好

对不起,逻辑还不错。 正如我在问题中指出的,SP是在数据库中模仿更改后执行的。 因此,如果我们删除记录,则表@UDT_TRANSP中将没有记录。 这意味着@transcode为空值,无法测试逻辑。

一周热门 更多>