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