【abap】数据字典SE11及Data Type中的Structure和Table Type

来源:互联网 发布:down.php文件怎么打开 编辑:程序博客网 时间:2024/05/20 01:13

事务码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 <inttab> TYPE TTYP. 其中TTYP表示这个具体的table type的名字。

只要你提前使用事务码SE11定义了TTYP这个table type,你就可以创建一个名为<inttab>的内表。

上述文字恰好解释了我长久以来的疑惑,如下图:事务码CO03对应的程序COISOUTPUT中的一段subrouting的开头


这个名为detail_list_create的subrouting使用cois_t_detail_list类型的变量作为参数,也就是执行结束后,作为输出变量了。

这个最后的输出变量ct_detail_list究竟是什么结构?里面到底存放了怎样的数据呢?问题指向了之前的那幅图:


上图是使用SE11打开这个table type的结果,怎样理解上图呢?

官方文档给出了下面的解释:

table type的定义有三个要点:

  • Line type :它用来定义  内表的某一行的    sturcture和data type attributes;
  • Access Mode :它们用来  管理和访问  内表的数据
  • Primary Key 和 Secondary Key
下面几个图是对上述三条文字的图解




上述第二条内容,管理和访问内表数据,解释一下:

access mode 用来指出如何访问内表的数据,前提是这个内表是 通过事务码SE11定义的table type 创建出来的。



用table type去定义一个内表的语法是这样的:DATA <name> TYPE TABTYPE


如上图,就使用  事先在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. 程序中,结构体的作用是:将相同性质的字段进行归类。结构体不属于数据字典 对象 ,在程序运行时被作为 临时对象 创建。





0 0
原创粉丝点击