求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

ABAP檢視原始碼討論檢視歷史

事實揭露 揭密真相
前往: 導覽搜尋
ABAP

中文名: 高級商務應用編程

外文名: Advanced Business Application Programming

簡 稱: ABAP

起源時間: 20世紀80年代

開發商: 德國軟件公司SAP

隸 屬: NetWeaver平台

代表機構: 邁科思維、安豆教育abap、91ABAP

功 能: 面向特定應用

ABAP(高級商務應用編程)是一種高級語言,由德國軟件公司SAP開發。和最近引入的Java一起,ABAP主要用作SAP的編程。這個服務器軟件是SAP NetWeaver平台的一部分,這個平台主要用來開發商務應用。ABAP支持有面向過程和面向對象。

ABAP平台

ABAP開發環境包括設計和開發程序、屏幕、菜單、功能模塊等所需的一切工具。它還包括了程序調試、性能和在線分析、測試所需的實用程序[1]

ABAP/4是SAP自己的第四代編程語言。從4.0版本開始,它簡稱為ABAP;它是經技術改進的I刮名語言,主要添加了新特性以成為面向對象的語言。

ABAP的意思是「先進經營應用編程語言(Advanced Business Application ProgrammingLanguage)」,這表明SAP編程語言用於開發R/3套件中所有的標準經營應用程序。

圍繞着ABAP編程語言,SAP設計了一個完整的開發環境,像一個CASE環境,稱作「ABAP開發平台」。它和R/3系統完全集成在一起,客戶可以根據其需求用它開發特定的解決方案,或改進、改善標準的應用程序。

ABAP開發環境的中央有兩個核心構件: 「ABAP數據字典」和「ABAP經營對象庫」, 即BOR( Business Object Repository).

「數據字典」包含所有的系統元數據,也就是對程序所使用的數據結構的描述。此字典是元數據庫,因此包含表格定義、字段的合法值、視圖、數據元素等等;更重要的是它定義了表格的關係。精通瀏覽和使用數據字典非常重要,不僅對數據庫管理員和開發人員,對定製諮詢顧問也是如此。

「經營對象庫」包含ABAP平台上的所有開發對象:程序、字典數據、dynpros(動態程序的屏幕)、文檔等等。此庫對於控制和測試開發工作是必不可少的構件。

從3.0版本開始,開發環境還包括「平台組織者」,這是傳輸系統的附加構件。平台組織者和定製組織者負責控制開發對象和定製設置的開發與轉換,以便將它們傳輸到其他系統上。

「平台組織者」的特性包括方案管理、程序修改控制、團隊開發的協調、對象鎖定和解鎖定。

傳輸系統負責開發和定製設置系統之間的物理傳輸。比如說,SAP應用補丁和升級是SAP自身系統和用戶系統之間真正大塊的對象傳輸。這是一個重要工具,開發人員、定製者和系統管理員對它必須非常熟悉。

自從SAP R/3的3.1H版本以及4.0版本的普遍推廣,產生了一種新的傳輸系統,稱作TMS(傳輸管理系統),它引入了傳輸域和組的概念。它允許在傳輸組中對系統進行圖形化定義,從系統內部引入修改請求,而無須訪問操作系統。

SAP系統和部署方案

所有的SAP數據和軟件都存在/運行於SAP系統的環境中。這個系統包括一個中心關係數據庫和一個或多個訪問該數據庫里的數據和程序的應用服務器(「實例」)。一個SAP系統至少包括一個實例,但可以更多,主要看大小和性能上的需求。在一個多實例系統中,負載平衡機制來保證負載比較平均的分攤到各個可用的應用服務器上。

典型安裝的Web應用服務器(部署方案)包括三個系統:一個用於開發,一個用於測試和質量保證,一個用於生產。這個部署方案可以包含更多的系統,比如一個單獨用於單元測試和產前測試的系統,或者也可以不完全包含這三個系統,比如只有開發和生產,沒有單獨的質量保證系統;但三個是最常見的。ABAP程序的創建和首次運行都在開發系統里。然後被分發到部署方案的其他系統里。這些都是在變化和傳輸系統(CTS)的控制下進行的。CTS是一個負責並發控制(比如防止兩個開發人員同時修改同一段代碼),版本管理和在質量保證和產品系統上部署程序的系統。

Web應用服務器有三層組成:數據庫層,應用層和表現層。這些層可以在同一台或不同的物理機器上運行。數據庫層包括關係數據庫及相關軟件。應用層包括系統的實例。所有應用相關的過程,包括業務事務和ABAP開發,都運行在應用層。表現層處理和系統的用戶之間的交互。對ABAP應用服務器的在線訪問可以通過專用圖形接口SAPGUI或者瀏覽器進行。

ABAP程序的類型

ABAP有兩種不同類型的程序:

