SAP
SAP 是一家通过业务工程成功地集成信息技术的公司 ,SAP( System, Applications, and Products in Data Processing,数据处理的系统、应用和产 品)。SAP 公司是 ERP 思想的倡导者,成立于 1972 年,总部设在德国南部的 Walldorf。SAP 的主打产品 R/3 是用于分布式客户机/服务器环境的标准 ERP 软件,SAP 所提供的是一个有效的标准而又全面的 ERP 软 件,同时软件模块化结构保证了数据单独处理的特殊方案需求。 目前,SAP 在 120 多个国家和地区拥有 17,500 多家客户、44,500 多个系统 安装点、1000 万名最终用户,世界 500 强 80%以上的公司都在使用 SAP 的管理方 案。
SAP 进入中国已经有些年头,在近年,实施SAP的公司越来越多,尽管SAP本身提供了相当强大的可配置功能,但是由于企业复杂的业务背景,特别是对各种报表的需求,依旧免不了二次开发。
学习 SAP,如果要说难,难就难在国内市场上极少哪怕是介绍一个模块详细操作释疑的书籍,广大的SAP用户只能是自己摸索学习,即使参加了一些培训,可能起到的作用依旧有限,毕竟各培训教师自编的教材参差不齐水平也不一。
SAP 顾问行业一度也是高薪标志,做 SAP 顾问需要什么条件究竟需要多长时间磨练,这是广大立志于 SAP 行业的读者经常困惑的问题。如读者有一定的编程数据库和企业运作经验,做 ABAP 顾问三个月就足够,视具体情况而言,可能更长,甚至更短,事实上有相当部分朋友做到了这点.。
SAP R/3 系统概述
SAP R/3 是一个基于客户/服务机结构和开放系统的、集成的企业资源计划系统。R/3应用软件采用模组化结构,它们既可以单独使用,也可以和其它解决方案相结合。从流程导向的角度而言,各应用软体间的整合程度越高,它们带来的好处就越多。SAP系统的功能模块覆盖了企业的财务、项目管理、采购、生产计划、销售、人力资源等众多模块。 (如图所示)
财务会计(FI):应收账款、应付账款、总分类账、合并、投资、基金、现金等;
管理会计(CO):利润中心、成本中心,产品成本、项目管理、获利管理分析等;
人力资源(HR):薪资、差旅、工时、招聘、发展计划、人事成本等;
物料管理(MM):采购、库存管理、MRP、供应商评价等;
项目管理(PS):项目计划、预算、能力计划、资源管理、结果分析等;
销售与分销(SD):销售计划、询价报价、订单管理、运输发货、发票等;
设备管理(PM):维护及检测计划、单据处理、历史数据、报告分析等;
生产计划(PP):工厂数据、生产计划、MRP、能力计划、成本核算等;
质量管理(QM):质量计划、质量检测、质量控制、质量文档等;
SAP R/3 系统具备以下功能和主要特点:
(1)功能性:R/3 以模块化的形式提供了一整套业务措施,其中的模块囊括了全部所 需要的业务功能并把用户与技术性应用软件相联而形成一个总括的系统,用于公 司或企业战略上和运用上的管理。
(2)集成化: R/3 把逻辑上联的部分连接在一起。重复工作和多余数据被完全取消, 规程被优化,集成化的业务处理取代了传统的人工操作。
(3)灵活性:R/3 系统中方便的裁剪方法使之具有灵活的适应性,从而能满足各种用 户的需要和特定行业的要求。R/3 还配备有适当的界面来集成用户自己的软件或 外来的软件。
(4)开放性:R/3 的体系结构符合国际公认的标准,使客户得以突破专用硬件平台及 专用系统技术的局限。同时,SAP 提供的开放性接口,可以方便地将第三方软件 产品有效地集成到 R/3 系统中来。
(5)用户友好:图标与图形符号简化了人机交互时的操作。统一设计的用户界面确保 了工作人员能够运用同样的熟悉的技术从事不通的工作。
(6)模块化:R/3 的模块结构使用户既可以一个一个的选用新的实用程序,也可以完 全转入一个新的组织结构体系。
(7)可靠:作为用户的商业伙伴 SAP 始终不断地为集成化软件的质量设立越来越多的 国际标准。
(8)低成本高效益:信息处理是取得竞争优势的要点之一。当竞争加剧时,企业必须 更加努力地获取其市场占有量。这就要使用高度集成化的数据处理软件,而 R/3 正是这种软件的优秀典范。
(9)国际适用:R/3 支持多种语言,而且是为跨国界操作而设计的。R/3 可以灵活地 适应各国的货币及税物要求。
(10)服务:R/3 系统实施过程中,用户将得到 SAP 技术专家的全面支持与服务,包括 组织结构方面与技术方面的咨询,项目计划与实施方面的协助,以及培训课程
ABAP
ABAP(Advanced Business Application Programming)语言是一种高级商用编程语言,是面向对象语言的一种。经过不断的发展,现在的版本为 ABAP/4。ABAP 语言支持封装性和继承性。封装性是面向对象的基础,而继承性则是建立在封装性基础上的主要特性。在SAP R/3 系统中,很多应用程序都是通过 ABAP/4 语言编写的。ABAP 语言是整个SAP系统的基础开发者工具和技术平台,包含事件驱动(Evet-Driven)、机制和模块化技术(Modularization)、完整的面向对象概念及实现方法(Object Oriented)等。
严格地讲,ABAP/4不仅仅是一个开发工具,而且是一套完整的client/server开发环境,这很好理解,微软的Visiual Studio是一开发环境,VB,VC++等是开发工具。ABAP开发环境包含支持程序开发的一些函数和包等。
如图,是SAP开发环境的一个三层架构的例图,三层(多层)的概念也不新鲜,比如在安装SAP 时也可将 DB instance 安在一台 server, Central instance 在另一台所谓的 Application server(我想这应是相关 SAP 基础系统包括各种应用程序所在),而通常客户端安装的 SAP Logon Front End,SAP会话管理器等是所谓的表示层,它通过TCP/IP,SAP 演示协议或 RFC 和应用服务器进行数据传输,用户看到的只是处理后的数据返回。
和Delphi的三层逻辑相近,在应用层包含多个组件象 ABAP 开发平台,身份验证,系统管理维护等用以处理会话,更新,排队,网关,数据层处理 native 和 Open SQL 等(这是从内部机制方面看),SAP各模块应用的业务逻辑都在应用层被处理(从用户角度)然后结果被返回。
ABAP运行在哪
所有的 ABAP 程序都驻留在 SAP 数据库里。他们不像 Java 或者 C++ 程序那样存储在一个单独的外部文件里,在数据库里所有的 ABAP 代码都以两种形式存在:可以用 ABAP workbench 查看和编辑的源代码和由 ABAP 运行环境载入和解释的“编译”代码(技术上更精确地说是“产生”代码)。当一段 ABAP 源代码第一次被调用时会隐含的进行代码产生。如果稍后源代码改变了或者程序访问的对象改变了(比如数据库的表添加了新的字段),产生代码就会自动重新产生。
ABAP 程序在运行时系统(SAP核心的一部分)的控制下运行在 SAP 应用服务器里。运行时系统负责处理 ABAP 语句,控制显示的逻辑序列和响应事件(比如,用户按一下屏幕上的一个按钮)。ABAP 运行时系统的一个关键组件是数据库接口,它把 ABAP 的数据库无关语句(“开放SQL”)变成底层数据库管理系统可以理解的语句(“本地SQL”)。数据库接口处理 ABAP 程序和关系数据库之间所有的通信;它也有一些其他的作用,比如把经常访问的数据缓存到应用服务器本地的存储器里。
ABAP程序类型
ABAP/4语言所开发的程序主要分为应用程序和其他程序两种。
(1)应用程序类型。
- 可执行程序(Executable Program,类型代码 1):整个程序由 Report 关键字语句进行引导,可以包含自定义的屏幕,在 ABAP 编辑器中进行编辑,并可直接在 ABAP 编辑器中执行。此外,还可以通过 Submit语句或者分配报表事务代码来运行。
- 模块池(Module pool,类型代码 M):出案件时由系统自动生成,由PROGRAM 关键字进行引导,一般包含程序自定义的屏幕和对话模块,必须通过事务代码运行。
习惯上,应用程序往往是按照报表程序和对话程序(又称动态程序、事务程序)进行划分的。在可执行程序中可以处理报表事件,也可以加入屏幕和对话模块,而模块池程序一般只用于事务程序的设计。
报表程序:报表程序用于分析数据库表中的数据,分析的结果可显示在屏幕上或发送到打印机上。逻辑数据库支持报表程序,它是一种特殊的 ABAP/4 程序,使开发者不必编码即可对所有的数据库进行访问。
对话程序:对话程序组织为包含对话模块的模块池。每个动态程序(由一个屏幕及其流逻辑组成的“动态程序”)都基于一个 ABAP/4 对话程序。流逻辑包含对 ABAP/4 对话模块的调用。
(2)其他程序类型。
其他程序不能直接执行,但这种类型的程序可作为代码容器,为 ABAP 程序提供各种各样的模块化代码单元。主要有以下几种类型。
-
功能组(Function groups,类型代码 F):由 Function-pool语句引导,包含一个或多个功能模块,可包含自己的屏幕,一般不能直接运行功能。功能模块是模块化的代码段,不能用来直接执行,而需要在普通程序中调用。
-
ABAP类库(Class pools,类型代码 K):由 Class-pool语句引导,是系统 ABAP对象类和多个局域类。类库在 ABAP 工作台工具 Class Builder进行创建。
-
ABAP 接口库(Interface pools,类型代码J):由 Interface-pool 语句引导,与类型K程序相似,用于定义ABAP对象的接口,可被人以全局类和局部类实现,不能直接运行。
-
子程序池(Subroutine pools,类型代码 S):由 Program 语句引导,包含一个或者多个程序代码模块或类方法,允许被普通程序调用,不可包含自定义的用户屏幕,在ABAP编辑器中进行编辑。
-
类型组(Type Groups,无类型代码):由 Type-pool语句引导,在数据字典中定义,不包含任何屏幕和处理块,用于定义全局数据类型。
-
包含程序(Include Programs,类型代码I):不需要任何语句引导,也无须包含完整的处理块。无须独立编译,包含程序只是代码复用,在 ABAP/4 中编辑,可直接插入其他程序中。包含程序可通过 Include语句被多个程序引用,与其他程序之间不存在参数接口。
ABAP开发环境的建立
SAP行业特别是早些年是个被异化的行业,人们可看到某些人出于经济目的铺天盖地的对ERP不正确的宣传,这同样反应在IT各行业,“拿到XX牌Route认证,拿到XX网络认证,拿到XX数据库认证,拿到XX管理学位年薪基本的都在十几万以上”,现在人们发现实际不是这回事,从现在,SAP也已经开始降温了,我想这趋势还会持续。
和学习其它语言唯一不同的是,ABAP是集成在SAP基础平台系统中的,为了学习ABAP,你必须安装一套SAP(可选择R/3,miniSAP,或IDES),而通常的情况是安装光盘渠道比较难找(只有一些大企业实施了SAP才可能有,而且还必须注意版权问题,其他开发工具随便都可找到安装程序),对想学习ABAP的程序员这是个主要门槛。