平台
ABAP開發環境包括設計和開發程序、屏幕、菜單、功能模塊等所需的一切工具。它還包括了程序調試、性能和在線分析、測試所需的實用程序。n
ABAP/4是SAP自己的第四代編程語言。從4.0版本開始,它簡稱為ABAP;它是經技術改進的I刮名語言,主要添加了新特性以成為面向對象的語言。n
ABAP的意思是“先進經營應用編程語言(Advanced Business Application ProgrammingLanguage)”,這表明SAP編程語言用于開發R/3套件中所有的标準經營應用程序。n
圍繞着ABAP編程語言,SAP設計了一個完整的開發環境,像一個CASE環境,稱作“ABAP開發平台”。它和R/3系統完全集成在一起,客戶可以根據其需求用它開發特定的解決方案,或改進、改善标準的應用程序。nABAP開發環境的中央有兩個核心構件: “ABAP數據字典”和“ABAP經營對象庫”, 即BOR( Business Object Repository).n
“數據字典”包含所有的系統元數據,也就是對程序所使用的數據結構的描述。此字典是元數據庫,因此包含表格定義、字段的合法值、視圖、數據元素等等;更重要的是它定義了表格的關系。精通浏覽和使用數據字典非常重要,不僅對數據庫管理員和開發人員,對定制咨詢顧問也是如此。n
“經營對象庫”包含ABAP平台上的所有開發對象:程序、字典數據、dynpros(動态程序的屏幕)、文檔等等。此庫對于控制和測試開發工作是必不可少的構件。n
從3.0版本開始,開發環境還包括“平台組織者”,這是傳輸系統的附加構件。平台組織者和定制組織者負責控制開發對象和定制設置的開發與轉換,以便将它們傳輸到其他系統上。n
“平台組織者”的特性包括方案管理、程序修改控制、團隊開發的協調、對象鎖定和解鎖定。傳輸系統負責開發和定制設置系統之間的物理傳輸。比如說,SAP應用補丁和升級是SAP自身系統和用戶系統之間真正大塊的對象傳輸。這是一個重要工具,開發人員、定制者和系統管理員對它必須非常熟悉。n
自從SAP R/3的3.1H版本以及4.0版本的普遍推廣,産生了一種新的傳輸系統,稱作TMS(傳輸管理系統),它引入了傳輸域和組的概念。它允許在傳輸組中對系統進行圖形化定義,從系統内部引入修改請求,而無須訪問操作系統。
發展曆史
了解一下ABAP的發展曆史是必要的,ABAP産生的最初的目的是用以生成簡單打印報表程序,我們知道SAP最初是為解決财務實時數據處理問題的,ABAP(Advanced Business Application Programming->;高級業務應用編程語言)用于編寫SAP AG的幾乎全部産品源代碼。 嚴格地講,ABAP/4不僅僅是一個開發工具,而且是一套完整的client/server開發環境,這很好理解,微軟的Visiual Studio是一開發環境,VB,VC++等是開發工具.ABAP開發環境包含支持程序開發的一些函數和包等。
SAP開發環境的三層(多層)概念也不新鮮,比如在安裝SAP時也可将DB instance安在一台server,Central instance在另一台所謂的Application server(我想這應是相關SAP基礎系統包括各種應用程序所在),而通常客戶端安裝的SAP Logon Front End,SAP會話管理器等是所謂的表示層,它通過TCP/IP,SAP演示協議或RFC和應用服務器進行數據傳輸,用戶看到的隻是處理後的數據返回。
和Delphi的三層邏輯相近,在應用層包含多個組件象ABAP開發平台,身份驗證,系統管理維護等用以處理會話,更新,排隊,網關,數據層處理native和Open SQL等(這是從内部機制方面看),SAP各模塊應用的業務邏輯都在應用層被處理(從用戶角度)然後結果被返回。
SAP Logon,表示應用服務器(通常企業為了節省成本和方便管理可能會将應用服務器和數據庫安裝在同一起),System number,舉個實例,開發和測試服務共用一台服務器,開發使用system number00,而測試使用system number 01,通過system number邏輯地将一台physical server邏輯地分成了兩台application server。
現代信息化技術的快速發展與企業管理理念的不斷進步,使得信息化管理系統已經在社會各領域中得到了廣泛的應用,ERP系統作為現代企業信息化管理系統中應用最為廣泛的一種,其對提高企業的管理與運行效率,推動企業的發展有着積極地作用。因此ERP系統的開發也越來越受到人們的重視,ABAP作為ERP系統開發重要工具及編程語言,加強對其應用的研究,對于提高ERP系統開發的水平與質量有着重要的意義。
特征
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層看到的透明表就和具體數據庫無關),各種網絡系統。
程序屬性
簡介
程序屬性決定程序屬于哪種應用程序以及程序所鍊接的邏輯數據庫。必須謹慎輸入屬性以便系統能正确處理程序(有關程序屬性的詳細信息,參見重要的程序屬性(頁459))。
已經将名稱分配給程序并選擇“ABAP/4編輯器初始屏幕”上的“創建”時,出現“ABAP/4:程序屬性”屏幕。
操作
1. 在字段“标題”中輸入程序标題。選擇描述程序功能的标題。系統自動将标題與文本摘要合并。如果以後要更改标題,請按如下操作進行:
- 選擇“ABAP/4編輯器初始屏幕”上的“文本摘要”或“屬性”。
- 選擇“更改”。
2. 完成兩個強制字段:
- 如果創建報表程序,則在“類型”字段中輸入1,如果創建模塊存儲,則在“類型”字段中輸入M。關于可能類型的列表,請單擊可能條目箭頭。
- 在“應用程序”字段中為應用程序輸入分類字母,如财務會計輸入F。
3. 如果創建報表(類型=1),請選擇“确定”。
系統将特定報表屬性自動插入輸入字段。然後看見附加字段“邏輯數據庫”、“從應用程序”和“選擇屏幕”(版本)。
4. 指定與程序相關的所有其他屬性(有關程序屬性的詳細信息,參見重要的程序屬性(頁459))。
5. 選擇“保存”以保存屬性。
6. 出現“維護對象目錄條目”窗口。
7. 輸入開發類。
如果為培訓或測試目的創建程序(如某私有對象),則輸入開發類$TMP或選擇“邏輯對象”。
8. 選擇“保存”以保存開發類。
這将關閉“維護對象目錄條目”窗口并返回“ABAP/4:程序屬性”屏幕。
9. 選擇“後退”離開屏幕。如果要直接轉到ABAP/4編輯器,請選擇“轉向->;源代碼”。
如果通過預定義開發類在“對象浏覽器”中創建程序,則跳過步驟6到8。
最重要的程序如下所述。關于其它屬性的詳細信息(或關于此處描述的屬性的詳細信息),請選擇相關的輸入字段,并單擊可能的條目箭頭。
注意下述某些屬性隻适用于報表程序并不适用于其他ABAP/4程序。
1. 在“SAPR/3”初始屏幕上選擇“工具->ABAP/4工作台”。
出現“ABAP/4開發工作台”屏幕
2. 選擇“ABAP/4編輯器”
“ABAP/4編輯器初始屏幕”如下所示:
3. 為在“程序”字段中創建的程序輸入名稱(關于創建程序名稱的詳細信息,參見命名程序規則(頁455))。
4. 選擇“創建”。
不論在“對象組件”下選擇什麼,都出現“ABAP/4:程序屬性”屏幕。
當命名并創建程序後,可以定義其屬性(關于定義程序屬性的詳細信息,參見指定程序屬性(頁457))。
創建ABAP/4程序還有其它過程。例如,可以:
1. 選擇“ABAP/4開發工作台”屏幕上的“對象浏覽”。
2. 選擇“對象列表”下的“程序”。
3. 選擇“單一對象”下的“程序對象”。
4. 輸入程序名并單擊“顯示”。
類型
除了類型1(如同報表的獨立程序)和M(模塊存儲),還應該注意類型I(包含程序)。包含程序是個獨立的程序,它有兩個主要特征。首先,它包含程序代碼,不同程序都可使用該代碼。其次,它用于模塊化程序源代碼,該代碼分成邏輯相關部分。其中每個部分都存儲在不同的包含程序中。包含程序改善源代碼的可讀性并有助于維護。(有關包含程序的詳細信息,參見包含程序)。
應用程序
“應用程序”字段包括應用程序的縮寫,如,财務會計縮寫為F。該必需條目使系統能将程序分配給适當的業務區。
開發類
開發類對系統之間進行傳輸非常重要。執行傳輸時,可以将分配給某個開發類的工作台對象組合起來。
如果用戶在某組中工作,也許要将程序分配給現有開發類或創建新的開發類。分配給開發類$TMP的程序是私有對象并且不能傳輸到其他系統。
但是,也可以通過選擇“ABAP/4編輯器初始屏幕”上的“程序->重新分配...”更改分配給程序的開發類。
應用程序中的邏輯數據庫(僅報表程序)
這些屬性決定報表使用哪個邏輯數據庫檢索數據,以及邏輯數據庫屬于哪個應用程序。應用程序中數據庫名稱必須是唯一的。但是,整個系統可以包括數個同名數據庫。因此指定應用程序很重要。關于邏輯數據庫的詳細信息,參見邏輯數據庫的特性和維護。
如果報表程序直接讀取數據,而未使用邏輯數據庫(關于此主題的詳細信息,參見訪問帶邏輯數據庫的數據庫表),則應該象通常一樣指定應用程序,但将“邏輯數據庫”字段置空。
選擇屏幕版本(僅報表程序)
如果沒有指定選擇屏幕版本,則系統在邏輯數據庫選擇标準、報表特定參數及選擇選項的基礎上自動創建選擇屏幕(關于選擇屏幕的詳細信息,參見使用選擇屏幕)。
如果想使用自己的選擇屏幕,請在此字段中輸入号碼。該号碼必須小于1000。可以通過按F4或在DBxxxSEL程序中找到現有選擇屏幕号碼(詳細信息,參見邏輯數據庫選擇)。
大寫/小寫
顯示和存儲時,如果要讓ABAP/4編輯器将程序代碼與輸入時保持相同,則請将該字段置空。如果選擇該字段,則所有的程序代碼(除了引号中的文本及注釋外)都轉換成大寫字母。屏幕顯示依賴于所使用的編輯器模式(詳細信息,參見文檔ABAP/4工作台工具。
編輯器鎖定
如果設置此屬性,則其他用戶則不能修改、改名或删除程序。隻有用戶可以更改程序、維護屬性、文本摘要及文檔;或者解除鎖定。
定點算術
如果設置此屬性,系統則根據小數點位數将類型P字段四舍五入,或用零填補(關于類型P字段的詳細信息,參見數字數據類型(頁3-4))。這種情況下,無論在用戶主記錄中指定了什麼,小數點字符總是句點(.)。
通過變式啟動(僅報表程序)
如果設置該屬性,則用戶隻可以使用變式啟動報表程序。在啟動程序之前,必須創建至少一個報表變式(關于創建變式的詳細信息,參見使用變式預設置選擇)。
程序應用
概述
在ABAP/4編輯器中編寫ABAP/4程序。
可以直接從“ABAP/4程序屬性”屏幕切換到編輯器,也可以從“ABAP/4編輯器初始屏幕”中調用編輯器。
編寫程序操作
1. 在“ABAP/4程序屬性”屏幕上選擇“轉向->;源代碼”或“源代碼”。
選定“源代碼”并選擇“ABAP/4編輯器初始屏幕”上的“更改”。
出現“ABAP/4編輯器編輯程序”屏幕。
系統自動輸入第一個ABAP/4語句,如
REPORT or PROGRAM .
對于 ;,系統使用在“ABAP/4編輯器初始屏幕”上輸入的名稱。
語句REPORT和PROGRAM實際上具有相同功能。它們使系統能識别報表程序或任何其他ABAP/4程序并允許為輸出列表指定一定的标準:
REPORT或PROGRAM語句可以有不同的參數,如LINE-SIZE、LINE-COUNT或NO STANDARD PAGE HEADING。這些參數主要适用于報表程序,用來分析數據并輸出結果列表。
關于列表的詳細信息,參見[ See also: 第六章 創建列表 ]或參見REPORT和PROGRAM上的關鍵字文檔。
2. 輸入程序代碼。
3. 選擇“檢查”進行語法檢查。然後系統掃描程序代碼尋找語法錯誤及不相容處。如果檢查出錯誤,則出現消息報告它并且有可能的話将建議解決方案或更正。将光标放在适當的位置上。
4. 選擇“保存”保存代碼。
源文本存儲在程序庫中。
測試程序
測試程序檢查代碼是否正确工作。
為測試目的要運行程序,選擇“ABAP/4編輯器編輯程序”屏幕上的“程序->;執行”。
系統執行該程序,如同從“ABAP/4編輯器初始屏幕”中啟動的一樣。例如,創建報表程序之後,則首先出現從中輸入條件的選擇屏幕,然後是結果列表。
如果正創建ABAP/4程序模塊,則必須在運行程序之前創建事務代碼(關于創建事務代碼的詳細信息,參見對話編程簡介)。
出于測試目的,可以先不進行保存,直接運行某個不是模塊存儲部件的程序。編輯器保留一個包含更改的臨時版本。但是,測試結束後必須返回編輯器以确保所有更改都已保存。
程序的顯示更改
本節主要說明如何顯示或更改現有程序。此處相關的是技術步驟而不是實際代碼更改。
要顯示或更改程序,請進行如下操作:
1. 在“ABAP/4編輯器初始屏幕”上的“程序”字段中輸入要更改的程序名稱。
2. 選擇“源代碼”并選擇“顯示”或“更改”。
如果選擇“更改”則繼續步驟3。
如果選擇“顯示”,則看到“ABAP/4編輯器顯示程序”屏幕。此處也顯示源代碼,但不能進行更改。可以通過選擇“顯示->;更改”切換到更改模式。
3. 如果其他用戶鎖定該程序對編輯器的訪問,則系統顯示下列消息:
User forbade all changes.
在這種情況下,不能更改程序。要更改程序,必須将它複制到新程序中并用新程序名再開始步驟1。否則,繼續步驟5。
4. 輸入對程序代碼的更改。
5. 選擇“檢查”檢查語法。
6. 保存程序的更改版本。
如果更改程序的私有版本(開發類$TMP),則立即保存更改版本。
如果從$TMP之外的開發類更改程序,則會出現一個窗口,從中可以指定更正請求号(Change Request Number)。
7. 運行程序測試它(關于測試的詳細信息,參見測試程序(頁11))。
配給程序
介紹
可以将事務代碼分配給類型1的單獨程序,以後就将這些程序作為事務代碼處理。在[ See also: 第三部分 編寫ABAP/4事務 ]中對事務有說明。
運用
1. 按照本節上述主題所述,創建單獨程序。
2. SAP菜單樹:工具 -> ABAP 工作台 -> 開發 -> 其他工具 -> 事務,事務代碼:SE93。
3. 填入事務代碼并選擇“維護事務”屏幕上的“創建”
4. 在下列對話屏幕上選擇“報表事務”;
5. 在下列“創建報表事務”屏幕上填入所需條目“事務說明”和“程序”。
6. 将事務代碼保存在開發類中。
開發類可以用事務代碼SM30維護視圖V_TDEVC來創建或修改。
快速入門
首先、ABAP是技術開發,想快速培訓出師,你必須得有編程基 礎。從這點考察培訓機構,你就看看他們有沒有筆試,如果 啥條件都不要求,那肯定是不能參加的。編程基礎不是一天 兩天都鍛煉出來的。
其二、打聽定向委培的公司,是否真正有項目。這個很好辦, 招聘求職的網上一搜就知道了。
其三、看培訓機構的老師水平和課程安排如何。這個沒辦法 從網上了解太多,隻能實地考察了。
其四、做好這方面的求職準備。培訓機構推薦是一回事,你自 己找機會也不能忽略。
其五、ABAP職位需求非常旺盛,有點譜,學到了其實是蠻 容易找工作的。培訓帶你入門,修行看個人嘛 我見到過很好 的培訓機構,裡面有的學員照樣學不出來,為啥? 不努力呗 !
最後,市 面上做這方面培訓的,叫的出來的有達沃旗,sap私塾和91abap,賽跑網ABAP。選擇比較好的培訓機構至關重要。建議考慮口碑,價格,就業率等等各方面的因素。
展示報表
ABAP是SAP的基石,入門SAP,首先學好ABAP至關重要,ABAP中ALV部分也很重要,展示一個例子:
TABLES:marav. "MARA&MAKT 視圖
*---------------------------------------------------------------------*
DATA:BEGIN OF gt_tab OCCURS 100,
matnr LIKE marav-matnr,
maktx LIKE marav-maktx,
matkl LIKE marav-matkl,
ntgew LIKE marav-ntgew,
gewei LIKE marav-gewei,
END OF gt_tab.
DATA i_repid LIKE sy-repid.
***ALV設定
TYPE-POOLS: slis.
DATA gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA is_layout TYPE slis_layout_alv.
***選擇屏幕制作
SELECT-OPTIONS:
s_matnr FOR marav-matnr MATCHCODE OBJECT mat1.
START-OF-SELECTION.
***取數據
SELECT * FROM marav
INTO CORRESPONDING FIELDS OF TABLE gt_tab
WHERE
matnr IN s_matnr.
END-OF-SELECTION.
i_repid = sy-repid.
*使用函數得到gt_fieldcat内表
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = i_repid
i_internal_tabname = 'GT_TAB' "capital letters!
i_inclname = i_repid
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
ENDIF.
***layout設定
is_layout-zebra = 'X'.
is_layout-colwidth_optimize = 'X'. "優化列寬選項是否設置
***單擊彈出明細設定
* is_layout-f2code = '&ETA'.
* is_layout-detail_popup = 'X'.
* is_layout-detail_initial_lines = 'X'.
* 展示數據
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = i_repid
it_fieldcat = gt_fieldcat
i_save = 'A'
i_callback_user_command = 'FRM_UCOMM' "實現雙擊事件
is_layout = is_layout
TABLES
t_outtab = gt_tab
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.


















