天天看點

ABAP基礎

ABAP 語言是整個 SAP 系統的基礎開發工具和技術平台,其包含:事件驅動( Evet-Driven )、機制和子產品化技術( Modularization )、完整的面向對象概念及實作方法( Object Oriented )。

ABAP 程式的源代碼結構包括資料定義和處理塊兩部分:

資料定義:整個程式中可見的全局資料類型和資料對象、選擇螢幕元素以及 ABAP Object 中自定義的類和接口。

處理塊( Processing Blocks ):是 ABAP 的主要結構單元,定義程式在不同狀态下執行的具體功能,在編譯運作中,每一塊都是一個獨立的實體。

注:資料(包括選擇螢幕元素)定義和聲明語句是獨立于任何處理塊的,其他所有語句則都必須隸屬于某個處理塊。

1. ABAP 程式含有三種類型的處理塊:

· 事件塊( Event Blocks ):每一個事件都需要有一個時間關鍵字引導,并單獨構成一個語句,其後續語句隸屬于該關鍵字代表的時間塊,直到下一關鍵字出現為止。包括:報表事件、清單事件、螢幕事件

初始化: INITIALIATION

資料選擇開始: START-OF-SELECTION

清單行選擇: ATLINE-SELECTION

螢幕輸出前處理: PROCESS BEFORE OUTPUT

平和輸入後處理: PORCESS AFTER INPUT

· 對話子產品( Dialog Modules ):開始和結束都有相關的關鍵字作為标志,是相對獨立的程式單元。

· 過程( Procedures ):代碼部分的開始和結束都有相關的關鍵字,也是相對獨立的程式單元。過程包括功能子產品和子程式,以及對象中的類方法可以被其他的子產品調用,實作程式子產品化和代碼複用。

2. 處理塊調用

處理塊使程式代碼子產品,也是運作期間的單元;其具體出現的順序與其在程式代碼中的先後順序無關。

3. 事件驅動

在各種處理塊中,系統對事件快的調用過程有其特殊性:其調用總是與某時間地發生相關,也成為事件的觸發。

4. 處理塊與工作過程

通過排程機( Dispatcher )把應用程式的各個代碼子產品分解成許多對話步驟,并通過工作過程( Work Processes ,是系統的軟體元素)在系統的應用層的虛拟機上進行處理,這保證了 ABAP 程式運作是的系統硬體平台無關性。

       程式類型

在建立ABAP程式時均需要指定其類型,程式類型将決定在改程式中可以包含哪些處理塊,已經運作環境是如何處理該程式的。

ABAP程式分為兩大類:一類是可以分陪事務代碼,直接運作的應用程式,這類程式往往用于完成一種系統功能;另一類不是為了實作特定的功能,可能隻在系統開發過程中具有意義。

各種不同程式類型的介紹:

1. 應用程式類型:

·可執行程式(Executable Program , 類型代碼1):常常用于建立通常以以上的報表,整個程式由REPORT關鍵字語句進行引導,可以包含自定義的螢幕,在ABAP編輯器中進行編輯,并可以直 接在ABAP編輯器中執行。此外,還可以通過SUBMIT語句或者配置設定報表事務代碼來運作。

·子產品池(Module pool , 類型代碼M):出案件時有系統自動生成,由PROGRAM關鍵字進行引導,一般包含程式自定義的螢幕和對話子產品,必須通過事務代碼運作。

習慣上,應用程式往往被分為報表程式和對話程式(又稱動态程式、事務程式),可執行程式中可以處理報表事件,也可以加入螢幕和對話子產品;而子產品池程式一般隻用于事務程式的設計。

2. 其他程式類型:

其不能直接執行,但這些類型作為代碼容器,可以為ABAP程式提供各種各樣的子產品化代碼單元。

·功能組(Function groups ,類型代碼F):由FUNCTION-POOL語句引導,包含一個或多個功能子產品,可包含自己的螢幕,一般不能直接運作功能。功能子產品是子產品化的代碼段,不嫩那個直接執行,需要在普通程式中調用。

·ABAP類庫(Class pools , 類型代碼K):由CLASS-POOL語句引導,是系統ABAP對象類和多個局域類。類庫在ABAP工作台工具Class Builder進行建立。

·ABAP接口庫(Interface pools , 類型代碼J):由INTERFACE-POOL語句引導,與類型K程式相似,用于定義ABAP對象的接口,可被人以全局類和局部類實作,不能直接運作。

·子程式池(Subroutine pools , 類型代碼S):由PROGRAM語句引導,包含一個或多個程式代碼子產品或類方法,續被普通程式調用,不可包含自定義的使用者螢幕,在ABAP編輯器中進行編輯。

