SAPscript识别四种类型的symbols:
l System symbols
l Standard symbols
l Program symbols
l Text symbols
这四种类型之间的主要区别在于值的来源。
l System symbols值由SAPscript提供;
l Standard symbols值在系统表TTDTG中定义;
l Program symbols值由运行时刻的程序提供;
l Text symbols值既可以从文本中的控制命令获取,也可以由Text Editor的Include函数动态提供。
SAPscript自动识别symbols的类型;
首先,检查symbols是否为System symbols;如果不是,然后检查symbols是否定义在调用程序的数据域中,如果是,就是Program symbols;如果不是,SAPscript就从TTDTG表中读取,如果在TTDTG表中发现symbols,则为Standard symbol;如果上面都不是,就是Text symbols。
定义一个symbol有下面的要求:
¨ 在一个symbol两边需要使用“&”;
¨ 在symbol名字内不能使用空白字符,而且也不能用'+()这些符号,因为这些符号是用来定义格式选项的;
¨ 在SAPscript Editor中不能将symbol分开在多行编写,如果一定要这么做,需要使用long line来避免(long line段落格式为= or /=);
¨ 封装在“&”符号之间的格式选项必须用“()”,而且表示格式的字母要用大写。
注意:如果定义了一个不能满足上面所有条件的symbol,则系统不会将它当成symbol来处理,而是作为一个文本直接输出。
下面是一些有效的symbol的例子:
&symbol&
&MY_symbol&
&KNA1-NAME1&
&DATE&
&KNA1-UMSAT(I)&
下面是一些无效的symbol的例子:
&mysymbol
&my symbol&
&mysymbol)&
&symbol(Z&
&KNA1-UMSAT(i)&
请大家思考一下为什么?
注意:symbol名字不区分大小写,比如下面三个symbol在SAPscript中会作为一个symbol处理;
&mysymbol&
&Mysymbol&
&MYSYMBOL&
SAPscript提供了可以在各种文本中使用的system symbols,而且这些symbols的定义是固定的,其值由SAPscript提供。
这些system symbols可以参见下表,具体用法请参见sap online help
名字 |
定义 |
描述 |
Current Date |
&DATE& |
显示当前时间 |
Current Day Number |
&DAY& |
显示当前的天数 |
Current Month Number |
&MONTH& |
显示当前的月数 |
Current Year Number |
&YEAR& |
显示当前年号,四位数字 |
Local Date |
&LDATE& |
将当前日期转换为本地日期(仅对COUNTRY = JAPAN) |
Current Day Name |
&NAME_OF_DAY& |
当前天数的名字,比如Monday等等。 |
Current Month Name |
&NAME_OF_MONTH& |
当前月的名字,比如1月等等。 |
Current Time |
&TIME& |
显示当前时间 |
Hours Component of Current Time |
&HOURS& |
显示小时 |
Minutes Component of Current Time |
&MINUTES& |
显示分钟 |
Seconds Component of Current Time |
&SECONDS& |
显示秒 |
Current Page Number |
&PAGE& |
显示当前页数 |
Page Number of the Next Page |
&NEXTPAGE& |
显示当前页的下一页 |
Selected Device Type |
&DEVICE& |
用来指定外部打印设备类型 |
Spaces |
&SAPCE& |
用来生成空格字符串 |
Underline |
&ULINE& |
用来在输出文本中插入一个带下划线的字符 |
Vertical Line |
&VLINE& |
用来在输出文本中插入一个垂直方向的字符 |
如果symblos从数据区域获得值,这种symbols就称为program symbols。program symbols最大为255个字符,当使用TABLES声明语句的时候,program symbols的名字由表名和字段名中间加短横线组成,例如:
&KNA1-NAME1&, &KNA1-ORT01&, &KNA1-PFACH&等等。
否则,program symbols按照打印程序中定义的方式使用(比如&MYCOUNTRY&)。
注意:symbol在form中出现的顺序是很重要的,它决定symbol当前的值,例如:
Form/text中有如下定义:
....
/: DEFINE &mysymbol& = ‘abc’ ①
* &mysymbol& ②
....
打印程序中定义为:
....
Data: mysymbol(5) value ‘xyz’.
....
在这个例子中,最终输出为:abc
但是如果将Form/text中①、②的位置交换一下,如下所示:
....
* &mysymbol& ②
/: DEFINE &mysymbol& = ‘abc’ ①
....
打印程序中定义为:
....
Data: mysymbol(5) value ‘xyz’.
....
在这个例子中,最终输出为:xyz
如果在①后面再加上* &mysymbol&,则输出为:xyz、abc
关于program symbols的更为详细的描述请参见sap online help
Standard symbols在系统表TTDTG中定义,这个表包含每一个Standard symbols的名字和值,而且和语言相关,可以由60个字符组成,SAP提供了修改这个表的表准入口,从而可以让用户自己定义自定义的Standard symbols。可以在各种文本中使用Standard symbols。
除了上述的三中Symbols外,其余的Symbols都叫做Text Symbols,有两种方式来定义Text Symbols:
¨ 在文本编辑器中,选择Include ® Symbols ® Text,然后按照提示来做;
¨ 在文本中,使用DEFINE控制命令。
例如:
/: DEFINE &mysymbol& = 'xxx xxx xxxxx xxxx'
&mysymbol&
/: DEFINE &mysymbol& = 'yyyyy yyy yyyy'
/ &mysymbol&
输出为:
xxx xxx xxxxx xxxx
yyyyy yyy yyyy
注意:
Text Symbols使用“' '”符号。