资源描述
公司内训资料(密)
SAP最初开发ABAP/4(高级商业应用程序设计)语言仅为内部使用,为应用程序员提供优化的工作环境。经过不断的改进和修改以满足商业领域的需要。现在,ABAP/4已成为SAP开发所有自己的应用程序的仅有工具。
SAP客户用ABAP/4进行其自身开发。这样的开发对R/3标准解决方案适应特殊问题非常重要。ABAP/4开发工作平台包含所有用于创建和维护ABAP/4程序的工具。
ABAP/4的可解释特性使其易于生成、测试并运行程序的中级版本,以便将来生成最终版本。此过程也叫做早期原形处理,意味着您不必丢弃中级版本。
ABAP/4是第四代支持结构化程序设计的语言。它合并了所有通常的控制结构和模块化概念。
在ABAP/4开发宝典中文版的第一部分,对ABAP/4的基本特性进行了详细描述。这些特性包括:
· ABAP/4包括
- 带有各种类型和结构的声明数据的声明元素
- 数据制作的操作元素
- 控制程序流的控制元素
- 反应外部事件的事件元素
· ABAP/4支持多种语言。文本摘要(例如,标题、页眉和其他文本)将根据程序代码分别存储。您可以随时在不改变程序代码的情况下更改、转换和维护这些文本摘要。
· ABAP/4支持商业数据类型和操作。您可以用特殊日期和时间字段进行计算。系统会自动执行必需的类型转换。
· ABAP/4提供一系列功能处理字符串。
· ABAP/4包含一个叫OpenSQL的SQL子集。用OpenSQL,您可以读取和访问数据库表,与所用的数据库系统无关。
· ABAP/4允许您定义和处理内部表,该表只在运行程序时存在。内部表使其更容易处理数据表,并帮助使用程序中的复杂数据结构。
· ABAP/4允许您定义和调用子程序。也可以调用其他程序的子程序。参数能够以各种方式从子程序传递或传递到子程序。
· ABAP/4包含一种特殊子程序,叫做功能模块。您可以在中央库中创建和维护功能模块。在调用程序和子程序之间功能模块有一个明确定义的数据接口。它们能够以调用程序的独立模式进行分别测试。
这里有两种主要的ABAP/4程序类型:
· 报表程序
报表程序用于分析数据库表中的数据。这种分析的结果可以显示在屏幕上或发送到打印机上。逻辑数据库支持报表程序。逻辑数据库是特殊的ABAP/4程序,使开发者不必编码所有的数据库访问。关于报表程序的详细信息,参见《ABAP/4开发宝典中文版》的第二部分。
· 对话程序
将对话程序组织为包含对话模块的模块池。每个动态程序(由一个屏幕及其流逻辑组成的“动态程序”)都基于一个ABAP/4对话程序。流逻辑包含对ABAP/4对话模块的调用。关于对话程序的详细信息,参见《ABAP/4开发宝典中文版》的第三部分。
语法约定
本文档中涉及的语法语句约定如下:
关键字
定义
语句
关键字和语句选项大写。
<变量>
变量或代表所填入值的词用尖括号括起来。在所使用的值中不要包括角括号
(例外:字段符号)
[]
方括号表明用户没有使用、使用一个或多个附加选项。在用户选项中不要
包括方括号。
|
两选项之间的竖条表明用户可以使用一个或另一个选项。
()
应将括号作为命令的一部分键入
,
逗号表示用户可选择多个选项,用逗号隔开,作为命令的一部分键入。
<f1><f2>
带索引的变量表明用户可列出多个变量。变量之间要采用与前两个一样的
符号隔开。
.......
点号表明用户可在此处放置上下文中允许的任何东西。
在语法指令中,关键字大写,变量放进角括号中。在程序中键入关键字时可以忽略大小写。WRITE、Write和write完全一样。
输出屏幕上的输出或者采用屏幕弹出形式或者采用如下格式:
Screen output.
第一部分 ABAP/4基础
第一章 创建简单的ABAP/4程序
本节描述如何创建简单的ABAP/4程序。了解如何创建ABAP/4程序将有助于了解本指南中的其它主题。
创建简单的ABAP/4程序涉及下列基本步骤:
1. 命名程序
2. 指定程序属性
3. 编写程序代码
4. 测试程序
本节也描述如何显示或更改现有程序以及如何从编辑器中启动程序。
此处描述的创建新ABAP/4程序的过程适用于报表和短培训程序。在开始编写报表程序之前,用户也许想先创建报表和短培训程序以熟悉ABAP/4语法。要为新事务创建模块存储,可以采用不同于报表程序的方式进行。关于如何为事务创建模块存储的详细信息,参见ABAP/4模块池。
关于ABAP/4编辑器和调试过程的详细信息,参见文档ABAP/4工作台工具。
本节讲述下列主题:
一、命名程序
要创建ABAP/4程序,请进行如下操作:
1. 在“SAPR/3”初始屏幕上选择“工具->ABAP/4工作台”。
出现“ABAP/4开发工作台”屏幕
2. 选择“ABAP/4编辑器”
“ABAP/4编辑器初始屏幕”如下所示:
3. 为在“程序”字段中创建的程序输入名称(关于创建程序名称的详细信息,参见命名程序规则(页455))。
4. 选择“创建”。
不论在“对象组件”下选择什么,都出现“ABAP/4:程序属性”屏幕。
当命名并创建程序后,可以定义其属性(关于定义程序属性的详细信息,参见指定程序属性(页457))。
创建ABAP/4程序还有其它过程。例如,可以:
1. 选择“ABAP/4开发工作台”屏幕上的“对象浏览”。
2. 选择“对象列表”下的“程序”。
3. 选择“单一对象”下的“程序对象”。
4. 输入程序名并单击“显示”。
如果程序不存在,则询问是否要创建它。关于对象浏览器及创建程序其它过程的
详细信息,参见文档ABAP/4工作台工具。
二、命名程序规则
当创建程序名称时请遵循如下规则:
_ 使用至少1个但不超过8个字符。
_ 不要使用下列字符
- 句点(.)
- 逗号(,)
- 空格()
- 括号'('')'
- 单引号(')
- 双引号(")
- 等号(=)
- 星号(*)
- 元音变音(_,_,_,_,_,_)和'_'
- 百分号(%)和下划线(_):因为这些符号是SQL语句的通配符,所以也会导致问题(参见为在程序中选定行指定条件)。SAP建议在程序名称中不要使用它们。
创建程序名称时请遵守这些命名约定:
_ 报表程序(以列表格式输出数据分析):Yaxxxxxx或Zaxxxxxx。用应用程序区的分类字母替换a。用任何有效字符替换x。注意SAP报表程序遵守相似的命名约定:Raxxxxxx。
_ 任何其它ABAP/4程序(培训程序或事务程序):SAPMYxxx或SAPMZxxx。用有效字符替换x。注意标准SAPABAP/4程序遵守相似的命名约定:SAPMaxxx,其中a代表某应用程序区。
三、命名程序属性
程序属性决定程序属于哪种应用程序以及程序所链接的逻辑数据库。必须谨慎输入属性以便系统能正确处理程序(有关程序属性的详细信息,参见重要的程序属性(页459))。
已经将名称分配给程序并选择“ABAP/4编辑器初始屏幕”上的“创建”时,出现“ABAP/4:程序属性”屏幕。
要输入程序属性,请进行如下操作:
1. 在字段“标题”中输入程序标题。选择描述程序功能的标题。系统自动将标题与文本摘要合并。如果以后要更改标题,请按如下操作进行:
- 选择“ABAP/4编辑器初始屏幕”上的“文本摘要”或“属性”。
- 选择“更改”。
2. 完成两个强制字段:
- 如果创建报表程序,则在“类型”字段中输入1,如果创建模块存储,则在“类型”字段中输入M。关于可能类型的列表,请单击可能条目箭头。
- 在“应用程序”字段中为应用程序输入分类字母,如财务会计输入F。
3. 如果创建报表(类型=1),请选择“确定”。
系统将特定报表属性自动插入输入字段。然后看见附加字段“逻辑数据库”、“从应用程序”和“选择屏幕”(版本)。
4. 指定与程序相关的所有其他属性(有关程序属性的详细信息,参见重要的程序属性(页459))。
5. 选择“保存”以保存属性。
6. 出现“维护对象目录条目”窗口。
7. 输入开发类。
如果为培训或测试目的创建程序(如某私有对象),则输入开发类$TMP或选择“逻辑对象”。
8. 选择“保存”以保存开发类。
这将关闭“维护对象目录条目”窗口并返回“ABAP/4:程序属性”屏幕。
9. 选择“后退”离开屏幕。如果要直接转到ABAP/4编辑器,请选择“转向->源代码”。
如果通过预定义开发类在“对象浏览器”中创建程序,则跳过步骤6到8。
四、重要的程序属性
最重要的程序如下所述。关于其它属性的详细信息(或关于此处描述的属性的详细信息),请选择相关的输入字段,并单击可能的条目箭头。
注意下述某些属性只适用于报表程序并不适用于其他ABAP/4程序。
类型
除了类型1(如同报表的独立程序)和M(模块存储),还应该注意类型I(包含程序)。包含程序是个独立的程序,它有两个主要特征。首先,它包含程序代码,不同程序都可使用该代码。其次,它用于模块化程序源代码,该代码分成逻辑相关部分。其中每个部分都存储在不同的包含程序中。包含程序改善源代码的可读性并有助于
维护。(有关包含程序的详细信息,参见包含程序)。
应用程序
“应用程序”字段包括应用程序的缩写,如,财务会计缩写为F。该必需条目使系统能将程序分配给适当的业务区。
开发类
开发类对系统之间进行传输非常重要。执行传输时,可以将分配给某个开发类的工作台对象组合起来。
如果用户在某组中工作,也许要将程序分配给现有开发类或创建新的开发类。分配给开发类$TMP的程序是私有对象并且不能传输到其他系统。
但是,也可以通过选择“ABAP/4编辑器初始屏幕”上的“程序->重新分配...”更改分配给程序的开发类。
应用程序中的逻辑数据库(仅报表程序)
这些属性决定报表使用哪个逻辑数据库检索数据,以及逻辑数据库属于哪个应用程序。应用程序中数据库名称必须是唯一的。但是,整个系统可以包括数个同名数据库。因此指定应用程序很重要。关于逻辑数据库的详细信息,参见逻辑数据库的特性和维护。
如果报表程序直接读取数据,而未使用逻辑数据库(关于此主题的详细信息,参见访问带逻辑数据库的数据库表),则应该象通常一样指定应用程序,但将“逻辑数据库”字段置空。
选择屏幕版本(仅报表程序)
如果没有指定选择屏幕版本,则系统在逻辑数据库选择标准、报表特定参数及选择选项的基础上自动创建选择屏幕(关于选择屏幕的详细信息,参见使用选择屏幕)。
如果想使用自己的选择屏幕,请在此字段中输入号码。该号码必须小于1000。可以通过按F4或在DBxxxSEL程序中找到现有选择屏幕号码(详细信息,参见逻辑数据库选择)。
大写/小写
显示和存储时,如果要让ABAP/4编辑器将程序代码与输入时保持相同,则请将该字段置空。如果选择该字段,则所有的程序代码(除了引号中的文本及注释外)都转换成大写字母。屏幕显示依赖于所使用的编辑器模式(详细信息,参见文档ABAP/4工作台工具。
编辑器锁定
如果设置此属性,则其他用户则不能修改、改名或删除程序。只有用户可以更改程序、维护属性、文本摘要及文档;或者解除锁定。
定点算术
如果设置此属性,系统则根据小数点位数将类型P字段四舍五入,或用零填补(关于类型P字段的详细信息,参见数字数据类型(页3-4))。这种情况下,无论在用户主记录中指定了什么,小数点字符总是句点(.)。
通过变式启动(仅报表程序)
如果设置该属性,则用户只可以使用变式启动报表程序。在启动程序之前,必须创建至少一个报表变式(关于创建变式的详细信息,参见使用变式预设置选择)。
五、编写程序
在ABAP/4编辑器中编写ABAP/4程序。
可以直接从“ABAP/4程序属性”屏幕切换到编辑器,也可以从“ABAP/4编辑器初始屏幕”中调用编辑器。
请进行如下操作:
1. 在“ABAP/4程序属性”屏幕上选择“转向->源代码”或“源代码”。
选定“源代码”并选择“ABAP/4编辑器初始屏幕”上的“更改”。
出现“ABAP/4编辑器编辑程序”屏幕。
系统自动输入第一个ABAP/4语句,如
REPORT <report name> or PROGRAM <program name>.
对于 <report/program name>,系统使用在“ABAP/4编辑器初始屏幕”上输入的名称。
语句REPORT和PROGRAM实际上具有相同功能。它们使系统能识别报表程序或任何其他ABAP/4程序并允许为输出列表指定一定的标准:
REPORT或PROGRAM语句可以有不同的参数,如LINE-SIZE、LINE-COUNT或NO STANDARD PAGE HEADING。这些参数主要适用于报表程序,用来分析数据并输出结果列表。
关于列表的详细信息,参见[ See also: 第六章 创建列表 <file://nyf:\1\2\5\> ]或参见REPORT和PROGRAM上的关键字文档。
2. 输入程序代码。
3. 选择“检查”进行语法检查。然后系统扫描程序代码寻找语法错误及不相容处。如果检查出错误,则出现消息报告它并且有可能的话将建议解决方案或更正。将光标放在适当的位置上。
4. 选择“保存”保存代码。
源文本存储在程序库中。
六、测试程序
测试程序检查代码是否正确工作。
为测试目的要运行程序,选择“ABAP/4编辑器编辑程序”屏幕上的“程序->执行”。
系统执行该程序,如同从“ABAP/4编辑器初始屏幕”中启动的一样。例如,创建报表程序之后,则首先出现从中输入条件的选择屏幕,然后是结果列表。
如果正创建ABAP/4程序模块,则必须在运行程序之前创建事务代码(关于创建事务代码的详细信息,参见对话编程简介)。
出于测试目的,可以先不进行保存,直接运行某个不是模块存储部件的程序。编辑器保留一个包含更改的临时版本。但是,测试结束后必须返回编辑器以确保所有更改都已保存。
七、显示或更改程序
本节主要说明如何显示或更改现有程序。此处相关的是技术步骤而不是实际代码更改。
要显示或更改程序,请进行如下操作:
1. 在“ABAP/4编辑器初始屏幕”上的“程序”字段中输入要更改的程序名称。
2. 选择“源代码”并选择“显示”或“更改”。
如果选择“更改”则继续步骤3。
如果选择“显示”,则看到“ABAP/4编辑器显示程序”屏幕。此处也显示源代码,但不能进行更改。可以通过选择“显示->更改”切换到更改模式。
3. 如果其他用户锁定该程序对编辑器的访问,则系统显示下列消息:
User <name> forbade all changes.
在这种情况下,不能更改程序。要更改程序,必须将它复制到新程序中并用新程序名再开始步骤1。否则,继续步骤5。
4. 输入对程序代码的更改。
5. 选择“检查”检查语法。
6. 保存程序的更改版本。
如果更改程序的私有版本(开发类$TMP),则立即保存更改版本。
如果从$TMP之外的开发类更改程序,则会出现一个窗口,从中可以指定更正请求号(Change Request Number)。
7. 运行程序测试它(关于测试的详细信息,参见测试程序(页11))。
八、将事务代码分配给程序
可以将事务代码分配给类型1的单独程序,以后就将这些程序作为事务代码处理。在[ See also: 第三部分 编写ABAP/4事务 <file://nyf:\1\3\> ]中对事务有说明。
进行如下操作:
1. 按照本节上述主题所述,创建单独程序。
2. SAP菜单树:工具 -> ABAP 工作台 -> 开发 -> 其他工具 -> 事务,事务代码:SE93。
3. 填入事务代码并选择“维护事务”屏幕上的“创建”
4. 在下列对话屏幕上选择“报表事务”;
5. 在下列“创建报表事务”屏幕上填入所需条目“事务说明”和“程序”。
6. 将事务代码保存在开发类中。
开发类可以用事务代码SM30维护视图V_TDEVC来创建或修改。
第二章 ABAP/4程序语法和格式
本节说明ABAP/4语法,并且提供关于如何在ABAP/4中编程的建议。同时解释如何提高程序的清晰性,以及使用已有程序代码模块使编程变得更加容易。本节的主题包括:
本节只是概述。关于单个ABAP/4组件的详细信息,参见本宝典的相应主题。
一、 语法元素
ABAP/4编程语言包括下列元素类型:
语句
ABAP/4程序包括单个ABAP/4语句。每条语句以关键字开头,以句号结束。
PROGRAM SAPMTEST.
WRITE 'First Program'.
该示例包含两条语句,每行一条。关键字是PROGRAM和WRITE。程序在屏幕上显示输出(称为列表)。此示例中,列表包括“第一个程序”行。
关键字
关键字是语句的第一个词。它决定整个语句的意义。有四种不同类型的关键字:
说明性关键字
这些关键字定义数据类型,或者说明程序可以访问的数据对象。说明性关键字示例:
TYPES,DATA,TABLES
系统在生成程序期间处理说明性关键字,而不是在运行时。在程序代码中独立于其位置处理它们。为清楚起见,应该在程序开头的“说明部分”指定所有说明性关键字。
关于说明关键字的详细信息,参见声明数据。
事件关键字
这些关键字在ABAP/4程序中定义处理块。处理块是当特定事件发生时进行处理的语句组。事件关键字示例如下:
AT SELECTION SCREEN, START-OF-SELECTION, AT USER-COMMAND
关于事件关键字的详细信息,参见用事件控制ABAP/4程序流。
控制关键字
这些关键字根据特定条件控制ABAP/4程序流。控制关键字示例如下:
IF,WHILE,CASE
关于控制关键字的详细信息,参见控制ABAP/4程序流。
操作关键字
当某事件(由事件关键字触发)和条件(由控制关键字定义)发生时,这些关键字则处理数据(由说明性关键字定义)。操作关键字示例如下:
WRITE, MOVE, ADD
关于控制关键字的详细信息,参见[ See also: 第五章 处理数据 <file://nyf:\1\1\4\> ]。
注释
注释是写在ABAP/4程序语句之间用来向读者解释其目的的文本摘要。注释有导致系统忽略它们的特殊字符标记。应该在内部开发程序中使用注释。注释帮助其他用户理解和更改程序。
************************************************
* PROGRAM SAPMTZST *
* CREATED BY CARL BYTE, 06/27/1995 *
* LAST CHANGE BY RITA DIGIT, 10/01/1995 *
* PURPOSE: DEMONSTRATION *
************************************************
PROGRAM SAPMTEST.
************************************************
* DECLARATION PART *
************************************************
DATA ......
......
************************************************
* OPERATION PART *
************************************************
......
所有以星号(*)开始的行都是注释,并且被系统忽略(关于注释的详细信息,参见下一节语法结构中的注释结构)。
二、 语法结构
ABAP/4程序是具有特定结构的不同语句的顺序。
可以在语句间插入注释。
分开的但相似的语句顺序可以组成链语句。
语句结构
下列图表显示ABAP/4语句的结构。
ABAP/4没有格式限制。可以自由格式输入语句。这意味着可以缩排语句、在一行中写几条语句或者一条语句跨越几行。
在语句中必须以至少一个空格分开词。系统也将行结束符解释为空格。
语句以句号“.”作为结束,一条语句可以跨越多行。
程序段
PROGRAM SAPMZTST.
WRITE 'This is a statement'.
也可以如下编写:
PROGRAM SAPMTEST. WRITE 'This is a statement'.
或者如下:
PROGRAM
SAPMTEST.
WRITE
'This is
a statement'.
应该使用自由格式提高程序的可读性,但是应避免使用复杂格式。
注释结构
可以在程序的任意处插入注释行。在程序中有两种方法表明注释:
如果要将整行变为注释,则在行开始处输入星号(*)。
如果要将某行的一部分变为注释,则在注释之前输入双引号(")。系统将由双引号标明的注释解释为空格。
PROGRAM SAPMTEST.
* The following line contains a WRITE statement
WRITE 'First Program'. " Output on List
本程序的第二行是不执行的注释。注释由行开始处的星号(*)标明。
在第三行,双引号(")之后全部都是注释并且不执行。
程序的其余部分为带关键字PROGRAM和WRITE的可执行语句。
连接相似语句
ABAP/4编程语言允许将带相同起始部分的连续语句连入链语句。
要连接分开的语句,只要写一次相同部分,并且在其后设置冒号(:)。在冒号后,列出语句的其余部分并用逗号(,)分开。请保证在最后部分之后设置句号以通知系统链的结束处。
语句顺序:
WRITESPFLI-CITYFROM.
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.
链语句:
SUM = SUM + : 1, 2, 3, 4.
三、 ABAP/4程序格式
要编写高质量的程序,不仅应该遵循命名约定(参见[ See also: 命名程序规则 <file://nyf:\1\1\0\1\> ]),而且要保持一定的ABAP/4程序格式标准。
一开始定义数据就应该注意这些标准。在构建程序流时注意下列主题中的建议,并且尽可能地使用信息注释。如果遵照这些建议,程序将
更具有可读性
更容易测试和更改
更可靠
要提高程序的质量,请使用下列技术:
ABAP/4编辑器包括更容易分配程序格式的工具。该工具称为整齐打印程序。
缩排语句块
应该将属于一组的语句组成单一块。关于语句块的详细信息,参见[ See also: 第六章 控制ABAP/4程序流 <file://nyf:\1\1\5\> ]。
每块至少缩排两列,如下所示。
使用模块化工具
要编出好的程序,应该使用ABAP/4模块化工具(参见[ See also: 第八章 模块化ABAP/4程序 <file://nyf:\1\1\7\> ])。
如果将大处理块写成子程序,则程序的逻辑结构容易识别。允许根据执行的任务排序子程序。
子程序可能增加程序的总长度,但是您将发现该方法大大增加清晰性,特别是在复杂程序的情况下。如果按系统执行的顺序排列子程序,则程序代码很容易读。
正确插入程序注释
应该避免在语句行中放置注释。在注释行放置它们将提高程序的可读性。
要在程序中插入子程序标题和注释,请使用ABAP/4编辑器可用的已有结构。在子程序标题中,解释调用程序的目的并且提供足够的信息和参考。关于已有结构的详细信息,参见插入已有关键字结构和在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'.
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工作台工具中的ABAP/4编辑器文档。
插入已有关键字结构
要在代码中插入已有关键字结构,请进行下列操作:
1. 将光标放在要插入结构的行上。
2. 选择菜单“编辑->模式”。
3. 在出现的对话框中,选择带单选按钮的语句,或者在“其它结构”字段中输入:
要显示所有可用的已有关键字结构的列表,请将光标放在“其它模式”字段上,并且单击输入字段右侧的可能条目箭头。所有首字符为星号(*)的语句都是已有注释行(关于已有注释行的详细信息,参见插入已有注释行(页11))。
如果在对话框的“其它模式”字段中输入CASE,则系统在程序中插入如下行:
CASE f.
WHEN w1.
......
WHEN w2.
......
WHEN OTHERS.
......
ENDCASE.
插入已有注释行
要在代码中插入已有注释行,请执行下列操作:
1. 遵照 插入已有关键字结构 中的1到2步骤。
2. 在对话框的“其他模式”字段的可能条目列表中选择带首字符为星号(*)的结构。
3. 系统将注释行插入到程序中。
如果在对话框的“其他模式”字段中输入**3,则系统在程序中插入如下行:
*********************************************************
* *
* *
* *
*********************************************************
第三章 将数据输出到屏幕
本节说明如何在屏幕上创建简单输出列表。为此,请使用WRITE语句。
下面将介绍:
ABAP/4允许在屏幕和纸张上,生成比这里看到的更复杂和更有效的输出列表。这些介绍是后面章节(例如,创建列表)的基础。
一、 WRITE语句
在屏幕上输出数据的基本ABAP/4语句是WRITE。
语法
WRITE <f>.
该语句以其标准格式,将字段<f>输出到当前列表中。默认情况下,该列表显示在屏幕上。
字段<f>可以是
任何数据对象(参见数据对象)
字段符号或公式参数(参见使用字符符号(页使用字段符号))
文本符号(参见Working with Text Elements)
选择“打印”,可以直接从输出屏幕打印当前输出列表。如果为程序定义选项屏幕(参见使用选择屏幕),就可以在选择屏幕上选择“执行和打印”,然后,该列表不输出到屏幕上,而是直接发送到打印机。
PROGRAM SAPMZTST.
WRITE 'Hello, here I am!'.
当启动该程序时,系统离开当前屏幕(这可能是“ABAP/4编辑器:初始屏幕”),并如下所示转到输出屏幕:
输出屏幕与在程序属性中指定的程序标题有相同的名称(参见指定程序属性)。
屏幕上的第一行包含列表表头。默认情况下,该列表表头与程序标题相同。但是,可以由实际程序外的程序标题单独维护列表表头。详细信息,参见(使用文本摘要)。当前页号(1)出现在右边。
列表表头后紧跟着一条水平线,然后显示输出。
可以选择“搜索”,以搜索特定模式。
在屏幕上,输出通常是左对齐的。如果使用几个WRITE语句,输出字段就一个接一个显示,输出之间由列分开(如一个空格)。如果当前行没有足够空间,则开始新行。
PROGRAM SAPMTEST.
TABLES SPFLI.
.............
WRITE: 'COMPANY: ', SPFLI-CARRID.
注意冒号和逗号的用法(参见语法结构)。
该示例中的程序段向屏幕输出两个字段:文字“COMPANY:”和表格工作 区 SPFLI 的组件 CARRID:
COMPANY: AA。
输出屏幕上的数据字段格式,依赖数据类型(参见预定义的基本数据类型)。
预定义数据类型的输出格式
数据类型
输出长度
定位
C
字段长度
左对齐
D
8
左对齐
F
22
右对齐
I
11
右对齐
N
字段长度
左对齐
P
2*字段长度(+1)
右对齐
T
6
左对齐
X
2*字段长度
左对齐
数字数据类型F、I和P是右对齐的,左边用空格填充。如果有足够的空间,也输出千位分隔符。如果类型P字段包含小数位,则默认输出长度增加一位。
对数据类型D,日期的内部格式与输出格式不同。当输出数据使用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。剩余的位置用四个空格填充。这意味着,在文字‘Number’和数字自身之间有五个空格。
二、 在屏幕上定位WRITE输出
如下所示,通过制定字段名称前面的格式规范,可以在屏幕上定位WRITE语句的输出:
语法
WRITE AT [/][<pos>][(<len>)] <f>.
此处
斜线‘/’表示新的一行
<pos>是最长为三位数字的数字或变量,表示在屏幕上的位置
<len>是最长为三位数字的数字或变量,表示输出长度
如果格式规范只包含直接值(即,不是变量),可以忽略关键字AT。
WRITE 'First line.'.
WRITE 'Still first line.'
WRITE / 'Second line.'
WRITE /13 'Third line.'
这在屏幕上生成如下输出:
First Line. Still first line.
Second line.
Third line.
如果指定某一个位置<pos>,则无论在该位置是否有可用的空间,或写有其它字段,总是在该位置输出字段。
DATA: LEN TYPE I VALUE 10,
POS TYPE I VALUE 11,
TEXT(10) VALUE '1234567890'
WRITE 'The text ------------ appears in the text.'.
WRITE AT POS(LEN) TEXT.
这在屏幕上生成如下输出:
The text -1234567890- appears in the text.
如果输出长度<len>太短,则显示几个字符。左边截断数字字段,并用星号(*)作前缀。右边截断所有其它字段,但是没有给出该字段较短的指示。
DATA: NUMBER TYPE I VALUE 1234567890,
TEXT(10) VALUE 'abcdefghij'.
WRITE: (5) NUMBER, /(5) TEXT.
输出如下:
*7890
abcde
三、 格式化选项
对 WRITE 语句,可以 使用不同的 格式化选项 。
语法
WRITE .... <f> <选项>.
所有数据类 型的格式化 选项
选项
用途
LEFT-JUSTIFIED
输 出左对齐。
CENTERED
输 出居中。
RIGHT-JUSTIFIED
输 出右对齐。
UNDER <g>
输出 直接开始于 字段 <g> 下。
NO-GAP
忽 略字段 <f> 后的空格。
USING EDIT MASK <m>
指定 格式模板 <m>。
USING NO EDIT MASK
撤 消对 ABAP/4 词典中指定 的格式模板 的激活。
NO-ZERO
如 果字段仅包 含零,则用 空格代替它 们。对类型 C 和 N 字段,
将自 动代替前导 零。
数字字段的 格式化选项
选项
用途
NO-SIGN
如果<f>是类型I,P或F,不 输出前导符 号。
展开阅读全文