WMS与ERP库存对比报表

一、概述

该报表主要提供给用户比对ERP系统启用WMS管制的仓库库存量与WMS的库存量是否一致。目前此报表是通过SQL视图的方式来获取ERP系统的库存记录,然后用户再使用WMS系统的【自定义报表】功能增加此报表。以下详细说明如何制作该报表。

  • 版本:2023年2月1日V2.1及以上

二、创建数据库服务器连接(同服务器时请忽略)

当WMS与ERP数据库同一台服务器时,不需要操作此步骤,只有当WMS与ERP数据库不是同一台服务器时,必须在WMS帐套数据库执行以下语句(以下红字是可变更的变量)

exec sp_addlinkedserver ‘srv_lnk‘,”,’SQLOLEDB’,’远程服务器名或ip地址‘    –数据库服务器地址
exec sp_addlinkedsrvlogin ‘srv_lnk‘,’false’,null,’用户名‘,’密码‘     –数据库的用户与密码

三、创建SQL视图

1、WMS与SUNLIKE对接时

srv_lnk:当数据库服务器不同时所创建的SQL连接,当服务器相同时,则可以去掉此变更

ERP数据名:该变量变更为客户当前的ERP帐套数据库名,如DB_001

在WMS帐套数据库执行创建视图SQL语句如下:

create view vw_GetERPPrdt1
as (
select P1.WH,P1.PRD_NO,P1.PRD_MARK,” as BAT_NO,P1.QTY
from srv_lnk.ERP数据名.dbo.PRDT1 P1
left join srv_lnk.ERP数据名.dbo.MY_WH MW on MW.WH=P1.WH
left join srv_lnk.ERP数据名.dbo.PRDT P on P.PRD_NO=P1.PRD_NO
where MW.WMS_ID=’T’
union all
select BR1.WH,BR1.PRD_NO,BR1.PRD_MARK,BR1.BAT_NO,(isnull(BR1.QTY_IN,0)-isnull(BR1.QTY_OUT,0)) as QTY
from srv_lnk.ERP数据名.dbo.BAT_REC1 BR1
left join srv_lnk.ERP数据名.dbo.MY_WH MW on MW.WH=BR1.WH
left join srv_lnk.ERP数据名.dbo.PRDT P on P.PRD_NO=BR1.PRD_NO
where MW.WMS_ID=’T’
)

2、WMS与T系列对接时

请按以下顺序执行以下语句:

(1)、在T系列TbrSystem数据库执行以下SQL语句:

select * from fn_StringToTable((select wh from tbrsystem..wmsset where erpcompno=’T系列帐套代号‘),’,’)

(2)、在WMS帐套数据库执行创建视图的SQL语句:

srv_lnk:当数据库服务器不同时所创建的SQL连接,当服务器相同时,则可以去掉此变更

ERP数据名:该变量变更为客户当前的ERP帐套数据库名,如DB_001

create view vw_GetERPPrdt1
as (
select P1.WH,P1.PRD_NO,P1.PRD_MARK,” as BAT_NO,P1.QTY
from srv_lnk.ERP数据名..dbo.PRDT1 P1
left join srv_lnk.ERP数据名..dbo.MY_WH MW on MW.WH=P1.WH
left join srv_lnk.ERP数据名..dbo.PRDT P on P.PRD_NO=P1.PRD_NO
where P1.WH IN (select COND from fn_StringToTable((select wh from srv_lnk.tbrsystem..wmsset where erpcompno=’ERP数据名.’),’,’))
union all
select BR1.WH,BR1.PRD_NO,BR1.PRD_MARK,BR1.BAT_NO,(isnull(BR1.QTY_IN,0)-isnull(BR1.QTY_OUT,0)) as QTY
from srv_lnk.ERP数据名..dbo.BAT_REC1 BR1
left join srv_lnk.ERP数据名..dbo.MY_WH MW on MW.WH=BR1.WH
left join srv_lnk.ERP数据名..dbo.PRDT P on P.PRD_NO=BR1.PRD_NO
where BR1.WH IN (select COND from fn_StringToTable((select wh from srv_lnk.tbrsystem..wmsset where erpcompno=’ERP数据名.’),’,’))
)

四、在WMS系统【自定义报表】新增报表

1、新增自定义报表数据源

将以下SQL语句粘贴到报表数据源中

select (case when TT.PRD_NO is null then VW.PRD_NO else TT.PRD_NO end) as 货品代号
,(case when TT.PRD_MARK is null then VW.PRD_MARK else TT.PRD_MARK end) as 货品特征
,(case when TT.BAT_NO is null then VW.BAT_NO else TT.BAT_NO end) as 批号
,(case when TT.WH is null then VW.WH else TT.WH end) as 仓库
,TT.QTY AS WMS库存量,VW.QTY as ERP库存量,ISNULL(TT.QTY,0)-ISNULL(VW.QTY,0) AS 差异库存量 from (
select T.WH_UP as WH,T.PRD_NO,T.PRD_MARK,T.BAT_NO,sum(T.QTY) as QTY from (
select (select top 1 MW.WH from fn_GetUpWhTree(P1.WH) FN left join MY_WH MW on MW.WH=FN.WH where MW.TP_ID=’T’ and MW.WMS_ID=’T’) as WH_UP
,P1.WH,P1.PRD_NO,P1.PRD_MARK,(case when P.ERP_CHK_BAT=’T’ then P1.BAT_NO else ” end) as BAT_NO,(isnull(P1.QTY_IN,0)-isnull(P1.QTY_OUT,0)) as QTY
from PRDT1 P1
left join MY_WH MW on MW.WH=P1.WH
left join PRDT P on P.PRD_NO=P1.PRD_NO
where MW.WH is not null and (MW.STOP_DD is null or MW.STOP_DD>getdate()-1)
) T
group by T.WH_UP,T.PRD_NO,T.PRD_MARK,T.BAT_NO
) TT
full join vw_GetERPPrdt1 VW on VW.WH=TT.WH and VW.PRD_NO=TT.PRD_NO and VW.PRD_MARK=TT.PRD_MARK and VW.BAT_NO=TT.BAT_NO

2、设计自定义报表查询方案

还可针对【差异库存量】不等于0的记录设置样式

3、展示库存对比表的效果

 

分类目录