ABAP基础(五)
? 內表<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 什么是內表 內表是一個數據對象,在運行時內表可保存多個相同結構的數據行數是動態的,系統可實時增加內表的大小。 ?????????? ? 內表的屬性
?
–???????? 幾種數據表的訪問:分為索引訪問,鍵訪問 –???????? 三種表的類型: 標準表,排序表,哈希表 ?????????? 內表的定義?
TYPES|DATA? itab {TYPE|LIKE}? tabkind OF {linetype|lineobj} ????????????????????????? [WITH key] ????????????????????????? [INITIAL SIZE n] . –???????? tabkind? 內表種類 –???????? linetype? 行類型 –???????? key? 表關鍵字 –???????? n?? 初始內存大小 –???????? 內表類型(一) –???????? 標準表 STANDARD TABLE ??? 具有邏輯索引 ??? 尋址操作通過關鍵字或者索引 –???????? 排序表 SORTED TABLE ??? 具有邏輯索引 ??? 尋址操作通過關鍵字或者索引 ??? 按表關鍵字升序后存儲 –???????? 哈希表 HASHED? TABLE ??? 沒有邏輯索引 ??? 尋址操作只通過關鍵字 ?????????? 行類型 基本類型?? 結構體?? 內表 ?????????? 表關鍵字 –???????? 行結構為結構體 ??? WITH [UNIQUE|NON-UNIQUE] KEY comp1 … compn –???????? 行結構為基本類型 ??????????????????? ? WITH [UNIQUE|NON-UNIQUE] KEY TABLE LINE –???????? 不指定關鍵字 ?? ??????????????? ??WITH [UNIQUE|NON-UNIQUE] DEFAULT KEY ?????????? 初始內存大小 INITIAL SIZE? n?
創建一個內表 ?????? TYPES:? BEGIN OF address, ????????????????? street(20)?? TYPE? C, ????????????????? city(20)????? TYPE? C, ?????????? ????END OF? address. DATA:? BEGIN OF company, ????????????????? name(20)?? TYPE? C, ????????????????? address????? TYPE? address, ?????????????? END OF? company. DATA itab_company LIKE HASHED TABLE OF company ?????????????? WITH UNIQUE KEY name.??
l?????? 內表操作(一) l?????? 操作內表行 插入行? INSERT語句 ??? 插入單行 ??????? INSERT line INTO itab INDEX idx . ??? 插入多行 ??????? INSERT LINES OF itab1 [FROM n1] [TO n2] ????????????????????? INTO [TABLE]? itab2 [INDEX idx].? –???????? 附加行? APPEND語句 ??? 附加單行 ???????? APPEND? line TO? itab . ??? 附加多行 ????????????? ? APPEND LINES OF itab1[FROM n1] [TO n2] TO itab . –???????? 讀取行? READ語句 ??? 利用索引讀取 ???????? READ itab INTO wa INDEX idx . ??? 利用關鍵字讀取 ???????? READ TABLE itab FROM key INTO wa . 修改行? MODIFY語句 ??? 根據索引修改 ???????? MODIFY itab [FROM wa] [index idx] ??????????????????? ??????[TRANSPORTING f1 f2 …] . ??? 根據關鍵字修改 ???????? MODIFY TABLE itab FROM wa ????????????????????????? [TRANSPORTING f1 f2 …] . ??? 修改多行 ???????? MODIFY itab FROM wa TRANSPORTING f1 f2 … ????????????????????????? WHERE cond . ?????? 刪除行? DELETE語句 ??? 通過索引刪除 ?? ??????DELETE itab INDEX idx . ??? 通過關鍵字刪除 ???????? DELETE TABLE itab FROM wa . ???????? DELETE TABLE itab WITH TABLE KEY k1=f1 …? ki=fi. ??? 刪除多行 ???????? DELETE itab [FROM n1] [TO n2] [WHERE<condition>] –???????? ??? 循環處理結果集合? LOOP語句 ????????????? Loop語句一條條的讀出的數據行,寫入INTO字指定的結構中,結構內容可用于輸出或寫回內表.?
LOOP AT itab [INTO wa] [FROM n1] [TO n2] ???????????????????????????????????????????????????????????????? [WHERE<condition>]. ??????? <statement block> ???? ENDLOOP ??????????????
?
l?????? 表工作區 ?????????? 創建表工作區: –???????? Tables t_name. ?????? DATA: begin of t_name, ?? ???????? ?F1 type c , ?????? ?????? Endt_name.?
表工作區就是其他語言的結構,象自定義的一個類型一樣,但一旦創建一個內表之后,工作區就成了外界跟內表的交流口,每條記錄的進入和取出都得通過它,并且清除它們的時候分開來清除.轉載于:https://blog.51cto.com/youxue/47979
總結
- 上一篇: 使用VMware Server迁移证券公
- 下一篇: DotNet语音技术实现(实现电脑发音)