论冶金企业SAP系统的二次开发技术
2013-04-18司海霞
司海霞
(马钢股份公司自动化工程公司,安徽马鞍山 243011)
1 前言
随着我国经济技术的发展,企业规模不断壮大,企业对其内部信息化的建设也日益重视,很多企业实施了ERP 系统,其ERP 系统多采用SAP 平台实施,虽然SAP 平台功能齐全但在ERP 实施中仍有不少应用是通过二次开发实现的。
2 SAP系统平台
SAP (Systems applications and products in data processing) 是国际上著名的标准应用软件公司,是ERP 思想的倡导者。SAP 的主打产品R/3 是用于分布式客户机/服务器环境的标准ERP 软件,主要功能模块包括:销售和分销、物料管理、生产计划、质量管理、工厂维修、人力资源、工业方案、办公室和通信、项目系统、资产管理、控制、财务会计。R/3 支持的生产经营类型是:按定单生产、批量生产、合同生产、离散型、复杂设计生产、按库存生产、流程型,其用户分布在航空航天、汽车、化工、消费品、电器设备、电子,食品饮料等行业。
SAP R/3 的功能涵盖了企业管理业务的各个方面,这些功能模块服务于各个不同的企业管理领域。在每个管理领域,R/3 又提供进一步细分的单一功能子模块,例如财务会计模块包括总账、应收账、应付账、财务控制、金融投资、报表合并、基金管理等子模块。SAP R/3 系统具有三个层次的客户端/服务器结构,包括显示层(提供用户界面接受用户交互)、应用层(系统处理及开发平台)及数据库层(存储数据及R/3 仓库对象)。SAP 所提供的是一个有效的标准而又全面的ERP 软件,同时软件模块化结构保证了数据单独处理的特殊方案需求。
目前很多大型冶金企业的ERP 管理采用的软件也是SAP 系统,虽然SAP 系统功能齐全,但在冶金企业中使用SAP 系统就显现出国外的设计思想与国内冶金企业的管理理念还是有出入的。国内冶金企业,特别是大型企业,组织结构较为复杂,管理理念有其行业特点,个性化需求SAP 系统的标准功能是满足不了的,但SAP 系统是个较为开放的系统,它向用户提供了客户化源代码开发窗口,SAP的开发语言是ABAP 语言,是一种面向特定应用的第四代编程语言。ABAP 第一次引入了“逻辑数据库”的概念,它在基本的数据库层提供了更高级的抽象,客户可以使用ABAP 开发语言对SAP 系统进行二次开发,以满足用户个性化需求。SAP 系统的二次开发包括功能开发和报表开发,报表开发是根据用户的需求将SAP 系统中的用户数据显示出来,功能开发涉及SAP 系统的功能实现,是一项较为复杂的二次开发,也关系到用户的业务需求能否实现。下面谈谈在冶金企业中如何进行SAP 系统的二次开发满足用户个性化需求。
3 SAP系统二次开发技术
SAP 系统二次开发技术灵活多样,本文介绍两种在项目实施中常用的开发技术:借用标准字段的开发及标准功能的延伸开发等。
3.1 借用SAP系统标准字段的开发
冶金企业对资金的需求量大,银行贷款较多,对每笔贷款进行自动计算利息及还款情况等统计管理是冶金企业不可缺少的管理流程,SAP 系统在这方面稍为逊色,满足不了冶金企业用户的需求,因为SAP 系统的财务模块是帐务处理系统,只能对每笔贷款做帐务处理,难以实现对贷款的利率变化及利息计算等贷款统计管理。银行利率经常变动,企业的资金管理部门每月要对每笔贷款进行应提利息的计算,在每笔贷款的还贷期间若遇到银行利率的变化,变化的利率及利率变动日期在哪里体现,这些都要通过对SAP 系统的二次开发解决。在二次开发中借用SAP 会计凭证中的一个字段:付款参考。这个付款参考字段存放贷款合同号,另外在SAP 系统中建立一个数据库表,关键字就是贷款合同号,其他字段如利率,利率起始有效时间,贷款名称等。通过自建数据库表的关键字段与SAP 会计凭证中的付款参考字段关联,在对每笔贷款做账务处理(做会计凭证)时,同步更新自建数据库表。自建数据库表记录了每笔贷款的第一次利率及日期,若以后遇到银行利率变动,只要在自建数据库表输入贷款合同号、新的利率及利率变动日期。通过自建数据库表的关键字——贷款合同号与贷款会计凭证的付款参考字段关联,这样对于每笔贷款的利率变化就能一一体现出来。企业的资金管理部门每月计算贷款利息时如银行利率发生变动,则按最新的利率进行利息计算,下面举例说明企业是如何计算利息的。
利息计算公式:贷款本金×计息天数×日利率。计息天数应判断起息日是不是在选择的日期区间内,(例如输入日期:2013 年02 月01 日-----2013年02 月28 日)若是在选择的日期区间内,计算应提利息的天数就等于最大区间日期(20130228)减起息日。若起息日小于最小区间(20130201),计算应提利息的天数就等于最大区间日期(20130228)减最小区间日期(20130201)。如起息日大于最大区间日期(20130228)则不计算应提利息。若起息日介于区间日期,计算应提利息的天数就等于起息日减最小区间日期(20130201)。到期日小于20130201 则不计算利息。到期日介于20130201 和20130228,计算应提利息的天数就等于到期日减最小区间日期(20130201)。在计算应提利息的天数中,如银行利率发生变动,则要分别计算利息,若利率是在2013 年02 月10 日发生变动了,计算利息时要分段计算,2013 年02 月10 日以前的利息按旧利率计算,2013年02 月10 日以后的利息按新利率计算。
通过二次开发可以实现对每笔贷款的利息计算,还款情况等进行统计。这样不但将贷款的帐务处理与贷款的统计管理有机地结合起来,而且也极大地提高了资金管理效率。过去企业的还款利息都是被动地接受银行提供的数据,现在企业可以预算贷款利息,能够合理地安排资金使用计划,在资金管理中处于主动地位,通过在实际工作中的运用,受到了企业资金管理人员很高的评价。由此可见,二次开发在项目实施中的重要性。
上述的SAP 系统二次开发采用的做法是借用SAP 系统的标准字段存放用户需要的内容,因为用户的个性化需求在SAP 系统中得不到满足,通过借用SAP 系统的标准字段能很好地解决用户的需求在SAP 系统中得到体现,能够将SAP 系统的标准功能与二次开发有机地结合起来,满足用户的个性化需求,但在开发文档中一定要注明借用字段的具体含义,便于今后的开发维护。
除了借用SAP 系统的标准字段进行二次开发外,还可以采用SAP 系统标准功能延伸开发。
3.2 SAP系统标准功能的延伸开发
冶金企业的在建工程通常是一项较为复杂的工程,涉及面广,专业分工较多,工程核算要按在建工程的性质分类统计,一个在建工程的分类有:土建、设备、设备安装、材料、总包、其它等。SAP 系统的标准功能是这样处理的:将在建工程以内部订单的方式处理,在建工程的分类对应了不同的内部订单类型,如:土建投资订单、设备投资订单、设备安装投资订单、材料投资订单、总包投资订单、其它投资订单等。在创建一个在建工程内部订单时要同时创建六个内部订单。SAP 系统的标准功能一次只能创建一个内部订单(事务码:KO01),多个订单要重复操作。但在实际工作中用户提出:创建在建工程内部订单时要能同时创建其他的六个内部订单,避免重复劳动,提高工作效率。用户永远是对的,用户的需求可以通过二次开发实现。在SAP 系统里有个拷屏功能(事务码SHDB),它的作用就是能对SAP 系统标准功能的操作过程进行录屏,并产生相关的一段代码,这段代码可以植入二次开发的程序中为开发人员所用。
开发人员利用这段代码对照用户的需求,将需要同时创建的订单参数写入代码中,就能满足用户的要求了。
以上两种方法都是需要开发人员写代码的,但在SAP 系统中可以通过后台配置不需写代码也能满足冶金企业用户需求的。前面我们说过大型冶金企业组织结构较为复杂,一个大型冶金企业下辖几十个二级工厂,各个工厂都有其较为独立的财务核算,但所有的二级工厂都是在一个账套中进行核算,对于银行科目,财务上要求各个工厂使用各自的银行科目,不能串用。这就要求在做财务凭证时,对银行科目要控制使用范围,在SAP 系统可以通过后台配置在会计凭证中的确认中,填入业务范围(各二级工厂)和相应的银行科目即可。
SAP 系统平台不但功能齐全,其二次开发方式也是灵活多样的,除了上述的方法外还有调用BAPI、SAP 功能出口等多种方法,限于篇幅作者就不一一作介绍了。在实际工作中具体采用何种开发方式取决于用户的需求及开发人员对SAP 系统的熟悉程度。
4 结束语
任何一个软件都不可能完全满足所有用户的需求,二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到用户想要的功能,一般来说都不会改变原有系统的内核。