SAP 是一家通過業(yè)務(wù)工程成功地集成信息技術(shù)的公司 ,SAP( System, Applications, and Products in Data Processing,數(shù)據(jù)處理的系統(tǒng)、應(yīng)用和產(chǎn) 品)。SAP 公司是 ERP 思想的倡導(dǎo)者,成立于 1972 年,總部設(shè)在德國南部的 Walldorf。SAP 的主打產(chǎn)品 R/3 是用于分布式客戶機(jī)/服務(wù)器環(huán)境的標(biāo)準(zhǔn) ERP 軟件,SAP 所提供的是一個(gè)有效的標(biāo)準(zhǔn)而又全面的 ERP 軟 件,同時(shí)軟件模塊化結(jié)構(gòu)保證了數(shù)據(jù)單獨(dú)處理的特殊方案需求。 目前,SAP 在 120 多個(gè)國家和地區(qū)擁有 17,500 多家客戶、44,500 多個(gè)系統(tǒng) 安裝點(diǎn)、1000 萬名最終用戶,世界 500 強(qiáng) 80%以上的公司都在使用 SAP 的管理方 案。
SAP 進(jìn)入中國已經(jīng)有些年頭,在近年,實(shí)施SAP的公司越來越多,盡管SAP本身提供了相當(dāng)強(qiáng)大的可配置功能,但是由于企業(yè)復(fù)雜的業(yè)務(wù)背景,特別是對(duì)各種報(bào)表的需求,依舊免不了二次開發(fā)。
學(xué)習(xí) SAP,如果要說難,難就難在國內(nèi)市場上極少哪怕是介紹一個(gè)模塊詳細(xì)操作釋疑的書籍,廣大的SAP用戶只能是自己摸索學(xué)習(xí),即使參加了一些培訓(xùn),可能起到的作用依舊有限,畢竟各培訓(xùn)教師自編的教材參差不齊水平也不一。
SAP 顧問行業(yè)一度也是高薪標(biāo)志,做 SAP 顧問需要什么條件究竟需要多長時(shí)間磨練,這是廣大立志于 SAP 行業(yè)的讀者經(jīng)常困惑的問題。如讀者有一定的編程數(shù)據(jù)庫和企業(yè)運(yùn)作經(jīng)驗(yàn),做 ABAP 顧問三個(gè)月就足夠,視具體情況而言,可能更長,甚至更短,事實(shí)上有相當(dāng)部分朋友做到了這點(diǎn).。
SAP R/3 是一個(gè)基于客戶/服務(wù)機(jī)結(jié)構(gòu)和開放系統(tǒng)的、集成的企業(yè)資源計(jì)劃系統(tǒng)。R/3應(yīng)用軟件采用模組化結(jié)構(gòu),它們既可以單獨(dú)使用,也可以和其它解決方案相結(jié)合。從流程導(dǎo)向的角度而言,各應(yīng)用軟體間的整合程度越高,它們帶來的好處就越多。SAP系統(tǒng)的功能模塊覆蓋了企業(yè)的財(cái)務(wù)、項(xiàng)目管理、采購、生產(chǎn)計(jì)劃、銷售、人力資源等眾多模塊。 (如圖所示)

