BCAB4(Ver:R/33.0版1996年4月)BCABAP/4User'sGuidePage1of462BCABAP/4用户指南读者注意事项ABAP/4用户指南是关于ABAP/4编程语言的手册。其目的在于:¾向新的ABAP/4程序员提供从基本语言组件到复杂报表和事务编码的全面指导¾向资深ABAP/4程序员提供解决特殊问题的参考方案为满足这些需求,特提供一个整体概述并将本指南分成三个部分,循序渐进,逐步深入:¾ABAP/4的基本组件¾如何编写报表程序¾如何编写事务ABAP/4用户指南目的不在于替换ABAP/4关键字文档。APAP/4的关键字文档可以通过如下方式调用¾从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序-ABAP/4关键字文档¾选择ABAP/4编辑器中的“帮助”¾将光标放在ABAP/4编辑器中的关键字上,然后按下F1键ABAP/4用户指南的真正目的在于说明如何使用以及为何使用ABAP/4关键字。并为此提供了许多示例,构成用户自己测试程序的基础。要获取详细信息,可以进行以下某种操作:¾关于关键字的详细信息,请参阅关键字文档。¾关于ABAP/4环境术语的详细信息,请从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序-ABAP/4关键字文档”。然后就会出现与解释文本相链接的主题层次。要找出这些文本用于哪些主题,请选择“查看-标题和关键字”。屏幕右侧就会出现一个名称列表。对于所有以ABEN而非TITL开头的名称,如果双击树结构中的主题,则会出现文本屏幕。¾关于如何提高ABAP/4任务性能的技巧,请从“ABAP/4开发工作台”上选择事务SE30或“测试-运行时间分析”,然后单击“提示和技巧”。SAP联机帮助的约定:类型样式用途屏幕文本屏幕上能见到的的词或字符(包括系统信息、字段名、屏幕标题、菜单名和菜单条目)。用户输入实际用户输入。用户在键盘上键入的文字或字符。可变用户输入可变用户输入。尖括号表明可以用适当的输入替换这些变量。全部大写报表名、程序名、事务代码、表名、ABAP/4语言元素、文件名和目录。书本标题交叉参考其他书籍。KEYCAP键盘上的键。功能键(例如,F2和ENTER键)通常采用这种方式表示。语法约定:关键字定义语句关键字和语句选项大写。变量变量或代表所填入值的词用尖括号括起来。在所使用的值中不要包括角括号(例外:字段符号)[]方括号表明用户没有使用、使用一个或多个附加选项。在用户选项中不要包括方括号。|两选项之间的竖条表明用户可以使用一个或另一个选项。()应将括号作为命令的一部分键入,逗号表示用户可选择多个选项,用逗号隔开,作为命令的一部分键入。f1f2带索引的变量表明用户可列出多个变量。变量之间要采用与前两个一样的符号隔开。.......点号表明用户可在此处放置上下文中允许的任何东西。在语法指令中,关键字大写,变量放进角括号中。在程序中键入关键字时可以忽略大小写。WRITE、Write和write完全一样。输出屏幕上的输出或者采用屏幕弹出形式或者采用如下格式:Screenoutput.ABAP/4简介SAP昀初开发ABAP/4(高级商业应用程序设计)语言仅为内部使用,为应用程序员提供优化的工作环境。经过不断的改进和修改以满足商业领域的需要。现在,ABAP/4已成为SAP开发所有自己的应用程序的仅有工具。BCAB4(Ver:R/33.0版1996年4月)BCABAP/4User'sGuidePage2of462SAP客户用ABAP/4进行其自身开发。这样的开发对R/3标准解决方案适应特殊问题非常重要。ABAP/4开发工作平台包含所有用于创建和维护ABAP/4程序的工具。ABAP/4的可解释特性使其易于生成、测试并运行程序的中级版本,以便将来生成昀终版本。此过程也叫做早期原形处理,意味着您不必丢弃中级版本。ABAP/4是第四代支持结构化程序设计的语言,它合并了所有通常的控制结构和模块化概念。在ABAP/4用户指南的第一部分,对ABAP/4的基本特性进行了详细描述。这些特性包括:¾ABAP/4包括:9带有各种类型和结构的声明数据的声明元素9数据制作的操作元素9控制程序流的控制元素9反应外部事件的事件元素¾ABAP/4支持多种语言。文本摘要(例如,标题、页眉和其他文本)将根据程序代码分别存储。您可以随时在不改变程序代码的情况下更改、转换和维护这些文本摘要。¾ABAP/4支持商业数据类型和操作。您可以用特殊日期和时间字段进行计算。系统会自动执行必需的类型转换。¾ABAP/4提供一系列功能处理字符串。¾ABAP/4包含一个叫OpenSQL的SQL子集。用OpenSQL,您可以读取和访问数据库表,与所用的数据库系统无关。¾ABAP/4允许您定义和处理内部表,该表只在运行程序时存在。内部表使其更容易处理数据表,并帮助使用程序中的复杂数据结构。¾ABAP/4允许您定义和调用子程序。也可以调用其他程序的子程序。参数能够以各种方式从子程序传递或传递到子程序。¾ABAP/4包含一种特殊子程序,叫做功能模块。您可以在中央库中创建和维护功能模块。在调用程序和子程序之间功能模块有一个明确定义的数据接口。它们能够以调用程序的独立模式进行分别测试。这里有两种主要的ABAP/4程序类型:9报表程序:报表程序用于分析数据库表中的数据。这种分析的结果可以显示在屏幕上或发送到打印机上。逻辑数据库支持报表程序。逻辑数据库是特殊的ABAP/4程序,使开发者不必编码所有的数据库访问。关于报表程序的详细信息,参见《ABAP/4用户指南》的第二部分。9对话程序:将对话程序组织为包含对话模块的模块池。每个动态程序(由一个屏幕及其流逻辑组成的“动态程序”)都基于一个ABAP/4对话程序。流逻辑包含对ABAP/4对话模块的调用。关于对话程序的详细信息,参见《ABAP/4用户指南》的第三部分。第一部份,ABAP/4基础ABAP/4用户指南的第一部分描述了ABAP/4编程语言的基本组件。它们允许用户编写并运行包括所有主要操作的ABAP/4程序。用户可以使用这些知识编写应用程序。在第一部分的下列章节中,您将学习:一、ABAP/4程序结构:(一)、创建简单的ABAP/4程序(二)、ABAP/4程序语法和格式二、数据处理:(一)、声明数据(二)、将数据输出到屏幕(三)、处理文本摘要(四)、处理数据三、流控制:控制ABAP/4程序流四、特殊编程技术:(一)、创建和处理内表(二)、模块化ABAP/4程序(三)、使用字段符号五、存储数据:(一)、读取并处理数据库表(二)、以簇方式存储数据对象(三)、使用文件BCAB4(Ver:R/33.0版1996年4月)BCABAP/4User'sGuidePage3of462一、ABAP/4程序结构(一)、创建简单的APAP/4程序本节描述如何创建简单的ABAP/4程序。了解如何创建ABAP/4程序将有助于了解本指南中的其它主题。创建简单的ABAP/4程序涉及下列基本步骤:命名程序=>指定程序属性=>编写程序代码=>测试程序另外,本节也描述如何显示或更改现有程序以及如何从编辑器中启动程序。此处描述的创建新ABAP/4程序的过程适用于报表和短培训程序。在开始编写报表程序之前,用户也许想先创建报表和短培训程序以熟悉ABAP/4语法。要为新事务创建模块存储,可以采用不同于报表程序的方式进行。关于如何为事务创建模块存储的详细信息,参见《ABAP/4模块池》。关于ABAP/4编辑器和调试过程的详细信息,参见文档ABAP/4工作台工具。本节讲述下列主题:1)命名程序2)指定程序属性3)编写程序4)测试程序5)显示或更改程序6)将事务代码分配给程序1)、命名程序要创建ABAP/4程序,步骤如下:¾在“SAPR/3”初始屏幕上选择“工具-ABAP/4工作台”。出现“ABAP/4开发工作台”屏幕¾选择“ABAP/4编辑器”,“ABAP/4编辑器初始屏幕”如下所示:¾为在“程序”字段中创建的程序输入名称(关于创建程序名称的详细信息,参见《命名程序规则》)。¾选择“创建”。不论在“对象组件”下选择什么,都出现“ABAP/4:程序属性”屏幕。当命名并创建程序后,可以定义其属性(关于定义程序属性的详细信息,参见《指定程序属性》)。创建ABAP/4程序还有其它过程。例如,可以:9选择“ABAP/4开发工作台”屏幕上的“对象浏览”。9选择“对象列表”下的“程序”。9选择“单一对象”下的“程序对象”。9输入程序名并单击“显示”。如果程序不存在,则询问是否要创建它。关于对象浏览器及创建程序其它过程的详细信息,参见文档《ABAP/4工作台工具》。BCAB4(Ver:R/33.0版1996年4月)BCABAP/4User'sGuidePage4of462命名程序规则:当创建程序名称时请遵循如下规则:¾使用至少1个但不超过8个字符。¾不要使用下列字符:句点(.);逗号(,);空格();括号'('')';单引号(');双引号();等号(=);星号(*);元音变音(ٛ,ٛ,ٛ,ٛ,ٛ,ٛ)和'ٛ';百分号(%)和下划线(_):因为这些符号是SQL语句的通配符,所以也会导致问题(参见《在程序中为行选择指定条件》)。SAP建议在程序名称中不要使用它们。创建程序名称时请遵守这些命名约定:¾报表程序(以列表格式输出数据分析):Yaxxxxxx或Zaxxxxxx。用应用程序区的分类字母替换a。任何有效字符替换x。注意SAP报表程序遵守相似的命名约定:Raxxxxxx。¾任何其它ABAP/4程序(培训程序或事务程序):SAPMYxxx或SAPMZxxx。用有效字符替换x。注意标准SAPABAP/4程序遵守相似的命名约定:SAPMaxxx,其中a代表某应用程序区。2)、指定程序属性程序属性决定程序属于哪种应用程序以及程序所链接的逻辑数据库。必须谨慎输入属性以便系统能正确处理程序(有关程序属性的详细信息,参见《重要的程序属性》)。已经将名称分配给程序并选择“ABAP/4编辑器初始屏幕”上的“创建”时,出现“ABAP/4:程序属性”屏幕,要输入程序属性,请进行如下操作:¾在字段“标题”中输入程序标题。选择描述程序功能的标题。系统自动将标题与文本摘要合并。如果以后要更改标题,请按如下操作进行:9选择“ABAP/4编辑器初始屏幕”上的“文本摘要”或“属性”。9选择“更改”。¾完成两个强制字段:9如果创建报表程序,则在“类型”字段中输入1,如果创建模块存储,则在“类型”字段中输入M。关于可能类型的列表,请单击可能条目箭头。9在“应用程序”字段中为应用程序输入分类字母,如财务会计输入F。¾如果创建报表(类型=1),请选择“确定”。系统将特定报表属性自动插入输入字段。然后看见附加字段“逻辑数据库”、“从应用程序”和“选择屏幕”(版本)。BCAB4(Ver:R/33.0版1996年4月)BCABAP/4User'sGuidePage5of462¾指定与程序相关的所有其他属性(有关程序属性的详细信息,参见《重要的程序属性》)。¾选择“保存”以保存属性。¾出现“维护对象目录条目”窗口。¾输入开发类。如果为培训或测试目的创建程序(如某私有对象),则输入开发类$TMP或选择“逻辑对象”。¾选择“保存”以保存开发类。这将关闭“维护对象目录条目”窗口并返回“ABAP/4:程序属性”屏幕。¾选择“后退”离开屏幕。如果要直接转到ABAP/4编辑器,请选择“转向-源代码”。如果通过预定义开发类在“对象浏览器”中创建程序,则跳过步骤6到8。重要的程序属性:昀重要的程序如下所述。关于其它属性的详细信息(或关于此处描述的属性的详细信息),请选择相关的输入字段,并单击可能的条目箭头。注意下述某些属性只适用于报表程序并不适用于其他ABAP/4程序。¾类型:除了类型1(如同报表的独立程序)和M(模块存储),还应该注意类型I(包含程序)。包含程序是个独立的程序,它有两个主要特征。首先,它包含程序代码,不同程序都可使用该代码。其次,它用于模块化程序源代码,该代码分成逻辑相