【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

摘  要

企业要想赢得市场竞争,就要以低廉的成本生产优质的产品。成本是反映企业工作质量的综合经济指标。ERP系统集信息技术与先进管理思想于一身,成为现代企业的运行模式,反映了时代对企业合理调配资源的要求。成本管理系统是ERP系统的一个核心部分。现代企业社会环境和技术环境等内外部环境的变化,使得与传统企业环境相适应的成本管理体系越来越不能满足企业管理的新需求,ERP与作业成本管理的整合研究是理论发展及实践应用的需要。这篇文章将ERP成本计算方法与作业成本法相结合,经过对案例企业的现状和需求进行分析,采用面向对象的统一建模语言(UML)进行设计,使用Visual Studio与MS SQL Server作为开发工具,实现了一个简易和实用的作业成本核算系统。在这个的系统中,还添加了向SAP Business One系统传输成本数据的功能。

关键词:成本核算系统,作业成本法,企业资源计划,统一建模语言,Visual Studio,SAP Business One

1. 需求分析

1.1 案例企业现状

案例企业是一家外资现代制造企业。产品制造主要依靠机械化的生产手段,工艺比较连续,制造周期短暂。生产组织方式为大批量重复式的。生产步骤可以划分为多个工序。

企业应用SAP Business One(以下简称SBO)作为ERP系统主体,其功能模块主要包括财务会计、采购管理、销售管理、库存管理、物料需求计划、生产订单等,这些功能已在企业的生产管理、物资、营业和财务等部门得到使用,基本实现了企业各部门间物流与资金流的集成管理。SBO是一套定位于成长性企业的通用型ERP软件包,其商业逻辑比较简单,标准功能相对单一。SBO中没有提供专门的产品成本核算模块,而SBO的优点在于其提供了应用程序接口(API)及工具,支持利用高级语言进行二次开发,或者与第三方系统批量交换数据。SBO希望借此来满足客户在生产制造、成本管理这些个性化需求突出的领域的应用需求。

因此,企业迫切地需要设计开发一套精细、灵活、友好的生产成本核算系统。

1.2 案例企业目标系统总体需求

为了真正贴近现代企业的成本管理特点和需求,新系统不仅是要克服原有成本核算工具细枝末节上的缺陷,更要在系统结构上反映出ERP成本核算算法与先进的作业成本算法相融合的思想和方法。

新的“作业成本核算系统”应包含以下主要功能:

  • 定义成本核算体系的功能。

成本核算体系的定义是成本计算的基石,决定了成本核算的框架结构。体系的定义具体表现为一系列的系统基础参数设置功能。体系定义功能,应当基于作业成本算法、BOM成本滚动计算法,引入资源、作业、动因、BOM等对象。先进的系统结构将更具灵活性,为适应企业未来成本核算方法调整和ERP系统整体升级埋下伏笔。当然,也要考虑到作业成本方法的系统实施要求企业进行必要的业务流程重组(Business Processing Reengineering),这不是一蹴而就的事情。因此,成本核算体系定义的功能,还要尽量作到兼容企业现有的成本核算方法。

  • 输入审核原始资料的功能。

原始资料的收集功能是系统数据的入口。作为一个独立完整的系统,应当具备成本计算所需动态原始资料的输入功能。在ERP环境下,原始数据可以从其他系统(如生产管理、库存管理、财务会计等)中导入,而在输入查询功能中可以对导入的外部原始资料进行必要的审查和调整。

  • 计算成本的功能。

成本计算功能是成本核算系统的核心工作。应将ERP滚动成本算法与作业成本算法进行有机结合,成本费用归集与分配过程应当是根据不同的动因,先将资源消耗分配到作业,再将作业成本分配到相关产品。然后,根据BOM描述的产品结构来逐层累计各级半成品的成本,最终汇总得到产成品的总成本。此外,当有期末在产品存在时,还要将产品成本在完工入库品与在产成品间进行合理分配。

  • 成本计算结果的反馈功能。

成本计算结果的反馈功能是系统数据的出口。一方面,系统要提供全面、灵活地成本结果查询功能,具体应包括反映资源、作业、动因、BOM等基础设置和原始资料的报表,还要包括反映成本计算中间结果和最终结果的报表;另一方面,通过SBO的接口工具,将产品成本的计算结果批量传入到库存管理等其他模块中。

