SAP/ABAP结构、工作区、内表的区别和定义


* 结构、工作区、内表区别:
* 结构: 不能赋值,只能作为工作区和内表定义的参照 .
* 工作区:  单行结构数据,相当于Java中的 Map<String, Object> .
* 内表: 多行结构数据,相当于Java中的 List< Map<String, Object> > .

REPORT ych_structure_define.

* 定义结构 s1 .
TYPES: BEGIN OF s1 ,
         kunnr TYPE char10,
         name1 TYPE char10,
       END OF s1 .

* 定义结构 s2 参照透明表 .
TYPES: s2 LIKE kna1.

* 定义工作区 wa1 .
DATA: BEGIN OF wa1,
        kunnr TYPE char10,
        name1 TYPE char10,
      END OF wa1.

* 定义工作区 wa2 参照结构 .
DATA: wa2 TYPE s1.

* 定义工作区 wa3  参数透明表.
DATA: wa3 LIKE kna1.


* 定义内表 itab1 参照结构 s1 .
* WITH HEADER LINE 带表头行的内表,itab1同时为工作区和内表,赋值后程序会自动识别类型, OCCURS 0 表示不限制内存 .
DATA: itab1 TYPE s1 OCCURS 0 WITH HEADER LINE.

itab1-kunnr = '10001'. " 可以直接当工作区使用 .
append itab1. " 赋值给内表 itab1[] .
clear: itab1, itab1[]. " 前者为工作区,后者明确为内表 .

* 定义内表 itab2 参照结构 s1.
DATA: itab2 TYPE TABLE OF s1.

* itab2-kunnr = '10001'. " itab2 仅是内表,不能当工作区使用,会报错 .

* 定义内表 itab3 参照透明表 kna1 .
DATA: itab3 TYPE TABLE OF kna1.

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注