·類型組(Type groups , 無類型代碼):由TYPE-POOL語句引導,在資料字典中定義,不包含任何螢幕和處理塊,用于定義全局資料類型。

·包含程式(Include programs , 類型代碼I):不需要任何語句引導,也無需要包含完整的處理塊。無需獨立編譯,包含程式隻是代碼複用,在ABAP中編輯,可直接插入其他程式中。包含程式 可通過INCLUDE語句被多個程式引用,與其他程式之間不存在參數接口。

程式元素

一個ABAP應用程式并不是僅僅由源代碼組成,在上述各種類型的程式中,可能包含一個或多個下述程式元素的組合:

1. ABAP元素

·源代碼(Source code)是ABAP語句的集合;分資料定義和具體處理代碼兩部分。

·變式(Variants)與選擇螢幕相關,用于儲存在選擇螢幕中輸入的資料選擇标準,以友善再次輸入。

·屬性(Attributes)建立前後的維護修改,其中包含程式類型,使用的邏輯資料庫以及應用子產品等。

·檔案元素(Text Elements)用于儲存在文本池中的文字,包括:文本符号、選擇文本、清單标題。

·文檔(Documentation)程式的說明文,也指程式中的注釋部分。

2. 螢幕

ABAP中可以包含螢幕的程式類型有可執行程式、子產品池以及功能組程式。這些程式中能可已包含三種不同類型的螢幕:

·普通螢幕(Screens , 也稱為SAP标準螢幕)經常出現在SAP系統事務設計中,包括幕布局,流邏輯,不能在ABAP編輯器中維護。

·選擇螢幕(Selection screens)經常出現在報表程式中,用于接受使用者輸入。

·傳統清單螢幕(List , 又稱Classical Lists)是SAP釋出ALV表格控制之前的主要報表程式輸出界面。

3. GUI

Graphi User Interface,圖形界面接口:式螢幕的組成部分,但設計過程中獨立于SAP螢幕而存在。GUI元素在程式調用時分為狀态(GUI Status)和标題(GUI Title)兩個部分。不可以在ABAP編輯器中維護,但是可通過Object Navigtor(SE80)添加至程式中,并使用想過工具開發(Screen Painter和Menu Painter)。

語句格式

1. 語句結構

所有程式語句都有一個ABAP語句關鍵字引導,并由一個“.”作為結束的标志。

·聲明語句:用于資料元素的定義和聲明,形成獨立于各個處理塊的資料聲明代碼區域。

   常用資料聲明關鍵字:TYPES、DATA、PARAMETER和TABLES等。

·子產品化語句:用于定義ABAP程式運作時内的處理代碼塊,還可細分為時間關鍵字語句和過程定義關鍵字語句。

   事件關鍵字有:AT SELECTION-SCREEN、START-OF-SELECTION、AT USER-COMMAND等。

   注:期結束取決于下一時間關鍵字的出現。

   過程定義關鍵字有:FORM / ENDFORM、FUNCTION / ENDFUNCTION、MOSDULE / ENDMOSDULE等。

   注:一般有對應的END關鍵字标志出現。

·控制語句:通過條件控制程式處理塊每部的程式流程。 IF、WHILE、CASE等。

·調用語句:用于調用已經定義好的處理塊。如子程式、功能子產品、其他程式。PERFORM、CALL、SUBMIT、LEAVE TO等。

·操作語句:用于程式内部資料操作和輸出,該類型關鍵字較多:WRITE、MOVE、ADD等

·資料庫語句:用于資料操作。包含Open SQL和Native SQL。

2. 編輯格式

在ABAP編輯器中書寫語句時各個關鍵字,選項及操作數之間應至少保留一個空格,系統将換行符也解釋為一個空格,而且并不要求每一語句都占一行。

   注:ABAP編輯器中的Pretty Printer功能可以實作縮進控制。

3. 語句鍊

如果連續使用相同關鍵字引導的語句,可以使用關鍵字後加“:”和語句間加“,”來形成語句鍊。

    例: WRITE : text1 , text2 .

等價于 WRITE test1 .

             WRITE text2 .

4. 注釋

ABAP中的注釋有兩種形式:

·在開頭使用“*”,則該整行都成為注釋。

·在行中使用“"”,則符号後面的文字為注釋部分。

   注:ABAP不區分大小寫,習慣上所有ABAP關鍵字設為大寫;資料對象、程式标題等設為小寫形式,可通過編輯器中的Pretty Printer功能進行設定。

繼續閱讀