此外,系统应当满足可用户管理、界面友好、可靠、高效、存储空间充足等其他一些功能需求。

2.系统设计

2.1 用例模型

通过建立系统用例模型来分析和描述系统功能需求。总体上,使用成本核算系统的角色主要有成本会计、成本中心、企业管理者和外部ERP系统;系统的基本的用例有:①定义成本核算体系,即由成本会计从企业的生产经营特点、管理要求出发,根据企业特定成本核算方法下的有关资料,在系统中完成成本核算的基础参数设置;②收集原始资料,即各成本中心将其与计算成本有关的,反映资源消耗、作业进展、产品流动等信息的单据合理地输入到系统中;③计算产品成本,即由成本会计在指定的成本核算体系下,对所收集到的正确完整的动态原始资料,执行一系列汇总、分配等计算处理,以作业为中介将资源耗费分配到产品成本的过程;④反馈成本结果,即向企业管理者提*品成本的计算结果,以供分析考核。通过数据接口功能,系统向外部ERP系统(例如SBO的库存管理系统)提交计算出的产品成本结果。当然也可以通过数据接口共享外部ERP系统的相关原始资料。作业成本核算系统总体Use Case 图见图 3-2。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

      下面进一步对系统中核算体系定义、归集原始数据、产品成本计算、反馈成本结果等关键用例进行分解细化。

  • 定义成本核算体系。

成本核算体系的定义主要由成本会计完成。其具体用例包括:第一,定义核算体系编码,即可以建立多个核算体系来完成不同基础设置参数的产品成本核算,例如正式的与模拟的成本体系;第二,定义计算项目编号,即在同一核算体系下,可以进一步根据不同时期、不同类型的原始资料分别来计算和比较不同项目间的成本,例如标准成本与实际成本的比较;第三,定义动因,即描述可能的资源动因或作业动因,例如机时、运送次数等;第四,定义资源,即描述生产中所使用资源种类,例如材料费、人工费等;第五,定义作业及其使用的资源,即描述企业的主要作业形式,例如以工序为作业,还应进一步为每一作业指明所用资源;第六,定义物料,即对产品或材料进行编码,还应进一步为每一产品指明所涉及的作业;第七,定义BOM,即描述产品结构等信息;第八,定义产品流转项目,即描述产品在工序间转移、完工入库过程中可能的来源与去向。成本核算体系的定义Use Case 图见图3-3。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

  • 收集原始资料

在系统中收集成本中心所发生的动态原始资料,这些资料具体包括:各种资源的消耗数额、动因作业数量、产品流转数量等。所收集资料应符合成本核算体系定义的基本要求。原始资料的收集审核Use Case 图见图3-4。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

  • 计算产品成本

成本会计执行产品成本计算过程。该过程根据核算体系的定义,对收集到的原始资料,按照作业成本法和滚动成本法的基本步骤来分配、计算产品成本。具体步骤:首先,根据资源动因为分配资源耗费到作业;其次,再根据作业动因分配作业成本到产品;然后,根据BOM定义,滚动计算得到各级产品的累计成本;在滚加产品成本时,还有根据半成品工序转移数量、期末在产品数量等流转量,将产品成本在其不同流转项目间进行分配计算。成本计算结果可以被长期保存下来。成本报表直接以计算结果为数据来源。产品成本计算过程Use Case 图见图3-5。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

  • 反馈成本结果

企业管理者、成本会计、成本中心、外部ERP系统都需要查询成本计算结果。成本结果主要以报表查询的形式来提供,基本的报表类型包括:第一,资源消耗、动因业务量、产品流转业务量等原始资料的汇总报表;第二,成本计算中间结果和最终结果明细和汇总报表,例如作业成本、产品成本报表。系统通过数据接口向外部ERP系统(库存管理系统)提交产品成本结果。反馈成本结果Use Case 图见图3-6。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

 

2.2 静态模型

系统静态模型主要包括包图、类图等,用于说明系统中对象的属性及相互关系等信息。

