ABAP基礎(chǔ)-程序描述

1 概述

ABAP程序的源代碼結(jié)構(gòu)包括數(shù)據(jù)定義和處理塊兩個(gè)部分。

  • 數(shù)據(jù)定義部分包含整個(gè)程序中可見的全局?jǐn)?shù)據(jù)類型和數(shù)據(jù)對(duì)象,選擇屏幕元素以及ABAP Objects自定義的類和接口。
  • 處理塊是ABAP程序的主要結(jié)構(gòu)單元

Event Block (事件塊)

每一個(gè)事件塊都需要有一個(gè)事件關(guān)鍵字引導(dǎo),這些事件關(guān)鍵字單獨(dú)構(gòu)成一個(gè)語句,其后續(xù)語句隸屬于該關(guān)鍵字代表的事件塊,直到下一個(gè)事件關(guān)鍵字出現(xiàn)為止,該事件塊自動(dòng)結(jié)束,因此沒有顯示的事件塊結(jié)束關(guān)鍵字。事件塊包括報(bào)表事件,列表事件,屏幕事件等。

  • INITIALIZATION(初始化)
  • START-OF-SELECTION(數(shù)據(jù)選擇開始)
  • ATLINE-SELECTION(列表行選擇)
  • PROCESS BEFORE OUTPUT(屏幕輸入前處理)
  • PRICESS AFTER INTPUT(屏幕輸入后處理)

Dialog Modules(對(duì)話模塊)

這種處理快代碼部分的開始和結(jié)束都有相關(guān)的關(guān)鍵字作為標(biāo)志,是相對(duì)獨(dú)立的單元。

Procedures(過程 )

代碼部分的開始和結(jié)束也有相關(guān)的關(guān)鍵字作為標(biāo)志,是相對(duì)獨(dú)立的程序單元。過程則包括功能模塊和子程序,以及ABAP對(duì)象中的類方法,可以被其他的模塊調(diào)用,以實(shí)現(xiàn)程序模塊化和代碼復(fù)用。

REPORT z_first_program.
DATA: text1(10) TYPE c VALUE 'Basic List',
      text2(14) TYPE c VALUE 'Secondary List'.

START-OF-SELECTION .
  DO 5 TIMES.
    PERFORM output_line USING sy-index.
  ENDDO.


AT LINE-SELECTION.
  WRITE: text2, sy-lsind.


FORM output_line USING p_index.
  WRITE: / text-001,
  p_index.
ENDFORM.
ABAP處理塊

對(duì)話模塊和時(shí)間模塊是在ABAP程序外部調(diào)用,過程則是通過程序語句內(nèi)部調(diào)用。

2 程序類型

1 應(yīng)用程序類型

  • Executable program(可執(zhí)行程序,類型代碼為1)
    常常用于創(chuàng)建通常意義上的報(bào)表,整個(gè)程序由REPORT關(guān)鍵詞引導(dǎo),在ABAP編輯器中進(jìn)行編輯,并可以直接在ABAP編輯器中執(zhí)行。除此之外,還可以通過SUBMIT語句或者分配報(bào)表事務(wù)代碼來運(yùn)行。可執(zhí)行程序可以包含所有類型的ABAP處理塊,但不能在其中定義功能模塊(可以調(diào)用)。
  • Moudel pool(模塊池程序,類型代碼為M)
    在程序創(chuàng)建時(shí)由系統(tǒng)自動(dòng)生成PROGRAM關(guān)鍵字語句進(jìn)行引導(dǎo),一般包含程序自身定義的屏幕和對(duì)話模塊,在ABAP編輯器中進(jìn)行編輯,且必須通過事務(wù)代碼運(yùn)行??梢园龍?bào)表事件和功能模塊所有類型的ABAP處理塊。

2 其他程序類型
其他程序類型的程序不能直接(或通過事務(wù)代碼)執(zhí)行的,但這些類型作為代碼容器,可以作為ABAP程序提供各種各樣的模塊化代碼單元。

  • Function groups(功能組,類型代碼F)
    由FUNCTION-POOL 語句引導(dǎo),包含一個(gè)或多個(gè)功能模塊。
  • Class pools(ABAP類庫(kù),類型代碼K)
    由CLASS-POOL語句引導(dǎo),是APAB對(duì)象的定義部分。
  • Interface pools(ABAP接口庫(kù),類型代碼J)
    由INTERFACE-POOL引導(dǎo),與K類型程序相似,用于定義ABAP對(duì)象的接口。
  • Subroutine pools(子程序池,類型代碼S)
    由PROGRAM語句引導(dǎo),包含一個(gè)或多個(gè)子程序代碼模塊或類方法。
  • Type groups(無類型代碼)
    由TYPE-POOL語句引導(dǎo),在數(shù)據(jù)字典中定義。
  • Include programs(包含程序,類型代碼F)
    不需要任何語句引導(dǎo),也不需要包含完整的處理模塊。

