SAP ABAP批次增强
需要先等业务顾问配置之后,才生效。这里是按照移动类型类配置是否生成批次,这里以T156-CHNEU区分是否需要批次。
注意:如果使用T156-CHNEU来判断移动类型是否需要批次,需要业务顾问在IMG->后勤->批次管理->新批次的建立->定义物料移动的批次建立,对相应的移动类型进行设置,然后T156-CHNEU才会发生相应的变化
设定界面如下:
一、MIGO过账BADI中,IF_EX_MB_MIGO_BADI~LINE_MODIFY

DATA:nextnum TYPE i, lv_numadd TYPE numc4. DATA: lv_xcharg TYPE mcha-charg. DATA i_item LIKE TABLE OF cs_goitem. DATA w_item LIKE cs_goitem. **自动填批次 * BREAK it0003. * CASE cs_goitem-bwart. * WHEN '101' OR '202' OR '501' OR '511' OR '561' OR '301'. SELECT SINGLE chneu INTO @DATA(lv_chneu) FROM t156 WHERE bwart EQ @cs_goitem-bwart. CASE lv_chneu. WHEN 'A' OR 'B' OR 'C' OR 'D' OR 'E' OR 'F'. IF cs_goitem-charg EQ space ."AND cs_goitem-mblnr NE ''. IMPORT t1 TO i_item FROM MEMORY ID 'ITM'. SELECT SINGLE xchpf INTO @DATA(lv_xchpf) FROM mara WHERE matnr EQ @cs_goitem-matnr. IF sy-subrc EQ 0. IF lv_xchpf EQ 'X'. SELECT charg INTO @lv_xcharg UP TO 1 ROWS FROM mch1 WHERE ersda EQ @sy-datum AND matnr EQ @cs_goitem-matnr * AND werks EQ @x_bncom-werks ORDER BY charg DESCENDING. ENDSELECT. IF lv_xcharg NE ''. lv_numadd = lv_xcharg+6(4) + 1. ELSE. lv_numadd = 1. ENDIF. cs_goitem-charg = |{ sy-datum+2(6) }{ lv_numadd ALPHA = IN }|. ENDIF. ENDIF. READ TABLE i_item INTO DATA(ls_item2) WITH KEY zeile = cs_goitem-zeile" matnr = cs_goitem-matnr. IF sy-subrc NE 0. SORT i_item BY matnr charg DESCENDING. LOOP AT i_item INTO w_item WHERE matnr = cs_goitem-matnr AND charg NE space. IF lv_xcharg LT w_item-charg. cs_goitem-charg = w_item-charg + 1. ENDIF. EXIT. ENDLOOP. APPEND cs_goitem TO i_item. EXPORT t1 FROM i_item TO MEMORY ID 'ITM'. ENDIF. * CLEAR cs_goitem-charg. ENDIF. WHEN OTHERS. ENDCASE. * WHEN OTHERS. * ENDCASE. * ENDIF.
二、原本按照配置是在出口 SE38-> ZXVBZU02 中,但不知为什么,始终不进入该出口位置。
下面四个出口是原本按照配置该进入的。
ZXVBZU01
ZXVBZU02
ZXVBZU03
ZXVBZU04
回到出口调用处SE37->VB_NEXT_BATCH_NUMBER

* 内部批次号增强 TYH * break it0003. DATA: i_item LIKE TABLE OF GOITEM, LS_ITEM LIKE GOITEM. DATA:nextnum TYPE i, lv_numadd TYPE numc4. DATA: lv_xcharg TYPE mcha-charg. * CASE x_bncom-bwart. * WHEN '101' OR '202' OR '501' OR '511' OR '561' OR '301'. SELECT SINGLE chneu INTO @DATA(lv_chneu) FROM t156 WHERE bwart EQ @x_bncom-bwart. CASE lv_chneu. WHEN 'A' OR 'B' OR 'C' OR 'D' OR 'E' OR 'F'. IF new_charg+0(6) ne sy-datum+2(6). IMPORT t1 TO i_item FROM MEMORY ID 'ITM'. SELECT charg INTO @lv_xcharg UP TO 1 ROWS FROM mch1 WHERE ersda EQ @sy-datum AND matnr EQ @x_bncom-matnr * AND werks EQ @x_bncom-werks ORDER BY charg DESCENDING. ENDSELECT. IF lv_xcharg NE ''. lv_numadd = lv_xcharg+6(4) + 1. ELSE. lv_numadd = 1. ENDIF. new_charg = |{ sy-datum+2(6) }{ lv_numadd ALPHA = IN }|. allow_existing_batch = 0. SORT i_item BY matnr zeile charg DESCENDING. LOOP AT i_item INTO LS_ITEM WHERE matnr = x_bncom-matnr AND charg NE space. * IF new_charg LT LS_ITEM-charg. * new_charg = LS_ITEM-charg + 1. * ENDIF. new_charg = LS_ITEM-charg. delete i_item[]. EXIT. ENDLOOP. MOVE-CORRESPONDING X_BNCOM TO LS_ITEM. LS_ITEM-CHARG = new_charg. APPEND x_bncom TO i_item. EXPORT t1 FROM i_item TO MEMORY ID 'ITM'. ENDIF. WHEN OTHERS. ENDCASE. * WHEN OTHERS. * ENDCASE.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)