Abap内表
什么是内表:内表是内存中建立的一个临时表,你可以在程序运行时对表中的数据进行,插入,修改,删除等操作,程序跑完了,就会被释放。
定义类型:通过types开头定义
TYPES: BEGIN OF line,
field1 TYPE i,
field2 TYPE i,
END OF line.
参考类型定义结构、工作区域、变量:定义结构通过data开头定义
DATA: WA _ITAB TYPE(LIKE) line. “ 声明一个内表工作区
DATA: ITAB TYPE(LIKE) STANDARD TABLE OF line .
参考工作区域定义内表,
Data itab like table of wa_itab
参考内表定义工作区,
Data wa_itab like lines of itab
填充内表行
append <wa> to <itab> “ 不带表头行的填充
append <itab> “ 带隐式表头行的填充
插入内表行
insert <wa> into <itab> [INDEX idx] “
insert <itab> [INDEX idx ] “ 隐式表头行插入内表
-- 如果没有指定INDEX ,则默认插入到内表最后一行
读取内表行
read <itab> into <wa> [INDEX idx]
read <itab> [INDEX IDX]
修改内表行
modify <itab> from <wa> [INDEX idx]
modify <itab> [INDEX idx]
-- read itab index 3 .
-- itab-XX = ‘xxx’ .
-- modify itab index 4 .
删除内表行
delete <itab> [INDEX idx] .
-- 带表头行和不带表头行语法一致 。
内表循环
Loop at <itab> into <wa> .
<statement block>
endloop. “ 带表头行的内表循环操作
Loop at <itab> .
<statement block>
endloop. “ 不带表头行内表操作
-- 循环体的MODIFY,DELETE等语句不必指定INDEX项,系统默认处理当前行 .
-- 如果不需要读取所有的内表行,可以使用WHERE选项进行限制
-- LOOP AT <itab> [WHERE <conditions>]
清空内表
clear <itab> . “清空不带表头行内表
clear<itab>[] . “清空带表头行内表
内表排序
SORT <itab> [ASCENDING | DESCENDING] [AS TEXT]
--ASCENDING和DESCENDING指定升序还是降序排列,如果不指定,缺省排序方式是升序
删除重复行
DELETE ADJACENT(紧接着的;相邻) DUPLICATES(副本) FROM <itab> [COMPARING <comp>].
-- 删除重复行之前须对内表进行排序
将内表中部分或全部的数据行整体插入另一内表
INSERT LINES OF <itab1> [FROM n1] [TO n2] INTO [TABLE] <itab2> [INDEX <idx>].
-- insert lines of itab1 from 1 to 100 into itab2 . “ 将内表1前100行数据附加到内表2 .
-- 两个内表必须具有相同的或可转换的行结构
将内表中部分或全部的数据行整体填充到另一内表
APPEND LINES OF <itab1> [FROM n1] [TO n2] TO <itab2>.
按照条件或者索引删除一组选定行
DELETE <itab> [FROM n1] [TO n2] [WHERE <condition>].
-- delete itab1 from 1 to 100 where age >30 . "删除内表前100行中年龄大于30 的记录 。
整体复制内表,目标内表原有内容被覆盖
MOVE <itab1> TO <itab2> 不带表头行的内表之间进行复制
MOVE <itab1>[] TO <itab2>[]. 带表头行的内表之间进行复制
MOVE <itab1> TO <itab2>[]. 不带表头行的内表复制到带表头行的内表
MOVE-CORRESPONDING <itab1> TO <itab2> 复制内表1中与内表2具有相同结构的字段进行复制,同样适用于工作区
EX.
- 构造一个内表BOOK,字段有BOOKNO,BOOKNAME,ZUOYE,PRICE.
- 输入几组数据:
|
BOOKNO |
BOOKNAME |
ZUOYE |
PRICE |
|
1 |
TEST |
MARK |
55 |
|
2 |
ERRO |
WRITE |
43 |
|
3 |
PRO |
BACKER |
67 |
|
4 |
中国历史 |
QINCHAO |
88 |
3、插入一个新的数据在第三行,每一列数据分别是 ‘5’,’insert’,’insert’,’36’
4、删除第4行数据
5、把数据复制给一个新的内表BOOK1
6、按照价格排序BOOK
7、修改第2条数据,把PRICE改为15.
DATA:BEGIN OF BOOK OCCURS ,
BOOKNO() TYPE C,
BOOKNAME() TYPE C,
ZUOYE() TYPE C,
PRICE() TYPE N,
END OF BOOK. BOOK-BOOKNO = ''.
BOOK-BOOKNAME = 'TEST'.
BOOK-ZUOYE = 'MARK'.
BOOK-PRICE = ''.
APPEND BOOK.
BOOK-BOOKNO = ''.
BOOK-BOOKNAME = 'ERROR'.
BOOK-ZUOYE = 'WRITE'.
BOOK-PRICE = ''.
APPEND BOOK.
BOOK-BOOKNO = ''.
BOOK-BOOKNAME = 'PRO'.
BOOK-ZUOYE = 'BAKER'.
BOOK-PRICE = ''.
APPEND BOOK.
BOOK-BOOKNO = ''.
BOOK-BOOKNAME = '中国历史'.
BOOK-ZUOYE = 'QINCHAO'.
BOOK-PRICE = ''.
APPEND BOOK.
LOOP AT BOOK.
WRITE:/ BOOK.
ENDLOOP.
WRITE: SY-ULINE.
BOOK-BOOKNO = ''.
BOOK-BOOKNAME = 'insert'.
BOOK-ZUOYE = 'insert'.
BOOK-PRICE = ''.
INSERT BOOK INDEX .
LOOP AT BOOK.
WRITE:/ BOOK.
ENDLOOP.
WRITE:SY-ULINE.
DELETE BOOK INDEX .
LOOP AT BOOK.
WRITE:/ BOOK.
ENDLOOP.
WRITE:SY-ULINE.
DATA:BOOK1 LIKE TABLE OF BOOK WITH HEADER LINE.
MOVE BOOK[] TO BOOK1[].
LOOP AT BOOK1.
WRITE:/ BOOK1.
ENDLOOP.
WRITE:SY-ULINE.
clear book1.
book1-PRICE = ''.
modify BOOK1 INDEX TRANSPORTING price.
LOOP AT BOOK1.
WRITE:/ BOOK1.
ENDLOOP.
WRITE:sy-uline.
sort book1 by price .
LOOP AT BOOK1.
WRITE:/ BOOK1.
ENDLOOP.

