========================

目录:

1、直接SQL报表

========================

1、直接SQL报表

以BOM成本报表为例,在销售模块部署,需要购买【金蝶 K3 BOS集成开发工具】使用许可

I、本报表采用存储过程的形式编写,需要在数据库执行存储过程。

  1. /****** Object: StoredProcedure [dbo].[pro_bobang_BOMCost] Script Date: 07/29/2015 16:09:11 ******/
  2. SET ANSI_NULLS ON
  3. GO
  4. SET QUOTED_IDENTIFIER ON
  5. GO
  6. create PROC [dbo].[pro_bobang_BOMCost]
  7. @FBomNumber1 varchar(50), --bom单号
  8. @FBomNumber2 varchar(50) --bom单号
  9. as
  10. begin
  11. SET ANSI_WARNINGS OFF
  12. set nocount on
  13.  
  14. --1.--业务员查找某个BOM单,包含所有BOM(已使用,未使用,已审核,未审核)
  15. ;with cte as (
  16. select convert(varchar(100),'') as cen,Finterid,FBOMNumber as fppbomnumber,convert(varchar(50),'') as fpbomnumber,Fbomnumber AS FCbomnumber,fitemid,fitemid as fpitemid,0 as fpinterid,convert(decimal(18,4),1) as FBomQty,convert(varchar(500),RIGHT(''+CONVERT(varchar(10),Finterid),6)) as code from ICBOM
  17. where (1=1)
  18. and FBOMNumber >= @FBomNumber1
  19. and FBOMNumber <= case when @FBomNumber2='' then (select MAX(FBOMNumber) from ICBOM) else @FBomNumber2 end
  20. union all
  21. select convert(varchar(100),cen+'------'),a.finterid,c.fppbomnumber,convert(varchar(50),c.FCbomnumber) as fpbomnumber,a.fbomnumber as fcbomnumber,a.fitemid,c.fpitemid,a.fpinterid,convert(decimal(18,4),a.FAuxQty) as FBomQty,convert(varchar(500),c.code+RIGHT(''+convert(varchar(10),a.finterid),6)) as code
  22. from (
  23. select t1.finterid as fpinterid,t2.FInterID,t1.FItemID,t2.FBOMNumber,t1.FAuxQty
  24. from ICBOMChild t1 inner join ICBOM t2 on t1.FItemID=t2.FItemID
  25. where FParentID=1038
  26. union all
  27. select t1.finterid as fpinterid,0,t1.fitemid,'',t1.FAuxQty from ICBOMChild t1 where not exists (select * from ICBOM where FItemID=t1.FItemID)) a
  28. inner join cte c on a.fpinterid=c.FInterID
  29. )
  30. select cen,finterid,fppbomnumber,fpbomnumber,fcbomnumber,fitemid,fpitemid,fpinterid,FBomQty,code into #tmp1 from cte order by code
  31. OPTION (MAXRECURSION 0)
  32.  
  33. --2.--取采购价格管理物料最新日期的价格(已审核,可使用)
  34. SELECT distinct u1.FSupID,u1.FItemID,case when u1.fcyid=1 then u1.FPrice*t3.FExchangeRate/(1+v1.FValueAddRate/100) else u1.FPrice*t3.FExchangeRate end as FPrice,
  35. t3.FName AS FCyName,u1.FQuoteTime,u1.FDisableDate
  36. into #tmp2 FROM t_SupplyEntry u1
  37. INNER JOIN t_ICItem t1 ON u1.FItemID=t1.FItemID
  38. INNER JOIN t_Supply u2 ON u1.FSupID=u2.FSupID AND u1.FItemID=u2.FItemID AND u1.FPType=u2.FPType
  39. INNER JOIN t_Currency t3 ON t3.FCurrencyID=u1.FCyID
  40. INNER JOIN t_Currency u3 ON u3.FCurrencyID=u2.FCurrencyID
  41. INNER JOIN t_Supplier v1 ON u1.FSupID=v1.FItemID
  42. inner join
  43. (
  44. select MAX(fquotetime) as fquotetime,FItemID from t_SupplyEntry where FCheckerID>0 group by FItemID
  45. ) bb on bb.FItemID=u1.FItemID and bb.fquotetime=u1.FQuoteTime
  46. WHERE t1.FErpClsID not in (6,8) and u1.FCheckerID>0 and u1.FUsed=1
  47.  
  48. --3.--列出BOM明细成本,取采购价格的最新价格
  49. select t1.cen+t1.code as FTree,t1.cen,t1.code,t1.fppbomnumber,t1.fpbomnumber,t1.fcbomnumber,t1.FItemID,t1.FBomQty,
  50. t2.FSupID,t2.FPrice as FAuxPrice,t1.FBomQty*t2.FPrice as FAmount,case when FCbomnumber<>'' then t1.FBomQty*t2.FPrice end as FJGAmount
  51. into #tmp3 from #tmp1 t1
  52. left join #tmp2 t2 on t1.FItemID=t2.FItemID
  53. left join t_ICItem t3 on t1.FItemID=t3.FItemID
  54. order by t1.code,t3.FNumber
  55.  
  56. --4.--循环计算中间件成本
  57. ---这部分部署会出错,先注释,部署成功,再解除注释更新存储过程
  58. declare @cb decimal(18,4),@fbom varchar(50),@fppbom varchar(50)
  59. declare auth_cur cursor for
  60. select fppbomnumber,fcbomnumber from #tmp3 where FAuxPrice is null and fcbomnumber<>'' and cen<>'' order by cen desc
  61. open auth_cur
  62. fetch next from auth_cur into @fppbom,@fbom
  63. while(@@fetch_status=0)
  64. begin
  65. set @cb=0
  66. select @cb=isnull(SUM(FAmount),0) from #tmp3 where fpbomnumber=@fbom and fppbomnumber=@fppbom
  67. UPDATE #tmp3 set FAmount=isnull(FAmount,0)+@cb,FAuxPrice=isnull(FAuxPrice,0)+@cb/FBomQty where FCbomnumber=@fbom and fppbomnumber=@fppbom
  68. fetch next from auth_cur into @fppbom,@fbom
  69. end
  70. close auth_cur
  71. deallocate auth_cur
  72. ----这部分部署会出错,先注释,部署成功,再解除注释更新存储过程
  73.  
  74. --5.--循环计算成品件成本
  75. ---这部分部署会出错,先注释,部署成功,再解除注释更新存储过程
  76. declare @cb1 decimal(18,4),@fbom1 varchar(50),@fppbom1 varchar(50)
  77. declare auth_cur cursor for
  78. select fppbomnumber,fcbomnumber from #tmp3 where fcbomnumber<>'' and cen='' order by cen desc
  79. open auth_cur
  80. fetch next from auth_cur into @fppbom1,@fbom1
  81. while(@@fetch_status=0)
  82. begin
  83. set @cb1=0
  84. select @cb1=isnull(SUM(FAmount),0) from #tmp3 where fpbomnumber=@fbom1 and fppbomnumber=@fppbom1
  85. UPDATE #tmp3 set FAmount=isnull(FAmount,0)+@cb1,FAuxPrice=isnull(FAmount,0)+@cb1/FBomQty where FCbomnumber=@fbom1 and fppbomnumber=@fppbom1
  86. fetch next from auth_cur into @fppbom1,@fbom1
  87. end
  88. close auth_cur
  89. deallocate auth_cur
  90. ----这部分部署会出错,先注释,部署成功,再解除注释更新存储过程
  91.  
  92. select t1.FTree,case when t1.fpbomnumber='' then t1.FCbomnumber end as fpbomnumber,t2.FNumber,t2.FName,t2.FModel,t3.FName as FUnitName,t1.FBomQty,t1.FAuxPrice,t1.FAmount,t1.FJGAmount,t4.FName as FSupName from #tmp3 t1
  93. inner join t_ICItem t2 on t2.FItemID=t1.FItemID
  94. inner join t_MeasureUnit t3 on t2.FUnitID=t3.FItemID
  95. left join t_Supplier t4 on t1.FSupID=t4.FItemID
  96. order by t1.code
  97.  
  98. drop table #tmp1
  99. drop table #tmp2
  100. drop table #tmp3
  101. set nocount off
  102.  
  103. end
  104.  
  105. --exec pro_bobang_BOMCost 'BOM000001','BOM000001'
  106. --exec pro_bobang_BOMCost '*FBomNumber*','#FBomNumber#'

