点击此处---> 群内免费提供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为空值,并且无法测试逻辑。
我们如何解决这个问题?
亲爱的
为UDO启用日志,并检查系统为已删除的UDO保存了哪些值,然后根据这些值部署日志表的事务通知,因此无论何时有人尝试删除它,都会去更新日志表和事务 通知将停止它。
亲爱的
日志表必须存储一些已删除数据的值,请通过比较两个已删除记录和一个现有记录来比较所有字段
嗨,Aakash,
用" Docentry"更改"代码":
从[dbo]中选择@transcode = U_TransCode。[@ UDT_TRANSP] WHERE Docentry = @list_of_cols_val_tab_del
谢谢
阿齐兹
你好
对不起,逻辑还不错。 正如我在问题中指出的,SP是在数据库中模仿更改后执行的。 因此,如果我们删除记录,则表@UDT_TRANSP中将没有记录。 这意味着@transcode为空值,无法测试逻辑。
一周热门 更多>