SAP ABAP——内表(四)【内表命令】

简介: 本文主要介绍一下SAP ABAP中内表的命令,主要包括了内表赋值、内表初始化、内表排序、内表属性四个方面

本文主要介绍一下SAP ABAP中内表的命令,主要包括了内表赋值、内表初始化、内表排序、内表属性四个方面


内表赋值

两个内表结构一致赋值

不带表头行内表赋值

MOVE itab1 TO itab2. "第一种方式
itab1 = itab2. "第二种方式

带表头行内表赋值

MOVE itab1[] TO itab2[]. "第一种方式
itab1[] = itab2[]. "itab1和itab2均为带表头行内表
itab1[] = itab2. "itab1为带表头行内表,itab2为不带表头行内表
itab1 = itab2[]. "itab2为带表头行内表,itab1为不带表头行内表

两个内表结构不一致赋值

PS:【MOVE-CORRESPONDING】语句可以将两个内表中对应的字段进行赋值,而不用管其字段所在位置和顺序


不带表头行内表赋值

MOVE-CORRESPONDING itab1 TO itab2.

带表头行内表赋值

MOVE-CORRESPONDING itab1[] TO itab2[]. "itab1和itab2均为带表头行内表
 MOVE-CORRESPONDING itab1[] TO itab2. "itab1为带表头行内表,itab2为不带表头行内表
 MOVE-CORRESPONDING itab1 TO itab2[]. "itab2为带表头行内表,itab1为不带表头行内表

内表初始化

同时删除表数据和释放内存空间

CLEAR itab. "itab为不带表头行内表
CLEAR itab[]. "itab为带表头行内表

只删除表数据而不释放内存空间

REFRESH itab. "itab为不带表头行内表
REFRESH itab[]. "itab为带表头行内表

释放内存空间

FREE itab. "itab为不带表头行内表
FREE itab[]. "itab为带表头行内表

内表排序

PS:无论是整表排序还是按字段排序,若不指定排序方式则都默认为升序!

整表排序(除了排序表以外)

SORT itab [ASCENDING|DESCENDING]

案例代码演示

TYPES:BEGIN OF GTY_ITAB,
     COL1 TYPE c,
     COL2 TYPE i,
     END OF GTY_ITAB.
DATA:GT_ITAB TYPE STANDARD TABLE OF GTY_ITAB WITH NON-UNIQUE KEY COL1.
DATA:GS_ITAB TYPE GTY_ITAB.
GS_ITAB-COL1 = 'B'.
GS_ITAB-COL2 = 1.
APPEND GS_ITAB TO GT_ITAB.
GS_ITAB-COL1 = 'A'.
GS_ITAB-COL2 = 3.
APPEND GS_ITAB TO GT_ITAB.
GS_ITAB-COL1 = 'C'.
GS_ITAB-COL2 = 4.
APPEND GS_ITAB TO GT_ITAB.
GS_ITAB-COL1 = 'D'.
GS_ITAB-COL2 = 2.
APPEND GS_ITAB TO GT_ITAB.
WRITE:'内表排序前'.
LOOP AT GT_ITAB INTO GS_ITAB.
  WRITE:/ GS_ITAB-COL1,GS_ITAB-COL2.
ENDLOOP.
ULINE.
SORT GT_ITAB ASCENDING.
WRITE:'内表排序后'.
LOOP AT GT_ITAB INTO GS_ITAB.
  WRITE:/ GS_ITAB-COL1,GS_ITAB-COL2.
ENDLOOP.

效果演示

d5a787a20ea311e7f836f13ea5cb4a1.png


指定排序字段(除了排序表以外)

SORT itab BY f1 [ASCENDING|DESCENDING]
             f2 [ASCENDING|DESCENDING]
             ...
             fn [ASCENDING|DESCENDING].

案例代码演示

TYPES:BEGIN OF GTY_ITAB,
     COL1 TYPE c,
     COL2 TYPE i,
     END OF GTY_ITAB.
DATA:GT_ITAB TYPE STANDARD TABLE OF GTY_ITAB .
DATA:GS_ITAB TYPE GTY_ITAB.
GS_ITAB-COL1 = 'B'.
GS_ITAB-COL2 = 1.
APPEND GS_ITAB TO GT_ITAB.
GS_ITAB-COL1 = 'A'.
GS_ITAB-COL2 = 3.
APPEND GS_ITAB TO GT_ITAB.
GS_ITAB-COL1 = 'C'.
GS_ITAB-COL2 = 4.
APPEND GS_ITAB TO GT_ITAB.
GS_ITAB-COL1 = 'C'.
GS_ITAB-COL2 = 2.
APPEND GS_ITAB TO GT_ITAB.
WRITE:'内表排序前'.
LOOP AT GT_ITAB INTO GS_ITAB.
  WRITE:/ GS_ITAB-COL1,GS_ITAB-COL2.