II、打开【金蝶K3 BOS集成开发工具】- - 【销售管理】- - 【直接SQL报表】,新建直接SQL报表。

III、打开报表向导。

IV、点击关键字维护,添加过滤条件关键字*FBomNumber*、#FBomNumber#。,并输入生成报表的SQL语句

V、报表标题默认显示,和字段名称一样,是英文名称,修改报表标题为中文名称显示。

技巧性:在存储过程最后显示结果集,可以直接给字段加上中文别名,这样此处就不需要再去修改报表标题。

VI、报表测试如下:

VII、发布到主控台,发布位置【销售管理】- - 【报表分析】。

VIII、在主控台查看发布结果。

六、K3 WISE 开发插件《直接SQL报表开发新手指导 - BOM成本报表》的更多相关文章

  1. 十、K3 WISE 开发插件《SQL Profiler跟踪单据操作时产生的SQL语句》

    =================================== 目录: 1.查询帐套的数据库DBID 2.配置需要跟踪数据库的DBID 3.配置跟踪参数 4.跟踪进行 5.分析跟踪语句 === ...

  2. K3 WISE 开发插件《SQL语句WHERE查询-范围查询/模糊查询》

    0.存储过程开头变量定义 @FBeginDate varchar(10), --单据起始日期 @FEndDate varchar(10), --单据截止日期. @FItemID varchar(50) ...

  3. 十三、K3 WISE 开发插件《SQL语句WHERE查询-范围查询/模糊查询》

    0.存储过程开头变量定义 ), --单据起始日期 ), --单据截止日期. ), ), ), ), ) @FType varchar(50),  --单据类型@FBillNo varchar(50), ...

  4. 四、K3 WISE 开发插件《工业单据老单插件开发新手指导》

    开发环境:K/3 Wise 13.0.K/3 Bos开发平台.Visual Basic 6.0 =============================================== 目录 一 ...

  5. 金蝶K3 wise 插件二次开发与配置

    金蝶K3 wise 插件二次开发与配置 开发环境:K/3 Wise 13.0.K/3 Bos开发平台.Visual Basic 6.0 目录 一.二次开发插件编程二.代码演示三.配置插件四.测试插件五 ...

  6. 五、K3 WISE 开发插件《K3 Wise 群发短信配置开发(二)之短信群发配置》

    开发环境:K/3 Wise 13.0.Sql Server 2005 目录 一.开启Sql Server Agent代理服务 二.短信发送原理 三.编写存储过程 四.开启Sql Server作业 一. ...

  7. 九、K3 WISE 开发插件《工业单据老单序时薄插件工具栏按钮开发实例》

    =============================== 目录: 1.添加工具栏按钮 2.查询被添加工具栏按钮的业务单据的FMenuID和FID 3.添加工具栏按钮和业务单据的映射关系 4.工具 ...

  8. 三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》

    案例需求:在销售订单上新增一个按钮,在订单明细中新增一个字段,命名[即时库存]. 点击按钮,弹出“Hello World!”,并获取订单明细物料的即时库存,填入字段[即时库存]. 开发工具:Visua ...

  9. pl/sql developer开发工具的beautifier美化插件

    对于存储过程中需要编写大量的sql语句,这必然需要美化语句,使得程序可读性更高. pl/sql developer开发工具自带美化工具,不过美化的时候容易使得语句全部改变成大写格式,这样就需要一个插件 ...

