我正在通过JOB更新我所创建的SHARED MEMORY的值,在初始化过程中,我删除了SHARED MEMORY,但似乎没有删除SHARED MEMORY上的内容,因为我仍然能够从SHARED MEMORY中导入数据。我在初始化过程中删除了共享内存,但似乎并没有删除共享内存中的内容,因为在下面循环的第一次迭代中,我仍然能够从共享内存中导入数据。
我已经尝试研究并发现了一些关于共享内存的事实,比如,共享内存可以被多个用户和会话访问。我也怀疑是应用服务器的不同,也想到了后台运行时用户名的改变可能会影响 "删除"--但仍然不能解决我的问题,因为我无法在调试时观察行为。
"Program 1: Run via job
DELETE FROM SHARED MEMORY vari(tl) ID 'MY' && sy-uname.
DO 3 TIMES.
SUBMIT program 2 WITH xxx VIA JOB AND RETURN.
ENDDO.
"Program 2: Run via Job
START-OF-SELECTION.
IF sy-calld EQ 'X'.
IMPORT var TO var FROM SHARED MEMORY vari(tl) ID 'MY' && sy-uname.
ENDIF.
IF var IS INITIAL.
SELECT fld1, fld2, fld3
FROM table
INTO TABLE var
WHERE cond EQ value.
IF sy-called EQ 'X'.
EXPORT var FROM var TO SHARED MEMORY vari(tl) ID 'MY' && sy-uname.
lt_var = var.
ENDIF.
ENDIF.
IF lt_var IS INITIAL.
"Raise error.
ELSE.
"Further processing...
ENDIF.
在上面的 "程序2 "中,由于我在 "程序1 "中初始化了从SHARED MEMORY导入的 "var",我希望它在通过循环的第一次迭代时不会有值。
我希望SHARED MEMORY在第一次迭代后有数据。
在从共享内存中删除的过程中是否有锁定的考虑,或者多个服务器是否会影响删除。请赐教。非常感谢您。