報表程序

報表程序遵循一個相對簡單的編程模型,用戶可選的輸入一系列參數(比如,在一個數據子集上的選擇),然後程序根據輸入的參數以一個交互式列表的形式產生一張報表。報表程序的輸出之所以是交互式的是因為它不是一個被動的顯示;它允許用戶使用ABAP語言通過深入挖掘功能以獲得某個數據更細節的視圖,或者通過菜單命令觸發更深入的處理,比如按不同的方式排序數據或者按某種選擇條件過濾數據。這種表現報表的方法有很大的優勢,特別是對於那些需要處理大量信息但又要以很靈活的方式來檢查這些信息的用戶,這樣他們就不會再被限制到一種固定的顯示形式或者大小上無法管理的列表形式的報表中了。這種方便的開發交互式報表的方式是ABAP語言的一大重要閃光點。

「報表」這個詞有時會給人一種誤解,其實創建數據可以在底層數據庫修改而不僅僅是只讀的報表程序是完全可以的。

在線程序

在線程序(也叫模塊池)不產生列表。這些程序使用一系列的屏幕來定義更複雜的用戶交互模式。術語「屏幕」是指用戶看到的實際的物理圖像。每個屏幕還有一個「流邏輯」;這是指由屏幕觸發的ABAP代碼,比如初始化屏幕,響應用戶請求的應答和控制模塊池的屏幕之間的序列的邏輯。每個屏幕都有自己的流邏輯,每個流邏輯都分為「PBO」(輸出前處理)和「PAI」(輸入後處理)部分。在SAP的文檔中,術語「dynpro」(動態程序)用來表示這種屏幕和流邏輯的結合。

在線程序並不是通過名字調用的,而是和一段事務代碼聯繫在一起。用戶可以通過自定義,角色依賴,事務菜單來觸發它們。

除了報表和在線程序外,以類庫,功能庫和子程序池的形式開發共享代碼段也是可以的。

ABAP Workbench

ABAP Workbench有幾個不同的工具用於編輯容器對象。這些工具可以為你提供涵蓋整個軟件開發周期各階段的輔助。創建和編輯容器對象的最重要的工具有:

ABAP Editer:編寫程序代碼

ABAP Dictionary:處理數據庫表定義,檢索全局類型

Menu Painter:設計用戶界面(包括菜單欄標準工具欄應用欄,配置功能鍵)

Screen Painter:為用戶對話框設計屏幕(動態程序)

Function Builder:顯示和處理功能模塊

Class Builder:顯示和處理ABAP對象類

特徵

1.和SAP緊密結合,尤其在開發報表方面,坦率地講,除了和SAP集成的好處,.我認為ABAP在報表開發上比Crystal report Tool要高效簡單。

2.和VB一樣,ABAP是解釋型的,如讀者精通VB,學習ABAP應該毫不費力,倒是既然SAP是企業管理解決方案,ABAPer必須對企業管理流程熟悉。

解釋型的另一好處是可以很好跟蹤程序邏輯(使用/H),這對了解業務邏輯的實時追蹤錯誤很有效. 和VB不同的是,VB跟蹤時允許程序運行指針隨意往回或往全拉而ABAP程序卻不行,但是ABAP程序允許在運行時修改變量的值,這是編譯程序不能做到的.當然通常編譯比解釋執行的速度會更快。

ABAP程序執行並不直接讀取源代碼,而是執行內部經過「生成」的描述,對於ABAP/4字典的修改激活後將觸發內部描述的重新生成,如程序並沒激活就執行原版本,或者出現錯誤(程序沒激活可能造成ABAP Dumping ABAP)。

3.在對數據庫處理方面,除了可直接執行SQL(使用native sql,缺點是錯誤處理很難控制,相當於有開發環境將SQL語句直接傳給DB去執行),SAP在ABAP開發環境層還提供了一套Open SQL訪問底層數據庫。

4. 程序員都知道Windows平台下開發都支持事件驅動,Windows系統本身也支持事件驅動,ABAP也提供了事件驅動,這表Dialog編程方面,但是ABAP在此方面並不強,而且相對講也比較難於掌握(在後面會討論)。

5.基於面向對象的風靡,ABAP在此方面也有相當反應,在SAP強大的軟件包中提供了大量可重複使用的程序,讀者也可定義類並使用它快速建立新的對象。

6.類似Java,ABAP開發的程序能運行於任何操作系統(Java有Java虛擬機,ABAP也有ABAP processor),多種數據庫(比如在ABAP字典中實現了透明表對各種底層數據庫表的映射,這樣在ABAP層看到的透明表就和具體數據庫無關),各種網絡系統。

視頻

ABAP 相關視頻

abap學習
ABAP安豆

參考文獻

  1. ABAP之交互式列表  ,搜狐, 2016-07-19