第四章 将数据输出 到屏幕.docx
《第四章 将数据输出 到屏幕.docx》由会员分享,可在线阅读,更多相关《第四章 将数据输出 到屏幕.docx(10页珍藏版)》请在冰豆网上搜索。
第四章将数据输出到屏幕
第四章1将数据输出到屏幕
概览
内容
WRITE语句
在屏幕上定位WRITE输出
格式化选项
在屏幕上输出符号和图标
输出屏幕上的线和空行
垂直线
空行
将字段内容作为复选框输出
通过语句结构使用WRITE
本节说明如何在屏幕上创建简单输出列表。
为此,请使用WRITE语句。
下面将介绍:
ABAP/4允许在屏幕和纸张上,生成比这里看到的更复杂和更有效的输出列表。
这些介绍是后面章节(例如,创建列表)的基础。
1WRITE语句
在屏幕上输出数据的基本ABAP/4语句是WRITE。
语法
WRITE.
该语句以其标准格式,将字段输出到当前列表中。
默认情况下,该列表显示在屏幕上。
字段可以是
_任何数据对象(参见数据对象(页Error!
Notavalidlink.))
_字段符号或公式参数(参见使用字符符号(页使用字段符号))
_文本符号(参见WorkingwithTextElements(页Error!
Notavalidlink.))
选择“打印”,可以直接从输出屏幕打印当前输出列表。
如果为程序定义选项屏幕(参见使用选择屏幕),就可以在选择屏幕上选择“执行和打印”,然后,该列表不输出到屏幕上,而是直接发送到打印机。
PROGRAMSAPMZTST.
WRITE'Hello,hereIam!
'.
当启动该程序时,系统离开当前屏幕(这可能是“ABAP/4编辑器:
初始屏幕”),并如下所示转到输出屏幕:
输出屏幕与在程序属性中指定的程序标题有相同的名称(参见指定程序属性(页Error!
Notavalidlink.))。
屏幕上的第一行包含列表表头。
默认情况下,该列表表头与程序标题相同。
但是,可以由实际程序外的程序标题单独维护列表表头。
详细信息,参见(使用文本摘要(页Error!
Notavalidlink.))。
当前页号
(1)出现在右边。
列表表头后紧跟着一条水平线,然后显示输出。
可以选择“搜索”,以搜索特定模式。
在屏幕上,输出通常是左对齐的。
如果使用几个WRITE语句,输出字段就一个接一个显示,输出之间由列分开(如一个空格)。
如果当前行没有足够空间,则开始新行。
PROGRAMSAPMTEST.
TABLESSPFLI.
.............
WRITE:
'COMPANY:
',SPFLI-CARRID.
注意冒号和逗号的用法(参见语法结构(页Error!
Notavalidlink.))。
该示例中的程序段向屏幕输出两个字段:
文字“COMPANY:
”和表格工作区SPFLI的组件CARRID:
COMPANY:
AA。
输出屏幕上的数据字段格式,依赖数据类型(参见预定义的基本数据类型(页Error!
Notavalidlink.))。
予定义数据类型的输出格式
数据类型
输出长度
定位
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。
PROGRAMSAPMTEST.
DATANUMBERTYPEPVALUE'-1234567.89'DECIMALS2.
WRITE:
'Number',NUMBER,'ispacked'.
输出如下:
Number1,234,567.89-ispacked
字段NUMBER总长为13,即,9位数字(包括小数点)、前导负号和作为分隔符的两个逗号。
因为类型P字段的字段长度为8,所以NUMBER字段的输出长度为2*8+1=17。
剩余的位置用四个空格填充。
这意味着,在文字‘Number’和数字自身之间有五个空格。
3在屏幕上定位WRITE输出
如下所示,通过制定字段名称前面的格式规范,可以在屏幕上定位WRITE语句的输出:
语法
WRITEAT[/][][()].
此处
_斜线‘/’表示新的一行
_是最长为三位数字的数字或变量,表示在屏幕上的位置
_是最长为三位数字的数字或变量,表示输出长度
如果格式规范只包含直接值(即,不是变量),可以忽略关键字AT。
WRITE'Firstline.'.
WRITE'Stillfirstline.'
WRITE/'Secondline.'
WRITE/13'Thirdline.'
这在屏幕上生成如下输出:
FirstLine.Stillfirstline.
Secondline.
Thirdline.
如果指定某一个位置,则无论在该位置是否有可用的空间,或写有其它字段,总是在该位置输出字段。
DATA:
LENTYPEIVALUE10,
POSTYPEIVALUE11,
TEXT(10)VALUE'1234567890'
WRITE'Thetext------------appearsinthetext.'.
WRITEATPOS(LEN)TEXT.
这在屏幕上生成如下输出:
Thetext-1234567890-appearsinthetext.
如果输出长度太短,则显示几个字符。
左边截断数字字段,并用星号(*)作前缀。
右边截断所有其它字段,但是没有给出该字段较短的指示。
DATA:
NUMBERTYPEIVALUE1234567890,
TEXT(10)VALUE'abcdefghij'.
WRITE:
(5)NUMBER,/(5)TEXT.
输出如下:
*7890
abcde
5格式化选项
对WRITE语句,可以使用不同的格式化选项。
语法
WRITE....<选项>.
所有数据类型的格式化选项
选项
用途
LEFT-JUSTIFIED
输出左对齐。
CENTERED
输出居中。
RIGHT-JUSTIFIED
输出右对齐。
UNDER
输出直接开始于字段下。
NO-GAP
忽略字段后的空格。
USINGEDITMASK
指定格式模板。
USINGNOEDITMASK
撤消对ABAP/4词典中指定的格式模板的激活。
NO-ZERO
如果字段仅包含零,则用空格代替它们。
对类型C和N字段,将自动代替前导零。
数字字段的格式化选项
选项
用途
NO-SIGN
不输出前导符号。
DECIMALS
定义小数点后的数字位数。
EXPONENT
在类型F字段中,在中定义幂数。
ROUND
用10**(-r)乘类型P字段,然后取整。
CURRENCY
按表格TCURX中的货币格式化。
UNIT
按表格T006中为类型P字段所指定的单位固定小数位数。
日期字段的格式化选项
选项
用途
DD/MM/YY
用户主记录中定义的分隔符
MM/DD/YY
用户主记录中定义的分隔符
DD/MM/YYYY
用户主记录中定义的分隔符
MM/DD/YYYY
用户主记录中定义的分隔符
DDMMYY
无分隔符。
MMDDYY
无分隔符。
YYMMDD
无分隔符。
关于格式选项和这些选项内例外原则的详细信息,参见WRITE语句的关键字文档。
以下是格式选项的一些示例。
要获得更多的示例,参见章节创建列表。
在用户主记录中,定义了数字字段的小数点字符和千位分隔符(分号或逗号)。
ABAP/4代码
屏幕输出
DATA:
G(5)VALUE'Hello',
F(5)VALUE'Dolly'.
WRITE:
G,F.
WRITE:
/10G,
/FUNDERG.
WRITE:
/GNO-GAP,F.
HelloDolly
Hello
Dolly
HelloDolly
DATATIMETYPETVALUE'154633'.
WRITE:
TIME,
/(8)TIMEUSINGEDITMASK'__:
__:
__'.
154633
15:
46:
33
WRITE:
'000123',
/'000123'NO-ZERO.
000123
123
DATAFLOATTYPEFVALUE'123456789.0'.
WRITEFLOATEXPONENT3.
123456.789E+03
DATAPACKTYPEPVALUE'123.456'
DECIMALS3.
WRITEPACKDECIMALS2.
WRITE:
/PACKROUND-2,
/PACKROUND-1,
/PACKROUND1,
/PACKROUND2.
123.46
12,345.600
1,234.560
12.346
1.235
WRITE:
SY-DATUM,
/SY-DATUMYYMMDD.
06/27/1995
950627
除了上表中显示的格式化选项外,还可以用FORMAT语句的格式化选项。
这些选项允许指定输出的亮度和颜色。
详细信息,参见FORMAT语句。
7在屏幕上输出符号和图标
使用下列语法,可以在屏幕上输出符号和R/3图标:
语法
WRITEASSYMBOL.
WRITEASICON.
符号和图标的名称(<符号名>和<图标名>)是定义系统的常量,这些常量在包含程序和(尖括号是名称的一部分)中指定。
这些包含程序也包含符号和图标的简短说明。
输出符号和图标最简单的方法是使用语句结构(参见通过语句结构使用WRITE(页9)中的示例)。
要使符号和图标对程序可用,必须在程序中输入恰当的包含程序或更易理解的包含程序。
关于输入包含程序的详细信息,参见使用包含程序。
INCLUDE.
INCLUDE.
WRITE:
/'PhoneSymbol:
',SYM_PHONEASSYMBOL.
SKIP.
WRITE:
/'AlarmIcon:
',ICON_ALARMASICON.
输出如下:
上面两个INCLUDE语句可以用单个INCLUDE语句替代
INCLUDE.
8输出屏幕上的线和空行
用下列语法,可以在输出屏幕上生成水平线:
语法
ULINE[AT[/][][()]].
它等同于
WRITE[AT[/][][()]]SY-ULINE.
AT后的格式规范,与在在屏幕上定位WRITE输出(页3)中为WRITE语句说明的格式规范完全一样。
如果没有格式规范,系统则开始新的一行,并用水平线填充该行。
否则,只按指定输出水平线。
生成水平线的另一种方法,是在WRITE语句中键入恰当数量的连字符,如下所示:
WRITE[AT[/][][()]]'-----...'.
垂直线
用下列语法,可以在输出屏幕上生成垂直线:
语法
WRITE[AT[/][]]SY-VLINE.
或
WRITE[AT[/][]]'|'.
空行
用下列语法,可以在输出屏幕上生成空行:
语法
SKIP[].
该语句从当前行开始,在输出屏幕上生成个空行。
如果没有指定的值,就输出一个空行。
要将输出定位在屏幕的指定行上,请使用:
语法
SKIPTOLINE.
该语句允许将输出位置向上或向下移动。
要获得更多的信息和示例,参见创建列表。
9将字段内容作为复选框输出
使用下列语法,可以将字段的第一个字符,作为复选框输出到输出屏幕上:
语法
WRITEASCHECKBOX.
如果字段的第一个字符是一个“X”,就显示复选框已填充。
如果字段的第一个字符是SPACE,就显示复选框为空。
该语句创建的复选框,默认状态是可输入的。
就是说,用户可以通过单击鼠标来填充它们或使其为空。
如何使输出字段能输入或撤消输入,将在使字段接受输入下加以说明。
能输入字段在允许用户对话的交互式列表中是很重要的(参见交互列表)。
DATA:
FLAG1VALUE'',
FLAG2VALUE'X',
FLAG3(5)VALUE'Xenon'.
WRITE:
/'Flag1',FLAG1ASCHECKBOX,
/'Flag2',FLAG2ASCHECKBOX,
/'Flag3',FLAG3ASCHECKBOX.
输出列表如下:
对FLAG2和FLAG3,因为这些字段的第一个字符是“X”,所以填充复选框。
通过单击鼠标,用户可以改变复选框的内容。
9通过语句结构使用WRITE
R/3系统包含试验WRITE语句的所有选项和输出格式及将它们插入到程序中的有用工具。
要做到这一点,在ABAP/4-编辑器中选择“编辑->插入语句...”,然后在相关对话框中选择WRITE(参见插入已有关键字结构(页Error!
Notavalidlink.))。
当用Enter确认选项后,看到如下屏幕:
在该屏幕上,可以
_通过在字段“字段”中输入内部字段的名称或文字,确定其输出格式。
然后通过选择“其它格式选项”,在该屏幕上或者在可访问的屏幕上选择格式选项。
_通过选择合适的字段,生成符号、图标、线段和复选框的WRITE语句。
_生成在ABAP/4-词典中定义的结构组件的WRITE语句。
这很有用,比如,在执行SELECT语句后(参见从数据库表读取数据)。
在屏幕“装配WRITE-语句”上,选择单选按钮“符号”和“显示”,随后将看到如下对话框:
在此,可以选择符号,例如SYM_FOLDER。
下一对话框在输出屏幕上显示相应的WRITE语句和结果输出。
同时显示注释,通知用户在程序中需要包含程序(参见在屏幕上输出符号和图标(页7))。
按下“继续”后,就会看到“装配WRITE语句”屏幕上的字段“符号”现在包含了一个值:
现在,如果选择“执行”,就会将下列文本插入到程序中:
WRITESYM_FOLDERASSYMBOL.
在“装配WRITE语句”屏幕上,选择单选按钮“结构”,并在恰当的输入字段中输入:
然后,选择“选择组件”。
在下一屏幕上,可以选择希望用WRITE语句输出的ABAP/4-词典结构SFLIGHT的组件,例如:
如果采用该选择,就会将下面的WRITE语句插入到程序中:
WRITE:
SFLIGHT-CARRID,
SFLIGHT-CONNID,
SFLIGHT-FLDATE,
SFLIGHT-PRICE,
SFLIGHT-PLANETYPE,
SFLIGHT-SEATSOCC.