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、展示库存对比表的效果