事务码SE11如下图 ABAP Dictionary (ABAP数据字典)
===========================
域对象Domain
===========================
透明表Transparent Table
视图View
===========================
数据元素 Data Element
结构类型 Structure
表类型 Table type
===========================
我们今天的主角是Structure 和 Table type,使用事务码SE11创建的 Structure 和 Table Type.
举例:使用SE11打开名为COIS_T_DETAIL_LIST的Table type
对于Table Types,SAP官网的帮助文档是这样说的:SAP官方对于Table Types的说明
table type 被用来描述ABAP中某个内表的structure和functionalattributes
在ABAP程序中,如果你想用table type这个概念,你用的语法是这样的: DATA
只要你提前使用事务码SE11定义了TTYP这个table type,你就可以创建一个名为
上述文字恰好解释了我长久以来的疑惑,如下图:事务码CO03对应的程序COISOUTPUT中的一段subrouting的开头
这个名为detail_list_create的subrouting使用cois_t_detail_list类型的变量作为参数,也就是执行结束后,作为输出变量了。
这个最后的输出变量ct_detail_list究竟是什么结构?里面到底存放了怎样的数据呢?问题指向了之前的那幅图:
上图是使用SE11打开这个table type的结果,怎样理解上图呢?
官方文档给出了下面的解释:
table type的定义有三个要点:
上述第二条内容,管理和访问内表数据,解释一下:
access mode 用来指出如何访问内表的数据,前提是这个内表是 通过事务码SE11定义的table type 创建出来的。
用table type去定义一个内表的语法是这样的:DATA
如上图,就使用 事先在SE11中创建的名为COIS_T_DETAIL_LIST的table type 定义了一个内表 gt_detail_list
虽然教材写的很模糊,但是我们认为,这个被创建的内表的structure其实是 COIS_S_DETAIL_LIST 因为
双击它,看看它的结构,如下图
====================================================================================
如何创建一个table type呢?
目前我还没有创建过,只是在sap官方文档中找到了对应的说明:创建table type
https://help.sap.com/doc/saphelp_nw73ehp1/7.31.19/en-US/90/8d7304b1af11d194f600a0c929b3c3/frameset.htm
如何创建一个table type并不是这个博文的重点,忽略
==================================================================================
问题的关键在于 COIS_S_DETAIL_LIST这个东西,是一个“结构”,structure
Structure的只是一个结构,不直接存储数据,我们看看教科书上怎么写的:
1. 数据字典(SE11)中的结构体,和程序中结构体的概念,是一样的。
2. 程序中,结构体的作用是:将相同性质的字段进行归类。结构体不属于数据字典 对象 ,在程序运行时被作为 临时对象 创建。