SAP ABAP MM指定库存地点创建交货单

在STO创建DN单时,需要指定库存地点(LIPS-LGORT),开始时使用函数BAPI_OUTB_DELIVERY_CREATE_STO创建DN,发现不能在BAPI中指定LGORT的值,所以就想使用创建完成后,再修改的方式进行处理,就是创建DN单后,再修改DN的的库存地点LGORT,但此方法的问题是在创建成功,后修改时又发现库存不足等问题,而此时DN单已创建成功了,明显不能满足需求,所以后来就想到用增强的方法,在创建时指定LGORT,在增强中写入LGORT的值,

1.调用BAPI创建DN

*增强在MV50AFZ1-USEREXIT_MOVE_FIELD_TO_LIPS修改LGORT.
  L_LGORT = LS_CONFG-RESLO_FH2.
  EXPORT L_LGORT FROM L_LGORT TO MEMORY ID 'VL01N_LGORT'  .
 
  CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_STO'
*    EXPORTING
*      SHIP_POINT        = LS_EKPV-VSTEL
*      DUE_DATE          = LS_DATA-BLDAT
    IMPORTING
      DELIVERY          = LV_DELIVERY
    TABLES
      STOCK_TRANS_ITEMS = LT_STOCK_ITEMS
      CREATED_ITEMS     = LT_CREATED_ITEMS
      RETURN            = LT_RETURN.
  FREE MEMORY ID 'VL01N_LGORT'.

此BAPI前把要指定的LGORT值保存到内存变量VL01N_LGORT中。并有BAPI使用完成后清空内存变量值,防止其它程序使用。

2.在增强MV50AFZ1中写入代码

FORM USEREXIT_MOVE_FIELD_TO_LIPS.
*  LIPS-zzfield = xxxx-zzfield2.
*使用指定的LGORT创建交货单。
  DATA: L_LGORT TYPE LGORT_D.
*--------------------------------------------------------------------*
  IMPORT L_LGORT TO L_LGORT FROM MEMORY ID 'VL01N_LGORT'  .

  FREE MEMORY ID 'VL01N_LGORT'.
  IF L_LGORT IS NOT INITIAL .
    LIPS-LGORT = L_LGORT .
  ENDIF.
*--------------------------------------------------------------------*
ENDFORM.                    "USEREXIT_MOVE_FIELD_TO_LIPS

在其中读取上一步写到内存变量VL01N_LGORT中的库存地点LGORT的值,关并判断是否有值,有值就写此值附给LIPS-LGORT.当然使用完成后,也清空一下内存,防止其它程序使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ᝰ随心ꦿེএ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值