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