ENDLOOP.
ULINE.
SORT GT_ITAB BY COL1 COL2 DESCENDING.
WRITE:'内表排序后'.
LOOP AT GT_ITAB INTO GS_ITAB.
  WRITE:/ GS_ITAB-COL1,GS_ITAB-COL2.
ENDLOOP.

效果演示

82d78a486bbf88f50f8b24983ab917c.png


内表属性

DESCRIBE TABLE itab [LINES gv_lines] [OCCURS gv_occurs] [KIND gv_kind]

      其中:LINES返回的是内表包含的数据件数,OCCURS返回的是内表初始大小,KIND返回的是内表的类型(T代表标准表;S代表排序表;H代表哈希表)

案例代码演示

TYPES:BEGIN OF GTY_ITAB,
     COL1 TYPE I,
     COL2 TYPE I,
     END OF GTY_ITAB.
DATA:GT_ITAB TYPE SORTED TABLE OF GTY_ITAB INITIAL SIZE 40 WITH UNIQUE KEY COL1.
DATA:GS_ITAB TYPE GTY_ITAB.
DATA:GV_LINES TYPE I.
DATA:GV_OCCURS TYPE I.
DATA:GV_KIND TYPE C.
GS_ITAB-COL1 = 0.
DO 50 TIMES.
  GS_ITAB-COL1 = GS_ITAB-COL1 + 1.
  GS_ITAB-COL2 = GS_ITAB-COL1 * 2.
  APPEND GS_ITAB TO GT_ITAB.
ENDDO.
DESCRIBE TABLE GT_ITAB LINES GV_LINES OCCURS GV_OCCURS KIND GV_KIND.
WRITE:/ '该内表的数据件数是:',GV_LINES,/'该内表的初始大小是:',GV_OCCURS,/'该内表的类型是:',GV_KIND.

效果演示

71bdb3a5ade7a764d66663353b5b731.png


PS:假如不设置初始大小【INTIAL SIZE n】则内表初始大小默认为0!!!

TYPES:BEGIN OF GTY_ITAB,
 COL1 TYPE I,
 COL2 TYPE I,
 END OF GTY_ITAB.
DATA:GT_ITAB TYPE SORTED TABLE OF GTY_ITAB  WITH UNIQUE KEY COL1.'不设置内表初始大小
DATA:GS_ITAB TYPE GTY_ITAB.
DATA:GV_LINES TYPE I.
DATA:GV_OCCURS TYPE I.
DATA:GV_KIND TYPE C.
GS_ITAB-COL1 = 0.
DO 50 TIMES.
  GS_ITAB-COL1 = GS_ITAB-COL1 + 1.
  GS_ITAB-COL2 = GS_ITAB-COL1 * 2.
  APPEND GS_ITAB TO GT_ITAB.
ENDDO.
DESCRIBE TABLE GT_ITAB LINES GV_LINES OCCURS GV_OCCURS KIND GV_KIND.
WRITE:/ '该内表的数据件数是:',GV_LINES,/'该内表的初始大小是:',GV_OCCURS,/'该内表的类型是:',GV_KIND.

效果演示

a142bd96d21471164bcbf71864d9708.png

目录
相关文章
|
3月前
|
存储 安全 数据库
什么是 SAP ABAP 数据库表的 Display Maintenance Allowed with Restrictions
什么是 SAP ABAP 数据库表的 Display Maintenance Allowed with Restrictions
|
3月前
|
安全 API 数据库
SAP ABAP OData 中 Function import 的概念介绍
SAP ABAP OData 中 Function import 的概念介绍
|
3月前
|
SQL 负载均衡 监控
SAP ABAP DBSQL_SQL_ERROR 错误
SAP ABAP DBSQL_SQL_ERROR 错误
|
3月前
|
前端开发 数据库 开发者
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
|
3月前
|
SQL 监控 Oracle
SAP ABAP 系统错误 Return value of the database layer SQL dbsl rc 99
SAP ABAP 系统错误 Return value of the database layer SQL dbsl rc 99
|
3月前
|
存储 前端开发 Linux
在 SAP ABAP 系统里访问 FTP 服务器
在 SAP ABAP 系统里访问 FTP 服务器
|
3月前
|
存储 前端开发 应用服务中间件
使用 SAP ABAP 执行 FTP 操作
使用 SAP ABAP 执行 FTP 操作
|
3月前
|
BI 网络安全
如何使用 ABAPGit 在 SAP ABAP 系统安装 abap2xlsx 工具试读版
如何使用 ABAPGit 在 SAP ABAP 系统安装 abap2xlsx 工具试读版
|
3月前
|
监控 安全 应用服务中间件
SAP ABAP STRUST 事务码里的错误消息 - Local PSE does not match database original
SAP ABAP STRUST 事务码里的错误消息 - Local PSE does not match database original