声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4292785.html

ABAP基本数据类型

更多的类型请参考到9之间字符组成的数字字符串

如果未在 DATA 语句中指定参数<length>,则创建长度为 1

"0"每个位置都是阿拉伯数字0

D

8 个字符

日期格式必须为 YYYYMMDD 取值范围:YYYY (year): 0001 to 9999, MM(month): 01 to 12, DD (day): 01 to 31

"00000000"

T

6 个字符

格式为 24-hour的 HHMMSS

HH:00 to 23

MM: 00 to 59

SS: 00 to 59

"000000"

I

4 bytes

-2.147.483.648 to +2.147.483.647(.点号为千分位分隔符,不是小数点,而,逗号则表示是小数点)

如果运算出现非整型的结果(如小数)则进行四舍五入,而不是截断

0

F

8 bytes

小数位最大可以到17位,即可精确到小数点后17位

取值范围:-1,7976931348623157EE+308 to -2,2250738585072014EE-308 for the negative area, the value zero, and +2,2250738585072014EE-308 to +1,7976931348623157EE+308 for the positive area.

如果要求高精度,则不应该使用类型 F 数据。而应代之以类型 P 数据

F赋值时,会转换为标准形式:<±尾数部分>E±<指数部分>,且尾数部分的小数位最多为17位

0

如果值是小数,则要将值使用引号引起来

P

1 to 16 bytes

8 bytes

有效长度为1到16个字节。

两个数字位压缩后才占一个字节,由于0-9的数字只需要4Bit位,所以一个字节实质上允许存储二位数字,这就是P数据类型为压缩数据类型的由来,因为定义的的数据长度比存储于内存中要长。并借用最后半个字节,即字面上的一位来存储小数点、正号、负号、或者是这三种中间的组合————存储的可能是通过将小数点与正负号经过某种位运算后的结果,因为半个字节不可能存储小数或正负号的所对应的ASCII码(都比15大)

P类型最多允许14位小数位,即可以精确到小数点后14,再除开小数点与正负号占半个字节,即字面上1位4Bit,此时最大整数位最长可达16*2 = 32 – 1 = 31 -14 = 17位

Depending on the field length len(len表示定义时P的整个长度) and the number of decimal places dec(dec表示小数位), the following applies for the value area: (-10^(2len -1) +1) / (10^(+dec)) to (+10^(2len -1) -1) /(10^(+dec)) in steps of 10^(-dec). Values in between this range are rounded off.

在计算过程中如果小数部分过长,则进行四舍五入

0

若小数部分超过长度,则自动按四舍五入将多余的小数除掉;如果整数部分超过长度,则系统运行出错

如果值是小数,则要将值使用引号引起来

X

1~524,287 bytes

1 byte

十六进制字符 0-9, A-F具体的范围为:00~FF

类型X是十六进制类型,可表示内存字节实际内容,使用两个十六制字符表示一个字节中所存储的内容。但直接打印输出时,输出的还是赋值时字面意义上的值,而不是Unicode解码后的字符

如果未在 DATA 语句中指定参数<length>,则创建长度为 1

注:如果值是字母,则一定要大写,否则赋值不进

)

string

不限定

在系统内部,长度可变的内置类型(String、XString)是通过引用实际动态的数据对象的固定内存地址来进行操作,因而这两种内置类型和引用类型一样,属于纵深类型。

长度为0的空字符串''

xstring

不限定

由十六进制字符 0-9, A-F组成字符串。直接打印输出时,输出的还是赋值时字面意义上的值,而不是Unicode解码后的字符串

注:如果值是字母,则一定要大写,否则赋值不进

WRITE :/ xs.

长度为0的空字符串''

b

1 Byte

0 to 255属于ABAP内部类型,在ABAP程序中不能直接使用

0

s

2 bytes

-32.768 to +32.767属于ABAP内部类型,在ABAP程序中不能直接使用

0

P类型(压缩型)数据

