1. 程式人生 > >我們一起學ABAP (02)~基礎語法與資料型別,輸出到螢幕

我們一起學ABAP (02)~基礎語法與資料型別,輸出到螢幕

1、ABAP(ABAP/4)的基本語法

基本資料型別屬性

 DECIMALS  可以在資料型別後製定小數位的個數。

1.1、規則和幾點建議

    a. 我們常犯的低階錯誤~  語法切換(中英)時,忽略了符號的差異,計算機會把不同的符號解釋成不同的意義!

    b. 不要用詞典的釋義來理解你在程式設計中遇到的單詞,兩者之間是有很多差異的,不建議這樣的學習方法,是彎路!           c.  ABAP中是用 句號 "." 來表示一個語句的結束符號.

    d.  ABAP 中用 雙引號( " )作為單行註釋符號(有些書上又稱它 “右註釋符號”),  用 星號(*) 做為多行註釋符號,

      字串修飾符號,單引號( '  ' ).

2、變數的宣告:

關鍵字”DATA“,  要注意的是,宣告多個變數時,DATA關鍵字後面必須加上冒號”“,否則會出現語法錯誤。變數名最長30個字元,不能含有 "+" 、"-"、 "*" 、"/" 、"()"等字元。

語法:

DATA  <變數名>(長度)  TYPE <資料型別>  VALUE<預設值>

示例:(注意長度和預設值都可以不寫,則系統會自行給個”預設值“。下面的幾種宣告都是語法正確的。)

DATA:  test(10)  TYPE  C  VALUE 'Hello SAP',

            test1(10)   TYPE  I ,

            test2  TYPE  P,

            test   TYPE  I   VALUE '10'.

如果你自己寫預設值了,那麼這個值就必須與前面宣告的型別一致,長度也最好一致,否則會”擷取“宣告時的長度來處理執行結果。

2.1、系統保留字     ( 就是:系統自已 專用的名詞。)


2.2、 以參考的形式定義變數 , 關鍵字 "LIKE"

語法:(同樣的,單個不用加冒號,多個(大於1)必須加冒號”:“)

DATA  <變數1>  LIKE <變數2>

2.3、變數的初始化   關鍵字 "CLEAR"

語法:(同樣的,單個不用加冒號,多個(大於1)必須加冒號”:“)

CLEAR <變數名>

3、常量

 常量:一旦被定義就會長期儲存,並且其值不可改變(修改)的變數。

關鍵字 "CONSTANS"  (和定義變數唯一的區別是用的關鍵字不同,語法雷同.)

語法:(單個不加冒號,多個(大於1)必須加冒號”:“)

   CONSTANTS  <變數名>(長度)   TYPE <資料型別>  VALUE(預設值)

例子:decimals 用於指定小數位,前面有講。

 CONSTANTS  PI  TYPE  P  DECIMALS  5  VALUE '3.14159'.

4、STATICS  定義

我對這個關鍵字的理解是,定義一個臨時的變數,當它所在的程式結束後,它就會被釋放(清除)。

 語法:(單不加,否則必須加冒號)

STATICS <變數名>(長度) <資料型別>    <預設值>  <decimals這個隨意,有木有都可以>

5、自定義變數型別

關鍵字 "TYPES"

語法: 單不加,否則必須加冒號

 TYPES <變數名> (長度)   <資料型別>  <可有可無的decimals>

栗子:(單不加,否則必須加冒號)

 TYPES:  NAME(10)  TYPE C,

                NUMBER  TYPE  I.

DATA:  PLAUER  TYPE  NAME  VALUE 'JERY TANG', "定義型別為NAME(ABAP中註釋符號為英文中的雙引號'" ') 

            NICKNAME  LIKE  PLAUER.

6、結構體的定義

結構體:也是一種資料型別,但不屬於基本的資料型別。是一種臨時建立的,有多個變數組成的臨時物件。

關鍵字: DATA          Begin  of   ... End of

語法:

    DATA: BEGIN OF <結構體名字>

                   <欄位1>

                   <欄位2>

                      ......

               END OF<結構體名字>.

栗子:

    DATA BEGIN OF ADDRESS,

                      NAME(10)   TYPE  C,

                      NUMBER     TYE   P,

                END OF ADDRESS.

注意; 定義好後,就可以這樣使用了,如: ADDRESS-NAME. (可以把這個看作一個定義好的變數)

6.1、結構體的賦值

a、ABAP中可以使用 "WRITE"語句來輸出結果。

b、ABAP中可以對定義了具體欄位名字的結構體直接賦值。

c、相同的結構可以直接用 等號 "="來數顯資料的相互複製。

d 、相同結構體可以使用 "MOVE ......TO...."語句進行賦值,不同結構體可以使用 ”MOVE-CORRESSPONDING"將兩個結構體之間相同的欄位自動匹配並賦值。

舉個栗子:

USERINF-SID  =  'A00001'.

USERINF-NAME = 'JERY'.

USERINF-TEL = '010-12345678'.

USER2 = USERINF.  

WRITE: USER2, USERINF-SID.

"輸出結果為:   A00001     JERY         010-123456     A00001

栗子:

DATA: BEGIN OF USERDETALL,

                SID(10)  TYPE  C,    "編號

                NAME(20)  TYPE  C,  "姓名

                BIRDATE  TYPE D,  "出生日期

                ADD(50)  TYPE  C,    "地址

            END OF USERDETALL.

MOVE-CORRESSPONDING  USERINF TO USERDETALL.    

注意:相同欄位之間進行數值傳遞(相互賦值),其他的不同型別欄位的值將為空!

結構體的另外一種賦值方式:繼承式賦值(學到繼承再一起學習哈~)


7、WRITE語句的使用(在螢幕中定位輸出

語法:("/" 這個斜槓在ABAP中用作換行符號)

      WRITE AT [/] <位置> (長度) <變數名>

位置:最長為三位數字的變數或者數字,表示在螢幕上 的位置。  另外,如果格式規範只包含直接量(PS:不是變數的值都是直接量),可以忽略關鍵字 AT。

 栗子:

REPORT Z7003.

WRITE :  ' First line' .

WRITE :  / 10 'First  line',

                   24  'Test  write' .

WRITE :  / (5) 'First line',

                   24  ' Test  write' .

結果樣式如下:


7.1、WRITE語句格式化輸出  

 格式化選項                                   用途                                                                                               


7.2、日期欄位格式化

        選項                                    用途                                                               


7.3 、符號圖示的輸出

語法:(當然關鍵字必須和名字的值型別一樣,不然無法識別 ,報錯。)

 WRITE <符號的名字> AS SYMBOL.

 WRITE <圖示的名字>   ASICON.

栗子:

INCLUDE  <SYMBOL>.

INCLUDE  <ICON>.

WRITE: /  'Phone Symbol:' , SYM_PHONE  AS  SYMOL.

SKIP.

WRITE:  /  'Alarm lcon: ' , ICON_ALARM  AS  ICON.

輸出的結果和樣式:


7.4、輸出螢幕上的空行

a、水平線

語法:

      ULINE AT [/] <起始位置> (長度)

等同於另一種寫法:

       WRITE  AT [/]  <起始位置>(長度)SY-ULINE.

b、垂直線

語法:

           WRITEAT [/] <起始位置> SY-VLINE

等同於:

           WRITE AT [/] <起始位置> ' | '.

 c、空行 

語法:

      SKIP [行數].

等同於:

      SKIP TOLINE<n>.

d、輸出複選框

語法:

WRITE <F> AS CHECKBOX.

栗子:

DATA:  FLAG1  VALUE ' ' ,

            FLAG2  VALUE 'X' ,

            FLAG3(5)  VALUE 'Xenon'.

WRITE:  / 'Flag  1' ,FLAG1  AS CHECKBOX,

              / 'Flag   2' , FLAG2 AS CHECKBOX,

             /  'Flag   3' , FLAG3  AS CHECKBOX.

輸出效果:


7.5、顏色輸出

語法:

 FORMAT [COLOR {{{color (ON)} | OFF}|{ = col}}]  "使用顏色

                 [INTENSIFIED[{ON|OFF}|{= flag}]]         “背景顏色

                 [INVERSE   [{ON|OFF} | { =flag }]]         "字型顏色

栗子:

DATA  col TYPE I VALUE 0.

DO 8 TIMES.

       col  =  sy-index - 1.

       FORMAT  COLOR  = col.

   WRITE:  / col   COLOR OFF,

                    'INTENSIFIED ON'  INTENSIFIED ON,

                     'INTENSIFIED OFF' INTENSIFIED OFF,

                      'INVERSE ON'    INVERSE ON.

ENDDO.      

輸出結果和樣式效果:


我們一起學ABAP,歡迎小夥伴們和我一起學習,若發現文章中有寫錯的,或理解錯的,還望不吝指教,十分感謝!