PDM集成时目前偶尔出现插入重复项目(项目号+物料号)。
在调用BOM函数前已经检查是否有重复项目,可是仍然有重复数据插入。而且BOM日志显示是同一时间插入的。同时程序已经检查,同一ECO不允许做两次。
目前解决办法:BOM BADI增强。
BADI:BOM_UPDATE
同时在JAVA程序中异常部分加入失败代码,因为调用RFC后会异常(LEAVE TO CURRENT TRANSACTION AND SKIP FIRST SCREEN. 导致)。
得不到正确的返回值,只有自己在异常部分人为认定为“重复项目错误”。
METHOD if_ex_bom_update~change_before_update.
DATA: li_stpob TYPE TABLE OF cs01_stpob .
DATA:wa_delta_stasb TYPE cs01_stasb.
DATA: li_stpob TYPE TABLE OF cs01_stpob .
DATA:wa_delta_stasb TYPE cs01_stasb.
li_stpob[] = delta_stpob[].
LOOP AT delta_stasb INTO wa_delta_stasb WHERE lkenz EQ 'X'.
DELETE li_stpob WHERE stlkn = wa_delta_stasb-stlkn.
ENDLOOP.
LOOP AT delta_stasb INTO wa_delta_stasb WHERE lkenz EQ 'X'.
DELETE li_stpob WHERE stlkn = wa_delta_stasb-stlkn.
ENDLOOP.
DATA: li1 TYPE i , li2 TYPE i.
li1 = LINES( li_stpob[] ).
SORT li_stpob BY posnr idnrk.
DELETE ADJACENT DUPLICATES FROM li_stpob COMPARING posnr idnrk.
li2 = LINES( li_stpob[] ).
IF li1 NE li2.
MESSAGE '存在项目号和物料号重复,不允许保存BOM!' TYPE 'I'.
LEAVE TO CURRENT TRANSACTION AND SKIP FIRST SCREEN.
ENDIF.
LEAVE TO CURRENT TRANSACTION AND SKIP FIRST SCREEN.
ENDIF.
ENDMETHOD.