學習筆記(十二)

程序對內表的操作通過工作區進行,工作區必須具有和內錶行一致或者可相互轉換的數據結構(一般是與內錶行類型相同的結構體),在定義內表對象的同時,還需要定義一個與該內錶行結構相同的工作區對象供程序使用,將數據寫入內表時,必須先給工作區賦值,然後在工作區添加或插入內表,從內表中讀取數據時,需要自己定義的內錶行內容覆蓋工作區的內容,然後再從程序中使用工作區的內容,工作區對內表的行必須是可以轉換的,最好類型完全相同;

系統在創建內表對象的同時可以隱式地定義一個同名工作區(HEADER LINE、表頭行或標題行),也稱作內表工作區;

DATA table LIKE TABLE OF table1 WITH UNIQUE KEY name WITH HEADER LINE

創建了帶表頭的內表後,可以認爲程序中存在兩個數據對象,一個是內表,另一個是與內錶行類型相同的結構體;

同一個語句中,表對象名稱同時可能代表內表或同名表工作區,則需要在內表的名稱之後加[]指明當前操作的是內表對象;

SY-TABIX、INSERT、APPEND、COLLECT、READ、MODIFY、DELETE;

SORT table ASCENDING DESCENDING AS TEXT STABLE; 

AT FIRST、AT LAST、NEW field、END OF field、SUM;

CLEAR table、CLEAR table[REFRESH table()、FREE table;

DATA: BEGIN OF address,
  street(20) TYPE c,
  city(20) TYPE c,
END OF address.

TYPES addresses LIKE STANDARD TABLE OF address WITH NON-UNIQUE KEY city.

DATA: BEGIN OF company,
  name(25) TYPE c,
  address TYPE addresses,
END OF company.

DATA company_table LIKE HASHED TABLE OF company WITH UNIQUE KEY name.

DATA company_sort_table LIKE SORTED TABLE OF company WITH UNIQUE KEY name.

DATA index TYPE sy-tabix.

company-name = 'Test company'.

address-street = '123 Street'.
address-city = '7 City'.
APPEND address TO company-address.

address-street = '789 Street'.
address-city = '8 City'.
APPEND address TO company-address.

INSERT company INTO TABLE company_table.
CLEAR company.

company-name = 'Test8 company'.

address-street = '123 Street'.
address-city = '2 City'.
APPEND address TO company-address.

address-street = '456 Street'.
address-city = '3 City'.
APPEND address TO company-address.

address-street = '789 Street'.
address-city = '4 City'.
APPEND address TO company-address.

INSERT company INTO TABLE company_table.

READ TABLE company_table WITH TABLE KEY name = 'Test company' INTO company.

WRITE: / sy-tabix, company-name.

LOOP AT company-address INTO address.
  WRITE: / sy-tabix, address-street, address-city.
ENDLOOP.

address-street = '987 Street'.
address-city = '8 City'.

READ TABLE company_table WITH TABLE KEY name = 'Test8 company' INTO company.
WRITE: / sy-tabix, company-name.

MODIFY company-address FROM address INDEX 1.
MODIFY TABLE company_table FROM company.

LOOP AT company-address INTO address.
  WRITE: / sy-tabix, address-street, address-city.
ENDLOOP.

company_sort_table = company_table.
LOOP AT company_sort_table INTO company.
  WRITE / company-name.
  SORT company-address.
  LOOP AT company-address INTO address.
    WRITE: / address-street, address-city.
  ENDLOOP.
ENDLOOP.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章