[abap] 几种定义内表的方法

本文通过示例详细介绍了ABAP中定义和使用内表的不同方法,包括带有表头的内表、结构定义、LIKE关键字以及如何清空内表等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:几种内表的定义方法。
REPORT  ZTESTLP_1206.

DATA: BEGIN OF itab_test OCCURS 0,  " 定义了一个有表头的内表
      matnr(04) TYPE C,
      ebeln TYPE I,
     END OF itab_test.

TYPES: BEGIN OF itab_c,
     aaa TYPE I,
     bbb(20) TYPE C,
     END OF itab_c.

DATA: ITAB1 LIKE RANGE OF MARA-MATNR.   " 定义一个表,结构为ranges ,有上下限
RANGES: s_bwart FOR mseg-bwart.


" data  like
DATA tlike  LIKE itab_test.                                  " 定义一个结构
DATA tlike_occurs0 LIKE itab_test OCCURS 0.                   " 定义一个无表头的内表
DATA tlike_occurs0_withhead LIKE itab_test OCCURS 0 WITH HEADER LINE.                 " 定义一个有表头的内表


" data   like line of
DATA: like_line_of  LIKE LINE OF itab_test,                    " 定义一个结构
      like_line_of_occurs0 LIKE line of itab_test OCCURS 0,      " 定义一个无表头的内表
      like_line_of_occurs0_nohead LIKE LINE OF itab_test OCCURS 0 WITH HEADER LINE.   " 定义一个有表头的内表


" data like table of    只能跟内表,不能跟结构、工作区
DATA lt LIKE TABLE OF itab_test .  " 定义了一个参照有表头内表的内表,但不带工作区
*DATA lt_occurs0 LIKE TABLE OF itab_test OCCURS 0.    错误定义,不可带OCCURS 0。
DATA lt_withhead  LIKE TABLE OF itab_test WITH HEADER LINE.  " 定义一个有表头的内表。

*DATA lt_orc LIKE LINE OF itab_c.     " 错误定义  不能跟结构itab_C.

" 另外定义lt的工作区。
DATA: BEGIN OF wa_lt,
      matnr(04) TYPE C,
      ebeln TYPE I,
     END OF wa_lt. itab_test-matnr = '0014'.  itab_test-ebeln = 12133.
APPEND itab_test.
itab_test-matnr = 'BT02'.  itab_test-ebeln = 23433.
APPEND itab_test.

wa_lt-matnr = 'KKKK'.  wa_lt-ebeln = 8888.
APPEND wa_lt to lt.
wa_lt-matnr = 'KKKG'.  wa_lt-ebeln = 99999.
APPEND wa_lt to lt.

WRITE : 'itab_test内表原始数据:'.
CLEAR itab_test.
LOOP AT itab_test.
   WRITE: / itab_test-matnr, itab_test-ebeln.
ENDLOOP.

LOOP AT lt INTO wa_lt.
   WRITE: / wa_lt-matnr, wa_lt-ebeln.
ENDLOOP.

clear itab_test.
SKIP 2.
WRITE : 'itab_test内表清空测试:'.
if itab_test is INITIAL.
  WRITE :/ '表头清空'.
ENDIF.


CLEAR itab_test[].
if itab_test[] is INITIAL.
  WRITE: / 'itab_test表体清空'.
endif.


CLEAR lt.
if itab_test[] is INITIAL.
  WRITE: / 'lt表体清空'.
endif.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值