ABAP開發(fā)服務
迪森科技SAP系統(tǒng)開發(fā)團隊,擁有豐富的SAP開發(fā)經(jīng)驗,為企業(yè)客戶提供個性化的定制方案。我們在眾多項目中積累了一系列開發(fā)資產(chǎn),能夠快速匹配客戶需求。
我們的專業(yè)團隊對客戶的個性化需求進行充分評估,并給出最佳的開發(fā)方案建議。開發(fā)方案同時會充分考慮系統(tǒng)地性能,確保各類定制化開發(fā)的性能最優(yōu),并提供完整的開發(fā)交付文檔。
ABAP 簡介
ABAP作為一種面向特定應用的第四代編程語言最早在20世紀80年代開發(fā)。它原本是作為一種報表語言應用在SAP R/2上,這是一個幫助大型公司在大型機上建立原材料管理和財務會計管理商務應用的平臺。ABAP本來也是德語AllgemeinerBerichtsaufbereitungsprozessor的縮寫,意思是“通用報表預處理器”。ABAP第一次引入了“邏輯數(shù)據(jù)庫”的概念,它在基本的數(shù)據(jù)庫層提供了更高級的抽象。
雖然SAP最早于1992年就發(fā)布了R/3,但ABAP仍可以用于為R/3系統(tǒng)編寫程序。在20世紀90年代,隨著計算機硬件的發(fā)展,越來越多的SAP的應用軟件和系統(tǒng)都用ABAP來實現(xiàn)。一直到2001年,幾乎所有的基本功能都是由ABAP編程實現(xiàn)的。在1999年,SAP在發(fā)布R/3 4.6版的同時也發(fā)布了一個對ABAP的面向?qū)ο?/span>擴展,叫做ABAP Objects;SAP最新的開發(fā)平臺NetWeaver同時支持ABAP和Java。
運行環(huán)境
所有的ABAP程序都駐留在SAP數(shù)據(jù)庫里。他們不像Java或者C++程序那樣存儲在一個單獨的外部文件里,在數(shù)據(jù)庫里所有的ABAP代碼都以兩種形式存在:可以用ABAP workbench查看和編輯的源代碼和由ABAP運行環(huán)境載入和解釋的“編譯”代碼(技術上更精確地說是“產(chǎn)生”代碼)。當一段ABAP源代碼第一次被調(diào)用時會隱含的進行代碼產(chǎn)生。如果稍后源代碼改變了或者程序訪問的對象改變了(比如數(shù)據(jù)庫的表添加了新的字段),產(chǎn)生代碼就會自動重新產(chǎn)生。
ABAP程序在運行時系統(tǒng)(SAP核心的一部分)的控制下運行在SAP應用服務器里。運行時系統(tǒng)負責處理ABAP語句,控制顯示的邏輯序列和響應事件(比如,用戶按一下屏幕上的一個按鈕)。ABAP運行時系統(tǒng)的一個關鍵組件是數(shù)據(jù)庫接口,它把ABAP的數(shù)據(jù)庫無關語句(“開放SQL”)變成底層數(shù)據(jù)庫管理系統(tǒng)可以理解的語句(“本地SQL”)。數(shù)據(jù)庫接口處理ABAP程序和關系數(shù)據(jù)庫之間所有的通信;它也有一些其他的作用,比如把經(jīng)常訪問的數(shù)據(jù)緩存到應用服務器本地的存儲器里。
ABAP類型
模塊池
這些程序使用一系列的屏幕來定義更復雜的用戶交互模式。術語“屏幕”是指用戶看到的實際的物理圖像。每個屏幕還有一個“流邏輯”;這是指由屏幕觸發(fā)的ABAP代碼,比如初始化屏幕,響應用戶請求的應答和控制模塊池的屏幕之間的序列的邏輯。每個屏幕都有自己的流邏輯,每個流邏輯都分為“PBO”(輸出前處理)和“PAI”(輸入后處理)部分。在SAP的文檔中,術語“dynpro”(動態(tài)程序)用來表示這種屏幕和流邏輯的結合。
在線程序并不是通過名字調(diào)用的,而是和一段事務代碼聯(lián)系在一起。用戶可以通過自定義,角色依賴,事務菜單來觸發(fā)它們。除了報表和在線程序外,以類庫,功能庫和子程序池的形式開發(fā)共享代碼段也是可以的。
開發(fā)工具
ABAP Workbench有幾個不同的工具用于編輯容器對象。這些工具可以為你提供涵蓋整個軟件開發(fā)周期各階段的輔助。 創(chuàng)建和編輯容器對象的最重要的工具有:
ABAP Editer:編寫程序代碼
ABAP Dictionary:處理數(shù)據(jù)庫表定義,檢索全局類型
Menu Painter:設計用戶界面(包括菜單欄,標準工具欄,應用欄,配置功能鍵)
Screen Painter:為用戶對話框設計屏幕(動態(tài)程序)
Function Builder:顯示和處理功能模塊
Class Builder:顯示和處理ABAP對象類
語法特點
由各自獨立的語句構成。每個語句的第一個單詞必須是ABAP關鍵字。單詞之間至少要用一個空格分隔。每個語句結束必須要用句號。一個語句可以跨多行,只要不遇到句號,就認為是一個延續(xù) 的語句。
可以把多個語句放在一行。ABAP不區(qū)分大小寫,關鍵字和用戶操作數(shù)都一樣,為了便于閱讀,一般把關鍵字大寫,而操作數(shù)小寫。如果連續(xù)多行的第一個關鍵字相同,可以使用鏈語句方式減少輸入
™data: id type I.
™data: name type c.
™可寫為:
™data: id type I ,
™ name type c.
注釋:
注釋行由第一列的星號(*)開頭,并且必須寫在第一 列,前面不能有空格。
在行末的注釋用雙引號(”)作為前導。
™data: id type i. “ 定義一個對象num數(shù)據(jù)類型為I
技術架構
SAP的系統(tǒng)架構設計無疑是值得學習的,以下是我從網(wǎng)絡上收集的一些相關信息,也可以作為架構設計的參考。
1、實施、開發(fā)過程和維護過程管理細致,角色劃分清晰,即使在項目的開發(fā)過程中,仍然要配備BASIS人員,并對系統(tǒng)進行運維工作管理;
2、三種環(huán)境:開發(fā)、QA、生產(chǎn),在三種環(huán)境下的整合開發(fā)過程;
3、注重權限、審計:所有的操作都和權限綁定,并對每項業(yè)務操作都進行日志記錄,數(shù)據(jù)庫記錄邏輯刪除,這對系統(tǒng)的體系結構和數(shù)據(jù)庫設計規(guī)范提出相應的要求,同時也對系統(tǒng)的實施和運維工作提出了要求;
4、應用服務器和數(shù)據(jù)庫服務器的層次定義:和J2EE體系架構不同,一方面保持應用的獨立性,另一方面保證數(shù)據(jù)庫服務器的穩(wěn)定;
5、系統(tǒng)的穩(wěn)定性壓倒一切:即使犧牲性能,也要確保系統(tǒng)的穩(wěn)定;
6、模塊的質(zhì)量保證:對測試的組織,完整的測試流程貫穿項目開發(fā)實施的全過程;
7、可維護性的表現(xiàn):一方面是基于運維的,對于系統(tǒng)軟硬件各個部分的監(jiān)控;另一方面是系統(tǒng)架構上,編程模式上能支撐二次開發(fā);
8、可擴展性的表現(xiàn):系統(tǒng)架構上和物理部署上的兩種體現(xiàn);
9、可用性:界面操作標準化,有完善的文檔制作和交互式教學課件制作工具;
10、所有的一切處理操作都是事務代碼;操作可跟蹤、可追溯;
11、符合業(yè)務特點的數(shù)據(jù)庫表類型定義,即將數(shù)據(jù)庫開發(fā)的成功實踐固化在開發(fā)環(huán)境中。
我們的專業(yè)團隊對客戶的個性化需求進行充分評估,并給出最佳的開發(fā)方案建議。開發(fā)方案同時會充分考慮系統(tǒng)地性能,確保各類定制化開發(fā)的性能最優(yōu),并提供完整的開發(fā)交付文檔。
ABAP 簡介
ABAP作為一種面向特定應用的第四代編程語言最早在20世紀80年代開發(fā)。它原本是作為一種報表語言應用在SAP R/2上,這是一個幫助大型公司在大型機上建立原材料管理和財務會計管理商務應用的平臺。ABAP本來也是德語AllgemeinerBerichtsaufbereitungsprozessor的縮寫,意思是“通用報表預處理器”。ABAP第一次引入了“邏輯數(shù)據(jù)庫”的概念,它在基本的數(shù)據(jù)庫層提供了更高級的抽象。
雖然SAP最早于1992年就發(fā)布了R/3,但ABAP仍可以用于為R/3系統(tǒng)編寫程序。在20世紀90年代,隨著計算機硬件的發(fā)展,越來越多的SAP的應用軟件和系統(tǒng)都用ABAP來實現(xiàn)。一直到2001年,幾乎所有的基本功能都是由ABAP編程實現(xiàn)的。在1999年,SAP在發(fā)布R/3 4.6版的同時也發(fā)布了一個對ABAP的面向?qū)ο?/span>擴展,叫做ABAP Objects;SAP最新的開發(fā)平臺NetWeaver同時支持ABAP和Java。
運行環(huán)境
所有的ABAP程序都駐留在SAP數(shù)據(jù)庫里。他們不像Java或者C++程序那樣存儲在一個單獨的外部文件里,在數(shù)據(jù)庫里所有的ABAP代碼都以兩種形式存在:可以用ABAP workbench查看和編輯的源代碼和由ABAP運行環(huán)境載入和解釋的“編譯”代碼(技術上更精確地說是“產(chǎn)生”代碼)。當一段ABAP源代碼第一次被調(diào)用時會隱含的進行代碼產(chǎn)生。如果稍后源代碼改變了或者程序訪問的對象改變了(比如數(shù)據(jù)庫的表添加了新的字段),產(chǎn)生代碼就會自動重新產(chǎn)生。
ABAP程序在運行時系統(tǒng)(SAP核心的一部分)的控制下運行在SAP應用服務器里。運行時系統(tǒng)負責處理ABAP語句,控制顯示的邏輯序列和響應事件(比如,用戶按一下屏幕上的一個按鈕)。ABAP運行時系統(tǒng)的一個關鍵組件是數(shù)據(jù)庫接口,它把ABAP的數(shù)據(jù)庫無關語句(“開放SQL”)變成底層數(shù)據(jù)庫管理系統(tǒng)可以理解的語句(“本地SQL”)。數(shù)據(jù)庫接口處理ABAP程序和關系數(shù)據(jù)庫之間所有的通信;它也有一些其他的作用,比如把經(jīng)常訪問的數(shù)據(jù)緩存到應用服務器本地的存儲器里。
ABAP類型
模塊池
這些程序使用一系列的屏幕來定義更復雜的用戶交互模式。術語“屏幕”是指用戶看到的實際的物理圖像。每個屏幕還有一個“流邏輯”;這是指由屏幕觸發(fā)的ABAP代碼,比如初始化屏幕,響應用戶請求的應答和控制模塊池的屏幕之間的序列的邏輯。每個屏幕都有自己的流邏輯,每個流邏輯都分為“PBO”(輸出前處理)和“PAI”(輸入后處理)部分。在SAP的文檔中,術語“dynpro”(動態(tài)程序)用來表示這種屏幕和流邏輯的結合。
在線程序并不是通過名字調(diào)用的,而是和一段事務代碼聯(lián)系在一起。用戶可以通過自定義,角色依賴,事務菜單來觸發(fā)它們。除了報表和在線程序外,以類庫,功能庫和子程序池的形式開發(fā)共享代碼段也是可以的。
報表程序
報表程序遵循一個相對簡單的編程模型,用戶可選的輸入一系列參數(shù)(比如,在一個數(shù)據(jù)子集上的選擇),然后程序根據(jù)輸入的參數(shù)以一個交互式列表的形式產(chǎn)生一張報表。報表程序的輸出之所以是交互式的是因為它不是一個被動的顯示;它允許用戶使用ABAP語言通過深入挖掘功能以獲得某個數(shù)據(jù)更細節(jié)的視圖,或者通過菜單命令觸發(fā)更深入的處理,比如按不同的方式排序數(shù)據(jù)或者按某種選擇條件過濾數(shù)據(jù)。這種表現(xiàn)報表的方法有很大的優(yōu)勢,特別是對于那些需要處理大量信息但又要以很靈活的方式來檢查這些信息的用戶,這樣他們就不會再被限制到一種固定的顯示形式或者大小上無法管理的列表形式的報表中了。這種方便的開發(fā)交互式報表的方式是ABAP語言的一大重要閃光點。開發(fā)工具
ABAP Workbench有幾個不同的工具用于編輯容器對象。這些工具可以為你提供涵蓋整個軟件開發(fā)周期各階段的輔助。 創(chuàng)建和編輯容器對象的最重要的工具有:
ABAP Editer:編寫程序代碼
ABAP Dictionary:處理數(shù)據(jù)庫表定義,檢索全局類型
Menu Painter:設計用戶界面(包括菜單欄,標準工具欄,應用欄,配置功能鍵)
Screen Painter:為用戶對話框設計屏幕(動態(tài)程序)
Function Builder:顯示和處理功能模塊
Class Builder:顯示和處理ABAP對象類
語法特點
由各自獨立的語句構成。每個語句的第一個單詞必須是ABAP關鍵字。單詞之間至少要用一個空格分隔。每個語句結束必須要用句號。一個語句可以跨多行,只要不遇到句號,就認為是一個延續(xù) 的語句。
可以把多個語句放在一行。ABAP不區(qū)分大小寫,關鍵字和用戶操作數(shù)都一樣,為了便于閱讀,一般把關鍵字大寫,而操作數(shù)小寫。如果連續(xù)多行的第一個關鍵字相同,可以使用鏈語句方式減少輸入
™data: id type I.
™data: name type c.
™可寫為:
™data: id type I ,
™ name type c.
注釋:
注釋行由第一列的星號(*)開頭,并且必須寫在第一 列,前面不能有空格。
在行末的注釋用雙引號(”)作為前導。
™data: id type i. “ 定義一個對象num數(shù)據(jù)類型為I
技術架構
SAP的系統(tǒng)架構設計無疑是值得學習的,以下是我從網(wǎng)絡上收集的一些相關信息,也可以作為架構設計的參考。
1、實施、開發(fā)過程和維護過程管理細致,角色劃分清晰,即使在項目的開發(fā)過程中,仍然要配備BASIS人員,并對系統(tǒng)進行運維工作管理;
2、三種環(huán)境:開發(fā)、QA、生產(chǎn),在三種環(huán)境下的整合開發(fā)過程;
3、注重權限、審計:所有的操作都和權限綁定,并對每項業(yè)務操作都進行日志記錄,數(shù)據(jù)庫記錄邏輯刪除,這對系統(tǒng)的體系結構和數(shù)據(jù)庫設計規(guī)范提出相應的要求,同時也對系統(tǒng)的實施和運維工作提出了要求;
4、應用服務器和數(shù)據(jù)庫服務器的層次定義:和J2EE體系架構不同,一方面保持應用的獨立性,另一方面保證數(shù)據(jù)庫服務器的穩(wěn)定;
5、系統(tǒng)的穩(wěn)定性壓倒一切:即使犧牲性能,也要確保系統(tǒng)的穩(wěn)定;
6、模塊的質(zhì)量保證:對測試的組織,完整的測試流程貫穿項目開發(fā)實施的全過程;
7、可維護性的表現(xiàn):一方面是基于運維的,對于系統(tǒng)軟硬件各個部分的監(jiān)控;另一方面是系統(tǒng)架構上,編程模式上能支撐二次開發(fā);
8、可擴展性的表現(xiàn):系統(tǒng)架構上和物理部署上的兩種體現(xiàn);
9、可用性:界面操作標準化,有完善的文檔制作和交互式教學課件制作工具;
10、所有的一切處理操作都是事務代碼;操作可跟蹤、可追溯;
11、符合業(yè)務特點的數(shù)據(jù)庫表類型定義,即將數(shù)據(jù)庫開發(fā)的成功實踐固化在開發(fā)環(huán)境中。