SAPscript Control Commands和通常文本行一样,在文本编辑器中输入和编辑,然而,和文本行相比,有下面一些区别:
l 在格式列输入段落格式“/:”表示一个控制命令;
l 在文本行中输入命令;
l Control Commands连同其参数,最多占用一行文本行;
l 每一行只能有一个Control Commands;
l 编辑器行的格式对Control Commands没有影响。
如果Control Commands没有定义或者有语法错误,则Control Commands所在的行被作为注释处理。
当main window显示不下时,SAPscript就会自动分页。可以利用NEW-PAGE命令强制分页(只要你想)。分页命令后面的文本显示在新页上,分页命令总是会执行(如果使用了)。
NEW-PAGE结束当前页。如果分页命令NEW-PAGE不带参数,在当前form中定义的page就作为next page使用;如果form中包括多个pages,可以将其中的任何pages作为next page使用。
语法:
/: NEW-PAGE [page_name]
示例:
/: NEW-PAGE
当前页结束,接下来的文本将显示在form中指定的page上
/: NEW-PAGE S1
和上面一个例子一样,除了S1被指定为next page外
在打印文档的时候,有时候不想将一段段落打印在不同的页上,这时候就需要设置限制分页命令。为了做到这一点,SAPscript提供了PROTECT和ENDPROTECT命令对。如果当前页面上的余留空白能够用来打印一段完整的文本,则这一段文本就在当前也上打印,就好像没有PROTECT命令一样。然而,如果余留空白不能够用来打印整个文本,则PROTECT命令和NEW-PAGE具有同样的作用,这一段完整的文本将会在新的page中打印出来。
因而,PROTECT/ENDPROTECT也可以被看成是有条件的NEW-PAGE命令,条件就是当前main window中的余留空白是否能够满足PROTECT/ENDPROTECT中指定的文本。
语法:
/: PROTECT
:
:
/: ENDPROTECT
被保护的文本行封装在这两个命令之间。
注意:
l 没有PROTECT命令的ENDPROTECT命令是没有任何作用的;
l 如果漏掉了ENDPROTECT命令,SAPscript默认受保护的文档直到文本结束;
l PROTECT/ENDPROTECT不能嵌套,如果在第一个ENDPROTECT结束前,定义了第二个PROTECT,则第二个 PROTECT/ENDPROTECT被忽略;
l 如果在PROTECT/ENDPROTECT命令对中封装的文本对于单个page来说太长的话,则在这段文本之前立即执行换页命令,文本按照通常的方式打印。在文本中某一个位置换页是不可避免的。
2.2.3 下一个main window命令:NEW-WINDOW
理论上,每一page能够由99个main windows组成。每一个main window被分配一个从0到98的识别号,windows也按照这个顺序来加载。这个特征使得SAPscript可以打印labels和输出多列文本。当一个main window填满后,如果有下一个main window的话,就是用下一个main window,在这两者之间会插入一个分页。
可以使用命令NEW-WINDOW来显示的调用下一个main window,即使当前的main window没有填满。
语法:
/: NEW-WINDOW
语法:
/: DEFINE &symbol_name& = 'value'
通过这种定义获得的值在事务结束后就失去了。如果想再次打印这个文本块,必须再次给这个文本symbol赋值。DEFINE命令的一个目的就是提供将值持久赋给文本的一种方式,以便当文本模块再次调用时,值可以重复使用。
示例:
/: DEFINE &subject& = 'Your letter of 7/3/95'
分配给symbol的值最大可以有60个字符。也可以包含其他的symbol变量。
请注意下面两个例子:
第一个例子:
/: DEFINE &symbol1& = 'mail'
/: DEFINE &symbol2& = 'SAP&symbol1&'
/: DEFINE &symbol1& = 'script'
&symbol2& -> SAPscript
第二个例子:
/: DEFINE &symbol1& = 'mail'
/: DEFINE &symbol2& := 'SAP&symbol1&'
/: DEFINE &symbol1& = 'script'
&symbol2& -> SAPmail
请注意观察这两个例子中的&symbol2&以及后面的赋值symbol,可以看出,可以将一个symbol变量连同其他字符赋给另一个symbol变量,但是如果用“=” 赋值symbol,则当“=”右边的symbol变量值发生变化时,“=”左边的值相应发生变化;另外一个方面,如果用“=” 赋值symbol,则当“:=”右边的symbol变量值发生变化时,“:=”左边的值并不发生变化。