参考链接:
15.0自带的API查询即时库存,只能传入短编码,没有返回仓库编码,仓库名称信息,而且基本上没啥用。
本文主要补充通过参考链接2的方法实现:
1、带参数查询 物料长编码和仓库长编码 (必须带至少一个条件)
2、不传参查询所有的即时库存
1的带参数查询 自定义SQL原文见参考链接2,已经给出。
补充配置上的问题,
①、在配置【自定义报表】的时候,需要维护关键字,如下,否则接口无法传入参数,直接测试也查询不出数据。
②、自定义报表保存后,api的地址也会跟着变化,要注意,地址要看【API说明】页面里的,而且最新修改的自定义报表会在最下面,做好上面的关键字后,API说明里面才会出来要传的参数。修改完报表后还要记得重新授权。
2不带参数查询所有的即时库存
①、新增一个自定义报表,我是通过【即时库存查询】直接改的,删除了过滤条件,并增加了仓库编码和仓库名称:
set nocount on
declare @strItemNumber nvarchar(700)
declare @strStockNo nvarchar(100)
declare @strSelectSQL varchar(3000)
set @strSelectSQL='Create Table #TempInventory( [FBrNo] [varchar] (10) NOT NULL ,[FItemID] [int] NOT NULL ,
[FBatchNo] [varchar] (200) NOT NULL ,
[FStockID] [int] NOT NULL ,
[FQty] [decimal](28, 10) NOT NULL)
Insert Into #TempInventory Select u1.FBrNo,u1.FItemID,u1.FBatchNo,u1.FStockID,u1.FQty From ICInventory u1 where u1.FQty<>0
Insert Into #TempInventory Select u1.FBrNo,u1.FItemID,u1.FBatchNo,u1.FStockID,u1.FQty From POInventory u1 where u1.FQty<>0
Select t1.FNumber AS FMATERIALNUMBER,t1.FModel as FMaterialModel,t1.FName AS FMaterialName,t3.FName as FUnitName,t4.FName as FCUUnitName,t2.FNumber AS FStockNumber,t2.FName AS FStockName,
sum(u1.FQty) as FBUQty,sum(u1.FQty/t4.FCoefficient) as FCUUQty
From #TempInventory u1
left join t_ICItem t1 on u1.FItemID = t1.FItemID
left join t_Stock t2 on u1.FStockID=t2.FItemID
left join t_MeasureUnit t3 on t1.FUnitID=t3.FMeasureUnitID
left join t_MeasureUnit t4 on t1.FStoreUnitID=t4.FMeasureUnitID
left join t_Measureunit t19 on t1.FSecUnitID=t19.FMeasureunitID
where (Round(u1.FQty,t1.FQtyDecimal)<>0 OR Round(u1.FQty/t4.FCoefficient,t1.FQtyDecimal)<>0)
AND t1.FDeleted=0 group by u1.FItemID,t1.FNumber,t1.FModel,t1.FName,t3.FName,t4.FName,t2.FNumber,t2.FName
Order By t1.FNumber
Drop Table #TempInventory'
exec(@strSelectSQL)
新增完毕后,不需要设置关键字,因为不需要传参数进去。
②、修改显示的字段名称,如果这一步没有出来,说明上一步的sql语句有问题,没有查询出结果,填写报表标题下一步即可。报表名称可以自定义,后续API授权里面就会出现这个报表名称。
最后取【API说明】页面点 【直接SQL报表】拖到最下面,就是这个API的访问地址。
附上最后的获取数据访问的效果。