本部分主要针对成本核算的关键商业逻辑进行描述和分析,其大体可以分为4个包:核算体系、原始数据、成本计算、计算结果。其中“核算体系定义”包是一个基础包,其余的“原始资料”包、“成本计算”包、“计算结果”包都依赖于“核算体系定义”包。而“成本计算”包将以“原始资料”包为数据来源,经过它的处理,生成为“计算结果”包。系统包图见图3-7。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

将包进一步展开,其中主要包括以下类:①属于“核算体系定义”包的类:动因、资源、作业、作业所属资源、物料、BOM、产品所属作业、核算体系等;其中BOM父件和子件为组合聚合关系。②属于“原始资料”包的类:单据、资源单据、动因单据、产品流转单据等;其中单据类是一个父类,与资源单据等子单据类为泛化关系;③属于“成本计算”包的类是成本计算项目;成本计算类实例汇总单据类实例的数据,生成计算结果类的实例。④属于“计算结果”包的类:资源总额、动因总量、产品流转总量、作业成本、产品及其流转成本等,它们的实例都是执行“成本计算项目”的“成本计算”方法生成的结果。系统主要类见图3-8。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

2.3 动态模型

动态模型主要通过状态图、活动图、时序图、协作图等形式来描述系统中对象间的动态行为和控制结构。

这里以活动图来描述系统整体流程。系统整体的活动图见图3-9。在指定的成本核算体系的前提下,成本计算以完整的原始资料为输入,计算完毕后输出成本计算结果。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

下面以动态模型图来进一步描述关键业务对象“核算体系定义”和“产品成本计算”。

 ① 用协作图来描述“核算体系定义”中各对象间的交互关系。

成本核算体系定义的协作图见图3-10。首先,要定义计算体系。其次,依次定义动因、资源、作业、作业使用资源、物料主数据、成本物料清单(BOM父件、子件)、产品使用作业、产品流转项目,最后还要定义计算项目;其中,作业使用资源、BOM、产品使用作业、产品流转项目、计算项目都要在特定的计算体系实例下建立。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

② 以时序图来描述“产品成本计算”各对象间的动态合作关系。

当选择一个成本计算对象实例后,可以启动成本计算方法,其过程是:第一步,汇总资源总额、动因业务总量、产品流转总量;第二步,根据资源动因量将资源总额分配、生成作业成本;第三步,根据作业动因将作业成本分配到产品上;第四步,一方面要根据产品流转量分配产品成本到结转完工品、在产品的成本,另一方面要通过BOM滚动计算来累计低层半成品成本,进而取得包含本层增量成本和低层累计成本的最终产品的总成本。产品成本计算过程的时序图见图3-11。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

2.4 物理模型

物理实现模型通过组件图、部署图等,描述系统实时的一些特性,主要包括源代码的静态结构和运行时刻的实现结构。

  • 系统组件图

系统组件图见图3-12。系统通过主界面及其包含的登录窗口、命令菜单栏、数据窗口、系统消息窗口等用户界面组件来与用户实现交互信息。用户界面组件通过成本计算数据对象、用户管理数据对象来访问和更新数据库中的成本数据、用户账号信息。系统通过SBO接口组件实现与SBO的数据交互。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

  • 系统部署图

在体系结构上,系统采用Client\Server两层分布式体系结构。两层结构简单,可以提高性能。客户端包含商业逻辑和用户界面,服务端为数据库。系统部署图见图3-13。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

 

3.系统实现

3.1 系统实现概述

在系统设计蓝图的指导下,通过选择适当的工具和手段,经过了配置环境、创建数据库、编写程序代码、数据准备、模拟测试、制订规程、培训用户、系统切换等一系列工作,才得以交付出一个真实可用的系统。

3.2系统开发运行环境

按照客户机/服务器模式的体系设计来搭建了硬件及操作系统环境。基本配置情况如下:在服务器端,选用IBM System X作为主机,操作系统为Windows Server 简体中文版;数据库系统为Microsoft SQL Server简体中文版;在客户端,硬件为商用PC机,例如DELL OPTIPLEX,操作系统为Windows 简体中文专业版。网络连接为100M 带宽局域网。

3.3 系统数据库结构

