摘要:簡要介紹了SAP R/3系統以及ABAP語言,從系統的架構出發,對相關模塊進行具體解釋。并用實際的程序例子說明ABAP語言中OPEN SQL子集在此系統的應用特點。
關鍵詞:SAP; R/3系統; ABAP語言;OPEN SQL;數據庫
中圖分類號:TP391文獻標識碼:A文章編號:1009-3044(2008)34-1658-02
The Applications of ABAP Language Open SQL Based on SAP R/3 System
JIANG Yong-peng
(Software School,Tongji University, Shanghai 201804, China)
Abstract: The basic knowledge of SAP R/3 system and the ABAP language is reviewed briefly, then from the system's structure, the relevant modules were explained specifically. And the practical examples illustrate the features of the OPENSQL subset which used in this system.
Key words: SAP; R/3 System; ABAPlanguage; OPEN SQL; Database
1 引言
SAP R/3系統是德國SAP公司開發的幾乎適用于所有行業的一整套集成化的企業管理系統軟件,該系統可以為大中型企業提供從生產到銷售等一系列過程的整體解決方案,集資金流、物流和信息流三流合一的有高度的集成性,并且提供了一系列編程接口對它系統進行二次開發。
2 SAP R/3系統概述
2.1 SAP R/3系統架構
SAP R/3系統是一個典型的基于CLIENT/SERVER技術架構的三層服務體系的,開放的,系統的,集成的企業資源計劃系統。
1) 表示服務層(Presentation Service)。是基于Windows或X—Windows的SAP前端圖形界面;用戶通過安裝SAP客戶端(SAPGUI)來訪問SAP。
2) 應用服務層(Application Service)。系統處理及開發平臺,也即應用服務器。
3) 數據庫服務層(Database Service)。由其他廠商提供的數據庫管理系統,如Oracle,DB2,Sybase,Informix等。
2.2 SAP R/3系統采用模組化結構
它們既可以單獨使用,也可以和其它解決方案相結合。從流程導向的角度而言。各模塊的整合程度越高,它們帶來的好處就越多。SAP R/3系統包括十二個產品模塊:
SD (銷售與分銷):積極支援銷售和分銷活動,具有出色的定價,訂單快速處理,按時交貨,交互式多層次可變定制功能,并直接與盈利分析和生產計劃模組連接。
MM(物料管理):以工作流程為導向的處理功能對所有采購處理最佳化,可以自動評估供貨商,透過精確度庫存和倉儲管理降低采購和倉儲成本,并與發票核查相整合。
PP(生產計劃):提供各種制造類型的全面處理,從重復性生產,訂制生產,訂裝生產,加工制造,批量及訂存生產直至過程生產,具有擴展MPR的功能。另外還可以選擇連接PDC,制程控制系統,CAD和PDM。
QM(質量管理):監控,輸入和管理整個供應鏈與品質保證相關的各類處理,協調檢查處理,啟動校正措施,以及與實驗室資訊系統整合。
PM(工廠維護):提供對定期維護,檢查,耗損維護與服務管理的規劃,控制和處理,以確保各個操作系統的可用性。
HR(人事管理):采用涵蓋所有人員管理任務和幫助簡化與加速處理的整合式應用程序,為公司提供人力資源規劃和管理解決方案。
FI(財務會計):集中有關會計的所有資料,提供完整的文獻和全面的資訊,同時作為企業實行控制和規劃的最新基礎。
CO(管理會計):是公司管理系統中規劃與控制的工具的完整體系,具有統一的報表系統,協調公司內部處理業務的內容和過程。
AM(資產管理):電子化地監控固定資產和商品(如零件和原材料),以控制并優化企業資產的使用。
PS(項目管理):協調和控制項目的各個階段,直接與采購及控制合作,從報價,設計到批準以及資源管理與結算。
WF(工作流程管理): 對企業整個工作運作的流程進行管理,使流程得以最優化。
IS(工業方案):針對特定行業所量身定做的實施方案。
其中,在中國大陸使用較多的是PP,MM,SD,FI,CO,AM,QM和HR模塊。
R/3系統所支持的功能是非常多的,為了能夠使得R/3系統具有高度的靈活性以及可集成性,R/3系統提供了系統定制這項強大的功能,根據企業的具體業務需要而取舍。但是由于在某些特殊的環境下,系統定制不能夠解決企業的具體情況,那么需要利用R/3系統的開發平臺以及所提供的ABAP/4編程語言來解決特殊的問題。
3 ABAP語言及OPEN SQL子集介紹
ABAP全稱是Advanced Business Application Programming(高級商業應用程序設計語言),它是由SAP公司開發的一種編程語言,用于SAP系統內部商業應用程序的設計開發。ABAP程序是使用ABAP語言開發通過SAP開發平臺編譯并應用于SAP系統的程序。ABAP程序實現了R/3系統三個層次的數據傳遞和交互控制。SAP客戶使用ABAP進行用戶級的開發,即客戶化定制開發,這樣的開發使R/3標準解決方案能適應各行業的特殊要求。目前ABAP最新版本是ABAP/4,其中不僅包含了事件驅動機制(Event Driven)和模塊化(Modularization)技術,還加入了完整的面向對象的概念及實現方法。
ABAP/4開發平臺如圖1所示。
程序結構:
作為一種時間驅動語言,ABAP程序的源代碼包括數據定義和處理快兩個部分。1)數據定義:包含整個程序中可見的全局數據類型和數據對象,選擇屏幕元素以及ABAP Objects中自定義的類和接口;2)處理塊: 是ABAP程序的主要結構單元,定義了程序在不同狀態下執行的具體功能,在程序編譯運行過程中,每個塊都是一個獨立的實體。ABAP程序中,數據定義和生命是獨立于任何處理快遞,其他所有語句都必須隸屬于某個處理塊。
處理塊有三種類型:
1) 事件塊:每個事件塊都需要有一個時間關鍵字引導,其后續語句隸屬于該關鍵字的時間塊,直到下一個事件關鍵字出現為止才結束。
2) 對話模塊:開始和結束都有相應的關鍵字作為標志,是相對獨立的程序單元。用于用戶對話程序。
3) 過程塊:開始和結束也有相應的關鍵字作為標志,包括功能模塊和子程序,以及ABAP的類方法,可以被其他模塊調用。
每一個ABAP/4程序必須以PROGRAM 或者以REPORT語句打頭;一般建議如下,REPORT語句用于ABAP/4 reports,PROGRAM 語句用于一般的ABAP/4程序,全局數據聲明必須在程序的起始部分的數據聲明部分中,語句體可以包含不同的子模塊以完成不同的處理功能。
ABAP程序基本結構如圖2所示。
■
圖2 ABAP程序基本結構
程序類型:
在創建ABAP程序時均需要制定其類型,程序類型將決定在該程序中可以包含哪些處理塊,以及運行環境是如何處理該程序的。主要分為兩大類:一類是可以分配事務代碼并通過事務代碼直接運行的應用程序,往往用于完成一種系統功能;另一類不是為了實現特定功能,可能只是在系統開發過程中具有意義,例如包含程序或功能模塊程序,近提供一些模塊化的功能,方便系統設計開發,而不是可以直接運行的。
程序元素和語法:
在ABAP程序中,不僅有源代碼作為元素,還有變量,屬性,文本元素,文檔和屏幕等。
一般來說ABAP/4程序由一系列獨立的語句組成,每個語句必須以句號結尾,句子中的第一個單詞是關鍵詞,詞與詞之間至少有一個或者以上的空格,語句可以縮進幾列,也可以跨越幾行,一般來說語句由四個單詞組成,除第一個為關鍵詞外,第二、三、四個單詞一般為參數、字段、常量等。語句的基本類型及基本性質由關鍵字確定。如果連續使用相同關鍵字引導的語句,可以使用關鍵字后的“:”和語句間的 “,”符號形成語句鏈,將它們連接在一起,以簡化代碼。
一個簡單的ABAP程序:
REPORT z_simple_program.
DATAtext(20) VALUE 'This is a example'.
START-OF-SELECTION.
WRITE text.
其中REPORT關鍵字引導的聲明性語句表明該程序為可執行程序,該關鍵字后面接程序名,作為程序開始的標志;第二個語句DATA語句為一個數據聲明語句,不屬于任何處理塊;語句START-OF-SELECTION.是事件塊聲明語句,表示后續語句隸屬于該事件塊。
4 ABAP的OPEN SQL子集在SAP R/3系統中的應用及定制
OPEN SQL 是由可以操作R/3系統的核心數據庫的ABAP模塊組成,所有的操作和報錯的結果均是獨立于數據庫的。OPEN SQL只會作用于是ABAP數據字典創建的數據庫表中。在ABAP的數據字典中,你可以把不同數據庫中表的列聯在一起成數據庫視圖。在OPEN SQL看來,這些視圖跟一般的表可以同等處理。
OPEN SQL 包括一般的SQL語句中的關鍵字,SELECT,INSERT,UPDATE,MODIFY,DELETE, CURSOR等。
所有的OPEN SQL語句模塊都會下列兩個返回碼:SY-SUBRC 和 SY-DBCNT。其中SY-SUBRC返回碼為0時,表示剛剛運行的OPEN SQL語句模塊操作成功,否則,表示操作失敗失敗。而SY-DBCNT則表示剛剛運行的OPEN SQL語句模塊操作的數據庫表的行數。(下轉第1664頁)
(上接第1659頁)
舉一個例子(讀一個單行的特定列):
DATA WA TYPE SPFLI.
SELECT SINGLE CARRID CONNID CITYFROM CITYTO
INTO CORRESPONDING FIELDS OF WA
FROM SPFLI
WHERE CARRID EQ 'LH' AND CONNID EQ '0400'.
IF SY-SUBRC EQ 0.
WRITE :/ WA-CARRID,WA-CONNID,WA-CITYFROM,WA-CITYTO.
ENDIF.
這段語句運行后的輸出是:
LH0040 FRANKFURTNEW YORK
解釋如下:單行(SINGLE)在OPEN SQL 中意味著這段語句將會從名為 SPFLI的數據庫表中讀取一行單獨的條目,這個單在SELECT子句意味著該聲明全文一個單一的條目,該數據庫表SPFLI的主要關鍵領域CARRID和CONNID有中WHERE子句需要的具體的數值。該段語句中指定的SELECT 結果轉移到相同名稱的組成部分的結構WA中。
由例子可見,OPEN SQL 除具有一般的數據庫操作功能,更是與ABAP緊密結合,保證了SAP R/3系統實施過程中,多種數據庫并存情況下,保證整個數據庫數據的統一。
5 結論
從縱覽的視角解釋了SAP R/3系統以及ABAP語言,并通過實際Open SQL應用的例子,說明了SAP R/3系統在SAP實施過稱中對于數據庫不統一的情況,OPEN SQL子集的優勢。
參考文獻:
[1] 黃佳.SAP程序設計[M].北京:機械工業出版社,2005.
[2] Hagemann S, Will L.SAP R/3系統管理[M].北京:東方出版社,2006.
[3] 陳巖冰,龍策景,彭丹.SAP R/3系統管理[M].北京:清華大學出版社,2006.