* 结构、工作区、内表区别: * 结构: 不能赋值,只能作为工作区和内表定义的参照 . * 工作区: 单行结构数据,相当于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.