iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
自我挑戰組

ABAP 基礎30天學習筆記系列 第 11

Day11_ABAP class 宣告

  • 分享至 

  • xImage
  •  

原文連結:Defining a Local Class

全域類別與區域類別

在ABAP中,Class可以是全域的也可以是區域的:

  • 全域類別(Global Class):集中存在class pool 裡,包含了該class的關聯物件,可以被不同的程式重複使用。

  • 區域類別(Local Class):被定義在ABAP的個別程式裡,例如:被定義在一個全域類別中的區域類別。僅在該全域類別內部程式範圍可被呼叫。全域與區域兩者在語法上幾乎完全相同。

在全域類別內建立區域類別

下方選單中,有"Local Type"這個選項,開啟後可以在裡面宣告local class,接下來範例中介紹到的loca class宣告皆寫在此處。
https://ithelp.ithome.com.tw/upload/images/20240907/20113802OpeDCbN2jn.png

Class的結構

"宣告"
CLASS <class_name> DEFINITION.

  PUBLIC SECTION.
    ...
  PROTECTED SECTION.
    ...
  PRIVATE SECTION.
    ...
    
ENDCLASS.

"實作"
CLASS <class_name> IMPLEMENTATION.
  ...
  
ENDCLASS.

class主要分成兩個段落,宣告(definition)與實做(implementation):

  • 宣告:
    此部分用來定義類別中的型別(types)、常數()、屬性(attributes)與方法(methods)等。
    CLASS <class_name> DEFINITION.開頭,中間區分成三個(sections),並以ENDCLASS結尾。

  • 可見度區段:
    位於宣告中的三個區段(sections),按照其可見度分為PUBLIC SECTION / PROTECTED SECTION / PRIVATE SECTION三個不同區段,且所有類別的宣告都必須寫在這三個區段內。每個區段的宣告為非強制性的,但必須要遵守上述的順序進行宣告。

  • 實作:
    包含了要被執行的程式碼,即為方法的實作。用CLASS <class_name> IMPLEMENTATION.開頭並以ENDCLASS.結尾。
    實作部分是非強制性的,除非宣告階段有可執行的方法。

下表可見可宣告參數的種類及方式,包含型別、變數、常數、方法等:

CLASS <class_name> DEFINITION.
  <any>SECTION."任意可見度區段"

    TYPES         <type>                TYPE   <type>.
    DATA          <instance_attribute>  TYPE <type>[VALUE <v>].
    CLASS-DATA    <static_attribute>    TYPE <type>[VALUE <v>].
    CONSTANTS     <constant>            TYPE <type> VALUE <v>.
    
    METHODS       <instance_method>     <signature>.
    CLASS-METHODS <static_method>       <signature>.
    
ENDCLASS.

範例:宣告航班類別

下面程式碼是宣告一個航班類別,在PUBLIC變數區段,宣告了兩個實體變數及一個靜態變數。然後其他兩個區段PROTECTEDPRIVATE因為沒有變數要宣告,所以直接註解起來。

"宣告"
CLASS lcl_connection DEFINITION.

  PUBLIC SECTION.

    DATA carrier_id    TYPE /dmo/carrier_id.
    DATA connection_id TYPE /dmo/connection_id.

    CLASS-DATA conn_counter TYPE i.

*  PROTECTED SECTION.
*  PRIVATE SECTION.

ENDCLASS.

"實作"
CLASS lcl_connection IMPLEMENTATION.

ENDCLASS.

宣告完類別,明天來建立class的實體吧~


上一篇
Day10_Debug Mode
下一篇
Day12_建立ABAP class實體
系列文
ABAP 基礎30天學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言