4.调试、内表操作、消息

一.调试

F5 一行执行,进入代码块;F6 代码块会当作一行直接执行; F7 跳出代码块;F8 直接结束或者到下一个断点

二.内表操作

2.1Insert


TYPES:BEGIN OF ty_stu,
  num TYPE n LENGTH 4,
  sub TYPE c LENGTH 4,
  name TYPE c LENGTH 10,
  score TYPE i,
  END OF ty_stu.

DATA: t_stu TYPE TABLE OF ty_stu,
      s_stu TYPE ty_stu.


 s_stu-num = 0001.
 s_stu-sub = 'MATH'.
 s_stu-name = 'TOM'.
 s_stu-score = 88.


  BREAK-POINT.
 "内表操作
 " 1.填充数据-INSERT
 "1.1insert s_stu INTO TABLE t_stu.

  "1.2
*  INSERT INITIAL LINE INTO t_stu INDEX 1 ASSIGNING FIELD-SYMBOL(<fs>).
*  <fs>-num = 0001.

 "1.3
*  INSERT INITIAL LINE INTO t_stu INDEX 1 REFERENCE INTO DATA(stu_ref).
*  stu_ref->num = 0001.


 "1.4
* DATA t1 TYPE TABLE of ty_stu.
* INSERT s_stu INTO TABLE t1.
* INSERT s_stu INTO TABLE t1.
* INSERT LINES OF t1 INTO TABLE t_stu.'

 "1.5
* s_stu-num = 0002.
* DATA t1 TYPE TABLE of ty_stu.
* INSERT s_stu INTO t1 INDEX 1.

2.2 append (只能用在标准表和排序表)

 "2. 数据追加-APPEND
  APPEND s_stu TO t_stu.


2.3数据汇总/合并-COLLECT

 " 3.数据汇总/合并-COLLECT
COLLECT s_stu INTO t_stu.

2.4 数据降序-sort

SORT t_stu [by num ASCENDING score DESCENDING ] .

2.5 数据读取-read

TYPES:BEGIN OF ty_stu,
  num TYPE n LENGTH 4,
  sub TYPE c LENGTH 4,
  name TYPE c LENGTH 10,
  score TYPE i,
  END OF ty_stu.

DATA: t_stu TYPE TABLE OF ty_stu WITH NON-UNIQUE SORTED KEY k_num COMPONENTS num sub,
      s_stu TYPE ty_stu.


 s_stu-num = 0001.
 s_stu-sub = 'MATH'.
 s_stu-name = 'TOM'.
 s_stu-score = 88.

 APPEND s_stu to t_stu.

 " 5.读取
*5.1
* DATA wa TYPE ty_stu.
* wa-num = 0001.
* READ TABLE t_stu INTO s_stu FROM wa USING KEY k_num.

*5.2 READ TABLE t_stu INTO s_stu WITH TABLE KEY k_num COMPONENTS  num = 0002.

* 5.3
* SORT t_stu by num sub.
* read TABLE t_stu INTO s_stu with key num = 0001 sub = 'MATH' BINARY SEARCH.

* 5.4  key 对应表里  DATA: t_stu TYPE TABLE OF ty_stu WITH NON-UNIQUE SORTED KEY k_num COMPONENTS num sub,
* read TABLE t_stu INTO s_stu with key k_num COMPONENTS num = 002 .

* 5.5 根据索引将表里的数据赋值给结构
* READ TABLE t_stu INTO s_stu INDEX 1.

2.6 内表循环-Loop

TYPES:BEGIN OF ty_stu,
  num TYPE n LENGTH 4,
  sub TYPE c LENGTH 4,
  name TYPE c LENGTH 10,
  score TYPE i,
  END OF ty_stu.

DATA: t_stu TYPE TABLE OF ty_stu WITH NON-UNIQUE SORTED KEY k_num COMPONENTS num sub,
      s_stu TYPE ty_stu.
* 6 Loop 这里的key 用拿个表里的字段进行循环
*LOOP AT t_stu INTO s_stu USING KEY k_num.
*ENDLOOP.

* 这里循环两次
*LOOP AT t_stu INTO s_stu FROM 1 to 2.
*ENDLOOP.

* 这里循环出name等于tom的结构
*LOOP AT t_stu INTO s_stu WHERE name = 'TOM '.
*ENDLOOP.

* 只有第一行才能进 AT FIRST ,最后一行进AT LAST
*LOOP AT t_stu INTO s_stu .
*  AT FIRST .
*  ENDAT.
*  
*  AT LAST.
*  ENDAT.  
*ENDLOOP.

补充:还有group by 分组

2.7 MODIFY 修改数据

*  7.1根据key
*  s_stu-num = '01'. s_stu-sub = 'MATH'. s_stu-score = 100.
*  MODIFY TABLE t_stu USING KEY k_num FROM s_stu .

*  7.2根据索引
*  s_stu-num = 01. s_stu-sub = 'test'. s_stu-score = 99.
*  MODIFY t_stu FROM s_stu INDEX 2.

*   7.3循环更改
*  LOOP AT  t_stu INTO s_stu USING KEY k_num.
*    s_stu-score -= 10.
*    MODIFY t_stu USING KEY loop_key FROM s_stu TRANSPORTING score.
*  ENDLOOP.

*  7.4条件更改
*s_stu-score += 20.
*MODIFY t_stu FROM s_stu TRANSPORTING score WHERE num = 002 AND sub = 'ENG'.

2.8 删除 delete

2.8.1
s_stu-num = 0001. s_stu-sub = 'MATH'. s_stu-name = 'TOM'.
DELETE TABLE t_stu FROM s_stu.
2.8.2 
delete TABLE t_stu WITH TABLE KEY primary_key COMPONENTS num = 0001 sub = 'MATH' name = 'TOM'.
2.8.3 索引
DELETE t_stu INDEX 1.
2.8.4循环删除
LOOP AT t_stu INTO s_stu USING KEY k_num.
  DELETE t_stu USING KEY loop_key.
ENDLOOP.
2.8.5 范围删除
delete t_stu USING KEY k_num FROM 1 to 2.
2.8.6 重复删除 ,先排序后删除
SORT t_stu by num.
delete ADJACENT DUPLICATES FROM t_stu COMPARING num.

2.9 其他

DESCRIBE [KIND(类型)] [LINE (行)]

 DESCRIBE TABLE t_stu LINES DATA(lines).
 WRITE  lines.(打印出多少行)

CLEAR
FREE

2.10函数

abs()

DATA(STR) = ABS(-1)/LINES(t_stu)/line_index()
WRITE STR.

2.11消息

message : se91 type:A,E,I,S,W,X

message 'XXX' type 'X'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容