在数据库设计上,遵照关系数据库原理,要保证数据的独立性和完整性。系统数据库包括大约20余个基本表、40多个视图以及其他一些数据库对象。作业成本核算系统的类在数据库层面就映射为一个或几个相关的基本表及其视图。系统主要数据表见图4-1。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

3.4 程序代码结构

系统程序代码主要由包含Main()函数的标准模块、主界面窗体、数据对象窗体、数据对象类模块等组成。下面以“成本计算项目”类对象的方法:成本计算函数为例,对其代码结构进行简要说明,这一函数完成了成本核算系统的核心任务。

函数整体为顺序结构。实际上,函数中大部分语句是执行了一系列的SQL事务,即按设计的算法步骤,从数据库中读取源数据对象的记录集,对之进行汇总、分配计算后,再将获得的结果记录集写入到相应的目标数据对象中。具体说,可大体分为三个大的阶段:汇总单据、作业成本分配、BOM产品成本滚动计算。分步来说,第一步,分别汇总资源、动因、流转业务数额。第二步,实现先将汇总的资源分配到作业,再从作业分配产品。第三步,根据BOM滚动计算产品成本,为了自下而上逐层累计半成品成本,使用了迭代结构。成本计算函数的代码结构见图4-2。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

3.5 系统功能模块

系统实现的功能模块包括系统管理、成本核算两大部分。系统管理功能主要包括主窗口、工作菜单窗口、系统消息窗口、用户管理等功能。成本核算功能是系统商务逻辑的主体,包括体系定义、单据输入、成本计算、成本报表及接口几大部分。系统功能模块图见图4-3。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

下文就主要功能模块分别进行描述。

3.5.1 系统主界面

在用户界面上,设计遵循以下原则:可视性和可支付性;努力保持统一;为频繁使用的用户提供快捷方式;提供信息反馈;提供简单的错误处理;允许方便地进行操作回滚;降低短期记忆回忆。

系统的主界面是一个MDI窗体,其构成元素包括:①命令菜单:系统菜单、工作菜单、系统工具栏,用于启动具体的系统管理功能、成本核算功能项目。②数据窗口区域:用于显示多个数据窗体。③系统消息部件:系统消息窗体、状态栏,用于显示系统反馈给用户的消息。

系统主界面见图4-4。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

3.5.2 用户管理

系统提供用户管理功能来添加用户。在启动成本核算系统客户端时,会首先要求操作者以有效的用户身份和密码进行登录。登录操作次数是有限制的,而且登录活动会被系统记入日志。用户登录窗体见图4-5。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

3.5.3 成本核算体系定义

体系定义功能用于管理成本核算的基础设置。首先要建立成本核算体系对象,每个体系对象下可以设置不同的参数组合。这些参数对象包括作业使用的资源、产品使用的作业、BOM、产品流转项目等。在同一体系对象下,可以定义多个计算项目对象,用于计算不同会计期间、动态数据来源的产品成本。由于共享同一体系下的基础设置参数,所以不同计算项目对象之间的成本计算结果具有可比性,可以通过报表查询。成本核算体系定义见图4-6。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

3.5.4 成本原始资料输入

原始资料输入功能为成本计算提供素材,它以单据为对象输入和查询成本计算的各项动态数据。单据分为资源消耗类单据、动因业务量类单据和产品流转业务量类单据。单据输入前,要指定所属于的成本计算项目对象。原始资料输入查询功能见图4-7。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

在单据编辑操作上,系统为用户提供了快捷的工作菜单、统一的命令工具栏、对象目录列表、流畅的属性编辑区域、资料参考功能和互动的提示消息。单据编辑功能见图4-8。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

3.5.5 成本项目计算

成本计算项目对象作为成本计算的单位,提供了成本计算的方法。在成本计算数据窗体中,只需轻点“成本计算”按钮,便可自动完成具体计算工作。计算过程中提供了实时、友好的信息反馈。这些信息包括任务进度条、消息窗口日志和人性化的卡通图形提示等。成本计算过程功能见图4-9。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

系统计算成功完成时会显示一张“笑脸”,否则,检查到错误,就会亮起红灯。成本计算过程错误消息见图4-10。成本可重复计算,结果不会叠加。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

