ABAP BOM保存增强-BOM_UPDATE
ABAP BOM保存增强-BOM_UPDATE
- 问题需求
- 解决方案
问题需求
创建/修改BOM时,无价值物料错误维护了成本标识,其他料号错误维护了客供料标识
解决方案
T-code:SE19
方法:CHANGE_AT_SAVE
代码如下:
SELECTmara~matnrASidnrk,"物料编号 mara~mtart "物料类型FROMmaraINNERJOIN@delta_stpobASdelta_stpobONmara~matnr=delta_stpob~idnrk##ITAB_KEY_IN_SELECTWHEREdelta_stpob~postp='L'ANDdelta_stpob~vbkzIN('I','U')INTOTABLE@DATA(lt_marap).SORTlt_marapBYidnrk.DELETEADJACENTDUPLICATESFROMlt_marapCOMPARINGidnrk.DATA:lv_stringTYPEstringVALUE'(SAPLCSBT)O1-STPOB[]',lv_whereTYPEstring.FIELD-SYMBOLS:<fs_t_stpob>TYPEany,<fs_stpob>TYPEstpob.ASSIGN(lv_string)TO<fs_t_stpob>.IF<fs_t_stpob>ISNOTASSIGNED.RETURN.ENDIF.lv_where=|(vbkz='I'ORvbkz='U')|.LOOPAT<fs_t_stpob>ASSIGNING<fs_stpob>WHERE(lv_where).READTABLElt_marapINTODATA(ls_marap)WITHKEYidnrk=<fs_stpob>-idnrkBINARYSEARCH.IFsy-subrcEQ0.CASEls_marap-mtart."物料类型 WHEN 'W005'. <fs_stpob>-beikz = 'K'. "客供料标识<fs_stpob>-sanka=''."成本核算标识 WHEN OTHERS. <fs_stpob>-beikz = ''. "客供料标识<fs_stpob>-sanka='X'."成本核算标识ENDCASE.ENDIF.ENDLOOP.