使用cl_rspls_enq =>入队创建的锁在RSPLSE中或通过cl_rspls_enq => read_locks不可见

2020-09-06 17:20发布

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

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


我们使用虚拟提供程序通过标准界面计划方案

IF_RSDRV_RPROV_WRITABLE和IF_RSDRV_RPROV_LOCK_NOSID。

为了便于锁定,我将以下代码添加到了IF_RSDRV_RPROV_LOCK_NOSID〜ENQUEUE方法中。

这可以创建一个在SM12中可见的锁定句柄,并且可以正确地锁定数据。 随后尝试锁定数据会导致在RSPLSE中可见锁定冲突,但是在RSPLSE中或使用

看不到锁定本身

cl_rspls_enq => read_locks方法。

我是否需要编写代码以将锁写到可以读取并通过RSPLSE中的锁选择显示的表中而缺少的步骤或方法?

IF_RSDRV_RPROV_LOCK_NOSID〜ENQUEUE

数据:l_s_rng_类型rspls_s_rng,
l_sx_sel_类型rspls_s_sel,
l_tsx_sel_类型rspls_ts_sel,
l_s_range_类型rsdri_s_range。


类型符号: br>
在i_t_range处循环进入l_s_range_。
清除:l_sx_sel_。

l_s_rng_-sign = l_s_range_-sign。
l_s_rng_-opt = l_s_range_-compop。
l_s_rng_-low = l_s_range_-low。
l_s_rng_-high = l_s_range_-high。

读取表l_tsx_sel_将分配给表键chanm = l_s_range_chanm。
如果sy-subrc eq等于0.

else。
l_sx_sel_chanm = l_s_range_chanm。
将l_s_rng_附加到l_sx_sel_t_rng。
将l_sx_sel_if插入到表l_tsx_中。 br>
endloop。

cl_rspls_enq =>入队(正在导出i_infoprov = i_infoprov
i_area = i_area
i_enqmode = i_enqmode
i_tsx_sel = l_tsx_sel_
i_s_lock_info = i_slock_info = i_scope
导入e_lock_hndl = e_lock_hndl
例外foreign_lock = 1
enqueue_server_busy = 2
失败= 3
其他= 4)。

如果sy-subrc =1。
提高外来锁定。
endif。

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

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


我们使用虚拟提供程序通过标准界面计划方案

IF_RSDRV_RPROV_WRITABLE和IF_RSDRV_RPROV_LOCK_NOSID。

为了便于锁定,我将以下代码添加到了IF_RSDRV_RPROV_LOCK_NOSID〜ENQUEUE方法中。

这可以创建一个在SM12中可见的锁定句柄,并且可以正确地锁定数据。 随后尝试锁定数据会导致在RSPLSE中可见锁定冲突,但是在RSPLSE中或使用

看不到锁定本身

cl_rspls_enq => read_locks方法。

我是否需要编写代码以将锁写到可以读取并通过RSPLSE中的锁选择显示的表中而缺少的步骤或方法?

IF_RSDRV_RPROV_LOCK_NOSID〜ENQUEUE

数据:l_s_rng_类型rspls_s_rng,
l_sx_sel_类型rspls_s_sel,
l_tsx_sel_类型rspls_ts_sel,
l_s_range_类型rsdri_s_range。


类型符号: br>
在i_t_range处循环进入l_s_range_。
清除:l_sx_sel_。

l_s_rng_-sign = l_s_range_-sign。
l_s_rng_-opt = l_s_range_-compop。
l_s_rng_-low = l_s_range_-low。
l_s_rng_-high = l_s_range_-high。

读取表l_tsx_sel_将分配给表键chanm = l_s_range_chanm。
如果sy-subrc eq等于0.

else。
l_sx_sel_chanm = l_s_range_chanm。
将l_s_rng_附加到l_sx_sel_t_rng。
将l_sx_sel_if插入到表l_tsx_中。 br>
endloop。

cl_rspls_enq =>入队(正在导出i_infoprov = i_infoprov
i_area = i_area
i_enqmode = i_enqmode
i_tsx_sel = l_tsx_sel_
i_s_lock_info = i_slock_info = i_scope
导入e_lock_hndl = e_lock_hndl
例外foreign_lock = 1
enqueue_server_busy = 2
失败= 3
其他= 4)。

如果sy-subrc =1。
提高外来锁定。
endif。

付费偷看设置
发送
1条回答
当学会了学习
1楼-- · 2020-09-06 17:25

嗨,尼尔,

我在cl_rspls_enq中看到的唯一原因是表RSDCUBE中虚拟提供程序的对应记录没有标志INPUTABLE =X。但是在这种情况下,虚拟提供程序不会 支持计划。

调试READ_LOCKS方法很容易,您可以找出为什么在BW Enqueue Server中找不到锁的原因(我从未见过示例)。

格雷戈尔

一周热门 更多>