SAP ABAP

SAP ABAP

– ABAP Pain

ABAP作為一種面向特定套用的第四代程式語言最早在20世紀80年代開發。它原本是作為一種報表語言套用在SAPR/2上,這是一個幫助大型公司在大型機上建立原材料管理和財務會計管理商務套用的平台。ABAP本來也是德語AllgemeinerBerichtsaufbereitungsprozessor的縮寫,意思是“通用報表預處理器”。ABAP第一次引入了“邏輯資料庫”的概念,它在基本的資料庫層提供了更高級的抽象。

51sap教育中心SAP項目實戰51SAP教育中心SAP項目實戰

ABAP程式語言最初被SAP的開發者用於開發SAPR/3平台。但它也被設計讓SAP的客戶用於增強SAP的軟體套用–客戶可以用ABAP編程開發自定義的報表和界面。這個程式語言對於程式設計師來說很容易學習但並不是一個非程式設計人員可以直接使用的工具。編寫ABAP程式需要良好的編程技巧和關係資料庫方面的知識,如果知道面向對象設計的概念更好。
雖然SAP最早於1992年就發布了R/3,但ABAP現在仍可以用於為R/3系統編寫程式。在20世紀90年代,隨著計算機硬體的發展,越來越多的SAP的套用軟體和系統都用ABAP來實現。一直到2001年,幾乎所有的基本功能都是由ABAP編程實現的。在1999年,SAP在發布R/34.6版的同時也發布了一個對ABAP的面向對象擴展,叫做ABAPObjects。

運行環境

所有的ABAP程式都駐留在SAP資料庫里。他們不像Java或者C++程式那樣存儲在一個單獨的外部檔案里,在資料庫里所有的ABAP代碼都以兩種形式存在:可以用ABAPWorkbench查看和編輯的原始碼和由ABAP運行環境載入和解釋的“編譯”代碼(技術上更精確地說是“產生”代碼)。當一段ABAP原始碼第一次被調用時會隱含的進行代碼產生。如果稍後原始碼改變了或者程式訪問的對象改變了(比如資料庫的表添加了新的欄位),產生代碼就會自動重新產生。
ABAP程式在運行時系統(SAP核心的一部分)的控制下運行在SAP套用伺服器里。運行時系統負責處理ABAP語句,控制顯示的邏輯序列和回響事件(比如,用戶按一下螢幕上的一個按鈕)。ABAP運行時系統的一個關鍵組件是資料庫接口,它把ABAP的資料庫無關語句(“開放SQL”)變成底層資料庫管理系統可以理解的語句(“本地SQL”)。資料庫接口處理ABAP程式和關係資料庫之間所有的通信;它也有一些其他的作用,比如把經常訪問的數據快取到套用伺服器本地的存儲器里。

ABAP類型

模組池

這些程式使用一系列的螢幕來定義更複雜的用戶互動模式。術語“螢幕”是指用戶看到的實際的物理圖像。每個螢幕還有一個“流邏輯”;這是指由螢幕觸發的ABAP代碼,比如初始化螢幕,回響用戶請求的應答和控制模組池的螢幕之間的序列的邏輯。每個螢幕都有自己的流邏輯,每個流邏輯都分為“PBO”(輸出前處理)和“PAI”(輸入後處理)部分。在SAP的文檔中,術語“Dynpro”(動態程式)用來表示這種螢幕和流邏輯的結合。
線上程式並不是通過名字調用的,而是和一段事務代碼聯繫在一起。用戶可以通過自定義,角色依賴,事務選單來觸發它們。
除了報表和線上程式外,以類庫,功能庫和子程式池的形式開發共享代碼段也是可以的。

報表程式

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

ABAP開發工具

ABAPWorkbench有幾個不同的工具用於編輯容器對象。這些工具可以為你提供涵蓋整個軟體開發周期各階段的輔助。創建和編輯容器對象的最重要的工具有:
ABAPEditer:編寫程式代碼
ABAPDictionary:處理資料庫表定義,檢索全局類型
MenuPainter:設計用戶界面(包括選單欄,標準工具列,套用欄,配置功能鍵)
ScreenPainter:為用戶對話框設計螢幕(動態程式)
FunctionBuilder:顯示和處理功能模組
ClassBuilder:顯示和處理ABAP對象類

目前,ABAP顧問的門檻相對較高,很多人選擇像51SAP教育中心這種有實力的培訓公司參與SAP的項目實戰培訓來深入學習SAP的各個模組。

相關詞條

熱門詞條

聯絡我們