2014年 第 7 期
总第 683 期
财会月刊(上)
会计电算化
用好自定义报表,满足企业个性化需求

作  者
么秀杰

作者单位
(集宁师范学院经管系 内蒙古乌兰察布 010020)

摘  要

      【摘要】现有通用商业化软件不能充分满足企业个性化需求,财务人员可以利用软件平台工具,利用系统的方法掌握自定义操作,设计相关业务报表,满足企业的实际需求,降低企业信息化建设成本,提升信息化水平。
【关键词】自定义报表   数据关系   过滤条件

自定义报表不同于一般的财务报表,它是一种可以设置报表标题、表头、表体格式,定义报表数据来源,灵活定义过滤条件和显示、打印方式的自定义查询报表工具,可以根据企业管理要求设置内部管理分析报表。企业信息化建设初期,软件公司可根据企业需求对报表进行个性化调整,但是后期若不追加投资,新的个性化需求很难满足。如果财务人员掌握相关技能,自行设计自定义报表,可提高工作效率,减少信息化投资。本文以用友公司U872为例提出了利用自定义报表进行设计的详细方法。
一、解决方法
1. 掌握数据表的结构。下载用友U8普及版数据库字典.rar,内容包括:文档、视图、存储过程等,重点关注“模块文档”、“数据库表文档”和“数据库字段文档”。结合软件了解常用的几个模块中的数据表以及相关的字段。例如公共模块的部门、职员、科目、供应商;总账模块的科目表、期初余额表、凭证记录表;采购模块的采购订单;库存模块的收发记录主表和子表;销售模块的发货退货单主表和子表、销售发票主表和子表。
例如:发货退货单主表(DispatchList)中的字段包括SBVID —销售发票主表标识(通过此字段与发票关联),cSBVCode —销售发票号,cSOCode —销售订单号(选择销售订单后可建立关联),cCusCode —客户编码,bReturnFlag —是否退货,bSettleAll —是否关闭,iSale —是否先开票。
发货退货单子表(DispatchLists)中的字段包括:iQuantity —数量,iQuotedPrice —报价,iUnitPrice —原币无税单价,iNatUnitPrice —本币无税单价,iNatDisCount —本币折扣额,iDisCount —原币折扣额,iSettleNum —结算件数,iSettleQuantity —结算数量,iBatch —对应收发记录主表ID(批号(入库单ID号)),cBatch —批号,bSettleAll —是否关闭,RdsID —对应收发记录子表ID,iSOsID —销售订单子表ID(建立发货单分录与销售订单分录的关系),iDLsID —子表ID号(同AutoID)。
借助业务流程的逻辑顺序,分清不同数据表数据之间的对应关系,即哪个为主表,哪个为辅表。采用关联方式进行设置,从而进行数据组合,得到相关的报表。例如根据业务规则,填写发货单DispatchList后,审核生成销售出库单rdrecord(cVouchType="32" AND bRdFlag=0),销售出单审核后形成实际出库数量DispatchList.fOutQuantity,分别涉及到列示发货情况的发货退货子表和收发记录子表,可以判断发货退货单子表为主表。
2. 结合企业实际情况选取相关数据表。结合企业实际需求,了解关键数据的出处在哪个模块下的哪张数据表,然后进行设计。如果数据在一个数据库表中,只需要列出相关字段进行排序即可;如果需要跨越几个模块或者几个表进行数据采集,需要将相关的表都选取出来。
3. 进行条件设置。符合条件的数据与表中提供的数据一般存在着差异,数据库中的数据往往比需要的数据多很多,需要利用条件限定进行筛选。例如,收发记录子表的数据既包括采购入库数据,又包括销售出库数据,若只取销售出库数据进行成本核算,就需要加上约束条件,“收发类型”=“销售出库”。
4. 进行过滤设置。为便于数据查询,报表数据生成后应该设置过滤条件,进行查询范围的界定。还可以对字段的显示与否进行设置,添加非数据表项目进行表间计算,例如将毛利润的10%作为提成比例进行计算。
二、案例分析
内蒙古万德系统集成公司是本地一家较大的硬件公司,业务范围覆盖内蒙古整个地区,销售部按毛利润的一定比例计提奖金,毛利润=销售价-成本价(销售数据以回款金额计算)。由于执行行业销售,销售员掌握一手的销售信息,公司进货方式有两种,公司集中采购和销售员预定进行结合。本例中按照销售员的个人预定进行采购,成本管理采用个别计价,结合批次管理和出库跟踪入库。
业务需求分析:奖金计算的报表涉及到的关键数据包括:采购成本价格、销售金额、回款金额、提成比例。用友U8数据表中上述数据分别分布于收发记录主表和子表、发货退货单主表和子表以及销售发票主表表和子表中。部分辅助表包括:职员档案、存货档案、客户档案;提成比例按照常数项进行处理。
1. 添加对应的六张数据表及相关辅助表,设置数据关系。具体操作步骤如下。
(1)进入用友U8——业务系统——我的账表下,新建一张报表。根据业务需求分析,选取库存管理下的收发记录主表rdrecord和收发记录子表rdrecords;销售管理下的发货退货单主表DispatchList和发货退货单子表DispatchLists;销售发票主表Dispatchlist和销售发票子表Dispatchlists;公共表单下的存货档案Inventory、客户档案Customer、职员档案Person。
(2)主要数据表(收发记录主表rdrecord.和子表rdreocrds、发货退货单主表dispatchlist和子表dispatchlists以及销售发票主表salebillvouch和子表salebillvouchs)对应关系包括:rdrecord.id=rdreocrds.id;salebillvouchs.sbvid=salebillvouch.sbvid;salebillvouch.cdlcode=dispatchlist.cdlcode ——发货单号;salebillvouch.csaleout=rdrecord.ccode——出库单据号;dispatchlist.dlid =rdrecord.cdlcode——发货单主表标识;dispatchlist.sbvid =salebillvouch.sbvid ——发票主表标识;dispatchlists.idlsid =rdrecords.idlsid ——发货单子表标识;salebillvouchs.rdsid =rdrecords.autoid ——收发记录子表标识;salebillvouchs.idlsid =dispatchlists.idlsid——发货单子子表标识。辅助数据(存货档案、职员档案、客户档案表)作为辅助表与相关主表和子表的关系采用左关联进行连接,表示以业务单据为依据进行相关辅助表项目的列示,如图1所示。(3)选择相关字段并进行条件设置(图2)。选择各个相关字段,包括业务员、存货、销售日期、回款日期、销售金额、成本、回款金额等。需要注意的是,收发记录子表内包含有采购入库信息,应当剔除掉,只保留销售有关的数据,需添加限制条件RdRecord.cSTCode=1,考虑到销售时仅以回款金额进行计算,所以添加限制条件SaleBillVouchs.iExchSum>0。相应字段及公式参照见图2。
(4)运行生成SQL语句,对应生成数据库文件。SELECT RdRecords.iQuantity AS 数量,RdRecords.iUnitCost AS 单价,RdRecords.iPrice AS 金额,DispatchLists.iUnitPrice AS 原币无税单价,DispatchLists.iTaxUnitPrice AS 原币含税单价,DispatchLists.iMoney AS 原币无税金额,DispatchLists.iSum AS 原币价税合计,DispatchList.cDLCode AS 发货退货单号,DispatchList.dDate AS 单据日期,DispatchList.cCusCode AS 客户编码,SaleBillVouch.cSBVCode AS 销售发票号,SaleBillVouch.cPersonCode AS 业务员编码,SaleBillVouch.cCusName AS 客户名称,SaleBillVouch.bPayMent AS 现付现结标志,SaleBillVouchs.iExchSum AS 累计原币收款金额,Inventory.cInvName AS 存货名称,Person.cPersonName AS 职员姓名  FROM RdRecords INNER JOIN DispatchLists  ON RdRecords.iDLsID=DispatchLists.iDLsID INNER JOIN DispatchList ON DispatchLists.DLID=DispatchList.DLID LEFT JOIN SaleBillVouch ON DispatchList.cDLCode = SaleBillVouch.cDLCode INNER JOIN RdRecord  ON RdRecords.ID =RdRecord.ID INNER JOIN SaleBillVouchs ON DispatchLists.iDLsID= SaleBillVouchs.iDLsID LEFT JOIN Inventory ON SaleBillVouchs.cInvCode= Inventory.cInvCode LEFT JOIN Person ON SaleBillVouch.cPersonCode= Person.cPersonCode LEFT JOIN Customer ON SaleBillVouch.cCusCode= Customer.cCusCode WHERE SaleBillVouchs.iExchSum>0。 
2. 添加辅助数据(业务提成计算)。依据业务需求,业务提成比例为10%,业务提成=毛利润×10%,毛利润=销售回款金额-成本。需要添加系统没有的字段——业务提成,并输入公式,具体见图3。
3. 进行过滤设置。为方便查询,需进行查询过滤条件设计,可进行单一选项查询也可进行范围设定查询。通过定义过滤条件设定相关的数据来源、条件类型,过滤条件项下名称的输入,可以选择,也可以从数据表中复制。图4列示了两种方式,即参照U8窗体和自定义显示字段。
4. 进行验证。报表设置完毕,可在指定位置进行查询,通过按照业务员进行分组汇总可以得到指定的业务数据。查询结果如图5所示。
三、结语
通过系统掌握上述方法,可以有效降低自定义报表编制难度,主要利用业务逻辑即可了解相关数据之间的关系,使得企业财务人员掌握相关报表编制成为可能。最终提高企业的自主性和灵活性,提高企业效益,提升信息化水平。
主要参考文献
1. 黄辉.会计电算化.大连:东北财经大学出版社,2012
2. 陶建蓉,赵建彬.用友ERP-U872操作技巧.财会月刊,2012;31