金色传说:SAP-ABAP-创建预留增强:将销售订单号和行项目写入RESB的行项目中


问题场景

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表中还是只能存在一个销售订单行,但是不影响系统的预留过账,扣减对应的销售订单库存和产生物料凭证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EasyStudios

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值