前次开发了一个程序,用来进行进程链的定时触发处理,发现总是在加载0co_om_cca_4后进行传输进程时出错。开始以为是偶尔出现的BW正常错误,现在在发现不是这样的,每次都保错,而手动触发却不会出现错误,很是奇怪。
今日向开发经理提出了此问题,想看看是什么原因,经过一番查找,发现了错误所在:
Exception condition "NO_LOCK_FOUND" raised.
源码摘录
38 if not i_lockid is initial.
39 perform lockobjects_get using i_lockid
40 i_no_shared_buffe
41 changing l_action
42 l_t_object
43 l_t_subobject
44 l_lockid_tmp
45 l_error.
46 l_lockid = i_lockid.
47 elseif i_action is initial or i_t_object[] is initia
48 perform x_message using 'LOCKOBJECTS_GET'.
49 else.
50 clear l_lockid_tmp.
51 l_action = i_action.
52 l_t_object = i_t_object.
53 l_t_subobject = i_t_subobject.
54 perform lockobjects_get using l_lockid_tmp
55 i_no_shared_buffe
56 changing l_action
57 l_t_object
58 l_t_subobject
59 l_lockid
60 l_error.
61 endif.
62
63 if l_error = 'X'.
>>>>> raise no_lock_found.
65 endif.
大致上的意思是在进程中的一个“锁”应该有但是却消失了!!!
只好提交错误到SAP,看看他们的帮助。
经过SAP工程师的艰苦奋战,周五终于解决了这个问题:note_0001341004。嘿嘿,终于帮SAP发现了一个bug,很是开心。