学习笔记(十二)

程序对内表的操作通过工作区进行,工作区必须具有和内表行一致或者可相互转换的数据结构(一般是与内表行类型相同的结构体),在定义内表对象的同时,还需要定义一个与该内表行结构相同的工作区对象供程序使用,将数据写入内表时,必须先给工作区赋值,然后在工作区添加或插入内表,从内表中读取数据时,需要自己定义的内表行内容覆盖工作区的内容,然后再从程序中使用工作区的内容,工作区对内表的行必须是可以转换的,最好类型完全相同;

系统在创建内表对象的同时可以隐式地定义一个同名工作区(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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值