交货冲销增强
(2013-07-04 11:15:17)
转载▼
标签:
| 分类: SAP_SD |
交货单冲销一个小小的增强:
先看需求: 在使用VL09进行交货单冲销的时候,判断冲销日期与实际发货过账的日期是否为同一天,如果不是同一天则报错。为什么要这么做,是因为为了限制客户在当期做上期的交货冲销时,避免冲减当期的成本。如果上个月的的财务账和物料帐都关了,怎么办?不好意思了,只能按退货处理。人家财务不可能为了冲一笔货,把账期给你打开。。那为什么不限制在当月,为什么要限制在发货日期当天呢? 这个问题我也问过.不是不可以啊。改下代码就OK了。
程序出口: EXIT_SAPMM07M_001 "SAPMM07M : 货物移动的模块池
在include里面添加代码
首先看下函数里面的参数:
这样就清楚I_MKPF和I_mseg是那儿来的了。
DATA i_bldat LIKE i_mkpf-bldat .
DATA i_matnr LIKE i_mseg-matnr.
DATA wa TYPE zsd07.
" zsd07是什么?
这个是自建表,看下就明白了。
data message(60) type c.
SELECT SINGLE * FROM zsd07 INTO wa WHERE werks = i_mseg-werks .
IF sy-subrc = 0 AND wa-flag = 'X'.
*602、654、656、658、Z04 ,
IF i_mseg-bwart = '602' OR i_mseg-bwart = '654'
OR i_mseg-bwart = '656' OR i_mseg-bwart = '658' OR i_mseg-bwart = 'Z04' "当然要限定一下Movement type了
.
SELECT SINGLE budat FROM mkpf INTO i_bldat
WHERE mblnr = i_mseg-mblnr AND mjahr = i_mseg-mjahr .
IF i_bldat(8) <> i_mkpf-budat(8).
CONCATENATE '交货单号' i_mkpf-XBLNR ',取消日期与原单记帐日期不一致请检查。' INTO message.
MESSAGE message TYPE 'E'.
ENDIF.
ENDIF.
CLEAR: wa,message.
ENDIF.