BOM创建修改(CS01,CS02)保存时增强BADI[BOM_UPDATE]

1, BADI ‘BOM_UPDATE’介绍

SE18,查看BADi BOM_UPDATE,Chage_AT_SAVE就是BOM创建和修改保存时触发的方法,也就是CS01,CS02保存时触发

输入参数:

2, 实例业务场景

公司实际业务过程中,设计变更比较频繁,导致BOM的组件也要经常修改更新,在用CS02进行更新时,组件太多无法人工检查是否重复很费时费力。因此,考虑在更新BOM(增加组件情况)时做个检查,看新维护进去的组件是否已存在。

对应代码:

测试:

CS02维护BOM组件时,保存后触发方法CHANGE_AT_SAVE,如果检查有重复,抛出错误消息。

3, 其他

可以看到方法CHANGE_AT_SAVE只有输入参数,没有输出参数,所以在这个方法中不能直接修改BOM中的相关信息。但是可以通过修改内存来变通的修改,

比如下面代码:修改BOM的展开类型(Explosion type):

    DATA: STPOB TYPE STPOB.
    DATA: FIELD_NAME(30) VALUE '(SAPLCSBT)O1-STPOB[]'.
    FIELD-SYMBOLS: <TABLE> TYPE TABLE.

    ASSIGN (FIELD_NAME) TO <TABLE>.

    LOOP AT <TABLE> INTO STPOB.
      STPOB-DSPST = <span class="L1S33">'Z2'</span>.  "Explosion type
      <span class="L1S52">MODIFY</span> <TABLE> <span class="L1S52">FROM</span> STPOB.
    ENDLOOP.

跨程序修改全局变量详细参照--通过Field-symbols跨程序抽取或修改全局变量值

以上。

posted @ 2019-08-30 16:03  真的是很难  阅读(1130)  评论(0编辑  收藏  举报