本教程之前的文章介绍了 ABAP 调试器的用法:
- 13. 最浅显易懂的 SAPGUI 里 ABAP 调试器的应用办法介绍
有敌人向我征询:ABAP 调试器里变量显示标签里,如果对于一个内表变量,Val 栏下的 [1x3(28)]Standard Table
是什么意思?
为了精确答复这个问题,咱们就得简略理解下 ABAP 程序里的变量,在运行时耗费的内存空间这个问题。
在本教程第四篇文章,咱们学习了 ABAP 编程语言里根本的数据结构:
- 4. ABAP 规范培训教程 BC400 学习笔记之四:ABAP 编程语言的数据类型
回到本文开始的疑难。
看这段简略的 ABAP 代码:
TYPES: BEGIN OF ty_data,
name TYPE c,
age TYPE c LENGTH 2,
score TYPE c LENGTH 11,
END OF ty_data.
DATA: ls_data TYPE ty_data,
lt_data TYPE TABLE OF ty_data.
ls_data-name = 'c'.
ls_data-age = 'ab'.
APPEND ls_data TO lt_data.
定义了一个内表变量 lt_data
, 其行类型为一个构造,蕴含名叫 name,age 和 score 这三个字段,字段类型都为 c,长度别离为 1,2 和 11.
既然都是固定的字符类型,那么内表每一行占据的内存空间为 (1 + 2 + 11) × 2 = 28 字节。
所以 [1x3(28)]Standard Table
里的 1,代表以后内表的记录数,3 代表每条记录的列数或者说字段个数,28 代表每条记录占据的字节大小。
当咱们给行类型定义削减一个类型为 string 的字段 content 之后,咱们发现每行占据的内存空间,从 28 个字节减少到了 36 个字节,多进去 8 个字节。
尽管咱们尚未给 content 字段削减任何内容,这个字段蕴含的是空的初始值。那么这多进去的 8 个字节是做什么用的?
本文余下局部, 具体介绍这多进去的 8 个字节是从哪里来的,以及这张图背地传递的信息。