李武韬
(常州信息职业技术学院经贸管理学院 江苏常州 213164)
金蝶K/3 BOS直接SQL报表举例
李武韬
(常州信息职业技术学院经贸管理学院江苏常州213164)
摘要:金蝶K/3 ERP直接SQL报表不仅是直接写SQL语句,通过举例来说明:在金蝶K/3 BOS的ERP的二次开发中,使用K/3 BOS中的数据库描述生成工具,字段描述查询工具等来辅助生成直接SQL报表更加方便和便于理解。
关键词:金蝶K/3; BOS; 直接SQL报表
0引言
金蝶K/3是企业管理信息化应用的ERP软件产品。金蝶K/3系统提供丰富的报表查询功能,除基本的报表查询功能外,还提供强大的报表分析查询功能[1]。K/3 BOS(Business Operating System,简称BOS)是金蝶ERP二次开发的工具,在K/3 BOS中,借助K/3 BOS的数据库描述生成工具,字段描述查询工具,以及SQL Server的视图等工具,可以更加方便地完成直接SQL报表。本文以制作直接SQL采购明细报表为例说明。
1确定报表的内容
本文在金蝶K/3 12.1版本的“蓝海机械”示例帐套中制作直接SQL采购明细报表,连接的数据库为SQL Server2005。蓝海机械公司是一家专业生产经营柴油机及其配件产品的企业,蓝海机械采用金蝶ERP系统,全面实现财务、业务和生产环节的自动化管理,是典型的标准供应链解决方案。
在蓝海机械的采购管理中需要查询分析采购明细,特别是某个时间段、针对某个供应商的采购明细。在采购明细报表中显示所采购的每项物料的名称、数量、具体的供应商以及当时采购的订单编号和日期。用户在调用报表时能动态设置具体查询哪个时间段、针对哪个供应商的采购明细,即以“起始日期”、“截止日期”和“供应商名称”字段作为报表的过滤条件。
2分析报表所关联的数据表
报表生成的关键在于确定内容涉及K/3底层数据库的哪些数据表[2]。采购明细报表查询所采购物料的数量、订单编号和日期,必然要对采购订单所关联的数据表进行查询,采购订单关联了两张数据表,分别是单据头所在的POOrder表和单据体字段所在的分录表POOrderEntry。
报表还要求由用户动态指定供应商进行查询,供应商是k/3标准基础资料,因此查询还关联到k/3数据库中原有的标准表,供应商档案表t_Supplier。同时,报表还要求显示采购的物料名称,因此查询还关联到k/3数据库中物料表t_ICItem。
由于金蝶k/3数据库结构的复杂性,在此借助集成在k/3 BOS SDK中的二次开发工具,数据库描述生成工具来查看上述数据表的具体信息,这些信息包括:数据表的所属子系统,数据表的描述,数据表的结构信息。在数据表的结构信息中可以看到表中字段信息,甚至可以对字段信息进行维护。
使用数据库描述生成工具,可以看到:采购订单表POOrder,以及采购订单分录表POOrderEntry属于采购管理系统,表中包含了订单编号和采购物料的数量字段等的订单详细信息;供应商档案表t_Supplier属于供应商管理系统,存放供应商档案的详细资料,包括报表要求的供应商名称;物料表t_ICItem属于基本信息管理系统,物料是K/3的标准基础资料,包含物料名称在内的物料详细信息。
数据库描述生成工具使用表的名称来查询表的信息,确定表所属的子系统。另外,使用BOS平台的K3字段描述查询工具来查询数据表的全部的索引信息和更为详细的字段信息,其中包括:字段名、字段类型、字段长度等数据库字段基本信息,还能查看字段描述、字段备注,用于了解字段的作用。
通过上述工具的使用,对报表关联的数据表及其结构有了详细的了解,根据报表的查询要求,确定所需要的字段:采购订单表POOrder选择采购订单号FBillNo和单据日期FDate,采购订单分录表POOrderEntry选择订货数量FQty,供应商档案表t_Supplier选择供应商名称FName,物料表t_ICItem选择物料名称FName。同时也要明确:采购订单表POOrder和采购订单分录表POOrderEntry必须对应同一张订单,需要通过采购订单内码FInterID关联;采购订单分录表POOrderEntry和物料表t_ICItem必须对应同一种物料,需要通过物料内码FItemID关联;采购订单表POOrder和供应商档案表t_Supplier必须对应同一家供应商,需要供应商内码FSupplyID关联。在此注意,供应商档案表t_Supplier中的供应商内码字段不是FSupplyID,而是FItemID。
3用数据库中的视图生成SQL语句
视图是从一个或多个表中查询数据的另外一种方式[3]。手工的编写SQL语句制作报表容易出错,同时增加调试SQL语句的复杂性。在此使用SQL Server数据库管理系统的视图工具来生成SQL语句,方便并且不容易出错。
打开金蝶k/3所连接的后台数据库,SQL Server Management Studio,找到“蓝海机械”帐套对应的数据库,在此数据库中创建视图。选取上述分析中,报表所关联的数据表和相应字段,在此注意,物料表t_ICItem在数据库中实际是一个视图。
按照报表的要求,需要对选定的表和视图进行相应的关联,采购订单表POOrder和采购订单分录表POOrderEntry通过采购订单内码FInterID建立内连接;采购订单分录表POOrderEntry和物料表t_ICItem通过物料内码FItemID建立内连接;采购订单表POOrder和供应商档案表t_Supplier通过供应商内码FSupplyID和FItemID建立内连接。
为了使后面报表更加直观,给选择的字段都加上相应的别名,生成如下SQL语句。
SELECT dbo.POOrder.FBillNo AS 采购订单号, dbo.POOrder.FDate AS 单据日期, dbo.POOrderEntry.FQty AS 订货数量, dbo.t_Supplier.FName AS 供应商名称, dbo.t_ICItem.FName AS 物料名称 FROM dbo.POOrder INNER JOIN dbo.POOrderEntry ON dbo.POOrder.FInterID = dbo.POOrderEntry.FInterID INNER JOIN dbo.t_Supplier ON dbo.POOrder.FSupplyID = dbo.t_Supplier.FItemID INNER JOIN dbo.t_ICItem ON dbo.POOrderEntry.FItemID = dbo.t_ICItem.FItemID
4完成报表
在BOS平台的直接SQL报表中打开报表向导,在向导中需要输入SQL语句时,粘贴上述视图中生成的SQL语句。同时,设置查询关键字,按报表要求需要指定“起始日期”、“截止日期”和“供应商名称”作为查询条件,因此增加如下where子句。
Where dbo.poorder.fdate>=’********’ and dbo.poorder.fdate<=’######’ and dbo.t_supplier.fname like ‘@SuppName@’
然后按照向导提示完成直接SQL报表的制作,并且进行测试,测试成功后发布到主控台上供用户使用。
5结束语
由于金蝶k/3数据库结构的复杂性,借助其提供的数据库描述生成工具和K3字段描述查询工具,以及数据库的视图来制作直接SQL报表更加方便和容易理解,这种方法对于其他类型的报表开发也具有参考价值。
参考文献:
[1]金蝶软件(中国)有限公司.金蝶ERP-K/3完全使用详解[M]. 北京: 人民邮电出版社,2013: 217.
[2]叶玫,等.金蝶ERP二次开发(K/3 BOS)应用教程[M]. 北京: 人民邮电出版社,2014:121.
[3]田彬,等.SQL宝典[M]. .北京: 电子工业出版社,2013: 278.
收稿日期:2015-03-30
作者简介:李武韬(1972-),男,讲师,从事研究方向:计算机应用与教学
中图分类号:F 232
文献标志码:A
文章编号:1672-2434(2015)04-0022-02
A Case of Direct SQL Statements Based on
Kingdee K/3 BOS
LI Wutao
(School of Economy & Trading Management, Changzhou College of Information Technology, Changzhou 213164, China)
Abstract:Based on the given cases, this article expounds the descriptions in the secondary development of Kingdee K/3 BOS, Kingdee K/3 ERP direct SQL report, which is not only a direct written SQL statement, but also is becoming more convenient and easier to understand by adopting the K/3 database description generation tool, field description query tool to aid directly to generate SQL statements.
Key words:Kingdee K/3; BOS; direct SQL statement