




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/setZ_001pagepage11声明数据概览xe"ABAP/4类型概念"xe"数据"xe"数据,声明"内容TOC\o"2-3"数据类型和对象简介 GOTOBUTTON_Toc3954136472数据类型 GOTOBUTTON_Toc3954136483根本数据类型-预定义的 GOTOBUTTON_Toc3954136493根本数据类型-用户定义的 GOTOBUTTON_Toc3954136505结构化数据类型 GOTOBUTTON_Toc3954136515数据类型的兼容性 GOTOBUTTON_Toc3954136527数据对象 GOTOBUTTON_Toc3954136537文字 GOTOBUTTON_Toc3954136548变量 GOTOBUTTON_Toc3954136559常量 GOTOBUTTON_Toc39541365610系统定义的数据对象 GOTOBUTTON_Toc39541365710创立数据对象和数据类型 GOTOBUTTON_Toc39541365811DATA语句 GOTOBUTTON_Toc39541365911CONSTANTS语句 GOTOBUTTON_Toc39541366016STATICS语句 GOTOBUTTON_Toc39541366117TABLES语句 GOTOBUTTON_Toc39541366217TYPES语句 GOTOBUTTON_Toc39541366318例如汇总 GOTOBUTTON_Toc39541366420预定义根本数据类型和对象例如 GOTOBUTTON_Toc39541366520用户定义的根本数据类型和对象示例 GOTOBUTTON_Toc39541366620字段串例如 GOTOBUTTON_Toc39541366721内表例如 GOTOBUTTON_Toc39541366822使用类型组 GOTOBUTTON_Toc39541366923确定数据对象的属性 GOTOBUTTON_Toc39541367024确定字段长度 GOTOBUTTON_Toc39541367125确定数据类型 GOTOBUTTON_Toc39541367225确定输出长度 GOTOBUTTON_Toc39541367326确定小数位 GOTOBUTTON_Toc39541367427确定转换例程 GOTOBUTTON_Toc39541367527本节说明如何在ABAP/4程序中声明数据。要能声明数据,应该熟悉定义数据类型数据对象之间关系的ABAP/4类型概念。以下内容介绍ABAP/4类型概念以下主题说明在该指南中,术语“字段〞用于数据对象。通常情况下,字段可以是 任何数据对象(参见数据对象(页REFz_036page7)) 字段符号或形式参数(参见LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC12E.DOC""z_000"\a\t使用字段符号和LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_018"\a\t通过参数传递数据)根据上下文,可以明确术语“字段〞代表什么。setZ_058pagepage22数据类型和对象简介数据类型和数据对象是ABAP/4类型概念的根本组件。二者均可由用户声明和维护。这与其它编程语言如C、FORTRAN或PASCAL不同,在这些语言中用户可以声明数据对象,但仅限于预定义的数据类型。在ABAP/4中,可以使用与标准数据声明相似的语法处理数据类型,而与数据对象无关。特殊程序以外的数据类型集中存储也是可能的。以下列表是数据类型和对象主要特征的概述: 数据类型(根本的或结构化的)- 数据类型是纯粹的说明。- 没有与数据类型相关联的内存。- 数据类型描述数据对象的技术属性。- 数据类型是数据对象的属性并与数据对象联系紧密。 数据对象(文字、变量、常量等):- 数据对象是程序在运行时使用的物理单元。- 每个数据对象都有分配给它的特定数据类型。- 每个数据对象占据一些内存空间。- ABAP/4根据数据对象的数据类型处理数据对象。在程序中,必须声明要使用的全部数据对象。声明过程中,必须给数据对象分配属性。其中最重要的属性是数据类型。在ABAP/4中,可以使用与其它程序语言相似的预定义的数据类型,或者使用用户定义的数据类型。由于ABAP/4中用户定义的数据类型允许编程具有非常大的灵活性,所以提供了强有力的工具。它们的范围从根本类型(例如,给定长度的字符串)到非常复杂的结构(例如,嵌套表)。将用户定义的数据类型分配给数据对象使您能精确处理需要的数据对象。可以按使用预定义数据类型的方式使用用户定义的数据类型。可以在程序内对它们进行局部明,或在ABAP/4词典中对它们进行全局保存。有三个层次级的数据类型和对象: 在ABAP/4词典中定义的独立于程序的数据 在一个程序中全局使用的内部数据 在过程(子程序和功能模块)中局部使用的数据在本指南的相应章节将了解到有关这些层次级的详细内容。setZ_024pagepage33数据类型在ABAP/4中按结构和定义对数据类型分类。数据类型是: 根本的(非结构化的)或结构化的 预定义的或用户定义的因此,有四类数据类型,在下表中列出。预定义数据类型的名称是固定的。用户定义的数据类型的名称由程序员在程序中定义。ABAP/4中的数据类型预定义的用户定义的基本的C、D、F、I、N、P、T和X:
ABAP/4包含8个预定义基本数据类型。根本数据类型-预定义的(页REFz_027page3)用户定义的根本数据类型基于预定义根本数据类型。根本数据类型-用户定义的(页REFz_028page5)结构化的TABLE:
该预定义的结构化的数据类型仅用于形式参数和字段符号的键入。字段串和内表:
这些结构化的数据类型可以用于数据对象并且是用户定义的。结构化数据类型(页REFz_049page5)使用数据时,了解数据类型是否兼容是很重要的。关于该主题的详细信息,参见setZ_027pagepage33根本数据类型-预定义的下表总结了ABAP/4中预定义的根本数据类型(有效大小以字节为单位):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可以有附加说明。例如,可以在程序中定义大小。关于数字数据类型I、F和P的详细信息,参见数字数据类型(页REFz_043page4)。setZ_043pagepage44数字数据类型ABAP/4支持三种数字数据类型。它们是: 类型I的整型(整数) 类型P的压缩号 类型F的浮点数类型I数据类型I数据的数值范围是-2**31到2**31-1并且仅包括整数。对算术运算的非整型结果(如分数)进行四舍五入,而不是截断。类型I数据可用于计数器、项目号、索引和时间期段等。类型P数据类型P数据允许在小数点后有数字。类型P数据的数值范围取决于大小和小数点后的位数。有效大小可以是从1到16字节的任何值。将两个十进制数字压缩到一个字节,而最后一个字节包含一个数字和符号。在小数点后最多允许14个数字。关于定义小数点后位数的详细信息,参见DATA语句的根本格式(页REFz_041page12)。使用类型P数据时,最好将程序属性设置为“定点算法〞(参见指定程序属性(页LINKWord.Document.6C:\\LIN\\BCAB4\\BC03E.DOPz_005page\a\tError!Notavalidlink.))。否则,将类型P数字作为整型对待。类型P数据可用于如距离、重量和钱数等数值。类型F数据对于正数和负数,类型F数的数值范围是1x10**-307到1x10**308,包括0(零)。精确范围近似为15位十进制数,这取决于硬件平台的浮点算法。由于是在内部将类型F数据转换为二进制系统,因此可能出现舍入误差。尽管ABAP/4处理器试图将这些影响减至最小,但是如果要求高精度,则不应该使用类型F数据。而应代之以类型P数据。如果需要大的数值范围,而且舍入误差不重要,则可以使用类型F数据。因为对类型I和F字段的算术运算与机器码语句关系更紧密,所以用类型I和类型F字段的计算比用类型P字段的计算要快;同时对P字段的运算要求更多的软件支持。尽管如此,可能仍必须使用类型P数据以满足精度或数值范围的要求。类型N数据不包含数值。虽然由数字组成,但这些数字不用于计算。科目号和邮编是典型的类型N字段。setZ_028pagepage55根本数据类型-用户定义的用户定义的根本数据类型完全是以预定义的基本数据类型为基础的。要定义自己的根本数据类型,请使用TYPES语句(参见TYPES语句(页REFz_029page18))。用户定义的根本数据类型使程序的阅读和维护更加容易: 例如,如果在程序中经常需要使用某数据类型集,通过为类型定义创立包括程序(参见LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_013"\a\t包含程序),或者在ABAP/4词典的类型组中定义数据类型(参见使用类型组(页REFz_061page23)),可以确保总是使用相同的数据类型。 若要使数据类型更易于理解和识别,可以赋予它们描述性的名称。 在将用户定义的数据类型分配给几个数据对象之后,通过更改TYPES语句中数据类型的定义,可以用一个操作更改所有这些数据对象的数据类型。TYPES:NUMBERTYPEI,
LENGTHTYPEPDECIMALS2,
CODE(3)TYPECDATA:NO_FLIGHTSTYPENUMBER,
NO_PASSENGERSTYPENUMBER,DISTANCETYPELENGTH,
HEIGHTTYPELENGTH,
CITY_CODETYPECODE,
COUNTRY_CODETYPECODE,例如中,定义了名为NUMBER的数据类型。该数据类型除拥有不同名称以使程序更易于阅读外,与预定义的数据类型I相同。该例如中还定义了数据类型LENGTH,该数据类型是以预定义的根本数据类型P为基础的。为LENGTH定义了给定数目的小数位。例如,如果需要更改长度规格的精度,仅须在程序中更改TYPES语句。还定义了第三种数据类型CODE。CODE是以预定义的类型C为基础的,具有给定长度3。setZ_049pagepage55结构化数据类型通常情况下,ABAP/4程序中的结构化数据类型是用户定义的。在ABAP/4中,没有可用的预定义结构化数据类型,但下列例外:可以使用预定义的一般表类型TABLE,以便将具有一般行结构的内表传递到子程序(参见LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_022"\a\t键入形式参数),或者键入字段符号(参见LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC12E.DOC""z_013"\a\t键入字段符号)。有两种结构化数据类型: 字段串字段串是其它数据类型的集合。字段串的组件可以是字段串本身或内表。可以用TYPES语句或DATA语句(参见用于字段串的DATA语句(页REFz_042page15))定义字段串。通过DATA语句不能定义独立数据类型,而可以定义具有结构化类型的数据对象。 内表内表由相同类型的几行组成。与字段串仅“水平地〞扩展不同,内表还“垂直地〞扩展。可以用TYPES或DATA语句的OCCURS参数定义内表(参见创立内表(页Error!Notavalidlink.))。由于字段串能包含任何类型的组件,而且可以为任何类型定义内表,所以自定义数据结构可能变得非常复杂。结构化数据类型例如以下是ABAP/4中结构化数据类型的示例a) 由一系列根本数据类型组成的字段串(平铺结构,仅“水平〞)b) 为基本字段定义的内表(基本数据类型的动态排列,仅“垂直〞)c) 为简单字段串定义的内表(带有行和列的表)d) 包含子结构的结构(嵌套结构)e) 结构,该结构包含内表作为组件(垂直结构)f) 为包含结构化组件的字段串定义的内表(垂直行类型的表)g) 为字段串定义的内表,该字段串包含内表作为组件setZ_057pagepage77数据类型的兼容性使用数据时,有时需要将数据从一种类型转换到另一种类型。要作到这一点,数据类型必须是可转换的(参见类型转换(页LINKWord.Document.6C:\\LIN\\BCAB4\\BC08E.DOPz_012page\a\tError!Notavalidlink.))。可转换性的一个重要前提就是兼容性。如果两个数据类型具有相同的技术属性,则它们是兼容的。不同ABAP/4数据类型的后果如下:根本数据类型如果在类型、大小和(对于类型P)小数位等方面是相同的,则基本数据类型和其它根本数据类型是兼容的。根本数据类型与结构化数据类型相互之间不兼容。结构化数据类型对于结构化数据类型,必须区分字段串和内表。字段串如果字段串的结构相同而且组件兼容,则字段串与其他字段串兼容。这意味着从根本字段构造字段串,以便从子结构形成整个结构的方式必须相同,而且它们的根本组件必须相互兼容。如果两个字段串由顺序相同的基本字段组成,但这些字段组合成不同的子结构,则字段串不兼容。字段串与基本数据类型和内表不兼容。内表如果行类型兼容,则内表与其他内表兼容。内表的兼容性不取决于行数。内表与字段串和根本数据类型不兼容。在上述情况下,由于在ABAP/4程序运行期间出现的每个数据类型是完全确定的(例如,数据类型C的长度总是已定义并已知的),所以数据类型之间的兼容性总是涉及到已完全指定的数据类型。该兼容性是对称的。在形式参数和字段符号键入的方面,使用有点不同的、非对称的兼容性(参见LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_022"\a\t键入形式参数和LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC12E.DOC""z_013"\a\t键入字段符号)。setZ_036pagepage77数据对象在ABAP/4中,可以使用几种数据对象,如下所示: 内部数据对象创立内部数据对象供在特定的程序中使用。在该程序之外无效。内部数据对象包括: 外部数据对象外部数据对象独立于程序。不能直接使用外部数据对象,但能将其复制到内部数据对象,并在完成后将它们回写。可以在整个系统环境中全局使用外部数据对象。ABAP/4将外部数据对象保存在ABAP/4词典中定义的表中。要从程序内部访问该数据,请用TABLES语句(参见TABLES语句(页REFz_033page17))在程序中声明该表。 系统定义的数据对象除用户定义的数据对象外,还有一些数据对象由系统自动定义。 特殊数据对象ABAP/4还包括一些具有特殊特征的数据对象,即:- 参数参数是链接到选择屏幕的变量。参数可以在程序启动后接受数值。- 选择标准选择标准是用于指定数值范围的特殊内表。它们也与选择屏幕相链接。关于这些数据对象及其声明的详细信息,参见LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC18E.DOC""z_001"\a\t使用选择屏幕。setZ_038pagepage88文字文字是固定值。ABAP/4区分文本文字和数字文字。文本文字文本文字是单引号内的字母数字字符序列。'AntonySmith'
'69190Walldorf'文本文字最长可达254个字符。如果某文本文字包含引号,必须重复引号,以使系统能够将内容识别为文本文字而不是文字的结尾。WRITE:/'ThisisJohn''sbicycle'.该语句生成以下输出:ThisisJohn'sbicycle要确保程序仍易于维护并且独立于语言,请勿在程序的最终版本中显式地使用文本文字。而应将其外部地定义为文本符号。文本符号是ABAP/4文字根本概念的一局部。关于这方面的详细信息,以及关于如何创立和使用文本符号的详细信息,参见处理文本摘要(页LINKWord.Document.6C:\\LIN\\BCAB4\\BC07E.DOPz_001page\a\tError!Notavalidlink.)。数字文字数字文字是可能包含前导符号的数字序列。可包含多达15个数字。123
-93
+456如果需要非整型数值或较长的数字,则必须使用文本文字,该文本文字自动转换到正确的类型。(详细信息,参见类型转换(页LINKWord.Document.6C:\\LIN\\BCAB4\\BC08E.DOPz_012page\a\tError!Notavalidlink.))。'123456789'
'+0.58498'
'-8473.67'同样,请使用文本文字表示浮点数值。必须按照以下格式:'[<mantissa>][E][<exponent>]''-12.34567''-765E-04''1234E5''+12E+23''+12.3E-4''1E160'setZ_003pagepage99变量xe"变量"xe"数据对象,变量"变量用于以一定名称按一定格式保存并参考数据。变量可能在以下方面不同 名称 类型 长度 结构可以利用DATA语句在程序中声明变量(参见DATA语句(页REFz_030page11))。DATA:S1TYPEI,
S2TYPEI,
SUMTYPEISUM=S1+S2setZ_039pagepage1010常量xe"常数"xe"数据对象,常数"常量是包含值的数据对象,该值是在初始化时确定的。在程序执行期间不能更改常量。在程序中利用常量语句声明常量(参见CONSTANTS语句(页REFz_031page16))。如果试图在程序的其它地方更改常量,在语法检查或运行期间,系统将输出错误消息。也可以在ABAP/4词典的类型组中声明常量(参见使用类型组(页REFz_061page23))。如果在程序中频繁地需要某特殊数值,请使用常量。在这种情况下,请勿使用文字。如果需要修改该值,只须更改声明。CONSTANTSPITYPEPDECIMALS10VALUE'3.1415926536'setZ_040pagepage1010系统定义的数据对象启动ABAP/4程序时,一些数据对象自动可用而无需声明。系统定义的数据对象包括: SPACE数据对象SPACE是类型C的常量。长为一个字符并包含空格。由于SPACE是常量,所以不能更改。 系统字段所有系统字段都有格式为SY-<name>的名称,其中<name>指定单个字段。若要在ABAP/4编辑器中显示可用系统字段的列表,请在命令行中键入“SHOWSY〞(请选择“编辑->其它功能->命令输入〞)。该列表还包括系统字段的数据类型。下面是系统字段例如: SY-SUBRC 返回代码值(0,如果操作成功) SY-UNAME 用户的登录名 SY-DATUM 当前日期 SY-UZEIT 当前时间 SY-TCODE 当前事务系统字段是变量并且可以由程序更改。但是,SAP不建议这样做,因为在继续执行程序时,将失去保存在这些字段中的信息。setZ_037pagepage1111创立数据对象和数据类型本节说明如何在程序中创立数据对象和数据类型。除文字外,还必须利用声明语句声明每个数据对象。在声明语句中,必须指定所有数据对象的数据类型。要做到这一点,可以使用数据类型(页REFz_024page3)中说明的任何数据类型。在声明语句中定义对象的数据类型,有以下方式之一 直接地,使用<declaration>...TYPE<datatype> 间接地,使用<declaration>LIKE<dataobject>对下面列出的大多数数据声明语句,TYPE和LIKE是可选的附加项。利用TYPE选项,可以直接将数据类型<datatype>分配给已声明的数据对象。利用LIKE选项,可以将另一个数据对象<dataobject>的数据类型分配给已声明的数据对象。这意味着间接引用数据类型。对数据对象和数据类型有独立的名称空间。这意味着一个名称既可以是数据类型名,同时又可以是数据对象名。在程序中,可以使用数据声明语句静态地定义数据对象,或者利用操作语句动态地创立数据对象。ABAP/4包括以下用于静态地创建数据对象和数据类型的关键字:DATA语句(页REFz_030page11)用于创立变量CONSTANTS语句(页REFz_031page16)用于创立常量STATICS语句(页REFz_032page17)用于创建变量,这些变量在程序运行期间一直存在,但仅在过程中可见TABLES语句(页REFz_033page17)用于创立表工作区TYPES语句(页REFz_029page18)用于创立用户定义的数据类型在内表环境中,可以使用操作语句APPEND、COLLECT和INSERT以动态地创建内表的行(参见填充内表(页Error!Notavalidlink.))。在选择屏幕环境中,可以使用附加语句PARAMETERS和SELECT-OPTIONS以创立带特殊功能的数据对象(参见LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC18E.DOC""z_001"\a\t使用选择屏幕)。setZ_030pagepage1111DATA语句使用DATA语句定义局部和全局变量。关于局部和全局变量间区别的详细信息,参见LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_004"\a\t在调用程序和子系统之间传递数据。DATA语句有一个根本格式和三个主要变式,如下所示: 用于字段串的DATA语句 用于内表的DATA语句 用于公用内存块的DATA语句。以下内容说明DATA语句的根本格式以下内容说明用于字段串的DATA语句由于内表性质的复杂性,将用一个独立章节来说明该主题。关于定义内表的详细信息,参见创立和处理内表(页Error!Notavalidlink.)。由于声明用于几个程序的公用内存块与外部子程序有关,所以将在涉及子程序的章节中解释该主题(参见LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_010"\a\t声明数据作为通用局部)。setZ_041pagepage1212DATA语句的根本格式可以在程序中使用DATA语句的根本格式以定义内部变量。语法如下:语法DATA<f>[(<length>)]<type>[<value>][<decimals>].根本格式中,关键字DATA有以下参数:参数用途命名变量(页REFz_053page12)<f>指定变量的数据类型和长度(页REFz_054page13)<length><type>指定初始值(页REFz_055page14)<value>指定小数位数(页REFz_056page15)<decimals>setZ_053pagepage1212命名变量变量名<f>最长可达30个字符。除下面列出的这些字符外,可以使用任何字母数字字符。 请勿使用以下字符- 加号+- 句点.- 逗号,- 冒号:- 圆括号() 请勿创立完全由数字字符组成的名称ABAP/4包含具有保留名(不允许使用这些保存名)的预定义数据对象(参见系统定义的数据对象(页REFz_040page10))。另外,如果变量名与引导语句的关键字的参数相混淆,则请勿在语句中使用该变量名。书写DATA语句时,请遵循这些指南: 使用不要求附加说明的有意义的字段名。 因为连字符指示字段串,所以不要使用连字符(参见用于字段串的DATA语句(页REFz_042page15))。 使用下划线以别离长名称。 防止所有其它特殊字符。 始终使用字母作为字段名的第一个字符。无需说明的字段名例如:GROUP_TOTAL
ACCOUNT_NO
FOREIGN_CURRENCY
BANK_CODEsetZ_054pagepage1313指定变量的数据类型和长度要指定数据类型,请使用<type>参数。可以使用以下任一形式创立<type>参数: TYPE<t> LIKE<g>TYPE参数利用TYPE参数,可以指定预定义数据类型或用户定义的数据类型(参见数据类型(页REFz_024page3))。语法如下:语法DATA<f>[(<length>)]TYPE<t>.通过在<length>中指定所需的长度,可以为一些基本数据类型定义长度。但仅对字段类型C、P、N和X才是可能的。关于默认值和有效值,参见根本数据类型-预定义的(页REFz_027page3)中的表。利用TYPE参数指定数据类型例如:DATA:NUMBERTYPEP,
DATETYPED,
HEXADECIMALFIELDTYPEX,
COUNTTYPEI,
LINE(72)TYPEC.LIKE参数利用LIKE参数,可以将已定义数据对象的数据类型分配给变量。语法如下:语法DATA<f>LIKE<g>.使用LIKE参数时,按照与数据对象<g>完全相同的类型和结构创立字段<f>。可将任何数据对象用于<g>。利用LIKE参数,可以引用在ABAP/4词典中声明的数据对象的数据类型。DATANUMBER_1TYPEP.
DATANUMBER_2LIKENUMBER_1.
DATAMYNAMELIKESY-UNAME.例如中,用与数据对象NUMBER_1相同的数据类型声明数据对象NUMBER_2。数据对象MYNAME与系统定义的数据对象SY-UNAME具有相同的数据类型。LIKE参数常用于附属字段以临时保存数据库字段的内容。该机制可以防止由于键入错误,或更改数据库字段的定义而引起的无意的差异。例如,如果更改数据库字段的属性,则系统自动改写备份字段的属性。DATAPLANELIKESFLIGHT-PLANETYPE.该语句创立与ABAP/4词典字段SFLIGHT-PLANETYPE具有相同属性、名为PLANE的数据对象。PLANETYPE是数据库表SFLIGHT的一列。要创立与现有内表的行具有相同数据类型的数据对象<f>,请使用LIKE参数,如下所示:语法DATA<f>LIKELINEOF<itab>.在这种情况下,<itab>必须是作为内表创立的数据对象(参见创立内表数据对象(页Error!Notavalidlink.))。类型和长度的默认值如果未在DATA语句中指定参数<length>和<type>,则创立长度为1的字符字段(类型C)。如果指定长度,但未指定类型,则创立给定长度的字符字段。DATATEXTFIELD.例如创立长度为1的字符字段TEXTFIELD。setZ_055pagepage1414指定初始值利用DATA语句声明内部变量时,将隐式地给字段分配初始值。关于不同数据类型初始值的详细信息,参见根本数据类型-预定义的(页REFz_027page3)中的表。要更改字段的初始值,请使用DATA语句的<value>参数。语法如下:语法DATA<f>VALUE<val>.将字段<f>的初始值设为<val>,其中<val>可以是 文字(参见文字(页REFz_038page8)) 常量(参见常量(页REFz_039page10)) 显式的附加项ISINITIAL初始值规格例如:DATA:COUNTERTYPEPVALUE1,
DATETYPEDVALUE'19920601',
FLAGTYPECVALUEISINITIAL.声明该数据以后,字符串FLAG包含其默认初始值SPACE。setZ_056pagepage1515指定小数位数xe"十进制"xe"数据对象,十进制数字"要定义类型P字段的小数位数,请使用<decimals>参数。语法如下:语法DATA<f>TYPEPDECIMALS<d>小数位数<d>的最大值是14(参见数字数据类型(页REFz_043page4))。可以将数据对象分配给压缩码类型变量,而该数据对象具有比变量更多的小数位。如果已将程序属性指定为“定点运算〞(参见指定程序属性(页LINKWord.Document.6C:\\LIN\\BCAB4\\BC03E.DOPz_005page\a\tError!Notavalidlink.)),则将多余的位数进行四舍五入。DATAWEIGHTTYPEPDECIMALS2VALUE'1.225'.如果将属性设置为“定点运算〞,则WEIGHT的值为1.23。setZ_042pagepage1515用于字段串的DATA语句字段串是程序中的一组内表。要声明字段串,请使用DATA语句并用BEGINOF和ENDOF标记该字段组的起始和结束。语法如下:语法DATA:BEGINOF<fstring>,
<componentdeclaration>,
ENDOF<fstring>.这些语句定义了字段串<fstring>。在<componentdeclaration>中,通过指定长度、类型和初始值或小数位数(如果需要),可以如DATA语句的根本格式(页REFz_041page12)中说明的那样声明组件字段。通过将字段串名作为前缀,并用连字符将字段串和组件连接起来:<fstring>-<component>,可以定址字段串中的各个组件。字段串的组件可以有不同的数据类型。由于类型I或F的字段是对齐的(参见对齐数据对象(页LINKWord.Document.6C:\\LIN\\BCAB4\\BC08E.DOPz_070page\a\tError!Notavalidlink.)),所以如果需要,系统将在组件之间插入空填充字段。有时也将字段串称为记录或结构。DATA:BEGINOFADDRESS,
NAME(20)TYPEC,
STREET(20)TYPEC,
NUMBERTYPEP,
POSTCODE(5)TYPEN,
CITY(20)TYPEC,
ENDOFADDRESS.该例如定义了一个长度为73的字段串ADDRESS。可以通过ADDRESS-NAME、ADDRESS-STREET等定址组件。可以将长字段串的声明收集在包括程序中(参见LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_013"\a\t包含程序)。但是,如果频繁使用该数据结构,则最好将它们保存在ABAP/4词典中。关于该主题的详细信息,参见文档ABAP/4词典(页Error!Notavalidlink.)。setZ_031pagepage1616CONSTANTS语句如果在程序中频繁使用某常量,可以利用常量语句,将其声明为具有固定值的变量,如下所示:语法CONSTANTS<c>[<length>]<type><value>[<decimals>].要将字段串定义为常量,请写:CONSTANTS:BEGINOF<fstring>,
<componentdeclaration>,
ENDOF<fstring>.这些语句的参数与DATA语句的根本格式(页REFz_041page12)和用于字段串的DATA语句(页REFz_042page15)中说明的DATA语句的参数相同。有关说明请参阅这些主题。对于常量语句必须使用<value>参数,而在DATA语句中该参数是可选的。利用<value>参数指定的初始值,在程序的执行期间不能更改。CONSTANTS:MYNAME(10)VALUE'Fred',
BIRTHDAYTYPEDVALUE'19600110',
ZEROTYPEIVALUEISINITIAL.例如的最后一行说明了变量ISINITIAL的用途。由于对于常量语句,参数VALUE是必须的,所以可以使用ISINITIAL给常量分配默认值。CONSTANTS:BEGINOFMYADDRESS,
NAME(20)TYPECVALUE'FredFlintstone',
STREET(20)TYPECVALUE'CaveAvenue',
NUMBERTYPEPVALUE11,
POSTCODE(5)TYPENVALUE98765,
CITY(20)TYPECVALUE'Bedrock',
ENDOFMYADDRESS.该例如定义了常量字段串MYADDRESS。可以利用MYADDRESS-NAME、MYADDRESS-STREET等定址组件,但不能更改组件。setZ_032pagepage1717STATICS语句如果要在过程(子程序或功能模块-详细信息,参见LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC11E.DOC""z_001"\a\t模块化ABAP/4程序)的运行时间之外仍保留某变量的数值,可以在该过程中利用STATICS语句定义该变量。STATICS语句是DATA语句的变异。语法如下:语法STATICS<s>[<length>]<type>[<value>][<decimals>].要在过程中将字段串定义为静态有效,请写:STATICS:BEGINOF<fstring>,
<componentdeclaration>,
ENDOF<fstring>.这些语句的参数与DATA语句的根本格式(页REFz_041page12)和用于字段串的DATA语句(页REFz_042page15)中说明的DATA语句的参数相同。有关说明请参阅这些主题。如果在程序中屡次调用某过程,对于利用STATICS定义的变量,过程总是使用该变量的最新值。不能从过程外部定址静态变量。setZ_033pagepage1717TABLES语句利用TABLES语句,可以创立称为表工作区的数据对象。表工作区是参考ABAP/4词典对象的字段串。语法如下:语法:TABLES<dbtab>.<dbtab>是ABAP/4词典对象的名称,同时也是创立的表工作区的名称。表工作区组件的顺序和名称与在ABAP/4词典中声明的对象相同。可以引用的有效ABAP/4词典对象是 结构(参见文档ABAP/4词典(页Error!Notavalidlink.)) 视图(参见文档ABAP/4词典(页Error!Notavalidlink.)) 数据库表(参见LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC13E.DOC""z_000"\a\t读取和处理数据表)要在ABAP/4词典中创立对象,请在R/3初始屏幕上,选择
工具->ABAP/4工作台->开发->ABAP/4词典。
表工作区提供一个接口,通过该接口可以将数据从数据库表加载到程序,或利用开放式SQL语句修改数据库表的内容(参见读取并处理数据库表(页LINKWord.Document.6C:\\LIN\\BCAB4\\BC13E.DOPz_000page\a\tError!Notavalidlink.))。要显示表的组件及其数据类型的列表,请在ABAP/4编辑器的命令行中(选择“编辑->其它功能->命令输入〞)键入“SHOW<dbtab>〞。ABAP/4词典对象的数据类型与ABAP/4类型概念的数据类型不同。关于ABAP/4词典数据类型的列表,以及它们在ABAP/4程序中与数据类型如何对应的详细信息,请参阅TABLES语句的关键字文档。要定址表工作区的组件,可以将表名作为前缀,然后用连字符添加组件:<dbtab>-<component>(参见用于字段串的DATA语句(页REFz_042page15))。TABLES:SPFLI.SELECT*FROMSPFLI.
WRITE:SPFLI-MANDT,SPFLI-CARRID,SPFLI-CONNID,
ENDSELECT.例如中,TABLES语句创立表工作区SPFLI。SPFLI与ABAP/4词典中声明的数据库表SPFLI结构相同。在SELECT循环中,用属于数据库表SPFLI的行填充表工作区SPFLI(参见LINKWord.Document.6"\\\\BOYS\\PUBLIC\\DOKU\\30D\\BC\\ENGLISH\\BCAB4\\BC13E.DOC""z_000"\a\t读取并处理数据表)。setZ_029pagepage1818TYPES语句xe"创立数据类型"xe"类型"xe"数据类型,创立"可以使用TYPES语句创立用户定义的基本数据类型和结构化数据类型。对由TYPES语句定义的数据类型,可以按与使用预定义数据类型声明数据对象相同的方法进行使用。语法如下:语法TYPES<t>[<length>]<type>[<decimals>].该语句定义数据类型<t>。要定义结构化数据类型,请写:TYPES:BEGINOF<fstring>,
<componentdeclaration>,
ENDOF<fstring>.这些语句的参数与DATA语句的根本格式(页REFz_041page12)和用于字段串的DATA语句(页REFz_042page15)中所说明的DATA语句的参数相同。有关说明请参阅这些主题。由于没有与数据类型相关联的内存,所以无法在TYPES语句中使用<value>参数。因此,不能给数据类型分配值。TYPES:SURNAME(20)TYPEC,BEGINOFADDRESS,
NAMETYPESURNAME,
ENDOFADDRESS.DATA:ADDRESS_1TYPEADDRESS,ADDRESS_2TYPEADDRESS,例如说明如何使用参数TYPE直接引用用户定义的数据类型。其中主要有三件事情。第一,创立长为20、类型为C的用户定义的数据类型SURNAME。第二,定义结构化数据类型ADDRESS。将数据类型SURNAME赋给ADDRESS、ADDRESS-NAME的组件。第三,创立作为字段串的数据对象ADDRESS_1、ADDRESS_2...,将它们的类型指定为ADDRESS。DATACOUNTSTYPEI.TYPES:COMPANYLIKESPFLI-CARRID,
NO_FLIGHTSLIKECOUNTS.例如说明在TYPES语句中LIKE参数的使用。说明如何通过引用已有数据对象类型创立数据类型。最重要的是,如用户定义的数据类型COMPANY所示,可以创立引用ABAP/4词典对象的类型。COMPANY引用ABAP/4词典对象CARRID,CARRID是数据库表SPFLI的一列。*引用预定义类型的用户定义的类型:TYPES:SURNAME(20)TYPEC,
STREET(30)TYPEC,
ZIP_CODE(10)TYPEN,
CITY(30)TYPEC,
PHONE(20)TYPEN,
DATELIKESY-DATUM.*User-definedstructuredtypereferringtoabovetypes:TYPES:BEGINOFADDRESS,
NAMETYPESURNAME,
CODETYPEZIP_CODE,
TOWNTYPECITY,
STRTYPESTREET,
ENDOFADDRESS.*User-definednestedstructuretypereferringtoabovetypes:TYPES:BEGINOFPHONE_LIST,
ADRTYPEADDRESS,
TELTYPEPHONE,
ENDOFPHONE_LIST.DATAPLTYPEPHONE-LISTWRITEPL-ADR-NAME.该例如说明如何从简单类型定义创建复杂数据类型。利用ABAP/4预定义类型创立一组简单数据类型以后,使用此前定义的数据类型定义结构化类型ADDRESS。最后,创立嵌套结构类型PHONE_LIST,该类型的第一个组件具有结构化类型ADDRESS。例如的最后一行显示如何利用类型PHONE_LIST创立数据对象PL,以及如何定址其组件。关于如何在数据类型结构中包括内表的详细信息,参见创立并处理内表(页Error!Notavalidlink.)。setZ_050pagepage2020例如汇总为汇总在上述主题中的信息,以下主题包含4个例如,这些例如覆盖了在ABAP/4中声明数据类型和数据对象的全部重要特征:setZ_051pagepage2020预定义根本数据类型和对象例如以下程序是有关如何利用预定义基本数据类型声明数据对象的例如。PROGRAMSAPMZTST.DATATEXT1(14)TYPEC.
DATATEXT2LIKETEXT1.
DATANUMBERTYPEI.TEXT1='Thenumber'.
NUMBER=100.
TEXT2='isaninteger.'.WRITE:TEXT1,NUMBER,TEXT2.该程序在屏幕上产生下列输出:Thenumber100isaninteger.例如中,用DATA语句声明数据对象TEXT1、TEXT2和NUMBER。利用DATA语句的TYPE参数或LIKE参数为每个数据对象指定数据类型。此处使用的数据类型(C、I)是在系统中预定义的。然后,给数据对象分配数值,并在屏幕上显示数据对象的内容。setZ_059pagepage2020用户定义的根本数据类型和对象示例以下程序是有关如何利用用户定义的根本数据类型声明数据对象的示例。PROGRAMSAPMZTST.TYPESMYTEXT(10)TYPEC.
TYPESMYAMOUNTTYPEPDECIMALS2.DATATEXTTYPEMYTEXT.
DATAAMOUNTTYPEMYAMOUNT.TEXT='4/3='.
AMOUNT=4/3.WRITE:TEXT,AMOUNT.该程序在屏幕上产生下列输出:4/3=1.33例如中,用TYPES语句定义用户定义的数据类型MYTEXT和MYAMOUNT,该TYPES语句引用系统预定义的根本数据类型。然后,用DATA语句声明数据对象TEXT和AMOUNT。将它们的数据类型确定为MYTEXT和MYAMOUNT。给数据对象分配值,并在屏幕上显示数据对象的内容。setZ_052pagepage2121字段串例如以下程序是有关如何将结构化数据对象声明为字段串的示例。PROGRAMSAPMZTST.TYPES:BEGINOFNAME,
TITLE(5)TYPEC,
FIRST_NAME(10)TYPEC,LAST_NAME(10)TYPEC,
ENDOFNAME.TYPES:BEGINOFMYLIST,
CLIENTTYPENAME,
NUMBERTYPEI,
ENDOFMYLIST.DATALISTTYPEMYLIST.LIST-CLIENT-TITLE='Lord'.
LIST-CLIENT-FIRST_NAME='Howard'.
LIST-CLIENT-LAST_NAME='MacDuff'.
LIST-NUMBER=1.WRITELIST-CLIENT-TITLE.
WRITELIST-CLIENT-FIRST_NAME.
WRITELIST-CLIENT-LAST_NAME.
WRITE/'Number'.
WRITELIST-NUMBER.该程序在屏幕上产生下列输出:LordHowardMacDuff
Number1例如中,用TYPES语句定义结构化数据类型NAME和MYLIST。字段串NAME包含三个具有预定义基本数据类型C的组件TITLE、FIRST_NAME和LAST_NAME。字段串MYLIST包含两个组件,即CLIENT和NUMBER。由于已给定CLIENT数据类型NAME,所以CLIENT本身已结构化。NUMBER是根本的,并具有预定义数据类型I。用数据类型MYLIST声明结构化数据对象LIST。给组件分配值,并在屏幕上显示它们的内容。setZ_060pagepage2222内表例如以下程序是有关如何将结构化数据对象声明为内表的例如。PROGRAMSAPMZTST.TYPES:BEGINOFMYSTRING,
NUMBERTYPEI,
NAME(10)TYPEC,
ENDOFMYSTRING.TYPESMYTABTYPEMYSTRINGOCCURS5.DATASTRINGTYPEMYSTRING.
DATAITABTYPEMYTAB.STRING-NUMBER=1.STRING-NAME='John'.
APPENDSTRINGTOITAB.
STRING-NUMBER=2.STRING-NAME='Paul'.
APPENDSTRINGTOITAB.
STRING-NUMBER=3.STRING-NAME='Ringo'.
APPENDSTRINGTOITAB.
STRING-NUMBER=4.STRING-NAME='George'.
APPENDSTRINGTOITAB.LOOPATITABINTOSTRING.
WRITE:/STRING-NUMBER,STRING-NAME.
ENDLOOP.该程序在屏幕上产生下列输出:1John
2Paul
3Ringo
4George例如中,首先将数据类型MYSTRING定义为字段串。然后,根据字段串MYSTRING,利用TYPES语句的OCCURS参数将数据类型MYTAB定义为内表。利用数据类型MYSTRING和MYTAB声明数据对象STRING和ITAB。然后逐行填充内表ITAB的字段。通过使用字段串STRING,在屏幕上显示ITAB的内容。关于内表的详细信息,参见创立并处理内表(页Error!Notavalidlink.)。setZ_061pagepage2323使用类型组可以使用类型组将用户定义的数据类型或常量存储在ABAP/4词典中,以便在程序之间使用。在ABAP/4程序中,可以利用TYPE-POOLS语句声明类型组,如下所示:语法TYPE-POOLS<name>.该语句允许您使用程序中的类型组<name>中定义的全部数据类型和常量。在同一个程序中可以使用多个类型组。可以通过选择“工具->ABAP/4工作台->开发->ABAP/4词典〞,或直接从ABAP/4程序维护类型组。在第一种情况下,在“ABAP/4词典:初始屏幕〞上的“对象名〞字段中,为类型组指定一个1到5个字符的名称,然后选择“类型组〞,接着选择“显示〞、“更改〞或“创立〞:在第二种情况下,可以双击ABAP/4程序中TYPE-POOLS语句后的类型组的名称<name>。如果不存在该名称的类型组,可以创立它。否则,系统显示现有类型组的定义,然后可以对它进行更改。类型组的定义是在ABAP/4编辑器中输入的ABAP/4代码的一部分。用于类型组<name>的第一条语句始终为:语法TYPE-POOL<name>.紧接其后的是利用语句TYPES和常量的数据类型和/或常量的定义(如同TYPES语句(页REFz_029page18)和CONSTANTS语句(页REFz_031page16)所述)。这些数据类型和常量的所有名称必须以类型组的名称和下划线开始:<name>_。在ABAP/4词典中创立类型组HKTST,如下所示:TYPE-POOLHKTST.TYPES:BEGINOFHKTST_TYP1,
COL1(10),
COL2TYPEI,
ENDOFHKTST_TYP1.TYPESHKTST_TYP2TYPEPDECIMALS2.CONSTANTSHKTST_ELEVENTYPEIVALUE11.该类型组不但定义两个数据类型HKTST_TYP1和HKTST_TYP2,而且定义了一个值为11的常量。任何ABAP/4程序都可以如同以下程序那样,利用TYPE-POOLS语句使用该定义:PROGRAMSAPMZTST.TYPE-POOLSHKTST.DATA:DAT1TYPEHKTST_TYP1,
DAT2TYPEHKTST_TYP2VALUE'1.23'.WRITE:DAT2,/HKTST_ELEVEN.输出为:1.2311类型组中定义的数据类型,用于利用DATA语句声明数据对象,而且正如输出所显示的那样,在程序中常量的值是的。setZ_006pagepage2424确定数据对象的属性xe"DESCRIBEFIELD"xe"数据对象,属性"xe"数据对象属性"如果要查明数据对象的数据类型,或者要在程序的运行期间使用其属性,请使用DESCRIBE语句。语法如下:语法DESCRIBEFIELD<f>[LENGTH<l>][TYPE<t>[COMPONENTS<n>]]
[OUTPUT-LENGTH<o>][DECIMALS<d>]
[EDITMASK<m>].将由语句的参数指定的数据对象<f>的属性写入参数后的变量。DESCRIBEFIELDS语句具有下列参数:参数用途确定字段长度(页REFz_044page25)LENGTH确定数据类型(页REFz_045page25)TYPE确定输出长度(页REFz_046page26)OUTPUT-LENGTH确定小数位(页REFz_047page27)DECIMALS确定转换例程(页REFz_048page27)EDITMASKsetZ_044pagepage2525确定字段长度要确定数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国学知识竞赛题库280道题及答案
- 2025年国家公务员招聘考试公共基础知识仿真模拟试题库及答案(共四套)
- 2025年国家公务员考试公共基础知识题库400题(附答案和解析)
- 采购外贸流程
- 针灸治疗头晕
- 采购年终总结与未来规划
- 销售部门年终总结和计划
- 静脉炎护理疑难病例讨论
- 中级个人理财-2025中级银行从业资格考试《个人理财》预测试卷4
- 阳光心态培训
- 人教版九年级上册第六单元碳和碳的氧化物《拯救水草大行动二氧化碳制取的研究》全国课
- 《建筑结构荷载规范》-20220622095035
- 人教pep版小学英语三年级下册各单元测试卷(全册)、期中、期末试卷
- DB61∕T 1165-2018 高速公路服务区服务规范
- 2024人民医院医疗场所安保项目服务合同
- 2023年浙江宁波交投公路营运管理有限公司招聘考试真题
- 数字化井控技术研究现状及发展趋势
- 护理中断事件的风险及预防
- JJF(机械)1033-2019 吸油烟机测试装置校准规范
- 农商行抵押合同范本
- 急性皮肤衰竭与压力性损伤鉴别
评论
0/150
提交评论