abap内部培训资料.docx

上传人:牧羊曲112 文档编号:1876920 上传时间:2022-12-23 格式:DOCX 页数:208 大小:358.85KB
返回 下载 相关 举报
abap内部培训资料.docx_第1页
第1页 / 共208页
abap内部培训资料.docx_第2页
第2页 / 共208页
abap内部培训资料.docx_第3页
第3页 / 共208页
abap内部培训资料.docx_第4页
第4页 / 共208页
abap内部培训资料.docx_第5页
第5页 / 共208页
点击查看更多>>
资源描述

《abap内部培训资料.docx》由会员分享,可在线阅读,更多相关《abap内部培训资料.docx(208页珍藏版)》请在三一办公上搜索。

1、公司内训资料(密)SAP最初开发ABAP/4(高级商业应用程序设计)语言仅为内部使用,为应用程序员提供优化的工作环境。经过不断的改进和修改以满足商业领域的需要。现在,ABAP/4已成为SAP开发所有自己的应用程序的仅有工具。SAP客户用ABAP/4进行其自身开发。这样的开发对R/3标准解决方案适应特殊问题非常重要。ABAP/4开发工作平台包含所有用于创建和维护ABAP/4程序的工具。ABAP/4的可解释特性使其易于生成、测试并运行程序的中级版本,以便将来生成最终版本。此过程也叫做早期原形处理,意味着您不必丢弃中级版本。ABAP/4是第四代支持结构化程序设计的语言。它合并了所有通常的控制结构和模

2、块化概念。在ABAP/4开发宝典中文版的第一部分,对ABAP/4的基本特性进行了详细描述。这些特性包括:ABAP/4包括-带有各种类型和结构的声明数据的声明元素-数据制作的操作元素-控制程序流的控制元素-反应外部事件的事件元素ABAP/4支持多种语言。文本摘要(例如,标题、页眉和其他文本)将根据程序代码分别存储。您可以随时在不改变程序代码的情况下更改、转换和维护这些文本摘要。ABAP/4支持商业数据类型和操作。您可以用特殊日期和时间字段进行计算。系统会自动执行必需的类型转换。ABAP/4提供一系列功能处理字符串。ABAP/4包含一个叫OpenSQL的SQL子集。用OpenSQL,您可以读取和访

3、问数据库表,与所用的数据库系统无关。ABAP/4允许您定义和处理内部表,该表只在运行程序时存在。内部表使其更容易处理数据表,并帮助使用程序中的复杂数据结构。ABAP/4允许您定义和调用子程序。也可以调用其他程序的子程序。参数能够以各种方式从子程序传递或传递到子程序。ABAP/4包含一种特殊子程序,叫做功能模块。您可以在中央库中创建和维护功能模块。在调用程序和子程序之间功能模块有一个明确定义的数据接口。它们能够以调用程序的独立模式进行分别测试。这里有两种主要的ABAP/4程序类型:报表程序报表程序用于分析数据库表中的数据。这种分析的结果可以显示在屏幕上或发送到打印机上。逻辑数据库支持报表程序。逻

4、辑数据库是特殊的ABAP/4程序,使开发者不必编码所有的数据库访问。关于报表程序的详细信息,参见ABAP/4开发宝典中文版的第二部分。对话程序将对话程序组织为包含对话模块的模块池。每个动态程序(由一个屏幕及其流逻辑组成的“动态程序”)都基于一个ABAP/4对话程序。流逻辑包含对ABAP/4对话模块的调用。关于对话程序的详细信息,参见ABAP/4开发宝典中文版的第三部分。语法约定本文档中涉及的语法语句约定如下:关键字定义语句关键字和语句选项大写。变量或代表所填入值的词用尖括号括起来。在所使用的值中不要包括角括号(例外:字段符号)方括号表明用户没有使用、使用一个或多个附加选项。在用户选项中不要包括

