程序路径:The ABAP Programming Language -> Basic Statements -> Data Types and Data Objects -> Demonstration of Elementary Data Objects
代码:
![](/Images/OutliningIndicators/ContractedBlock.gif)
解析:
1、这个程序是用 PROGRAM 开头的,这与我们上个程序提到的不同,但是运行方式是相同的。这里涉及到一个程序属性与程序声明语句不一致的情况,运行时环境是按照程序属性中的设置来判断程序是可以直接执行还是必须通过事务码执行。程序属性的查看方法是:切换到 ABAP 编辑器后,点菜单的“转到-属性”,如果是可执行程序,则能够直接运行,如果是模块池,则必须通过事务码启动。
2、三个 DATA 语句分别定义了三个变量,这个程序演示的是基本数据类型的数据对象定义,在 ABAP 里,基本数据类型是指 c、d、t、n、i、p、f、x、string、xstring 等语言预置的数据类型,用 TYPE 附加关键字来为变量指定类型。
3、接下来的三个赋值语句则分别给三个变量赋值,最后一个 WRITE 语句输出结果,如下图:
这里蓝色反显的文字是我标记的,为了说明变量的输出长度,正常输出没有。
4、回头看代码,我们定义的 text1 是长度为 20 个字符的 c,也就是 20 个字符,它的输出长度也固定为 20,而我们赋值时只赋了 10 个字符,并且字符类型是做对齐的,因此后面还剩余了 10 个字符的空格;接下来的 number 是 i,也就是整型,它的输出长度固定为 11,因为整形数的值域是 -2147483648 到 +2147483647,正好 11 位,需要注意的是,SAP 中的负号是在数字后面的,这是德国习惯,弄得我们很不爽;最后是 string 类型的 text2,它的长度在运行时动态确定,实际有多长就输出多长。对于 WRITE 语句来说,如果不指定位置,连续两个变量输出中间会加一个空格,在数字 100 和字符串 is an interger 之间有两个空格,前一个是 number 变量的符号位,正数不显示,负数显示,后一个空格是两个变量的间隔。
====================================================
程序路径:The ABAP Programming Language -> Basic Statements -> Data Types and Data Objects -> Elementary TYPES Statement
代码:
![](/Images/OutliningIndicators/ContractedBlock.gif)
解析:
1、跟前一个程序对比,这里主要多了用 TYPES 语句定义数据类型的代码。在程序中,为了使用方便和保证一致性,用户可以定义自己的数据类型,然后在用 DATA 定义变量时参考自定义类型,避免修改代码时因遗漏而产生赋值方面的错误。
2、这里定义类型 p 的时候有一个 DECIMALS 附加关键字,它指定了数字的小数位数。p 类型是 SAP 中比较特殊的一种数据类型,它用一个字节存放两位数字,最后一个字节中存放一个数字和正负号,最多可以使用 14 位小数。
其它没什么特别的,跟第一个程序类似。
====================================================
程序路径:The ABAP Programming Language -> Basic Statements -> Data Types and Data Objects -> Demonstration of Structures
代码:略
解析:
1、这个程序介绍了如何定义结构、结构的嵌套和结构的使用。结构就是把多个意义上属于同一类的单个变量组织在一起,共同管理的数据结构。对于结构中嵌套结构的方式,可以用多个-来链接,指示最终的数据字段。其它用法跟普通数据对象都一样。
====================================================
程序路径:The ABAP Programming Language -> Basic Statements -> Data Types and Data Objects -> Demonstration of Internal Tables
代码:略
解析:
1、这个程序介绍了如何定义和使用内表。内表可以认为是任意多个相同的结构组合在一起的数据对象,从逻辑意义上来说,跟数据库表相似,都是存储大量结构相同的数据的;差别在于数据库表是持久的,存储在磁盘上,而内表是临时的,生存期仅限于所在程序的运行时,程序结束,内表也就被释放了。
2、从例子中可以看到 SAP 对使用内表的建议,首先定义一个结构做为内表的工作区,再参考结构创建内表,这样内表的行结构就与这个结构相同,以后修改代码时,如果需要增加或删除字段,只需要改结构定义即可,从最大限度上保证一致性。
3、向内表里添加行的最简单办法是使用 APPEND,它把数据添加到内表的最后。
从这里例子里,只要学习内表的最简单的使用方法,以后经常会用到内表,到时候再详细解释。
====================================================
程序路径:The ABAP Programming Language -> Basic Statements -> Data Types and Data Objects -> Demonstration of DESCRIBE FIELD
代码:略
解析:
1、DESCRIBE FIELD 语句用来获得数据对象(变量)的长度、类型等技术信息。一般来说,这种语句可以用在子程序或者函数模块中,获得未限制类型的输入输出参数的数据类型,进而进行相应的处理。或者用于字段符号的类型确定。
平时需要使用这个语法的情形不多,只要大致了解,在读标准程序的时候能够理解其作用即可。