问题场景
RESB预留行项目和RKPF预留抬头中都有销售订单号和销售订单行项目号字段,但是BAPI:BAPI_RESERVATION_CREATE1创建预留时,只能向抬头结构reservationheader-sales_ord和reservationheader-s_ord_item写入销售订单号和行项目,这就导致,创建的预留不管有多少行,最终所有的行的销售订单号和行项目都是一个,不能分成多个销售订单。
一、解决方法
对BAPI:BAPI_RESERVATION_CREATE1进行增强
二、增强步骤
1.SE19创建增强实施
代码如下(示例):
DATA:aufnr TYPE afpo-aufnr.
LOOP AT resb ASSIGNING FIELD-SYMBOL(<fs>).
aufnr = <fs>-wempf.
aufnr = |{ aufnr ALPHA = IN }|.
"判断是否为按单生产的物料
SELECT SINGLE strgr INTO @DATA(ds_strgr) FROM marc WHERE matnr = @<fs>-matnr AND werks = '8000'.
IF ds_strgr EQ '50' OR ds_strgr EQ 'Z2'.
"根据生产订单号取销售订单号,行号
SELECT SINGLE kdauf,kdpos FROM resb WHERE aufnr = @aufnr AND kdauf IS NOT INITIAL INTO @DATA(ds_eno).
"写入RESB行项目
<fs>-kdauf = ds_eno-kdauf.
<fs>-kdpos = ds_eno-kdpos.
ENDIF.
ENDLOOP.
2.预留产生
这样,产生出的预留单就分开销售订单行了。
三、遗留问题
预留区分了行,但是RKPF表中还是只能存在一个销售订单行,但是不影响系统的预留过账,扣减对应的销售订单库存和产生物料凭证。