5、方括号。|两选项之间的竖条表明用户可以使用一个或另一个选项。()应将括号作为命令的一部分键入,逗号表示用户可选择多个选项,用逗号隔开,作为命令的一部分键入。带索引的变量表明用户可列出多个变量。变量之间要采用与前两个一样的符号隔开。.点号表明用户可在此处放置上下文中允许的任何东西。在语法指令中,关键字大写,变量放进角括号中。在程序中键入关键字时可以忽略大小写。WRITE、Write和write完全一样。输出屏幕上的输出或者采用屏幕弹出形式或者采用如下格式:Screen output.第一部分 ABAP/4基础第一章 创建简单的ABAP/4程序本节描述如何创建简单的ABAP/4程序。了解如何创建A

6、BAP/4程序将有助于了解本指南中的其它主题。创建简单的ABAP/4程序涉及下列基本步骤:1.命名程序2.指定程序属性3.编写程序代码4.测试程序本节也描述如何显示或更改现有程序以及如何从编辑器中启动程序。此处描述的创建新ABAP/4程序的过程适用于报表和短培训程序。在开始编写报表程序之前,用户也许想先创建报表和短培训程序以熟悉ABAP/4语法。要为新事务创建模块存储,可以采用不同于报表程序的方式进行。关于如何为事务创建模块存储的详细信息,参见ABAP/4模块池。关于ABAP/4编辑器和调试过程的详细信息,参见文档ABAP/4工作台工具。本节讲述下列主题:一、命名程序要创建ABAP/4程序,请

7、进行如下操作:1.在“SAPR/3”初始屏幕上选择“工具-ABAP/4工作台”。出现“ABAP/4开发工作台”屏幕2.选择“ABAP/4编辑器”“ABAP/4编辑器初始屏幕”如下所示:3.为在“程序”字段中创建的程序输入名称(关于创建程序名称的详细信息,参见命名程序规则(页455))。4.选择“创建”。不论在“对象组件”下选择什么,都出现“ABAP/4:程序属性”屏幕。当命名并创建程序后,可以定义其属性(关于定义程序属性的详细信息,参见指定程序属性(页457))。创建ABAP/4程序还有其它过程。例如,可以:1.选择“ABAP/4开发工作台”屏幕上的“对象浏览”。2.选择“对象列表”下的“程序

8、”。3.选择“单一对象”下的“程序对象”。4.输入程序名并单击“显示”。如果程序不存在,则询问是否要创建它。关于对象浏览器及创建程序其它过程的详细信息,参见文档ABAP/4工作台工具。二、命名程序规则当创建程序名称时请遵循如下规则:_使用至少1个但不超过8个字符。_不要使用下列字符-句点(.)-逗号(,)-空格()-括号()-单引号()-双引号()-等号(=)-星号(*)-元音变音(_,_,_,_,_,_)和_-百分号(%)和下划线(_):因为这些符号是SQL语句的通配符,所以也会导致问题(参见为在程序中选定行指定条件)。SAP建议在程序名称中不要使用它们。创建程序名称时请遵守这些命名约定:_

9、报表程序(以列表格式输出数据分析):Yaxxxxxx或Zaxxxxxx。用应用程序区的分类字母替换a。用任何有效字符替换x。注意SAP报表程序遵守相似的命名约定:Raxxxxxx。_任何其它ABAP/4程序(培训程序或事务程序):SAPMYxxx或SAPMZxxx。用有效字符替换x。注意标准SAPABAP/4程序遵守相似的命名约定:SAPMaxxx,其中a代表某应用程序区。三、命名程序属性程序属性决定程序属于哪种应用程序以及程序所链接的逻辑数据库。必须谨慎输入属性以便系统能正确处理程序(有关程序属性的详细信息,参见重要的程序属性(页459))。已经将名称分配给程序并选择“ABAP/4编辑器初始