財(cái)務(wù)會(huì)計(jì)(FI):應(yīng)收賬款、應(yīng)付賬款、總分類賬、合并、投資、基金、現(xiàn)金等;
管理會(huì)計(jì)(CO):利潤中心、成本中心,產(chǎn)品成本、項(xiàng)目管理、獲利管理分析等;
人力資源(HR):薪資、差旅、工時(shí)、招聘、發(fā)展計(jì)劃、人事成本等;
物料管理(MM):采購、庫存管理、MRP、供應(yīng)商評(píng)價(jià)等;
項(xiàng)目管理(PS):項(xiàng)目計(jì)劃、預(yù)算、能力計(jì)劃、資源管理、結(jié)果分析等;
銷售與分銷(SD):銷售計(jì)劃、詢價(jià)報(bào)價(jià)、訂單管理、運(yùn)輸發(fā)貨、發(fā)票等;
設(shè)備管理(PM):維護(hù)及檢測計(jì)劃、單據(jù)處理、歷史數(shù)據(jù)、報(bào)告分析等;
生產(chǎn)計(jì)劃(PP):工廠數(shù)據(jù)、生產(chǎn)計(jì)劃、MRP、能力計(jì)劃、成本核算等;
質(zhì)量管理(QM):質(zhì)量計(jì)劃、質(zhì)量檢測、質(zhì)量控制、質(zhì)量文檔等;
SAP R/3 系統(tǒng)具備以下功能和主要特點(diǎn):
(1)功能性:R/3 以模塊化的形式提供了一整套業(yè)務(wù)措施,其中的模塊囊括了全部所 需要的業(yè)務(wù)功能并把用戶與技術(shù)性應(yīng)用軟件相聯(lián)而形成一個(gè)總括的系統(tǒng),用于公 司或企業(yè)戰(zhàn)略上和運(yùn)用上的管理。
(2)集成化: R/3 把邏輯上聯(lián)的部分連接在一起。重復(fù)工作和多余數(shù)據(jù)被完全取消, 規(guī)程被優(yōu)化,集成化的業(yè)務(wù)處理取代了傳統(tǒng)的人工操作。
(3)靈活性:R/3 系統(tǒng)中方便的裁剪方法使之具有靈活的適應(yīng)性,從而能滿足各種用 戶的需要和特定行業(yè)的要求。R/3 還配備有適當(dāng)?shù)慕缑鎭砑捎脩糇约旱能浖?外來的軟件。
(4)開放性:R/3 的體系結(jié)構(gòu)符合國際公認(rèn)的標(biāo)準(zhǔn),使客戶得以突破專用硬件平臺(tái)及 專用系統(tǒng)技術(shù)的局限。同時(shí),SAP 提供的開放性接口,可以方便地將第三方軟件 產(chǎn)品有效地集成到 R/3 系統(tǒng)中來。
(5)用戶友好:圖標(biāo)與圖形符號(hào)簡化了人機(jī)交互時(shí)的操作。統(tǒng)一設(shè)計(jì)的用戶界面確保 了工作人員能夠運(yùn)用同樣的熟悉的技術(shù)從事不通的工作。
(6)模塊化:R/3 的模塊結(jié)構(gòu)使用戶既可以一個(gè)一個(gè)的選用新的實(shí)用程序,也可以完 全轉(zhuǎn)入一個(gè)新的組織結(jié)構(gòu)體系。
(7)可靠:作為用戶的商業(yè)伙伴 SAP 始終不斷地為集成化軟件的質(zhì)量設(shè)立越來越多的 國際標(biāo)準(zhǔn)。
(8)低成本高效益:信息處理是取得競爭優(yōu)勢(shì)的要點(diǎn)之一。當(dāng)競爭加劇時(shí),企業(yè)必須 更加努力地獲取其市場占有量。這就要使用高度集成化的數(shù)據(jù)處理軟件,而 R/3 正是這種軟件的優(yōu)秀典范。
(9)國際適用:R/3 支持多種語言,而且是為跨國界操作而設(shè)計(jì)的。R/3 可以靈活地 適應(yīng)各國的貨幣及稅物要求。
(10)服務(wù):R/3 系統(tǒng)實(shí)施過程中,用戶將得到 SAP 技術(shù)專家的全面支持與服務(wù),包括 組織結(jié)構(gòu)方面與技術(shù)方面的咨詢,項(xiàng)目計(jì)劃與實(shí)施方面的協(xié)助,以及培訓(xùn)課程
ABAP(Advanced Business Application Programming)語言是一種高級(jí)商用編程語言,是面向?qū)ο笳Z言的一種。經(jīng)過不斷的發(fā)展,現(xiàn)在的版本為 ABAP/4。ABAP 語言支持封裝性和繼承性。封裝性是面向?qū)ο蟮幕A(chǔ),而繼承性則是建立在封裝性基礎(chǔ)上的主要特性。在SAP R/3 系統(tǒng)中,很多應(yīng)用程序都是通過 ABAP/4 語言編寫的。ABAP 語言是整個(gè)SAP系統(tǒng)的基礎(chǔ)開發(fā)者工具和技術(shù)平臺(tái),包含事件驅(qū)動(dòng)(Evet-Driven)、機(jī)制和模塊化技術(shù)(Modularization)、完整的面向?qū)ο蟾拍罴皩?shí)現(xiàn)方法(Object Oriented)等。
嚴(yán)格地講,ABAP/4不僅僅是一個(gè)開發(fā)工具,而且是一套完整的client/server開發(fā)環(huán)境,這很好理解,微軟的Visiual Studio是一開發(fā)環(huán)境,VB,VC++等是開發(fā)工具。ABAP開發(fā)環(huán)境包含支持程序開發(fā)的一些函數(shù)和包等。
如圖,是SAP開發(fā)環(huán)境的一個(gè)三層架構(gòu)的例圖,三層(多層)的概念也不新鮮,比如在安裝SAP 時(shí)也可將 DB instance 安在一臺(tái) server, Central instance 在另一臺(tái)所謂的 Application server(我想這應(yīng)是相關(guān) SAP 基礎(chǔ)系統(tǒng)包括各種應(yīng)用程序所在),而通常客戶端安裝的 SAP Logon Front End,SAP會(huì)話管理器等是所謂的表示層,它通過TCP/IP,SAP 演示協(xié)議或 RFC 和應(yīng)用服務(wù)器進(jìn)行數(shù)據(jù)傳輸,用戶看到的只是處理后的數(shù)據(jù)返回。
和Delphi的三層邏輯相近,在應(yīng)用層包含多個(gè)組件象 ABAP 開發(fā)平臺(tái),身份驗(yàn)證,系統(tǒng)管理維護(hù)等用以處理會(huì)話,更新,排隊(duì),網(wǎng)關(guān),數(shù)據(jù)層處理 native 和 Open SQL 等(這是從內(nèi)部機(jī)制方面看),SAP各模塊應(yīng)用的業(yè)務(wù)邏輯都在應(yīng)用層被處理(從用戶角度)然后結(jié)果被返回。