3 程序元素

  • Source code(源代碼)
  • Variants(變式)
    與選擇屏幕有關(guān),用于用戶存儲(chǔ)在選擇屏幕中輸入的數(shù)據(jù),類比變量
  • Attributes(屬性)
  • Text Elements(文本元素)
    一種特殊的程序元素,儲(chǔ)存在文本池中的文字,包括文本符號(hào)(Text symbols),選擇文本(Selection texts),列表標(biāo)題(List Headings)
  • Documentation(文檔)

4 屏幕

  • Screens(普通屏幕)
  • Selection Screens(選擇屏幕)
  • Lists(傳統(tǒng)列表屏幕)

5 語句類型

  • 聲明語句,用于數(shù)據(jù)元素的定義和聲明,常用的關(guān)鍵字有TYPES,DATA,PARAMETER,TABLES
  • 模塊化語句,用于定義程序運(yùn)行時(shí)內(nèi)處理的代碼塊,還可以細(xì)分為事件關(guān)鍵字語句和過程關(guān)鍵字語句。
    事件關(guān)鍵字:
    AT SELECTION-SCREEN
    AT USER-COMMAND
    INITIALIZATION(初始化)
    START-OF-SELECTION(數(shù)據(jù)選擇開始)
    ATLINE-SELECTION(列表行選擇)
    PROCESS BEFORE OUTPUT(屏幕輸入前處理)
    PRICESS AFTER INTPUT(屏幕輸入后處理)
    事件關(guān)鍵字:
    FORM/ENDFORM
    FUNCTION/ENDFUNCTION
    MODULE/ENDMODULE
  • 控制語句,控制程序流程
  • 調(diào)用語句,用于調(diào)用已經(jīng)定義好的處理塊,例如子程序,功能模塊等,常用語句包括PERFORM,CALL,SUBMIT,LEAVE TO
  • 操作語句,程序內(nèi)數(shù)據(jù)操作或輸出,WRITE,MOVE,ADD
  • 數(shù)據(jù)庫(kù)語句

3 程序運(yùn)行

1 直接運(yùn)行

在Transcation SE38 or SA38 中運(yùn)行

2 調(diào)用執(zhí)行

功能 報(bào)表調(diào)用 事務(wù)調(diào)用
無返回調(diào)用 SUBMIT LEAVE TO TRANSACTION
調(diào)用并返回 SUBMIT AND RETURN CALL TRANSACTION

內(nèi)部調(diào)用可以從另一個(gè)程序通過SUBMIT語句進(jìn)行。

REPORT z_calling_program.

START-OF-SELECTION.
  WRITE 'This program calls other program'.

  SUBMIT Z_DATA_MANIPULATION.
image.png

通過Transcation code 調(diào)用的程序語句為LEAVE TO TRANSACTION OR CALL TRANSACTION

3 事務(wù)代碼

  • SE80 對(duì)象導(dǎo)航器
  • SE81 倉(cāng)庫(kù)信息系統(tǒng)
  • SE84 倉(cāng)庫(kù)對(duì)象
  • SE38 ABAP編輯器
  • SE11 數(shù)據(jù)字典
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 作者: 惟湛 如何調(diào)整ABAP程序的性能(copy) 7、兩個(gè)內(nèi)表添加使用批量增加代替逐行不推薦Loop at i...
    SmalltalkVoice閱讀 7,805評(píng)論 7 18
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,781評(píng)論 25 709
  • 最近讀了一本書,書名是《讓孩子的大腦自由》。這本書里面提出一個(gè)比喻,就是種子與土壤。種子是孩子本身的能力,比如智商...
    姜信寶BoB寶寶說閱讀 922評(píng)論 0 1
  • 今天對(duì)我來說是很有意義的一天,開始了周末學(xué)習(xí)自動(dòng)化測(cè)試之旅。 list列表 字典 if語句, 循環(huán)(for循環(huán),w...
    讓我重新愛你一次閱讀 162評(píng)論 0 0
  • “暮春……” 暮春正在厚厚的玉米葉里艱難前行,那寬寬的玉米葉劃在暮春臉上,暮春感覺火辣辣地痛。汗水從臉上大顆大顆地...
    鳳之子閱讀 374評(píng)論 0 4

友情鏈接更多精彩內(nèi)容