




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 1声明数据概览内容数据类型和 对象简介数据类型基本数据类 型 - 预定义的基本数据类 型 - 用户定义的结构化数据 类型数据类型的 兼容性数据对象文字变量常量系统定义的 数据对象创建数据对 象和数据类 型DATA 语句CONSTANTS 语句STATICS 语句TABLES 语句TYPES 语句示例汇总预定义基本 数据类型和 对象示例用户定义的 基本数据类 型和对象示 例字段串示例内表示例使用类型组确定数据对 象的属性确定字段长 度确定数据类 型确定输出长 度确定小数位确定转换例 程本节说明如 何在 ABAP/4程 序中声明数 据。要能声 明数据,应 该熟悉定义 数据类型 数据对象之
2、间关系的 ABAP/4 类型概念。下列内容介 绍ABAP/4 类型概念下列主题说 明在该指南中 ,术语“字 段”用于数 据对象。通常情况下 ,字段可以 是 任何数据 对象(参见 数据对象 (页 ) ) 字段符号 或形式参数 (参见 使用字段符号和通过参数传递数据)根据上下文 ,可以明确 术语“字段 ”代表什么 。2数据类型和 对象简介数据类型和 数据对象是 ABAP/4 类型概念的 基本组件。 二者均可由 用户声明和 维护。这与 其它编程语 言如 C、FORTRAN 或 PASCAL 不同,在这 些语言中用 户可以声明 数据对象, 但仅限于预 定义的数据 类型。在 ABAP/4 中,可以使 用
3、与标准数 据声明相似 的语法处理 数据类型, 而与数据对 象无关。特 殊程序以外 的数据类型 集中存储也 是可能的。下列列表是 数据类型和 对象主要特 征的概述: 数据类型 (基本的或 结构化的) -数据类 型是纯粹的 说明。 -没有与 数据类型相 关联的内存 。 -数据类 型描述数据 对象的技术 属性。-数据类 型是数据对 象的属性并 与数据对象 联系紧密。 数据对象 (文字、变 量、常量等 ):-数据对 象是程序在 运行时使用 的物理单元 。-每个数 据对象都有 分配给它的 特定数据类 型。-每个数 据对象占据 一些内存空 间。-ABAP/4 根据数据对 象的数据类 型处理数据 对象。在程
4、序中, 必须声明要 使用的全部 数据对象。 声明过程中 ,必须给数 据对象分配 属性。其中 最重要的属 性是数据类 型。在 ABAP/4 中,可以使 用与其它程 序语言相似 的预定义的 数据类型, 或者使用用 户定义的数 据类型。由于 ABAP/4 中用户定义 的数据类型 允许编程具 有非常大的 灵活性,所 以提供了强 有力的工具 。它们的范 围从基本类 型(例如, 给定长度的 字符串)到 非常复杂的 结构(例如 ,嵌套表) 。将用户定义 的数据类型 分配给数据 对象使您能 精确处理需 要的数据对 象。可以按 使用预定义 数据类型的 方式使用用 户定义的数 据类型。可 以在程序内 对它们进行
5、局部明, 或在 ABAP/4 词典中对它 们进行全局 保存。有三个层次 级的数据类 型和对象: 在 ABAP/4 词典中定义 的独立于程 序的数据 在一个程 序中全局使 用的内部数 据 在过程( 子程序和功 能模块)中 局部使用的 数据在本指南的 相应章节将 了解到有关 这些层次级 的详细内容 。3数据类型在 ABAP/4 中按结构和 定义对数据 类型分类。 数据类型是 : 基本的( 非结构化的 )或结构化 的 预定义的 或用户定义 的因此,有四 类数据类型 ,在下表中 列出。预定 义数据类型 的名称是固 定的。用户 定义的数据 类型的名称 由程序员在 程序中定义 。ABAP/4 中的数据类
6、型预定义的用 户定义的基 本的C、D、 F、I、N、 P、T 和 X:ABAP/4 包含 8 个预定义基 本数据类型 。基本数据类 型 - 预定义的 (页 ) 用户定义的 基本数据类 型基于预定 义基本数据 类型。基本数据类 型 - 用户定义的 (页 ) 结构化的TABLE: 该预定义的 结构化的数 据类型仅用 于形式参数 和字段符号 的键入。字段串和内 表:这些结 构化的数据 类型可以用 于数据对象 并且是用户 定义的。结构化数据 类型 (页 ) 使用数据时 ,了解数据 类型是否兼 容是很重要 的。关于该 主题的详细 信息,参见3基本数据类 型 - 预定义的下表总结了 ABAP/4 中预定义
7、的 基本数据类 型(有效大 小以字节为 单位):ABAP/4数据类型数据类型默 认大小有效 大小初始值说明 C11 - 65535SPACE文 本、字符( 字母数字字 符)D88'00000000'日 期(格式: YYYYMMDD) F880浮 点数I440整 型(整数) N11 - 65535'00.0'数 字文本P81 - 160压缩 号T66'000000'时 间(格式: HHMMSS) X11 - 65535X'00'十 六进制在各方面, 数据类型 D、F、I 和 T 都是预定义 的,但数据 类型 C、N、P 和 X 可以
8、有附加 说明。例如 ,可以在程 序中定义大 小。关于数字数 据类型 I、F 和 P 的详细信息 ,参见 数字数据类 型 (页 ) 。4数字数据类 型ABAP/4 支持三种数 字数据类型 。它们是: 类型 I 的整型(整 数) 类型 P 的压缩号 类型 F 的浮点数类型 I 数据类型 I 数据的数值 范围是 -2*31 到 2*31-1 并且仅包括 整数。对算术运算 的非整型结 果(如分数 )进行四舍 五入,而不 是截断。类型 I 数据可用于 计数器、项 目号、索引 和时间期段 等。类型 P 数据类型 P 数据允许在 小数点后有 数字。类型 P 数据的数值 范围取决于 大小和小数 点后的位数 。
9、有效大小 可以是从 1 到 16 字节的任何 值。将两个 十进制数字 压缩到一个 字节,而最 后一个字节 包含一个数 字和符号。 在小数点后 最多允许 14 个数字。关 于定义小数 点后位数的 详细信息, 参见 DATA 语句的基本 格式 (页 ) 。使用类型 P 数据时,最 好将程序属 性设置为“ 定点算法” (参见指定程序属性 (页 Error! Not a valid link.) )。否则, 将类型 P 数字作为整 型对待。类型 P 数据可用于 如距离、重 量和钱数等 数值。类型 F 数据对于正数和 负数,类型 F 数的数值范 围是 1x10*-307 到 1x10*308, 包括 0
10、(零)。精确范围近 似为 15 位十进制数 ,这取决于 硬件平台的 浮点算法。由于是在内 部将类型 F 数据转换为 二进制系统 ,因此可能 出现舍入误 差。尽管 ABAP/4 处理器试图 将这些影响 减至最小, 但是如果要 求高精度, 则不应该使 用类型 F 数据。而应 代之以类型 P 数据。如果需要大 的数值范围 ,而且舍入 误差不重要 ,则可以使 用类型 F 数据。因为对类型 I 和 F 字段的算术 运算与机器 码语句关系 更紧密,所 以用类型 I 和类型 F 字段的计算 比用类型 P 字段的计算 要快;同时 对 P 字段的运算 要求更多的 软件支持。 尽管如此, 可能仍必须 使用类型 P
11、 数据以满足 精度或数值 范围的要求 。类型 N 数据不包含 数值。虽然 由数字组成 ,但这些数 字不用于计 算。科目号 和邮编是典 型的类型 N 字段。5基本数据类 型 - 用户定义的用户定义的 基本数据类 型完全是以 预定义的基 本数据类型 为基础的。 要定义自己 的基本数据 类型,请使 用 TYPES 语句(参见 TYPES 语句 (页 ) )。用户定义的 基本数据类 型使程序的 阅读和维护 更加容易: 例如,如 果在程序中 经常需要使 用某数据类 型集,通过 为类型定义 创建包括程 序(参见 包含程序),或者在 ABAP/4 词典的类型 组中定义数 据类型(参 见 使用类型组 (页 )
12、 ),可以确 保总是使用 相同的数据 类型。 若要使数 据类型更易 于理解和识 别,可以赋 予它们描述 性的名称。 在将用户 定义的数据 类型分配给 几个数据对 象之后,通 过更改 TYPES 语句中数据 类型的定义 ,可以用一 个操作更改 所有这些数 据对象的数 据类型。TYPES: NUMBER TYPE I, LENGTH TYPE P DECIMALS 2, CODE(3) TYPE C.DATA: NO_FLIGHTS TYPE NUMBER, NO_PASSENGERS TYPE NUMBER, DISTANCE TYPE LENGTH, HEIGHT TYPE LENGTH, .
13、 CITY_CODE TYPE CODE, COUNTRY_CODE TYPE CODE, .示例中,定 义了名为 NUMBER 的数据类型 。该数据类 型除拥有不 同名称以使 程序更易于 阅读外,与 预定义的数 据类型 I 相同。该示例中还 定义了数据 类型 LENGTH, 该数据类型 是以预定义 的基本数据 类型 P为基础的 。为 LENGTH 定义了给定 数目的小数 位。例如, 如果需要更 改长度规格 的精度,仅 须在程序中 更改 TYPES 语句。还定义了第 三种数据类 型 CODE。 CODE 是以预定义 的类型 C 为基础的, 具有给定长 度 3。5结构化数据 类型通常情况下 ,A
14、BAP/4 程序中的结 构化数据类 型是用户定 义的。在 ABAP/4 中,没有可 用的预定义 结构化数据 类型,但下 列例外:可以使用预 定义的一般 表类型TABLE, 以便将具有 一般行结构 的内表传递 到子程序( 参见键入形式参数),或者键 入字段符号 (参见 键入字段符号)。有两种结构 化数据类型 : 字段串字段串是其 它数据类型 的集合。字 段串的组件 可以是字段 串本身或内 表。可以用 TYPES 语句或 DATA 语句(参见 用于字段串 的 DATA 语句 (页 ) )定义字段 串。通过 DATA 语句不能定 义独立数据 类型,而可 以定义具有 结构化类型 的数据对象 。 内表内
15、表由相同 类型的几行 组成。与字 段串仅“水 平地”扩展 不同,内表 还“垂直地 ”扩展。可以用 TYPES 或 DATA 语句的 OCCURS 参数定义内 表(参见 创建内表 (页 Error! Not a valid link.) )。由于字段串 能包含任何 类型的组件 ,而且可以 为任何类型 定义内表, 所以自定义 数据结构可 能变得非常 复杂。结构化数据 类型示例下列是 ABAP/4 中结构化数 据类型的示 例a)由一 系列基本数 据类型组成 的字段串( 平铺结构, 仅“水平” )b)为基 本字段定义 的内表(基 本数据类型 的动态排列 ,仅“垂直 ”)c)为简 单字段串定 义的内表(
16、 带有行和列 的表)d)包含 子结构的结 构(嵌套结 构)e)结构 ,该结构包 含内表作为 组件(垂直 结构)f)为包 含结构化组 件的字段串 定义的内表 (垂直行类 型的表)g)为字 段串定义的 内表,该字 段串包含内 表作为组件7数据类型的 兼容性使用数据时 ,有时需要 将数据从一 种类型转换 到另一种类 型。要作到 这一点,数 据类型必须 是可转换的 (参见 类型转换 (页 Error! Not a valid link.) )。可转换 性的一个重 要前提就是 兼容性。如果两个数 据类型具有 相同的技术 属性,则它 们是兼容的 。不同 ABAP/4 数据类型的 后果如下:基本数据类 型如
17、果在类型 、大小和( 对于类型 P)小数位 等方面是相 同的,则基 本数据类型 和其它基本 数据类型是 兼容的。基本数据类 型与结构化 数据类型相 互之间不兼 容。结构化数据 类型对于结构化 数据类型, 必须区分字 段串和内表 。字段串如果字段串 的结构相同 而且组件兼 容,则字段 串与其他字 段串兼容。 这意味着从 基本字段构 造字段串, 以便从子结 构形成整个 结构的方式 必须相同, 而且它们的 基本组件必 须相互兼容 。如果两个 字段串由顺 序相同的基 本字段组成 ,但这些字 段组合成不 同的子结构 ,则字段串 不兼容。字段串与基 本数据类型 和内表不兼 容。内表如果行类型 兼容,则内
18、表与其他内 表兼容。内 表的兼容性 不取决于行 数。内表与字段 串和基本数 据类型不兼 容。在上述情况 下,由于在 ABAP/4 程序运行期 间出现的每 个数据类型 是完全确定 的(例如, 数据类型 C 的长度总是 已定义并已 知的),所 以数据类型 之间的兼容 性总是涉及 到已完全指 定的数据类 型。该兼容 性是对称的 。在形式参数 和字段符号 键入的方面 ,使用有点 不同的、非 对称的兼容 性(参见键入形式参数 和 键入字段符号)。7数据对象在 ABAP/4 中,可以使 用几种数据 对象,如下 所示: 内部数据 对象创建内部数 据对象供在 特定的程序 中使用。在 该程序之外 无效。内部 数
19、据对象包 括: 外部数据 对象外部数据对 象独立于程 序。不能直 接使用外部 数据对象, 但能将其复 制到内部数 据对象,并 在完成后将 它们回写。 可以在整个 系统环境中 全局使用外 部数据对象 。ABAP/4 将外部数据 对象保存在 ABAP/4 词典中定义 的表中。要 从程序内部 访问该数据 ,请用 TABLES 语句(参见 TABLES 语句 (页 ) )在程序中 声明该表。 系统定义 的数据对象除用户定义 的数据对象 外,还有一 些数据对象 由系统自动 定义。 特殊数据 对象ABAP/4 还包括一些 具有特殊特 征的数据对 象,即:-参数参数是链接 到选择屏幕 的变量。参 数可以在程
20、 序启动后接 受数值。-选择标 准选择标准是 用于指定数 值范围的特 殊内表。它 们也与选择 屏幕相链接 。关于这些数 据对象及其 声明的详细 信息,参见使用选择屏幕。8文字文字是固定 值。ABAP/4 区分文本文 字和数字文 字。文本文字文本文字是 单引号内的 字母数字字 符序列。'Antony Smith''69190 Walldorf'文本文字最 长可达 254 个字符。如 果某文本文 字包含引号 ,必须重复 引号,以使 系统能够将 内容识别为 文本文字而 不是文字的 结尾。WRITE: / 'This is John''s bic
21、ycle'.该语句生成 下列输出:This is John's bicycle要确保程序 仍易于维护 并且独立于 语言,请勿 在程序的最 终版本中显 式地使用文 本文字。而 应将其外部 地定义为文 本符号。文 本符号是 ABAP/4 文字基本概 念的一部分 。关于这方 面的详细信 息,以及关 于如何创建 和使用文本 符号的详细 信息,参见 处理文本摘要 (页 Error! Not a valid link.) 。数字文字数字文字是 可能包含前 导符号的数 字序列。可 包含多达 15 个数字。123-93 +456如果需要非 整型数值或 较长的数字 ,则必须使 用文本文字 ,该文
22、本文 字自动转换 到正确的类 型。(详细 信息,参见 类型转换 (页 Error! Not a valid link.) )。'12345678901234567890''+0.58498''-8473.67'同样,请使 用文本文字 表示浮点数 值。必须按 照下列格式 :'<mantissa>E<exponent>''-12.34567''-765E-04''1234E5''+12E+23''+12.3E-4''1E16
23、0'9变量变量用于以 一定名称按 一定格式保 存并参考数 据。变量可 能在下列方 面不同 名称 类型 长度 结构可以利用 DATA 语句在程序 中声明变量 (参见 DATA 语句 (页 ) )。DATA: S1 TYPE I, S2 TYPE I, SUM TYPE I.SUM = S1 + S2.10常量常量是包含 值的数据对 象,该值是 在初始化时 确定的。在 程序执行期 间不能更改 常量。在程序中利 用 常量 语句声明常 量(参见 CONSTANTS 语句 (页 ) )。如果试 图在程序的 其它地方更 改常量,在 语法检查或 运行期间, 系统将输出 错误消息。也可以在 ABAP/
24、4 词典的类型 组中声明常 量(参见 使用类型组 (页 ) )。如果在程序 中频繁地需 要某特殊数 值,请使用 常量。在这 种情况下, 请勿使用文 字。如果需 要修改该值 ,只须更改 声明。CONSTANTS PI TYPE P DECIMALS 10 VALUE '3.1415926536'.10系统定义的 数据对象启动 ABAP/4 程序时,一 些数据对象 自动可用而 无需声明。 系统定义的 数据对象包 括: SPACE数据对象 SPACE 是类型 C 的常量。长 为一个字符 并包含空格 。由于 SPACE 是常量,所 以不能更改 。 系统字段所有系统字 段都有格式 为 S
25、Y-<name> 的名称,其 中 <name> 指定单个字 段。若要在 ABAP/4 编辑器中显 示可用系统 字段的列表 ,请在命令 行中键入“ SHOW SY”(请 选择“编辑 -> 其它功能 -> 命令输入” )。该列表 还包括系统 字段的数据 类型。下面是系统 字段示例: SY-SUBRC返 回代码值( 0,如果操 作成功) SY-UNAME用 户的登录名 SY-DATUM当 前日期 SY-UZEIT当 前时间 SY-TCODE当 前事务系统字段是 变量并且可 以由程序更 改。但是, SAP 不建议这样 做,因为在 继续执行程 序时,将失 去保存在这
26、些字段中的 信息。11创建数据对 象和数据类 型本节说明如 何在程序中 创建数据对 象和数据类 型。除文字 外,还必须 利用声明语 句声明每个 数据对象。在声明语句 中,必须指 定所有数据 对象的数据 类型。要做 到这一点, 可以使用 数据类型 (页 ) 中说明的任 何数据类型 。在声明语句 中定义对象 的数据类型 ,有下列方 式之一 直接地, 使用 <declaration>.TYPE <datatype> . 间接地, 使用 <declaration> LIKE <dataobject> .对下面列出 的大多数数 据声明语句 ,TYPE 和
27、LIKE 是可选的附 加项。利用 TYPE 选项,可以 直接将数据 类型 <datatype> 分配给已声 明的数据对 象。利用 LIKE 选项,可以 将另一个数 据对象 <dataobject> 的数据类型 分配给已声 明的数据对 象。这意味 着间接引用 数据类型。对数据对象 和数据类型 有独立的名 称空间。这 意味着一个 名称既可以 是数据类型 名,同时又 可以是数据 对象名。在程序中, 可以使用数 据声明语句 静态地定义 数据对象, 或者利用操 作语句动态 地创建数据 对象。ABAP/4 包括下列用 于静态地创 建数据对象 和数据类型 的关键字:DATA 语句 (
28、页 ) 用于创建变 量CONSTANTS 语句 (页 ) 用于创建 常量STATICS 语句 (页 ) 用于创 建变量,这 些变量在程 序运行期间 一直存在, 但仅在过程 中可见TABLES 语句 (页 ) 用于 创建表工作 区TYPES 语句 (页 ) 用于创建 用户定义的 数据类型在 内表环境中 ,可以使用 操作语句 APPEND、 COLLECT 和 INSERT 以动态地创 建内表的行 (参见 填充内表 (页 Error! Not a valid link.) )。在选择屏幕 环境中,可 以使用附加 语句 PARAMETERS 和 SELECT-OPTIONS 以创建带特 殊功能的数
29、据对象(参 见 使用选择屏幕)。11DATA 语句使用 DATA 语句定义局 部和全局变 量。关于局 部和全局变 量间区别的 详细信息, 参见在调用程序和子系统之间传递数据。DATA 语句有一个 基本格式和 三个主要变 式,如下所 示: 用于字段 串的 DATA 语句 用于内表 的 DATA 语句 用于公用 内存块的 DATA 语句。下列内容说 明 DATA 语句的基本 格式下列内容说 明用于字段 串的 DATA 语句由于内表性 质的复杂性 ,将用一个 独立章节来 说明该主题 。关于定义 内表的详细 信息,参见 创建和处理内表 (页 Error! Not a valid link.) 。由于声
30、明用 于几个程序 的公用内存 块与外部子 程序有关, 所以将在涉 及子程序的 章节中解释 该主题(参 见 声明数据作为通用部分)。12DATA 语句的基本 格式可以在程序 中使用 DATA 语句的基本 格式以定义 内部变量。 语法如下:语法DATA <f>(<length>) <type> <value> <decimals>.基本格式中 ,关键字 DATA 有下列参数 :参数用途命名变量 (页 ) <f>指定变量的 数据类型和 长度 (页 ) <length> <type>指定初始值 (页 ) &
31、lt;value>指定小数位 数 (页 ) <decimals>12命名变量变量名 <f> 最长可达 30 个字符。除 下面列出的 这些字符外 ,可以使用 任何字母数 字字符。 请勿使用 下列字符-加号 +-句点 .-逗号 ,-冒号 : -圆括号 ( ) 请勿创建 完全由数字 字符组成的 名称ABAP/4 包含具有保 留名(不允 许使用这些 保留名)的 预定义数据 对象(参见 系统定义的 数据对象 (页 ) )。另外, 如果变量名 与引导语句 的关键字的 参数相混淆 ,则请勿在 语句中使用 该变量名。书写 DATA 语句时,请 遵循这些指 南: 使用不要 求附加说
32、明 的有意义的 字段名。 因为连字 符指示字段 串,所以不 要使用连字 符(参见 用于字段串 的 DATA 语句 (页 ) )。 使用下划 线以分离长 名称。 避免所有 其它特殊字 符。 始终使用 字母作为字 段名的第一 个字符。无需说明的 字段名示例 :GROUP_TOTALACCOUNT_NOFOREIGN_CURRENCYBANK_CODE13指定变量的 数据类型和 长度要指定数据 类型,请使 用 <type> 参数。可以 使用下列任 一形式创建 <type> 参数: TYPE <t> LIKE <g>TYPE 参数利用 TYPE 参数,可
33、以 指定预定义 数据类型或 用户定义的 数据类型( 参见 数据类型 (页 ) )。语法如 下:语法DATA <f>(<length>) TYPE <t>.通过在 <length> 中指定所需 的长度,可 以为一些基 本数据类型 定义长度。 但仅对字段 类型 C、P、N 和 X 才是可能的 。关于默认 值和有效值 ,参见 基本数据类 型 - 预定义的 (页 ) 中的表。利用 TYPE 参数指定数 据类型示例 :DATA: NUMBER TYPE P, DATE TYPE D, HEXADECIMALFIELD TYPE X, COUNT TYPE
34、I, LINE(72) TYPE C.LIKE 参数利用 LIKE 参数,可以 将已定义数 据对象的数 据类型分配 给变量。语 法如下:语法DATA <f> LIKE <g>.使用 LIKE 参数时,按 照与数据对 象 <g> 完全相同的 类型和结构 创建字段 <f>。可将任何数 据对象用于 <g>。利 用 LIKE 参数,可以 引用在 ABAP/4 词典中声明 的数据对象 的数据类型 。DATA NUMBER_1 TYPE P.DATA NUMBER_2 LIKE NUMBER_1.DATA MYNAME LIKE SY-UNAME
35、.示例中,用 与数据对象 NUMBER_1 相同的数据 类型声明数 据对象 NUMBER_2 。数据对象 MYNAME 与系统定义 的数据对象 SY-UNAME 具有相同的 数据类型。LIKE 参数常用于 附属字段以 临时保存数 据库字段的 内容。该机 制可以避免 由于键入错 误,或更改 数据库字段 的定义而引 起的无意的 差异。例如 ,如果更改 数据库字段 的属性,则 系统自动改 写备份字段 的属性。DATA PLANE LIKE SFLIGHT-PLANETYPE.该语句创建 与 ABAP/4 词典字段 SFLIGHT-PLANETYPE 具有相同属 性、名为 PLANE 的数据对象 。P
36、LANETYPE 是数据库表 SFLIGHT 的一列。要创建与现 有内表的行 具有相同数 据类型的数 据对象 <f>,请 使用 LIKE 参数,如下 所示:语法DATA <f> LIKE LINE OF <itab>.在这种情况 下,<itab> 必须是作为 内表创建的 数据对象( 参见创建内表数据对象 (页 Error! Not a valid link.) )。类型和长度 的默认值如果未在 DATA 语句中指定 参数 <length> 和 <type>, 则创建长度 为 1 的字符字段 (类型 C)。如果 指定长度,
37、但未指定类 型,则创建 给定长度的 字符字段。DATA TEXTFIELD.示例创建长 度为 1 的字符字段 TEXTFIELD。14指定初始值利用 DATA 语句声明内 部变量时, 将隐式地给 字段分配初 始值。关于 不同数据类 型初始值的 详细信息, 参见 基本数据类 型 - 预定义的 (页 ) 中的表。要更改字段 的初始值, 请使用 DATA 语句的 <value> 参数。语法 如下:语法DATA <f> . VALUE <val>.将字段 <f> 的初始值设 为 <val>, 其中 <val> 可以是 文字(参 见
38、 文字 (页 ) ) 常量(参 见 常量 (页 ) ) 显式的附 加项 IS INITIAL初始值规格 示例:DATA: COUNTER TYPE P VALUE 1, DATE TYPE D VALUE '19920601', FLAG TYPE C VALUE IS INITIAL.声明该数据 以后,字符 串 FLAG 包含其默认 初始值 SPACE。15指定小数位 数要定义类型 P 字段的小数 位数,请使 用 <decimals> 参数。语法 如下:语法DATA <f> TYPE P DECIMALS <d> .小数位数 <d&g
39、t; 的最大值是 14(参见 数字数据类 型 (页 ) )。可以将数据 对象分配给 压缩码类型 变量,而该 数据对象具 有比变量更 多的小数位 。如果已将 程序属性指 定为“定点 运算”(参 见 指定程序属性 (页 Error! Not a valid link.) ),则将多 余的位数进 行四舍五入 。DATA WEIGHT TYPE P DECIMALS 2 VALUE '1.225'.如果将属性 设置为“定 点运算”, 则 WEIGHT的 值为 1.23。15用于字段串 的 DATA 语句字段串是程 序中的一组 内表。要声 明字段串, 请使用 DATA 语句并用 BEGI
40、N OF 和 END OF 标记该字段 组的起始和 结束。语法 如下:语法DATA: BEGIN OF <fstring>, <component declaration>, . END OF <fstring>.这些语句定 义了字段串 <fstring>。在 <component declaration> 中,通过指 定长度、类 型和初始值 或小数位数 (如果需要 ),可以如 DATA 语句的基本 格式 (页 ) 中说明的那 样声明组件 字段。通过将字段 串名作为前 缀,并用连 字符将字段 串和组件连 接起来:<fstring
41、>-<component>, 可以定址字 段串中的各 个组件。字段串的组 件可以有不 同的数据类 型。由于类 型 I 或 F 的字段是对 齐的(参见 对齐数据对象 (页 Error! Not a valid link.) ),所以如 果需要,系 统将在组件 之间插入空 填充字段。 有时也将字 段串称为记 录或结构。DATA: BEGIN OF ADDRESS, NAME(20) TYPE C, STREET(20) TYPE C, NUMBER TYPE P, POSTCODE(5) TYPE N, CITY(20) TYPE C, END OF ADDRESS.该示例定义
42、了一个长度 为 73 的字段串 ADDRESS。 可以通过 ADDRESS-NAME、 ADDRESS-STREET 等定址组件 。可以将长字 段串的声明 收集在包括 程序中(参 见 包含程序 )。但是, 如果频繁使 用该数据结 构,则最好 将它们保存 在 ABAP/4 词典中。关 于该主题的 详细信息, 参见文档 ABAP/4 词典 (页 Error! Not a valid link.) 。16CONSTANTS 语句如果在程序 中频繁使用 某常量,可 以利用 常量 语句,将其 声明为具有 固定值的变 量,如下所 示:语法CONSTANTS <c><length>
43、<type> <value> <decimals>.要将字段串 定义为常量 ,请写:CONSTANTS: BEGIN OF <fstring>, <component declaration>, . END OF <fstring>.这些语句的 参数与 DATA 语句的基本 格式 (页 ) 和 用于字段串 的 DATA 语句 (页 ) 中说明的 DATA 语句的参数 相同。有关 说明请参阅 这些主题。对于 常量 语句必须使 用 <value> 参数,而在 DATA 语句中该参 数是可选的 。利用 <val
44、ue> 参数指定的 初始值,在 程序的执行 期间不能更 改。CONSTANTS: MYNAME(10) VALUE 'Fred', BIRTHDAY TYPE D VALUE '19600110', ZERO TYPE I VALUE IS INITIAL.示例的最后 一行说明了 变量 IS INITIAL 的用途。由 于对于 常量 语句,参数 VALUE 是必须的, 所以可以使 用 IS INITIAL 给常量分配 默认值。CONSTANTS: BEGIN OF MYADDRESS, NAME(20) TYPE C VALUE 'Fred Fli
45、ntstone', STREET(20) TYPE C VALUE 'Cave Avenue', NUMBER TYPE P VALUE 11, POSTCODE(5) TYPE N VALUE 98765, CITY(20) TYPE C VALUE 'Bedrock', END OF MYADDRESS.该示例定义 了常量字段 串 MYADDRESS。 可以利用 MYADDRESS-NAME、 MYADDRESS-STREET 等定址组件 ,但不能更 改组件。17STATICS 语句如果要在过 程(子程序 或功能模块 - 详细信息, 参见 模块化 A
46、BAP/4 程序)的运行时 间之外仍保 留某变量的 数值,可以 在该过程中 利用 STATICS 语句定义该 变量。STATICS 语句是 DATA 语句的变异 。语法如下 :语法STATICS <s><length> <type> <value> <decimals>.要在过程中 将字段串定 义为静态有 效,请写:STATICS: BEGIN OF <fstring>, <component declaration>, . END OF <fstring>.这些语句的 参数与 DATA 语句的基本
47、 格式 (页 ) 和 用于字段串 的 DATA 语句 (页 ) 中说明的 DATA 语句的参数 相同。有关 说明请参阅 这些主题。如果在程序 中多次调用 某过程,对 于利用 STATICS 定义的变量 ,过程总是 使用该变量 的最新值。 不能从过程 外部定址静 态变量。17TABLES 语句利用 TABLES 语句,可以 创建称为表 工作区的数 据对象。表 工作区是参 考 ABAP/4 词典对象的 字段串。语 法如下:语法:TABLES <dbtab>.<dbtab> 是 ABAP/4 词典对象的 名称,同时 也是创建的 表工作区的 名称。表工 作区组件的 顺序和名称
48、与在 ABAP/4 词典中声明 的对象相同 。可以引用的 有效 ABAP/4 词典对象是 结构(参 见文档 ABAP/4 词典 (页 Error! Not a valid link.) ) 视图(参 见文档 ABAP/4 词典 (页 Error! Not a valid link.) ) 数据库表 (参见 读取和处理数据表)要在 ABAP/4 词典中创建 对象,请在 R/3 初始屏幕上 ,选择工具 -> ABAP/4 工作台 -> 开发 -> ABAP/4 词典。表工作区提 供一个接口 ,通过该接 口可以将数 据从数据库 表加载到程 序,或利用 开放式 SQL 语句修改数 据
49、库表的内 容(参见 读取并处理数据库表 (页 Error! Not a valid link.) )。要显示表的 组件及其数 据类型的列 表,请在 ABAP/4 编辑器的命 令行中(选 择“编辑 -> 其它功能 -> 命令输入” )键入“SHOW <dbtab>” 。ABAP/4 词典对象的 数据类型与 ABAP/4 类型概念的 数据类型不 同。关于 ABAP/4 词典数据类 型的列表, 以及它们在 ABAP/4 程序中与数 据类型如何 对应的详细 信息,请参 阅 TABLES 语句的关键 字文档。要定址表工 作区的组件 ,可以将表 名作为前缀 ,然后用连 字符添加组
50、件:<dbtab>-<component> (参见 用于字段串 的 DATA 语句 (页 ) )。TABLES: SPFLI.SELECT * FROM SPFLI. WRITE: SPFLI-MANDT, SPFLI-CARRID, SPFLI-CONNID, .ENDSELECT.示例中,TABLES 语句创建表 工作区 SPFLI。 SPFLI 与 ABAP/4 词典中声明 的数据库表 SPFLI 结构相同。 在 SELECT 循环中,用 属于数据库 表 SPFLI 的行填充表 工作区 SPFLI( 参见 读取并处理数据表)。18TYPES 语句可以使用 TYPE
51、S 语句创建用 户定义的基 本数据类型 和结构化数 据类型。对由 TYPES 语句定义的 数据类型, 可以按与使 用预定义数 据类型声明 数据对象相 同的方法进 行使用。语 法如下:语法TYPES <t><length> <type> <decimals>.该语句定义 数据类型 <t>。要定义结构 化数据类型 ,请写:TYPES: BEGIN OF <fstring>, <component declaration>, . END OF <fstring>.这些语句的 参数与 DATA 语句的基本
52、格式 (页 ) 和 用于字段串 的 DATA 语句 (页 ) 中所说明的 DATA 语句的参数 相同。有关 说明请参阅 这些主题。由于没有与 数据类型相 关联的内存 ,所以无法 在 TYPES 语句中使用 <value> 参数。因此 ,不能给数 据类型分配 值。TYPES: SURNAME(20) TYPE C, BEGIN OF ADDRESS, NAME TYPE SURNAME, . END OF ADDRESS.DATA: ADDRESS_1 TYPE ADDRESS, ADDRESS_2 TYPE ADDRESS, .示例说明如 何使用参数 TYPE 直接引用用 户定义的
53、数 据类型。其 中主要有三 件事情。第 一,创建长 为 20、类型 为 C 的用户定义 的数据类型 SURNAME。 第二,定义 结构化数据 类型 ADDRESS。 将数据类型 SURNAME 赋给 ADDRESS、 ADDRESS-NAME 的组件。第 三,创建作 为字段串的 数据对象 ADDRESS_1、 ADDRESS_2 .,将 它们的类型 指定为 ADDRESS。DATA COUNTS TYPE I.TYPES: COMPANY LIKE SPFLI-CARRID, NO_FLIGHTS LIKE COUNTS.示例说明在 TYPES 语句中 LIKE 参数的使用 。说明如何 通过引
54、用已 有数据对象 类型创建数 据类型。最 重要的是, 如用户定义 的数据类型 COMPANY 所示,可以 创建引用 ABAP/4 词典对象的 类型。COMPANY 引用 ABAP/4 词典对象 CARRID, CARRID 是数据库表 SPFLI 的一列。* 引用预定义 类型的用户 定义的类型 :TYPES: SURNAME(20) TYPE C, STREET(30) TYPE C, ZIP_CODE(10) TYPE N, CITY(30) TYPE C, PHONE(20) TYPE N, DATE LIKE SY-DATUM.* User-defined structured type
55、 referring to above types:TYPES: BEGIN OF ADDRESS, NAME TYPE SURNAME, CODE TYPE ZIP_CODE, TOWN TYPE CITY, STR TYPE STREET, END OF ADDRESS.* User-defined nested structure type referring to above types:TYPES: BEGIN OF PHONE_LIST, ADR TYPE ADDRESS, TEL TYPE PHONE, END OF PHONE_LIST.DATA PL TYPE PHONE-LIST.WRITE PL-ADR-NAME. 该示例说明 如何从简单 类型定义创 建复杂数据 类型。利用 ABAP/4 预定义类型 创建一组简 单数据类型 以后,使用 此前定义的 数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生命的美丽中考语文作文
- 监理工程师职业心理健康考核试卷
- 安全教育在危机管理中的价值与应用考核试卷
- 体育用品行业绿色包装与可持续发展考核试卷
- 畜牧兽医技术考核试卷
- 上海高三语文作文素材
- 幕墙施工中的安全操作规程考核试卷
- 浙江省湖州市长兴县南太湖联盟2024−2025学年高一下学期3月联考 数学试题(含解析)
- 5-6MSI同步计数器1-74161基本概念
- 1-3数制-非十进制和十进制
- 高铁课件教学课件
- 《大学生创新创业基础教程》第六章创业资源与融资
- 山水林田湖草生态环境调查技术规范DB41-T 1992-2020
- 光影中国学习通超星期末考试答案章节答案2024年
- 护理教学查房肺结节
- 减数分裂和受精作用-2025年高考生物一轮复习练习(新人教新高考)
- 大型活动策划与管理第八章 大型活动风险管理
- 中国红外热成像仪行业市场运行态势、进出口贸易及发展趋势预测报告
- 高级供应链管理师职业技能鉴定考试题库(含答案)
- 【课件】2025届高三生物一轮复习备考策略研讨
- 义务教育劳动教育课程标准(2022版)考试题库(含答案)
评论
0/150
提交评论