ABAP语法笔记03 - IF itab
IF expression . ... ELSEIF expression . ... ELSE. ... ENDIF. IF SY-SUBRC IS NOT INITIAL . ... ENDIF. " NOT 可以前置 IF NOT SY-SUBRC IS INITIAL . ... ENDIF.
内表的分类(ANY TABLE)
- 索引表(INDEX TABLE)
- 标准表(STANDARD TABLE) - 系统索引
DATA ITAB TYPE STANDARD TABLE OF STRU_TYPE . " 默认字符型字段为关键字(可以指定) DATA ITAB TYPE STANDARD TABLE OF TAB_NAME .
- 排序表(SORTED TABLE) - 系统索引,总是会有排序字段(声明时执行,一个或者多个),根据升序排列
DATA ITAB TYPE SORTED TABLE OF STRU_TYPE WITH UNIQUE KEY FIELDNAME FIELDNAME. " 根据字段排序,且字段不能重复 DATA ITAB TYPE SORTED TABLE OF STRU_TYPE WITH NON-UNIQUE KEY FIELDNAME FIELDNAME. " 根据字段排序,且字段可以重复
- 哈希表(HASHED TABLE)- 没有索引(SY-TABIX没有值)
DATA ITAB TYPE HASHED TABLE OF STRU_TYPE WITH UNIQUE KEY FIELDNAME FIELDNAME. " 哈希表的关键字段不可重复
" 表头行内表和工作区名称相同 通过 [] 进行区别 " APPEND 追加到内表的最后一行(哈希表 HASHED TABLE 不能用,排序表插入时需要满足排序表的排序逻辑,否则会报错)常用于标准表 STANDARD TABLE APPEND GS TO GT . " 结构体 APPEND GT . " 表头行 APPEND INITIAL LINE TO GT . " 插入空行 APPEND LINES OF GT1 FROM X TO Y TO GT2 . " 将表1的X行到Y行的数据追加到表2 " INSERT 插入行(可以指定位置) " 按索引值插入(只能用于索引表),插入到索引之前 INSERT GS INTO GT INDEX X . " 按照关键字插入(所有表都可以) INSERT GS INTO TABLE GT . " 多行插入 TABLE 和 INDEX 不能共用 使用FROM必须是个索引表 INSERT LINES OF GT1 [ FROM X ][ TO Y ] INTO [ TABLE ] GT2 .
" COLLET 聚合 根据关键字(没有指定时默认全部字符字段)聚合数字型字段 COLLET GS INTO GT . " 循环时数据需要到工作区 LOOP AT GT INTO GS . ... ENDLOOP . " 带表头行工作区和内表同名,可以省略 LOOP AT GT . ... ENDLOOP .
" 修改数据 MODIFY MODIFY GT FROM GS INDEX I . " 更新第几行的数据 MODIFY TABLE GT FROM GS . " 根据关键字更新表数据 MODIFY TABLE GT FROM GS TRANSPORTING FIELDNAME . " 根据关键字更新表字段 " 一般使用循环来更新数据 LOOP AT GT INTO GS . IF expression . GS-FIELDNAME = VALUE . MODIFY GT FROM GS . " INDEX SY-TABIX . LOOP索引表时可以省略 哈希表用MODIFY TABLE ENDIF. ENDLOOP.
" READ 读取内表的数据 READ TABLE GT INTO GS INDEX I . " 读取第I行的数据,修改时需要指明SY-TABIX READ TABLE GT INTO GS WITH KEY expression . " 读取满足表达式的第一条数据 LOOP AT GT INTO GS WHERE expression . " 遍历符合条件的数据 ... ENDLOOP . " HASHED TABLE 和 SORTED TABLE 读取时 KEY必须写全 READ TABLE GT INTO GS WITH TABLE KEY expression . " 读取满足表达式的第一条数据 " 读取时可以使用二分法提高效率,使用二分法之前需要对内表进行排序 SORT GT BY FIELDNAME . " ASDENDING 升序(默认) DESCENDING 倒序 READ TABLE GT INTO GS WITH KEY FIELDNAME = VALUE BINARY SEARCH . " 二分法后缀 BINARY SEARCH . " 确认数据是否存在,而不用取出来 READ TABLE GT TRANSPORTING NO FIELDS . IF SY-SUBRC = 0 . ... ENDIF .
" 删除数据 DELETE DELETE GT FROM GS INDEX I . " 更新第几行的数据 DELETE TABLE GT FROM GS . " 根据关键字更新表数据 " 删除临近重复项 需要先排序 SORT GT BY FIELDNAME . DELETE ADJACENT DUPLICATES FROM GT COMPARING FIELDNAME . " 清空数据 CLEAR: GT , GS . " 清空表体 REFRESH: GT . " 释放内存 FREE GT .
post SAP-Garson
原文链接:https://www.cnblogs.com/icebo/p/16670955.html文章来自于网络,如果侵犯了您的权益,请联系站长删除!