所有的 ABAP 程序都駐留在 SAP 數(shù)據(jù)庫里。他們不像 Java 或者 C++ 程序那樣存儲(chǔ)在一個(gè)單獨(dú)的外部文件里,在數(shù)據(jù)庫里所有的 ABAP 代碼都以兩種形式存在:可以用 ABAP workbench 查看和編輯的源代碼和由 ABAP 運(yùn)行環(huán)境載入和解釋的“編譯”代碼(技術(shù)上更精確地說是“產(chǎn)生”代碼)。當(dāng)一段 ABAP 源代碼第一次被調(diào)用時(shí)會(huì)隱含的進(jìn)行代碼產(chǎn)生。如果稍后源代碼改變了或者程序訪問的對(duì)象改變了(比如數(shù)據(jù)庫的表添加了新的字段),產(chǎn)生代碼就會(huì)自動(dòng)重新產(chǎn)生。
ABAP 程序在運(yùn)行時(shí)系統(tǒng)(SAP核心的一部分)的控制下運(yùn)行在 SAP 應(yīng)用服務(wù)器里。運(yùn)行時(shí)系統(tǒng)負(fù)責(zé)處理 ABAP 語句,控制顯示的邏輯序列和響應(yīng)事件(比如,用戶按一下屏幕上的一個(gè)按鈕)。ABAP 運(yùn)行時(shí)系統(tǒng)的一個(gè)關(guān)鍵組件是數(shù)據(jù)庫接口,它把 ABAP 的數(shù)據(jù)庫無關(guān)語句(“開放SQL”)變成底層數(shù)據(jù)庫管理系統(tǒng)可以理解的語句(“本地SQL”)。數(shù)據(jù)庫接口處理 ABAP 程序和關(guān)系數(shù)據(jù)庫之間所有的通信;它也有一些其他的作用,比如把經(jīng)常訪問的數(shù)據(jù)緩存到應(yīng)用服務(wù)器本地的存儲(chǔ)器里。
ABAP/4語言所開發(fā)的程序主要分為應(yīng)用程序和其他程序兩種。
(1)應(yīng)用程序類型。
習(xí)慣上,應(yīng)用程序往往是按照?qǐng)?bào)表程序和對(duì)話程序(又稱動(dòng)態(tài)程序、事務(wù)程序)進(jìn)行劃分的。在可執(zhí)行程序中可以處理報(bào)表事件,也可以加入屏幕和對(duì)話模塊,而模塊池程序一般只用于事務(wù)程序的設(shè)計(jì)。
報(bào)表程序:報(bào)表程序用于分析數(shù)據(jù)庫表中的數(shù)據(jù),分析的結(jié)果可顯示在屏幕上或發(fā)送到打印機(jī)上。邏輯數(shù)據(jù)庫支持報(bào)表程序,它是一種特殊的 ABAP/4 程序,使開發(fā)者不必編碼即可對(duì)所有的數(shù)據(jù)庫進(jìn)行訪問。
對(duì)話程序:對(duì)話程序組織為包含對(duì)話模塊的模塊池。每個(gè)動(dòng)態(tài)程序(由一個(gè)屏幕及其流邏輯組成的“動(dòng)態(tài)程序”)都基于一個(gè) ABAP/4 對(duì)話程序。流邏輯包含對(duì) ABAP/4 對(duì)話模塊的調(diào)用。
(2)其他程序類型。
其他程序不能直接執(zhí)行,但這種類型的程序可作為代碼容器,為 ABAP 程序提供各種各樣的模塊化代碼單元。主要有以下幾種類型。
功能組(Function groups,類型代碼 F):由 Function-pool語句引導(dǎo),包含一個(gè)或多個(gè)功能模塊,可包含自己的屏幕,一般不能直接運(yùn)行功能。功能模塊是模塊化的代碼段,不能用來直接執(zhí)行,而需要在普通程序中調(diào)用。
ABAP類庫(Class pools,類型代碼 K):由 Class-pool語句引導(dǎo),是系統(tǒng) ABAP對(duì)象類和多個(gè)局域類。類庫在 ABAP 工作臺(tái)工具 Class Builder進(jìn)行創(chuàng)建。
ABAP 接口庫(Interface pools,類型代碼J):由 Interface-pool 語句引導(dǎo),與類型K程序相似,用于定義ABAP對(duì)象的接口,可被人以全局類和局部類實(shí)現(xiàn),不能直接運(yùn)行。
子程序池(Subroutine pools,類型代碼 S):由 Program 語句引導(dǎo),包含一個(gè)或者多個(gè)程序代碼模塊或類方法,允許被普通程序調(diào)用,不可包含自定義的用戶屏幕,在ABAP編輯器中進(jìn)行編輯。
類型組(Type Groups,無類型代碼):由 Type-pool語句引導(dǎo),在數(shù)據(jù)字典中定義,不包含任何屏幕和處理塊,用于定義全局?jǐn)?shù)據(jù)類型。
包含程序(Include Programs,類型代碼I):不需要任何語句引導(dǎo),也無須包含完整的處理塊。無須獨(dú)立編譯,包含程序只是代碼復(fù)用,在 ABAP/4 中編輯,可直接插入其他程序中。包含程序可通過 Include語句被多個(gè)程序引用,與其他程序之間不存在參數(shù)接口。
SAP行業(yè)特別是早些年是個(gè)被異化的行業(yè),人們可看到某些人出于經(jīng)濟(jì)目的鋪天蓋地的對(duì)ERP不正確的宣傳,這同樣反應(yīng)在IT各行業(yè),“拿到XX牌Route認(rèn)證,拿到XX網(wǎng)絡(luò)認(rèn)證,拿到XX數(shù)據(jù)庫認(rèn)證,拿到XX管理學(xué)位年薪基本的都在十幾萬以上”,現(xiàn)在人們發(fā)現(xiàn)實(shí)際不是這回事,從現(xiàn)在,SAP也已經(jīng)開始降溫了,我想這趨勢(shì)還會(huì)持續(xù)。
和學(xué)習(xí)其它語言唯一不同的是,ABAP是集成在SAP基礎(chǔ)平臺(tái)系統(tǒng)中的,為了學(xué)習(xí)ABAP,你必須安裝一套SAP(可選擇R/3,miniSAP,或IDES),而通常的情況是安裝光盤渠道比較難找(只有一些大企業(yè)實(shí)施了SAP才可能有,而且還必須注意版權(quán)問題,其他開發(fā)工具隨便都可找到安裝程序),對(duì)想學(xué)習(xí)ABAP的程序員這是個(gè)主要門檻。