WHEN 'F'. \外购件,使用流水码的批次号
SELECT MAX( charg ) INTO batch_number FROM MCH1 WHERE matnr = x_bncom-matnr AND ERSDA = sy-datum.
IF batch_number IS INITIAL. \如果当天的批次号不存在,那么当前流水号为001
cur_flow_number = '001'. ELSE.
pre_flow_number = batch_number+6(3). \如果当天的批次存在,那么前一个流水号=取到的流水号
cur_flow_number = pre_flow_number + 1. \当前流水号=前一个流水号+1 ENDIF.
\将此次的批次信息插入到表ZBATCH中
CONCATENATE sy-datum+2(6) cur_flow_number INTO batch_number. \当前日期后6位+当前流水号作为当前的批次号码 WHEN 'E'.
IF x_bncom-bwart <> '101' or x_bncom-bwart <> '103'. MESSAGE e001(00) WITH 'Please input batch number!'. ELSE.
batch_number = x_bncom-aufnr. ENDIF. WHEN 'X'.
IF x_bncom-aufnr IS INITIAL.
SELECT MAX( charg ) INTO batch_number FROM zbatch WHERE matnr = x_bncom-matnr AND cdate = sy-datum.
IF batch_number IS INITIAL. \如果当天的批次号不存在,那么当前流水号为001
cur_flow_number = '001'. ELSE.
pre_flow_number = batch_number+6(3). \如果当天的批次存在,那么前一个流水号=取到的流水号
cur_flow_number = pre_flow_number + 1. \当前流水号=前一个流水号+1 ENDIF.
\将此次的批次信息插入到表ZBATCH中
CONCATENATE sy-datum+2(6) cur_flow_number INTO batch_number. \当前日期后6位+当前流水号作为当前的批次号码 ELSE.
IF x_bncom-bwart <> '101' or x_bncom-bwart <> '103'.
MESSAGE e001(00) WITH 'Please input batch number! Finished Goods auto batch numer only allowed for mvt 101'. ELSE.
batch_number = x_bncom-aufnr. ENDIF. ENDIF. ENDCASE.
* tab01-charg = batch_number. * tab01-matnr = x_bncom-matnr. * tab01-cdate = sy-datum. * tab01-werks = x_bncom-werks. * APPEND tab01. *
* IF sy-ucomm = 'OK_POST1'. \只有post才会将数据写入到表ZBATCH中 * INSERT zbatch FROM tab01. * COMMIT WORK. * ENDIF.
new_charg = batch_number.
测试验证: 采购件
根据当前系统日期带出批次编号,测试通过