随机推荐

  1. (原)tslib的交叉编译

    今天准备重新来交叉编译qt5.3.1的源码,由于按网上说的,需要先编译tslib,所以拿起来之前的编译源码,打算重新用新的交叉编译工具再次编译一次,在查找资料的过程中浪费了些许时间.其实直接就在使用s ...

  2. 查看eclipse版本信息

    http://www.cnblogs.com/caiyuanzai/archive/2013/01/11/2855796.html 如果要查询eclipse数字版本号的话,可按如下进行操作: 1. 找 ...

  3. wapp HTTP Error 404. The requested resource is not found.

    原因: 本地80端口被占用,需要修改WAMP的默认端口 修改设置: 找到 bin/apache/apache***/conf/httpd.conf文件 将文件中的80修改为8088 修改这两个地方端口 ...

  4. MySql:charset和collation的设置

    From: http://www.2cto.com/database/201302/189920.html MySql:charset和collation的设置   charset 和 collati ...

  5. springboot中@EnableAsync与@Async注解使用

    springboot中@EnableAsync与@Async注解使用 @Async为异步注解,放到方法上,表示调用该方法的线程与此方法异步执行,需要配合@EnableAsync注解使用. 1.首先演示 ...

  6. eclipse 安装图形插件(图形化编程)

    打开eclipse 查看什么版本 ,我的是Oxygen help --> install newsoftware 打开地址 http://www.eclipse.org/windowbuilde ...

  7. Sql Server Snapshot和mysql MVCC

    mysql 在一个事务A中插入一条数据 在B事务中查询到的还是以前的数据,可以select *from table,不被锁住   Sql Server 默认级别 读已提交 所以A事务在 X表插入数据, ...

  8. SELECT a.loginname,a.deviceid,a.time,Row_Number() OVER (partition by a.loginname ORDER BY a.deviceid desc,a.time asc) rank

    现在做一个反欺诈内容要用到笛卡尔积,用来分析用户一个手机号,对应的多个设备,每个更换设备的时间,这里取的时间是系统收集时间,用来代表更换的时间, 所以要先对设备换的时间作排序,然后进行rank,最后求 ...

  9. 图解HTTP学习笔记——简单的HTTP协议

    简单的HTTP协议 前言 最近在学习Web开发的相关知识,发现<图解HTTP>这本书通俗易懂.所以花时间学习这本书,并记录下学习笔记. 如上图,我们每天都在浏览网页,一般我们都是在浏览器地 ...

  10. BarTender出现条码打印位置不准的情况怎么办

    在使用BarTender 2016设计打印条码标签,往往在打印时会遇到各种各样的问题,比如说:打印内容错位,内容发生偏移,与设置好的BarTender 2016条码标签的相对位置发生较为严重的偏差,这 ...