Loading

ABAP语法基础篇(1)——数据类型和对象

一 、数据类型和对象

在ABAP中可以使用与标准数据声明相似的语法处理数据类型,而与数据对象无关。在程序中必须声明要使用的全部数据对象。声明过程中,必须给数据对象分配属性,其中最重要的属性就是数据类型。

1.1 基本数据类型

数据类型 默认大小 有效大小 初始值 说明
C 1 1 - 65535 SPACE 文本、字符(字母数字字符)
D 8 8 '00000000' 日期(格式: YYYYMMDD )
F 8 8 0 浮点数
I 4 4 0 整型(整数)
N 1 1 - 65535 '00...0' 数字文本
P 8 1 - 16 0 压缩号
T 6 6 '000000' 时间(格式: HHMMSS )
X 1 1 - 65535 X'00' 十六进制

对算术运算的非整型结果(如分数)进行四舍五入,而不是截断。类型 P 数据允许在小数点后有数字。
有效大小可以是从 1 到 16字节的任何值。将两个十进制数字压缩到一个字节,而最后一个字节包含一个数字和符号。在小数点后最多允许14个数字。

1.2 系统定义的数据对象

SPACE 空白字符串
SY-SUBRC 系统执行传回值, 0 表示成功
SY-UNAME 用户
SY-DATUM 系统日期
SY-UZEIT 系统时间
SY-TCODE 当前执行程序的 Transaction code
SY-INDEX 当前 LOOP 循环过的次数
SY-TABIX 当前处理的是 Internal Table (内部表) 的第几行
SY-TMAXL Internal Table (内部表) 的总行数
SY-SROWS 屏幕总行数
SY-SCOLS 屏幕总列数
SY-VLINE 画竖线
SY-ULINE 画横线
SY-PAGNO 当前页号
SY-LINSZ 当前报表宽度
SY-LINCT 当前报表长度
SY-LISND 列表索引页
SY-LISTI 上一个列表的索引
SY-LILLI 绝对列表中选定的行号
SY-CUROW 屏幕上的行

1.3 确定数据对象的属性

如果要查明数据对象的数据类型,或者要在程序的运行期间使用其属性,可使用 DESCRIBE语句。语法如下:

DESCRIBE FIELD <f> [LENGTH <l>] [TYPE <t> [COMPONENTS <n>]]  
[OUTPUT-LENGTH <o>] [DECIMALS <d>] 
[EDIT MASK <m>].

将由语句的参数指定的数据对象 的属性写入参数后的变量。

DESCRIBE FIELDS 语句具有下列参数:

参数 用途
LENGTH 确定字段长度
TYPE 确定数据类型
OUTPUT-LENGTH 确定输出长度
DECIMALS 确定小数位
EDIT MASK 确定转换例程
1.3.1 确定字段长度

要确定数据对象的长度 ,利用 DESCRIBE FIELD 语句使用 LENGTH 参数,如下所示:

DESCRIBE FIELD <f> LENGTH <l>.

系统读取字段 <f> 的长度,并将值写入字段 <l>

1.3.2 确定数据类型

要确定字段的数据类型 , 利用 DESCRIBE FIELD 语句使用 TYPE 参数,如下所示:

DESCRIBE FIELD <f> TYPE <t> [COMPONENTS <n>].

系统读取字段 <f> 的数据类型,然后将值写入字段 <t>

除返回预定义数据类型 CDFINPTX 外,该语句还返回:

s 对于带前导符号的两字节整型
b 对于无前导符号的一字节整型
h 对于内表
c 对于组件中没有嵌套结构的结构
1.3.31 确定输出长度

要确定字段的输出长度 , 利用 DESCRIBE FIELD 语句使用 OUTPUT-LENGTH参数,如下所示:

DESCRIBE FIELD <f> OUTPUT-LENGTH <o>.

系统读取字段 <f> 的输出长度,并将值写入字段 <o>

1.3.4 确定小数位

若要确定类型 P 字段的小数位的个数,利用 DESCRIBE FIELD 语句使用 DECIMALS参数,如下所示:

DESCRIBE FIELD <f> DECIMALS <d>.

系统读取字段 <f> 的小数个数,并将值写入字段 <d>

1.3.5 确定转换例程

要确定 ABAP/4 词典中某字段的转换例程是否存在,如果存在,名称是什 么, 利用 DESCRIBE FIELD 语句使用 EDIT MASK 参数,如下所示:

DESCRIBE FIELD <f> EDIT MASK <m>.

如果 ABAP/4 词典中字段 <f> 的转换例程存在,则系统将其写入字段 <m>,然后将系统字段 SY-SUBRC 中的返回代码设为 0

可以像下面所显示的那样,在 WRITE 语句中将字段 <m> 直接用作格式模板:

WRITE <f> USING EDIT MASK <m>.

如果字段 <f> 没有转换例程,则系统将返回代码设为 4

posted @ 2021-12-06 16:23  Gjboy666  阅读(260)  评论(0编辑  收藏  举报