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