S4 HANA 维护内部供应商数据,调用 CVI_EI_INBOUND_MAIN
返回成功无异常,但是执行COMMIT WORK 的时候报错:ASSERTION_FAILED
The ASSERT condition was violated.
代码报错位置点:
method raise_commit_end.
field-symbols:
<controller> like line of assigned_controllers.
assert current_level = level_commit_start or current_level = level_commit_end.
check current_level = level_commit_start.
current_level = level_commit_end.
raise event commit_end.
loop at assigned_controllers assigning <controller>.
<controller>-controller->raise_commit_end( ).
endloop.
current_level = level_action.
endmethod.
图内assert 那里 current_level = "ACTION",level_commit_start = "'CSTART'",
level_commit_end = "'CEND'",导致验证失败程序崩溃。
经过代码调试,发现是中间调用 raise_cleanup()把current_level还原了
继续调试后发现问题了,是这个内部BP,他在KNA1和LFA1的地址ADRNR用了同一个编号导致的!
强行改表后,问题解决了