是一种压缩的定点数,其数据对象占据内存字节数和数值范围取定义时指定的整个数据大小和小数点后位数,如果不指定小数位,则将视为I类型。其有效数字位大小可以是从1~31位数字(小数点与正负号占用一个位置,半个字节),小数点后最多允许14个数字。

P类型的数据,可表示的是字面上小数点后面允许的最大小数位,而不是指14个字节,只有这里定义时的16才表示16个字节

个字节里面。
位,除去小数点与符号需占半个字节以后
位,这31位中包括了整数位与小数位,再除去定义时小
位外,整数位最多还可达到17位,所以下面最多只能是17个9
个9,而不是32个)
) ) ) VALUE 'col1'.
FIELD-SYMBOLS <fs> TYPE ANY TABLE.
wa-col1 = 'X'.
wa-col2 = 'Y'.
INSERT wa INTO TABLE itab.
ASSIGN itab TO <fs>.
CLEAR: wa.
READ TABLE <fs> WITH TABLE KEY (key) = 'X' INTO wa.
"编译会出错
*READ TABLE <fs> WITH TABLE KEY col1 = 'X' INTO wa.
WRITE:/ sy-subrc, wa-col1, wa-col2.

因为上面的字段符号为ANY TABLE,行的结构类型不明确,所以不能静态的指定行的字段名。如果上面将字段符号定义成ANY或什么都不写是写时,根本就不可以使用READ TABLE这样的语句,原因是在静态编译的情况下,根本不为会它指向的是一个内表。

当使用完全限定类型定义字段符号时,可以静态的使用技术属性。如,某个结构的组件元素、循环某个内表、创建某个对象(引用类型的字段符号):

DATA: BEGIN OF line,
col1,
col2 VALUE 'X',
END OF line.
FIELD-SYMBOLS <fs> LIKE line.
ASSIGN line TO <fs>.
MOVE <fs>-col2 TO <fs>-col1.
WRITE: / <fs>-col1,<fs>-col2.

INDEX/ANY TABLE通用型内表

除三种标准类型外,还有一般性类型,即索引表(INDEX TABLE)和任意表(ANY TABLE),一般性类型可以用于类型定义中,但不能用于声明一个内表对象,因为它并没有指明任何明确的表类型,因而系统无法确定对其操作方式。一般性类型还可以用于指明字段符号和接口参数的类型,其实际类型可能在运行期内才能够确定。

扁平类型和纵深类型

扁平结构就是指变量内存中直接存储的是内容,而不是地址,指针是一种典型的引用类型即纵深类型。

 

扁平结构指的是所有代表实际操作内容的数据对象,因此固定长度的基本类型(即除开string与Xstring类型外的基本类型)数据均为扁平结构数据。

纵深结构指的是数据对象的内容为其他的内存地址区域,因而引用类型的数据对象是典型的纵深结构,然而内表和字符串为纵深结构(String、Xstring类型对象),因为它们内部机制也是类似的引用寻址方式。对于结构体而言,如果其中一个组件含有上述纵深类型数据,则本身也是纵深结构,如果全部由基本类型数据组成,则该结构体也是扁平结构。因此扁平类型是运行时长度固定的类型,而纵深类型对应的数据对象所占内存长度在运行时内可变,系统是以指针的形式为寻址方式对其定位。

参数的通用类型

一般性类型及其兼容性检查规则(一般性类型/非完全限定):

这种通用的类型指定在参数传递过程中可以带来方便,但也会由于系统检查级别的降低而增加危险性,也可能因为类型的不明确性造成误用,所以在大多数据可能的情况下,还是尽量明确地指定接口参数的类型。

