1. 程式人生 > >ABAP開發的第一步, 先說說ABAP內表

ABAP開發的第一步, 先說說ABAP內表

      SAP開發的語言是ABAP(C/S模式),ABAP語言中沒有陣列, 它有內表, 就相當於其它語言的陣列,我們平時開發都是與內表打交道,先說說內表的定義:

DATA:itab_mseg   LIKE TABLE OF mseg WITH HEADER LINE. 這個語句就是定義一個內表, 它的結構是mseg表的結果,它裡面可以存放mseg表字段的資料。 在定義中, 我們使用到了WITH HEADER LINE 這個語句的意思是定義的這個內表的名字可以在操作內表時同時當作工作區使用, 例如:

LOOP AT itab_mseg.    
      WRITE: / itab_mseg-mblnr.    " 輸入憑證號
ENDLOOP.

      在上面語句中 itab_mseg是內表的名稱, 但在輸入語句中 我們使用到了 itab_mseg ,這時itab_mseg就是工作區的名字了, 它是指用於操作資料時的一個名字。在上面的定義中我們使用到了SAP自己的一個表就是mseg(物料憑證行專案表(MM Module))。

     SAP的內表也可以自己定義自己用到的欄位, 在定義中,我們可以先定義一個結構(Structure),再定義一個結構型別的內表, 或者直接定義一個工作區,再定義一個內表, 定義方式如下:

一、先定義一個結構:
TYPES: BEGIN OF struc_material, 
          mblnr   LIKE mseg-mblnr,     " 定義物料憑證號, 使用SAP已定好的型別       name   TYPE char(20),        " 通過TYPE 定義字元型別的,長度為20
           END OF struc_material.
DATA: itab_material TYPE TABLE OF struc_material WITH HEADER LINE.
      在這我們會看到,我們在定義內表時 使用的是TYPE TABLE OF 而不是 LIKE TABLE OF 因為我們使用的struc_material 是一個結構型別通過 TYPES定義的。 在這個定義中我說明一定 我們在定義名字 name 時是這樣寫的 name TYPE char(20), 還可以這樣寫 name(20) TYPE c. c 是字元型別 是 char 的簡寫。

二、先定義一個內表:
DATA: BEGIN OF wa_material, 
                  mblnr         LIKE mseg-mblnr,
                  name(20) TYPE c, 
          END OF wa_material.
DATA: itab_material   LIKE TABLE OF wa_material WITH HEADER LINE. 上面說到的都是很基本的東西, 在這簡單說一下ABAP的註解:ABAP註解有2中一種是以“*”開頭的,切記必須在行的開發第一個字元為 *, 令一種是 英文的 " 雙引號 這種不要求必須在行開頭第一個字元。ABAP開發中它的行結束是以“.”結尾,就是英文的點,例如:
FORM f_get_salary USING f_pernr
                                        f_trafar.      " 以.結束
* 操作部分程式碼
ENDFORM.

還有一點比較重要的是,在ABAP開發中是不區分大小寫的,
例如定一個變數 DATA: num TYPE i. 和 data: num type i. 是一樣的,
但是有一個特殊情況例如, 在呼叫一個METHOD,FUNCTION 中 使用的名字和輸入的引數是子過程(FORM)、方法(METHOD)、函式(FUNCTION)時是必須大寫的,例如:
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'     
* 此處的函式名字必須大寫,否則會出現錯誤。       
EXPORTING
             text   = '資料處理中,請稍後...'.             順便說一下上面函式的意思, 就是我們要處理一個大資料時,為了不讓操作者誤解宕機等現象, 會在處理大資料上面加上上面的 FUNCTION 在螢幕左下角顯示 “資料處理中,請稍後...”字樣。      先說到這,慢慢再寫,呵呵。 有不道之處,請網友指點,不勝感激!                                                                                     本文為原作,若要轉載請註明出處,謝謝合作。