3.5.6 成本报表

成本报表对象集合向用户汇报成本计算的结果。系统提供的基本报表对象类型包括物料清单报表、资源消耗总额报表、资源消耗明细报表、动因及流转业务量汇总表、作业总成本报表、作业成本明细报表、产品总成本表、产品成本(作业)报表、产品成本(资源)报表、产品成本明细报表等十余种。成本报表体系见图4-11。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

成本报表数据窗体提供了查询过滤条件对话框,在BOM报表中还提供相关产品成本级联查询的方法。生成的报表字体可以调节,报表内容可以方便地打印,也可以另存为EXCEL文件格式。报表级联查询、打印预览见图4-12。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

报表输出到EXCEL文件格式见图4-13。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

3.5.7 SBO数据接口

作业成本核算系统提供的数据接口用于与外部的ERP系统进行数据交换。这里以传输产品实际库存成本到SAP Business One的库存重估业务(Material Revaluation)为例进行了实现。库存重估业务用于调整库存产品成本价格。

在实现机制中,使用了SAP Business One附带的数据接口(DI API)。SBO通过DI API 开放了其数据对象,可被用来独立地安全地访问其数据库,以便其和第三方的系统连接,扩充其功能。而Data Transfer Workbench是SBO提供的封装了其DIAPI的数据传输工具,该工具可以通过Excel格式的模板来很方便地批量导入数据。数据接口的实现机制示意图见图4-14。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

具体操作过程为:作业成本核算系统先准备好符合SBO数据导入模板规范的库存重估单据数据实例文件,然后调用SBO提供的数据接口工具,将数据自动推送到SBO库存管理系统中。SBO接口操作过程示例见图4-15。

【案例】SAP Business One 基于作业成本法的产品成本模块的设计与开发【成本会计】【成长性企业】【二次开发】

4 系统实施要点

“三分软件,七分实施。”为保证新旧系统顺利切换,除了做好需求分析、系统设计、程序开发以外,还应做好以下项目几个方面的实施工作:

培训。培训应贯穿于整个实施的全过程,根据不同对象、不同内容要设定和完成不同的培训任务。培训是提高企业员工素质的重要手段,也是成功实施的基本保障。

数据准备。如果输入的数据是“垃圾”,那么输出的数据也必然是“垃圾”。因此,在充分理解各项数据的具体要求后,必须保证输入到系统的各项数据的准确性和合理性,同时还要保证数据的及时性,要按要求做到“日清日结”。

模拟测试。为了防范风险,在不同阶段,根据不同的目的,要做好系统的模拟测试工作。例如,在代码编写阶段,就要进行单元测试、集成测试,可以根据软件设计逻辑进行白盒测试,也可以使用边界值进行黑盒测试;在实施阶段,也要进行反复地模拟运行,新旧系统的并行测试等工作。

规程与准则。ERP系统是一种规范化和条理化的管理信息系统。必须结合企业实际情况,制订出一套系统的工作准则和工作流程(policy and procedure)。

 

5 总结

本文参考了作业成本法理论和ERP滚动成本计算原理,尝试了将这两种方法整合在一起来为案例企业开发一个“作业成本核算系统”。在软件设计上,选择了面向对象的方法,采用UML语言,使用用例图、包图、类图、活动图、协作图、时序图、组件图、部署图等模型详细分析、设计了成本系统。最后,通过Visual Studio和MS SQL Server来实现了系统。

新的作业成本核算系统,力求从系统架构设计上来解决了旧系统的种种弊端。新系统提供了灵活成本核算体系定义、完整的数据收集功能、清晰的成本计算过程和比较丰富的报表模板。

新系统的设计和开发主要着眼于产品成本核算的这个基本问题。仅就成本核算而言,新系统提供了一个良好的架构和基本的功能,当然针对企业细致的成本核算工作,尚有许多细节需要完善。诚然,如前所述,成本管理的内容远不止于此。在ERP环境下,成本系统还要进一步研究和实现诸如成本控制、分析、预测等深度应用。

以上

祝你开心

 

上一篇:SQL题与解析


下一篇:一个或多个listeners启动失败问题