ABAP基本数据类型、通用类型的更多相关文章

  1. ABAP 使用的字符类型

    1.ABAP基本数据类型 类型        描述                属性 C            字符类型           默认长度1,最大长度不限N            数字类 ...

  2. Swift 通用类型和通用函数 | Generic type and function

    如果你想交换两个变量的值: 1. 整型 func swapTwoInts(inout a: Int, inout b: Int) { let temporaryA = a a = b b = temp ...

  3. redis数据类型-字符串类型

    Redis数据类型 字符串类型 字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据.你可以用其存储用户的邮箱.JSON化的对象甚至是一张图片.一个字符串类型键允许存储的 ...

  4. Kotlin 数据类型(数值类型)

    Kotlin 的常见数据类型: 类型 范围 byte -128~127 short 32767-32768 int -2147483648~2147483647 long 92233720368547 ...

  5. 数据类型 -- uint32_t 类型

    整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型 ...

  6. 【ABAP系列】SAP ABAP ALV里日期类型的F4帮助

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP ALV里日期类 ...

  7. Java连载76-基础数据类型包装类型及其方法简介

    一.java中八种基本数据类型对应的包装类型 基本数据类型      包装类型 byte                    java.lang.Byte short                ...

  8. javascript数据类型及类型的转换总结

    javascript 是浏览器客户端脚本语言,要想让网页与后台程序更好的交互效果,这里我们详细了解javascript 数据类型及类型的转换 1,数据类型 number number类型 数字类型,浮 ...

  9. TS数据类型:类型别名/联合类型/字面量类型/类型推论等纲要

    在学C/C++  Java等强类型语言时,变量类型是唯一的,需要先指定.PHP JavaScript等弱类型语言时,无需指定变量类型 但是,TypeScript里面的联合类型 (Union Type) ...

随机推荐

  1. Attribute 与 Property 的区别

    网上的说法是: Property 是面向对象的概念,是Object的一部分. Attribute 是<input type="text"> type就是Attribut ...

  2. web跨页弹窗选值

    最近在项目中看到这样一种效果——点击当前网页文本框,然后弹出一个缩小的网页,并在网页里选择或填写数据,然后又返回当前网页,小网页关闭.感觉非常不错,其实在以前网上也看见过,只是当时没有留心.今天抽时间 ...

  3. LoadRunner并发用户和集合点的深入讨论

    看到51上三个高手Zee, 大漠飞鹰,xingcyx的一场非常精彩的关于并发用户数和集合点的讨论,很有意义.如果对这两个概念不清楚的朋友,一定要仔细领悟了. 故事开始于xingcyx的一番话: 声明: ...

  4. Install Sogou IM 2.0 in Ubuntu14.04+/Xfce

    Ubuntu14.04+ 安装搜狗输入法 搜狗输入法是一款非常友好的输入法产品,从Ubuntu14.04开始对Linux支持,不过只是Debian系的,是Ubuntu优麒麟组引入的.优麒麟是针对国人设 ...

  5. Linux Kernel中断子系统来龙去脉浅析【转】

    转自:http://blog.csdn.net/u011461299/article/details/9772215 版权声明:本文为博主原创文章,未经博主允许不得转载. 一般来说,在一个device ...

  6. Java中的BufferedReader 的readLine方法

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java ...

  7. jQuery_Ajax_Json 异步接收PHP端传来的json数据

    [json]{"user_id":"1172940","rmb_point":"0","weixin_id&q ...

  8. 《Head First设计模式》

    单件模式: 确保一个类只有一个实例,并提供一个全局访问点. 没有公开的构造函数,而采用一个公开的静态成员函数调用构造函数(使用该静态成员函数调用就是全局访问点,使用它可以在需要时才实例化对象),确保只 ...

  9. Mongodb 和Redis 的相同点和不同点

    MongoDB和Redis都是NoSQL,采用结构型数据存储.二者在使用场景中,存在一定的区别,这也主要由于二者在内存映射的处理过程,持久化的处理方法不同.MongoDB建议集群部署,更多的考虑到集群 ...

  10. python 拷贝文件夹下所有的文件到指定文件夹(不包括目录)

    1.随便简单些写了一下.直接粘结代码,只是简单的实现一下,还很多需要完善和扩展的地方,比如忽略掉后缀文件,删除文件 如果排除的某些的话可以用: sourceF.find('.后缀')>0 2.注 ...