BOM组件物料重复检查

好吧,今天同事让做个BOM组件物料重复检查

网上有很多例子都是在保存的时候检查的,用的是BADI :BOM_UPDATE

自己也试了一下,麻烦。。。。很麻烦。。。尤其是在重复检查的时候:

  METHOD if_ex_bom_update~change_at_save.
    DATA:z_stpob      TYPE LINE OF cs01_stpob_tab,
         z_stpob1     TYPE LINE OF cs01_stpob_tab,
         g_tab_bstpob TYPE TABLE OF stpob,
         g_tab_astpob TYPE TABLE OF stpob,
         z_msg        TYPE string,
         count1       TYPE i,
         count2       TYPE i.
    DATA:lv_time TYPE i.

    count1 = lines( delta_stasb ).
    count2 = lines( delta_stpob ).

*    IF count2 > count1.
    LOOP AT delta_stpob INTO z_stpob.

      APPEND z_stpob TO g_tab_bstpob.
      IF sy-tabix <= count1.
      ELSE.
        APPEND z_stpob TO g_tab_astpob.
      ENDIF.
    ENDLOOP.

    LOOP AT g_tab_astpob INTO z_stpob.
      CLEAR:lv_time.
      LOOP AT g_tab_bstpob INTO z_stpob1 WHERE idnrk = z_stpob-idnrk.
        lv_time = lv_time + 1.
      ENDLOOP.
      IF lv_time > 1.
        CONCATENATE z_msg '项目' z_stpob-posnr '组件重复/' INTO z_msg.
      ENDIF.
    ENDLOOP.


    MESSAGE z_msg TYPE 'E'.
    RETURN.
*    EXIT.
  ENDMETHOD.

后来DEBUG标准程序,找到了个很适合的地方:

函数:CS_BT_STPOB_UPDATE

在程序最开始加段检查逻辑

好了,检查完成。。。每输入一行组件,都会检查。。。完美

原文地址:https://www.cnblogs.com/sapSB/p/5262916.html