SAP读书会:呆滞库存的关键技术分享

呆滞库存的关键技术分享
SAP读书会:呆滞库存的关键技术分享
呆滞库存的报表原由:
呆滞库存报表一般可以由MB5B依据过帐资讯来产生呆滞物料的资讯,但是如果遇到需要客製报表的需求,我们可以自己设计。

关键Table:
呆滞库存的设计需要运用到过帐相关纪录资讯,如 MSEG & MKPF,两者透过文件号码做关联(MBLNR);另外其他的物料资讯可以由MARD 取得。

逻辑关键SQL:
首先要以物料主档(MARD)为主要的Table并JOIN 物料异动纪录(MSEG) & 过帐资讯纪录(MKPF),其中物料主档(MARD)与物料异动纪录(MSEG)以物料号码做为关联(KEY),另外物料异动纪录(MSEG)与过帐记录资讯(MKPF)用物料文件号码(MBLNR)做关联。

输入的主要参数有(Input):
P_WERKS FOR MARD-WERKS DEFAULT 'TW11', "工厂
P_MATNR FOR MARD-MATNR,"物料号码
P_SDATE FOR MARD-ERSDA. "开始与结束日期

输出的主要参数有(Output):
LIKE MARD-MATNR,"物料号码
LIKE MARD-LABST,"未使用库存数量
LIKE MARD-WERKS,"工厂
LIKE MARD-LGORT,"库位
LIKE MBEW-VERPR,"异动平均价
LIKE MBEW-LBKUM,"库存总值

主要的宣告:
DATA: I_SA TYPE P DECIMALS 4. "库存总值
* 定义日期的字串月份撷取
DATA: STRING(10),
V_OFFSET_START TYPE I,
V_OFFSET_LENGTH TYPE I,
V_YMD(10) TYPE C,
T_YEAR(4) TYPE C,
V_YEAR(4) TYPE C.

主要SQL 有两个ITAB,分别是ITAB3 & ITAB4:
ITAB3 主要是抓出所有的资讯,而ITAB4 主要抓出跟相关呆滞有关的关键异动类型,最后再用LOOP AT ITAB的方式,ITAB4就是把不符合呆滞的物料都抓出来放到ITAB4,这样ITAB3 去比对ITAB4 就可以排出MSEG 跟非符合呆滞的物料。

不然单一一个SQL去排除,通常只会排除当笔的MSEG纪录,其他的相同物料一样会在列出来。

以下是ITAB3 主要SQL
SELECT
MARD~MATNR MARD~LABST MARD~WERKS MARD~LGORT
MSEG~BWART MKPF~BUDAT
FROM MARD
INNER JOIN MSEG ON MARD~MATNR = MSEG~MATNR
INNER JOIN MKPF ON MSEG~MBLNR = MKPF~MBLNR AND MSEG~MJAHR = MKPF~MJAHR
INTO CORRESPONDING FIELDS OF TABLE ITAB3
WHERE MARD~MATNR = MSEG~MATNR
AND MARD~WERKS = MSEG~WERKS
AND MSEG~MBLNR = MKPF~MBLNR
AND MSEG~MJAHR = MKPF~MJAHR
AND MSEG~BWART NE '261'
AND MSEG~BWART NE '311'
AND MSEG~BWART NE '309'
AND MSEG~BWART NE '901'
AND MSEG~BWART NE '903'
AND MSEG~BWART NE '913'
AND MSEG~BWART NE '915'
AND MSEG~BWART NE '917'
AND MSEG~BWART NE '919'
AND MSEG~BWART NE '101'
AND MARD~MATNR IN P_MATNR
AND MARD~WERKS IN P_WERKS
AND MARD~LGORT IN P_LGORT
AND MKPF~BUDAT IN P_SDATE.

以下是主要的ITAB4 SQL
*ITAB4
SELECT
MSEG~MBLNR "Number of Material Document
MSEG~MJAHR "Material Document Year
MSEG~BWART "Moving Type
MSEG~MATNR "Material Number
MSEG~WERKS "Plant
MSEG~LGORT "Storage Location
MSEG~LIFNR "Vendor Number
MKPF~BUDAT
FROM MSEG
INNER JOIN MKPF ON MSEG~MBLNR = MKPF~MBLNR AND MSEG~MJAHR = MKPF~MJAHR
INTO CORRESPONDING FIELDS OF TABLE ITAB4
WHERE MSEG~MBLNR = MKPF~MBLNR
AND MSEG~MJAHR = MKPF~MJAHR
AND ( MSEG~BWART = '101'
OR MSEG~BWART = '261'
OR MSEG~BWART = '311'
OR MSEG~BWART = '309'
OR MSEG~BWART = '901'
OR MSEG~BWART = '903'
OR MSEG~BWART = '913'
OR MSEG~BWART = '915'
OR MSEG~BWART = '917'
OR MSEG~BWART = '919' )
AND MSEG~MATNR IN P_MATNR
AND MSEG~WERKS IN P_WERKS
AND MSEG~LGORT IN P_LGORT
AND MKPF~BUDAT IN P_SDATE.

*将ITAB3 有涉及到的异动类型都Clear
SORT ITAB3 BY MATNR.
SORT ITAB4 BY MATNR.
DELETE ADJACENT DUPLICATES FROM ITAB4 COMPARING MATNR.

LOOP AT ITAB3.
LOOP AT ITAB4.
IF ITAB3-MATNR = ITAB4-MATNR.
CLEAR ITAB3.
MODIFY ITAB3.
ENDIF.
ENDLOOP.
ENDLOOP.


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章