10、屏幕”上的“创建”时,出现“ABAP/4:程序属性”屏幕。要输入程序属性,请进行如下操作:1.在字段“标题”中输入程序标题。选择描述程序功能的标题。系统自动将标题与文本摘要合并。如果以后要更改标题,请按如下操作进行:-选择“ABAP/4编辑器初始屏幕”上的“文本摘要”或“属性”。-选择“更改”。2.完成两个强制字段:-如果创建报表程序,则在“类型”字段中输入1,如果创建模块存储,则在“类型”字段中输入M。关于可能类型的列表,请单击可能条目箭头。-在“应用程序”字段中为应用程序输入分类字母,如财务会计输入F。3.如果创建报表(类型=1),请选择“确定”。系统将特定报表属性自动插入输入字段。然后看

11、见附加字段“逻辑数据库”、“从应用程序”和“选择屏幕”(版本)。4.指定与程序相关的所有其他属性(有关程序属性的详细信息,参见重要的程序属性(页459))。5.选择“保存”以保存属性。6.出现“维护对象目录条目”窗口。7.输入开发类。如果为培训或测试目的创建程序(如某私有对象),则输入开发类$TMP或选择“逻辑对象”。8.选择“保存”以保存开发类。这将关闭“维护对象目录条目”窗口并返回“ABAP/4:程序属性”屏幕。9.选择“后退”离开屏幕。如果要直接转到ABAP/4编辑器,请选择“转向-源代码”。如果通过预定义开发类在“对象浏览器”中创建程序,则跳过步骤6到8。四、重要的程序属性最重要的程序

12、如下所述。关于其它属性的详细信息(或关于此处描述的属性的详细信息),请选择相关的输入字段,并单击可能的条目箭头。注意下述某些属性只适用于报表程序并不适用于其他ABAP/4程序。类型除了类型1(如同报表的独立程序)和M(模块存储),还应该注意类型I(包含程序)。包含程序是个独立的程序,它有两个主要特征。首先,它包含程序代码,不同程序都可使用该代码。其次,它用于模块化程序源代码,该代码分成逻辑相关部分。其中每个部分都存储在不同的包含程序中。包含程序改善源代码的可读性并有助于维护。(有关包含程序的详细信息,参见包含程序)。应用程序“应用程序”字段包括应用程序的缩写,如,财务会计缩写为F。该必需条目使

13、系统能将程序分配给适当的业务区。开发类开发类对系统之间进行传输非常重要。执行传输时,可以将分配给某个开发类的工作台对象组合起来。如果用户在某组中工作,也许要将程序分配给现有开发类或创建新的开发类。分配给开发类$TMP的程序是私有对象并且不能传输到其他系统。但是,也可以通过选择“ABAP/4编辑器初始屏幕”上的“程序-重新分配.”更改分配给程序的开发类。应用程序中的逻辑数据库(仅报表程序)这些属性决定报表使用哪个逻辑数据库检索数据,以及逻辑数据库属于哪个应用程序。应用程序中数据库名称必须是唯一的。但是,整个系统可以包括数个同名数据库。因此指定应用程序很重要。关于逻辑数据库的详细信息,参见逻辑数据

14、库的特性和维护。如果报表程序直接读取数据,而未使用逻辑数据库(关于此主题的详细信息,参见访问带逻辑数据库的数据库表),则应该象通常一样指定应用程序,但将“逻辑数据库”字段置空。选择屏幕版本(仅报表程序)如果没有指定选择屏幕版本,则系统在逻辑数据库选择标准、报表特定参数及选择选项的基础上自动创建选择屏幕(关于选择屏幕的详细信息,参见使用选择屏幕)。如果想使用自己的选择屏幕,请在此字段中输入号码。该号码必须小于1000。可以通过按F4或在DBxxxSEL程序中找到现有选择屏幕号码(详细信息,参见逻辑数据库选择)。大写/小写显示和存储时,如果要让ABAP/4编辑器将程序代码与输入时保持相同,则请将该