Abap内表的更多相关文章
- Abap 内表的语法
ABAP中的内表相当于其他程序设计语言中的二维数组,存储多行结构相同的数据 不同于二维数组,内表在创建后,列结构与列数是固定不变的,而行数是动态增长的 内表支持循环对每行数据进行操作,也支持整体操作 ...
- ABAP内表数据和JSON格式互转
本程序演示ABAP内表数据如何转为JSON格式,以及JSON数据如何放入内表. 注:json字符串格式如:jsonstr = '[ {flag: "0",message: &quo ...
- ABAP 内表 详解
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- ABAP 内表数据 与 Json串 相互转换
内表: A B C IMINGZHA HAIMINGZ AIMINGZH 1 2 3 4 5 6 Json串: [{a: "IMINGZHA", b: "HAIMIN ...
- ABAP 内表访问表达式的性能
内表访问表达式是ABAP 7.4中引入的重要特性,可以使语句变得更加简洁.美观.那么它的读写性能怎么样呢?我进行了一点点测试. 读取 测试代码,使用三种方式读取同一内表,分别是read table关键 ...
- ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介 - [SAP]
刚开始学ABAP的时候,学到iternal table时,感觉一阵混乱.搞不清楚什么是work area,什么是header line,以及occurs是干什么用的.今天终于差不多搞明白了(我还是太弱 ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW-(以运单号为单位显示ALV然后保存输出)
*********************************************************************** * Title : ZSDF003 ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW
*********************************************************************** * Title : ZSDF002 ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里
需要传入数据到Excel里的模板如上图所示 ********************** * 设计主要逻辑与原理说明 ...
- ABAP 内表的行列转换-发货通知单2
*&---------------------------------------------------------------------* *& Report Z_TEST_C ...
随机推荐
- go-gui-控件和信号
go-gui-控件和信号 控件 控件简介 控件是对数据和方法的封装.控件有自己的属性和方法.属性是指控件的特征.方法是指控件的一些简单而可见的功能.如按钮就是一个控件,这个按钮是方形的,里面有张图片, ...
- java基础(21):异常
1. 异常 什么是异常?Java代码在运行时期发生的问题就是异常. 在Java中,把异常信息封装成了一个类.当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置.原因等). 1.1 ...
- Python--方法/技巧在哪用的典型例子
就我个人在学习Python的过程中,经常会出现学习了新方法后,如果隔上几天不用,就忘了的情况,或者刚学习的更好的方法没有得到应用,还是沿用已有的方法,这样很不利于学习和掌握新姿势,从而拉长学习时间,增 ...
- 计科菜鸟玩生信(一)——Windows10下用docker安装GATK
1.官网下载GATK. (学校网速实在是太慢了,下载几个小时到自闭) 下载地址:https://software.broadinstitute.org/gatk/download/ 下载完成后文件夹中 ...
- Docker关于镜像、容器的基本命令
镜像 1.获取镜像 docker pull 服务器:端口/仓库名称:镜像 ➜ ~ docker pull python Using default tag: latest 2.查看镜像信息 列出本机所 ...
- 大数据安全利器ranger 编译安装
ranger大数据领域的一个集中式安全管理框架,它可以对诸如hdfs.hive.kafka.storm等组件进行细粒度的权限控制.本文将介绍部署过程 1. 部署准备 ranger: 进入apa ...
- MySQL数据库(一)索引
索引的作用是操作数据库时避免全表扫描. 索引的机制 B Tree与B+Tree索引 B(blance) 树可以看作是对2-3查找树的一种扩展,即他允许每个节点有M-1个子节点. 根节点至少有两个子节点 ...
- PHP转Go系列:字符串
字符串的赋值 在PHP中,字符串的赋值虽然只有一行,其实包含了两步,一是声明变量,二是赋值给变量,同一个变量可以任意重新赋值. $str = 'Hello World!'; $str = 'hia'; ...
- 5-1可视化库Seabon-整体布局风格设置
In [1]: import seaborn as sns import numpy as np import matplotlib as mpl import matplotlib.pyplot a ...
- 堆与栈(heap and stack)在c/c++的应用(概念)
在学习c/c++时,我们经常会遇到 堆与栈 的问题,今天就来讲一下各类情况下的heap,stack的应用. 程序内存布局场景下,堆与栈表示两种内存管理方式: 1.内部分配时,堆和栈表示两种不同的内存管 ...