SAP 开发环境搭建入门
自2006年毕业之后一直从事企业管理软件的开发与维护工作,期间经历了Windows Forms, ASP.NET Web Forms, WPF, ASP.NET MVC, AngularJS TypeScript等技术阶段。工作几年后有幸运进入一家规范化的ERP软件开发公司,接触并深入了解ERP这个行业。代码量从几千上万行的程序,直线上升到维护数百万行的ERP程序,从框架,应用逻辑,到运维。
有几点心得分享:
- 总所周知,ERP是MRP的高级阶段,号称是ERP软件包,必须要先是MRP软件,也即物料需求计划,制造资源计划。能根据需求(独立需求,相关需求)生成计划订单(Planned Order),再由计划订单生成采购订单或生产订单。连贯之处,一气和成。所以,系统并不仅仅上几个模块Sales, Purchase, Inventory就能号称ERP软件。用公式简单的标识
MIS = Sales + Purchase + Inventory
Finance = Account Receivable + Account Payable + General Ledger
Product Control = PMC + Shop Floor
ERP = MIS + Product Control + Finance
- ERP 还包含一些必备的功能。 基础数据 Master Data, 工作流 Workflow, 质量模块 Quality Control, 固定资产 Fixed Assets, 计划任务 Job,报表设计与开发 Crystal Report 等。这些附加的功能越多越好,是每次打单成交的关键。有时候客户就上看上了一些基础的想要的功能,才决定签合同合作。
一个偶然的机会,接触到了SAP相关的工作,自定义开发与SAP运维同时存在。客户要求将SAP中的部分数据导出到第三方的软件包中,经历业务运算后,再将数据返回(Post)到SAP系统中。
在项目上线之后,于是整理了一下项目中的经历,给正在入门学习SAP的朋友一点引导。
首先,要有一套SAP的真实软件环境,无论是虚拟机还是租用第三方账户。自己的虚拟机,可控性高一些,权限也大,遇到不可描述的问题,直接把英文的出错提示贴到Bing上,问题马上就有了答案。实在不行,可以把整个Client删了重来,奇怪的问题总算得到解决。用虚拟机进步快,操作动手能力要求高。
其次,SAP是解释型程序,内核是C语言开发,SAP ERP的代码是用ABAP开发。所有SAP ERP业务逻辑,单据,后台作业,从数据库表,到OOP class,method定义,都可以看到。部分支持定制。不过话说会来,想从SAP成千上万行的代码中学习ERP,是本末倒置。SAP超强的定制功能,代码量巨大,一个ME21N(Purchase Order 采购订单)功能,遍布了大量的代码,program, class. 很难从代码中学习到ERP的知识,反而会陷入到迷茫中。
笔者之前还接触到微软Dynamics AX 2012, 这也是一个开源ERP,业务代码完全开放,可以修改。
再次,SAP软件这么庞大,出一点BUG是可以理解的。总体稳定性可控,小部分功能有问题。遇到不可描述的问题,要去找SAP Note,用通俗的话说,就是打补丁。但是,习惯了微软技术文档的开放性,SAP Note是封闭的,要合作伙伴账户才可以看。SAP贵有贵的道理,平均一个账户5-20K,而且要按年付费。但是,广大学习SAP的朋友,是没有机会接触SAP Note的。这是学习上的绊脚石。按道理说,一点技术还封锁起来,还不让人学习了,真有点不可理解。从公司的角度来说,任何技术都是先开放,让大众接受,再封闭,圈起来宰羊。这是不可避免的发展道路。开源ERP 搞了这么多年,也没有几个能真正做起来的,Odoo的发展,技术文档也要收费。企业管理软件的发展,注定是这么个路线,先普及,圈一批用户,靠用户发展起来,构建技术护城河,再发展,直到垄断。世界500强绝大多数都在用SAP。
最后谈一下国产化的问题。国产ERP,金蝶,用友要替代SAP,从这么多年的经验来看,是没有办法替代的。两者根本不在一个数量级上,两者的适用性也不一样。
我学习SAP,把SAP模块划分成几个梯队,从基本的入手,再逐步扩大,逐步深化。
第一梯队: SD, MM, PP, CO, FI(AR + AP + GL) 这五个模块要熟练掌握。这里面的知识点非常多,从后台配置,前台Master Data, 业务数据Transaction,到 报表Information System,分析Report Analysis。我的体会是,要找一个练手的环境,对着书本做大量的练习。熟能生巧,不理解的时候先记下来,一回生,二回熟。等整个知识点串联起来的时候,卧,原来如此,赫然开朗。基础数据搭建好后,先跑流程,采购流程 ME21N->MIGO->MIRO, 销售流程VA01-> VL01N-> VF01,生产流程 CO01 –> MIGO –> CO11N –>MIGO。等流程熟练之后,再思考一下,采购模式,销售模式,生产模式,于是又衍生出一大堆的练习机会。
第二梯队:QM, PS, WMS, Workflow,Basis,ABAP。我是在这个阶段开始上手Basis的练习的。Basis能动手的知识点不多,大部分是遇到问题就Bing解决。这一阶段的很多功能,是在第一梯队的功能上,修修改改,于是就跑出个完全的新的东西,再出个报表,分析结果。有了前面的操作基础,这一阶段的内容明显好学习,进步很快。比如学习Workflow,就要知道如何把工作流应用于PO的审批中,如何设计直接审批或多层审批。如何定义后台Job,如何查看ABAP代码,并根据需求作出修改。如何将Excel基础数据导入到SAP中。
有了前面两个阶段的努力付出,于是乎可以进入学习SAP的第三阶段。去ITPUB中维护论坛问题,去B站参与直播,把遇到的问题记下来,向其他人学习。不断吸收整理前人的总结。工作中遇到问题,及时总结分享。
最后提一下SAP标准课程,内容实在是过于庞大,仅仅是压缩包就多达40GB,视频课程多于400GB,完全就是个知识的海洋。如何从这么庞大的库中搜索自己想要的内容,也是个不小的挑战。记住自己的目标,要掌握SAP系统,解决工作中遇到的问题。带着问题去看视频,看标准课程,看论坛博客。烂笔头胜过好脑经,多记,多看,多总结。