15、字段置空。如果选择该字段,则所有的程序代码(除了引号中的文本及注释外)都转换成大写字母。屏幕显示依赖于所使用的编辑器模式(详细信息,参见文档ABAP/4工作台工具。编辑器锁定如果设置此属性,则其他用户则不能修改、改名或删除程序。只有用户可以更改程序、维护属性、文本摘要及文档;或者解除锁定。定点算术如果设置此属性,系统则根据小数点位数将类型P字段四舍五入,或用零填补(关于类型P字段的详细信息,参见数字数据类型(页3-4))。这种情况下,无论在用户主记录中指定了什么,小数点字符总是句点(.)。通过变式启动(仅报表程序)如果设置该属性,则用户只可以使用变式启动报表程序。在启动程序之前,必须创建至少一

16、个报表变式(关于创建变式的详细信息,参见使用变式预设置选择)。五、编写程序在ABAP/4编辑器中编写ABAP/4程序。可以直接从“ABAP/4程序属性”屏幕切换到编辑器,也可以从“ABAP/4编辑器初始屏幕”中调用编辑器。请进行如下操作:1.在“ABAP/4程序属性”屏幕上选择“转向-源代码”或“源代码”。选定“源代码”并选择“ABAP/4编辑器初始屏幕”上的“更改”。出现“ABAP/4编辑器编辑程序”屏幕。系统自动输入第一个ABAP/4语句,如REPORT or PROGRAM .对于 ,系统使用在“ABAP/4编辑器初始屏幕”上输入的名称。语句REPORT和PROGRAM实际上具有相同功能

17、。它们使系统能识别报表程序或任何其他ABAP/4程序并允许为输出列表指定一定的标准:REPORT或PROGRAM语句可以有不同的参数,如LINE-SIZE、LINE-COUNT或NO STANDARD PAGE HEADING。这些参数主要适用于报表程序,用来分析数据并输出结果列表。关于列表的详细信息,参见 See also: 第六章 创建列表 或参见REPORT和PROGRAM上的关键字文档。2.输入程序代码。3.选择“检查”进行语法检查。然后系统扫描程序代码寻找语法错误及不相容处。如果检查出错误,则出现消息报告它并且有可能的话将建议解决方案或更正。将光标放在适当的位置上。4.选择“保存”保

18、存代码。源文本存储在程序库中。六、测试程序测试程序检查代码是否正确工作。为测试目的要运行程序,选择“ABAP/4编辑器编辑程序”屏幕上的“程序-执行”。系统执行该程序,如同从“ABAP/4编辑器初始屏幕”中启动的一样。例如,创建报表程序之后,则首先出现从中输入条件的选择屏幕,然后是结果列表。如果正创建ABAP/4程序模块,则必须在运行程序之前创建事务代码(关于创建事务代码的详细信息,参见对话编程简介)。出于测试目的,可以先不进行保存,直接运行某个不是模块存储部件的程序。编辑器保留一个包含更改的临时版本。但是,测试结束后必须返回编辑器以确保所有更改都已保存。七、显示或更改程序本节主要说明如何显示

19、或更改现有程序。此处相关的是技术步骤而不是实际代码更改。要显示或更改程序,请进行如下操作:1.在“ABAP/4编辑器初始屏幕”上的“程序”字段中输入要更改的程序名称。2.选择“源代码”并选择“显示”或“更改”。如果选择“更改”则继续步骤3。如果选择“显示”,则看到“ABAP/4编辑器显示程序”屏幕。此处也显示源代码,但不能进行更改。可以通过选择“显示-更改”切换到更改模式。3.如果其他用户锁定该程序对编辑器的访问,则系统显示下列消息:User forbade all changes.在这种情况下,不能更改程序。要更改程序,必须将它复制到新程序中并用新程序名再开始步骤1。否则,继续步骤5。4.输

20、入对程序代码的更改。5.选择“检查”检查语法。6.保存程序的更改版本。如果更改程序的私有版本(开发类$TMP),则立即保存更改版本。如果从$TMP之外的开发类更改程序,则会出现一个窗口,从中可以指定更正请求号(Change Request Number)。7.运行程序测试它(关于测试的详细信息,参见测试程序(页11))。八、将事务代码分配给程序可以将事务代码分配给类型1的单独程序,以后就将这些程序作为事务代码处理。在 See also: 第三部分 编写ABAP/4事务 中对事务有说明。进行如下操作:1.按照本节上述主题所述,创建单独程序。2.SAP菜单树:工具 - ABAP 工作台 - 开发

21、- 其他工具 - 事务,事务代码:SE93。3.填入事务代码并选择“维护事务”屏幕上的“创建”4.在下列对话屏幕上选择“报表事务”;5.在下列“创建报表事务”屏幕上填入所需条目“事务说明”和“程序”。6.将事务代码保存在开发类中。开发类可以用事务代码SM30维护视图V_TDEVC来创建或修改。第二章 ABAP/4程序语法和格式本节说明ABAP/4语法,并且提供关于如何在ABAP/4中编程的建议。同时解释如何提高程序的清晰性,以及使用已有程序代码模块使编程变得更加容易。本节的主题包括:本节只是概述。关于单个ABAP/4组件的详细信息,参见本宝典的相应主题。一、 语法元素ABAP/4编程语言包括下

22、列元素类型:语句ABAP/4程序包括单个ABAP/4语句。每条语句以关键字开头,以句号结束。PROGRAM SAPMTEST.WRITE First Program.该示例包含两条语句,每行一条。关键字是PROGRAM和WRITE。程序在屏幕上显示输出(称为列表)。此示例中,列表包括“第一个程序”行。关键字关键字是语句的第一个词。它决定整个语句的意义。有四种不同类型的关键字:说明性关键字这些关键字定义数据类型,或者说明程序可以访问的数据对象。说明性关键字示例:TYPES,DATA,TABLES系统在生成程序期间处理说明性关键字,而不是在运行时。在程序代码中独立于其位置处理它们。为清楚起见,应该

23、在程序开头的“说明部分”指定所有说明性关键字。关于说明关键字的详细信息,参见声明数据。事件关键字这些关键字在ABAP/4程序中定义处理块。处理块是当特定事件发生时进行处理的语句组。事件关键字示例如下:AT SELECTION SCREEN, START-OF-SELECTION, AT USER-COMMAND 关于事件关键字的详细信息,参见用事件控制ABAP/4程序流。控制关键字这些关键字根据特定条件控制ABAP/4程序流。控制关键字示例如下:IF,WHILE,CASE关于控制关键字的详细信息,参见控制ABAP/4程序流。操作关键字当某事件(由事件关键字触发)和条件(由控制关键字定义)发生时

24、,这些关键字则处理数据(由说明性关键字定义)。操作关键字示例如下:WRITE, MOVE, ADD关于控制关键字的详细信息,参见 See also: 第五章 处理数据 。注释注释是写在ABAP/4程序语句之间用来向读者解释其目的的文本摘要。注释有导致系统忽略它们的特殊字符标记。应该在内部开发程序中使用注释。注释帮助其他用户理解和更改程序。* PROGRAM SAPMTZST * CREATED BY CARL BYTE, 06/27/1995 * LAST CHANGE BY RITA DIGIT, 10/01/1995 * PURPOSE: DEMONSTRATION *PROGRAM SA

25、PMTEST.* DECLARATION PART *DATA .* OPERATION PART *.所有以星号(*)开始的行都是注释,并且被系统忽略(关于注释的详细信息,参见下一节语法结构中的注释结构)。二、 语法结构ABAP/4程序是具有特定结构的不同语句的顺序。可以在语句间插入注释。分开的但相似的语句顺序可以组成链语句。语句结构下列图表显示ABAP/4语句的结构。ABAP/4没有格式限制。可以自由格式输入语句。这意味着可以缩排语句、在一行中写几条语句或者一条语句跨越几行。在语句中必须以至少一个空格分开词。系统也将行结束符解释为空格。语句以句号“.”作为结束,一条语句可以跨越多行。程序段

26、PROGRAM SAPMZTST.WRITE This is a statement.也可以如下编写:PROGRAM SAPMTEST. WRITE This is a statement.或者如下: PROGRAM SAPMTEST. WRITE This is a statement.应该使用自由格式提高程序的可读性,但是应避免使用复杂格式。注释结构可以在程序的任意处插入注释行。在程序中有两种方法表明注释:如果要将整行变为注释,则在行开始处输入星号(*)。如果要将某行的一部分变为注释,则在注释之前输入双引号()。系统将由双引号标明的注释解释为空格。PROGRAM SAPMTEST.* Th

27、e following line contains a WRITE statementWRITE First Program. Output on List本程序的第二行是不执行的注释。注释由行开始处的星号(*)标明。在第三行,双引号()之后全部都是注释并且不执行。程序的其余部分为带关键字PROGRAM和WRITE的可执行语句。连接相似语句ABAP/4编程语言允许将带相同起始部分的连续语句连入链语句。要连接分开的语句,只要写一次相同部分,并且在其后设置冒号(:)。在冒号后,列出语句的其余部分并用逗号(,)分开。请保证在最后部分之后设置句号以通知系统链的结束处。语句顺序:WRITESPFLI-C

28、ITYFROM.WRITE SPFLI-CITYTO.WRITE SPFLI-AIRPTO.链语句:WRITE: SPFLI-CITYFROM, SPFLI-CITYTO, SPFLI-AIRPTO.在链中,冒号将语句的开始部分与可变部分分开。可以在冒号(或逗号)之前或之后插入任意个空格。例如,可以写如下相同语句:WRITE: SPFLI-CITYFROM, SPFLI-CITYTO, SPFLI-AIRPTO.在链语句中,第一部分(冒号之前)不受语句关键字的限制。语句顺序:SUM = SUM + 1.SUM = SUM + 2.SUM = SUM + 3.SUM = SUM + 4.链语句:

29、SUM = SUM + : 1, 2, 3, 4.三、 ABAP/4程序格式要编写高质量的程序,不仅应该遵循命名约定(参见 See also: 命名程序规则 ),而且要保持一定的ABAP/4程序格式标准。一开始定义数据就应该注意这些标准。在构建程序流时注意下列主题中的建议,并且尽可能地使用信息注释。如果遵照这些建议,程序将更具有可读性更容易测试和更改更可靠要提高程序的质量,请使用下列技术:ABAP/4编辑器包括更容易分配程序格式的工具。该工具称为整齐打印程序。缩排语句块应该将属于一组的语句组成单一块。关于语句块的详细信息,参见 See also: 第六章 控制ABAP/4程序流 。每块至少缩排

30、两列,如下所示。使用模块化工具要编出好的程序,应该使用ABAP/4模块化工具(参见 See also: 第八章 模块化ABAP/4程序 )。如果将大处理块写成子程序,则程序的逻辑结构容易识别。允许根据执行的任务排序子程序。子程序可能增加程序的总长度,但是您将发现该方法大大增加清晰性,特别是在复杂程序的情况下。如果按系统执行的顺序排列子程序,则程序代码很容易读。正确插入程序注释应该避免在语句行中放置注释。在注释行放置它们将提高程序的可读性。要在程序中插入子程序标题和注释,请使用ABAP/4编辑器可用的已有结构。在子程序标题中,解释调用程序的目的并且提供足够的信息和参考。关于已有结构的详细信息,参

31、见插入已有关键字结构和在ABAP/4工作台工具中的ABAP/4编辑器文档。整齐打印程序使用整齐打印程序可以更容易地遵循ABAP/4格式指南。整齐打印程序是ABAP/4编辑器的可选功能(有关详细信息,参见 ABAP/4工作台工具 中的 ABAP/4 编辑器文档 )。要从ABAP/4编辑器调用整齐打印程序,请选择菜单“编辑-规范化打印机”。这里是整齐打印程序如何工作的示例。下面显示在使用整齐打印程序之前程序的格式 :PROGRAM ZSAPMTEST. DATA: SUM1 TYPE I, SUM2 TYPE I, SUM3 TYPE I. IF SUM1 = SUM2. WRITE Case 1

32、. ELSEIF SUM1 = SUM3. WRITE Case 2. ENDIF.使用整齐打印程序之后,相同程序如下所示:PROGRAM ZSAPMTEST.DATA: SUM1 TYPE I, SUM2 TYPE I, SUM3 TYPE I.IF SUM1 = SUM2. WRITE Case 1.ELSEIF SUM1 = SUM3. WRITE Case 2.ENDIF.四、 插入已有结构已有结构可以简化ABAP/4程序的编码。它提供确切的语法,并且遵循ABAP/4格式指南。使用ABAP/4编辑器时可以在程序中插入两种已有结构:关于已有结构的详细信息,参见ABAP/4工作台工具中的A

33、BAP/4编辑器文档。插入已有关键字结构要在代码中插入已有关键字结构,请进行下列操作:1.将光标放在要插入结构的行上。2.选择菜单“编辑-模式”。3.在出现的对话框中,选择带单选按钮的语句,或者在“其它结构”字段中输入:要显示所有可用的已有关键字结构的列表,请将光标放在“其它模式”字段上,并且单击输入字段右侧的可能条目箭头。所有首字符为星号(*)的语句都是已有注释行(关于已有注释行的详细信息,参见插入已有注释行(页11))。如果在对话框的“其它模式”字段中输入CASE,则系统在程序中插入如下行:CASE f. WHEN w1. . WHEN w2. . WHEN OTHERS. .ENDCAS

34、E.插入已有注释行要在代码中插入已有注释行,请执行下列操作:1.遵照 插入已有关键字结构 中的1到2步骤。2.在对话框的“其他模式”字段的可能条目列表中选择带首字符为星号(*)的结构。3.系统将注释行插入到程序中。如果在对话框的“其他模式”字段中输入*3,则系统在程序中插入如下行:* * * *第三章 将数据输出到屏幕本节说明如何在屏幕上创建简单输出列表。为此,请使用WRITE语句。下面将介绍:ABAP/4允许在屏幕和纸张上,生成比这里看到的更复杂和更有效的输出列表。这些介绍是后面章节(例如,创建列表)的基础。一、 WRITE语句在屏幕上输出数据的基本ABAP/4语句是WRITE。语法WRIT

35、E .该语句以其标准格式,将字段输出到当前列表中。默认情况下,该列表显示在屏幕上。字段可以是任何数据对象(参见数据对象)字段符号或公式参数(参见使用字符符号(页使用字段符号))文本符号(参见Working with Text Elements)选择“打印”,可以直接从输出屏幕打印当前输出列表。如果为程序定义选项屏幕(参见使用选择屏幕),就可以在选择屏幕上选择“执行和打印”,然后,该列表不输出到屏幕上,而是直接发送到打印机。PROGRAM SAPMZTST.WRITE Hello, here I am!.当启动该程序时,系统离开当前屏幕(这可能是“ABAP/4编辑器:初始屏幕”),并如下所示转到

36、输出屏幕:输出屏幕与在程序属性中指定的程序标题有相同的名称(参见指定程序属性)。屏幕上的第一行包含列表表头。默认情况下,该列表表头与程序标题相同。但是,可以由实际程序外的程序标题单独维护列表表头。详细信息,参见(使用文本摘要)。当前页号(1)出现在右边。列表表头后紧跟着一条水平线,然后显示输出。可以选择“搜索”,以搜索特定模式。在屏幕上,输出通常是左对齐的。如果使用几个WRITE语句,输出字段就一个接一个显示,输出之间由列分开(如一个空格)。如果当前行没有足够空间,则开始新行。PROGRAM SAPMTEST.TABLES SPFLI.WRITE: COMPANY: , SPFLI-CARRI

37、D.注意冒号和逗号的用法(参见语法结构)。该示例中的程序段向屏幕输出两个字段:文字“COMPANY:”和表格工作 区 SPFLI 的组件 CARRID:COMPANY: AA。输出屏幕上的数据字段格式,依赖数据类型(参见预定义的基本数据类型)。预定义数据类型的输出格式数据类型输出长度定位C字段长度左对齐D8左对齐F22右对齐I11右对齐N字段长度左对齐P2*字段长度(1)右对齐T6左对齐X2*字段长度左对齐数字数据类型F、I和P是右对齐的,左边用空格填充。如果有足够的空间,也输出千位分隔符。如果类型P字段包含小数位,则默认输出长度增加一位。对数据类型D,日期的内部格式与输出格式不同。当输出数据

38、使用WRITE语句时,系统自动以用户主记录中指定的格式(例如,DD/MM/YYYY或MM/DD/YYYY),输出数据类型D。PROGRAM SAPMTEST.DATA NUMBER TYPE P VALUE -1234567.89 DECIMALS 2.WRITE: Number, NUMBER, is packed.输出如下:Number 1,234,567.89- is packed字段NUMBER总长为13,即,9位数字(包括小数点)、前导负号和作为分隔符的两个逗号。因为类型P字段的字段长度为8,所以NUMBER字段的输出长度为2*8+1=17。剩余的位置用四个空格填充。这意味着,在文字

39、Number和数字自身之间有五个空格。二、 在屏幕上定位WRITE输出如下所示,通过制定字段名称前面的格式规范,可以在屏幕上定位WRITE语句的输出:语法WRITE AT /() .此处斜线/表示新的一行是最长为三位数字的数字或变量,表示在屏幕上的位置是最长为三位数字的数字或变量,表示输出长度如果格式规范只包含直接值(即,不是变量),可以忽略关键字AT。WRITE First line.WRITE Still first line.WRITE / Second line.WRITE /13 Third line.这在屏幕上生成如下输出:First Line. Still first line.

40、 Second line. Third line.如果指定某一个位置,则无论在该位置是否有可用的空间,或写有其它字段,总是在该位置输出字段。DATA: LEN TYPE I VALUE 10, POS TYPE I VALUE 11, TEXT(10) VALUE 1234567890WRITE The text - appears in the text.WRITE AT POS(LEN) TEXT.这在屏幕上生成如下输出:The text -1234567890- appears in the text.如果输出长度太短,则显示几个字符。左边截断数字字段,并用星号(*)作前缀。右边截断所有

41、其它字段,但是没有给出该字段较短的指示。DATA: NUMBER TYPE I VALUE 1234567890, TEXT(10) VALUE abcdefghij. WRITE: (5) NUMBER, /(5) TEXT.输出如下:*7890abcde三、 格式化选项对 WRITE 语句,可以 使用不同的 格式化选项 。语法WRITE . .所有数据类 型的格式化 选项选项用途LEFT-JUSTIFIED输 出左对齐。 CENTERED输 出居中。RIGHT-JUSTIFIED输 出右对齐。 UNDER 输出 直接开始于 字段 下。NO-GAP忽 略字段 后的空格。 USING EDIT MASK 指定 格式模板 。USING NO EDIT MASK撤 消对 ABAP/4 词典中指定 的格式模板 的激活。NO-ZERO如 果字段仅包 含零,则用 空格代替它 们。对类型 C 和 N 字段,将自 动代替前导 零。数字字段的 格式化选项选项用途NO-SIGN如果是类型I,P或F,不 输出前导符 号。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号